一、百度笔试的特点:没有选择题。一般分为:简答题、编程题、系统设计题。都比较常见和基础,有认真准备过的同学基本都没问题。
二、百度一面(技术面试)
一面的问题都是很基础的:
1.class和struct的区别。
2.写个max的宏。
3.计算两个链表的交集、并集。
4.链表的排序——用什么排序算法?
5.如何找到一个链表的中点,写代码
6.如何求一个整数的二进制1的个数——编程之美的题目。
后面还有一点,记不是很清了。
三、百度二面的问题偏算法,但是不会很难。
一上来,面试官拿了个pad叫我先把上面三道题做一做。我扫描了一遍,都是比较基础的编程题。
当我做完第一题的时候,面试官就叫我开始面试了(当时真不是我写得太慢~)。
我只记得前两题:
1、字符串以单词为单位进行逆转。
2、合并两个已排序的链表。
然后就是聊了一下项目。问我觉得笔试怎么样?然后和我讨论最后一题(tinyurl),这道题讨论了很久。
又问了我两个题目:
1、用1*2的瓷砖铺3*N的地板有几种方法。
2、求二叉树两个节点的最低公共祖先。
四、百度三面(综合面试)
百度三面不像腾讯是hr面,而是一次综合的面试——技术和非技术问题穿插进行。
百度三面,我真的很紧张。因为,我是到了最后才知道三面也是有技术问题的……面试官是个看起来很高级的人,应该很牛逼。
技术和非技术问题穿插得很乱,我下面只能回忆一部分,不一定是按顺序的:
主要的技术问题。
1.read和write、fread和fwrite的区别。什么情况下,哪个效率高?
2.写个vector,实现构造函数、push_back、pop_back,operator=。
3.STL中的容器。
4.一个概率题:足球比赛的时候,裁判会扔硬币,决定双方队伍的球门。有一次,裁判掏出一个硬币,结果发现硬币变弯了(即出现正反面的概率不一样了)。请你设计一种方案,让这个硬币可以继续使用。
主要的非技术问题:
1.对工作地点的选择。为什么?
2.有没有人对你有什么影响?具体?(根据这个问题展开了不少其他问题,都是和具体的回答相关的,不多说)。
3.除了技术,你平时做什么?
4.做技术,你不觉得无聊吗?
满意的地方:
笔试不难,面试很正常,而且基本都是同一天完成。
不满意的地方:
题目量大,问题量也大。