发布于 2014-09-24 07:24:13 | 2592 次阅读 | 评论: 0 | 来源: 网友投递
百度(Baidu)中文搜索引擎
百度(Nasdaq简称:BIDU)是全球最大的中文搜索引擎,2000年1月由李彦宏、徐勇两人创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。
本文是一篇网友去百度应聘测试工程师的面试题整理总结,感兴趣的同学参考下。
1.几种常见算法看下,能够大概描述出来算法的过程,复杂度(排序、查找等)
2.给你设定几种场景,让你解答:比如给你两部手机,让你站在一百层楼高的地方,假设在第n层手机摔下就会摔破,问你怎样用着两部手机确定这个临界层。
(场景测试-百度质量部)
3.怎样知道一个链表里是否有环的存在,以及确定环的位置 如何确定两个链表是否有相同的部分
4.网络一些知识,比如http几次握手的情况,ack等包,结束是否只能由服务器段先断开之类的。网络几层,常见网络设备属于哪层?
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
5.测试几种方法.
6.给定一个很大文件,内存里放不下,怎样搜索里面是否有需要的关键字,从百度搜索内容,描述一下大致的过程
7. 从网上找找百度质量部面试面试题目
8. C语言 内存分配机制(堆栈区别,静态存储区)
9. 数组指针和指针数组有什么区别
10、海量搜索问题 找找海量搜索面试题看看
百度搜索关键字放在一个大文件里,该文件在内存里装不下,用户可以输入关键字,在文件里查找关键字,看关键字是否在该文件里,给一个解决方案。(用Hash方法)
11、搜索的原理 在百度页面输入关键字,得到搜索结果,解释一下这个过程是什么样的
12.深度搜索算法 单链表 就地 反转
13.Linux常见的命令看看(必考)
14、TCP与UDP的区别
15、网络设备
16、socket
1.对Linux内核有一定的了解;
2.熟悉数据库的使用,
3.熟悉基本的网络配置及路由器、交换机等网络设备的配置;
4.了解TCP/IP协议
5.测试流程 有几种方式像什么白盒 黑盒 功能测试 性能测试 单元测试等等
1.自我介绍啦 项目相关的
2.多准备 多看看常见面试题
3.还有网上关于质量部面试的题目 这些比较有针对性一些
实际遇到的面试题
百度一面
首先要自我介绍
1、进程与线程的区别
一面第一个问题,自我介绍都没介绍完说了我知道的一些,他都说没答到点子上,问到底要怎么答,面试的GG让我自己上网搜答案。。。
答:什么是进程(Process):普通的解释就是,进程是程序的一次执行,而什么是线程(Thread),线程可以理解为进程中的执行的一段程序片段。在一个多任务环境中下面的概念可以帮助我们理解两者间的差别:
进程间是独立的,这表现在内存空间,上下文环境;线程运行在进程空间内。
一般来讲(不使用特殊技术)进程是无法突破进程边界存取其他进程内的存储空间;而线程由于处于进程空间内,所以同一进程所产生的线程共享同一内存空间。
同一进程中的两段代码不能够同时执行,除非引入线程。
线程是属于进程的,当进程退出时该进程所产生的线程都会被强制退出并清除。
线程占用的资源要少于进程所占用的资源。
进程和线程都可以有优先级。
在线程系统中进程也是一个线程。可以将进程理解为一个程序的第一个线程
多线程同步方法
1临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。
2互斥量:为协调共同对一个共享资源的单独访问而设计的。
3信号量:为控制一个具有有限数量用户资源而设计。
4事件:用来通知线程有一些事件已发生,从而启动后继任务的开始。
2、标准模板库STL 用过的库函数 (一面)
3、做过的有关测试的项目,没有问很细,测试用例是不是自己写的,根据做的项目,设计怎么测试自己的项目
4、静态函数库、动态函数库 区别 自己做的项目是属于动态的还是静态的
5、Linux编程怎么样(百度貌似基本上程序都跑在linux上,这个肯定要问到)
我直接答的linux常用命令还可以,在linux环境下做过实验,内核不了解
算法题
大部分是告诉他思路,面试官哥哥会把问题简化,再一点点启发,一点点给问题加条件,要把自己思想解释懂给他听,练练口才啊~还有准备好纸笔,一些代码,不好凭空想象~
1、在栈中,找出最小值,给出push pop 求最小值min函数(不破坏栈的原始的顺序、用最小的时间)
2、矩阵中 横排 每行的数据是从小到大的,竖排 每一列也是从小到大 给出一个数用最快的时间查找一个数是否在矩阵中(空间复杂度)
3、括号匹配 { 【 ( 看左右括号是否匹配 数学规则:{【(
1)不考虑数学规则
2)考虑数学规则
最后要把第三个 跟面试GG讨论完解决的思路后,把这个代码写一下,发给他,限时近一个小时,可以用伪代码,一开始说的,写代码的时候不用挂电话,后来就是说了机房不能说话,就让我把电话挂了~
百度二面
二面还是先自我介绍,的第一个问题,集合数的存储模式,一听就有点懵了,啥是集合数??委婉的告诉她不知道什么是集合数,她就说,存储模式有数组等,我当时很乱,就把我自己理解的,所有在内存中存储模式的,那些,数组、链表、栈、堆、常量区等等,都答了,想想真2。
之后围绕之前做过的项目问的比较多,比较详细,详细到了一些功能的实现,遇到的问题,怎么解决的等等,根据项目问了数据库的语句,找出数据中最大的前十个,给忘了,就说了C++中的实现方法,还自己引申了一下,答了内存中放的下的数据怎么处理、放不下怎么处理、找出最大的前十个怎么处理,前一万个怎么处理。。。
也是回答了一些测试的题,测试一个函数,设计测试用例,函数功能:两个已经排好序的数组,合并成为一个有序数组。
做过的白盒测试 实验 自动化测试 有没有写过脚本语言
问了 测试网络是否连通 ping命令
Linux 我还是像一面那么答的,这回让我列出了我自己熟悉的linux命令,我就说了一些,她问了一个退出vim怎么退出,就回答了,保存退出,不保存退出的命令等等。
还问了 编码量最大的项目,最近半年自学的东西,自学的途径等等。