记录一下我的腾讯和百度两次面试经历

首先说一下悲催的腾讯面试:3月29号笔试、30号回学校(学校和面试地点不在同一城市)、31号晚上收到一面通知,然后连夜赶去参加4月1号的面试。早上2点多的火车,将近5点到,在KFC待到7点半,打车去面试地点 ,在一楼坐到9点多上去 签到,9点50分去面试。 面试官还是挺帅挺年轻的,看了一眼我的简历之后就问我对排序算法熟悉吗?我说熟悉,他就说那你写一下快速排序的算法吧,最好是能直接编译通过。我写完稍微检查一下给他看了,他说行,然后就是第二个问题:循环数组。就是有n个数字的有序数组,把后i个数字放在前面,举例来说,就是原有序数组为1,2,4,6,7,9变形后的是6,7,9,1,2让找到拐点,也就是9和1之间的点,要求时间复杂度是logn,我首先说了一下二分查找的思路,然后他让写代码,这里代码出了很弱智的错误,不提也罢。。。然后两个特殊情况也没考虑到(仍然是有序的情况和9,1,2,4,6,7,的这种情况 )。问的第三个是项目的问题, 他感兴趣的部分我是用别人的工具实现的,所以,可想而知。。。最后一个是海量数据处理,就是有数亿的a=(x,y )坐标值,已知若干个b=(p,w )坐标值,求a、b之间距离小于5的点,要求很低的复杂度。我刚开始说的是分布式处理,但是他说仍然没有降低计算量;然后我又说可以用hash(实在没思路了),他说坐标值都是浮点数,命中几率太小;最后问我要是hash的话,key怎么选择,我说选x-p和y-w在一定范围内的计算距离,但是他说做减法仍然有很大计算量,我实在 没想法,就放弃了,他就告诉我,可以选择b附近的四个整形 值(这四个值组成一个正方形)做hash的key,这样落在正方形内的点进行距离计算,就会减少很多计算量。到此,面试就结束了。。。下午去旅店睡了一下午,晚上和同一天参加面试的几个同学讨论了一下,有些面试官问的很零散,不用写代码,有些就是纸上写代码。等到晚上8点多,我们也就只有一个人得到二面通知,剩下的都挂了,然后4月2号就回学校了。 总结一下这次面试经历:基本算法掌握的不够扎实,思维拓展能力也不行,还需要巩固基础~(必须提一点:那天衣服穿少了,大晚上的在火车站和火车上真是冻死了。。。。。 )
3月31号晚上接到百度人力资源打过来约电话面试的电话,约了一下时间。4月2号下午1点左右赶回学校,下午5点进行百度电面。准备了一下个人介绍,也没用上(话说怎么我遇到的这两个都不用自我介绍呃 )。问的第一个问题就是C++中虚函数的问题以及构造函数和析构函数可不可以是虚函数,答完后又问了宏定义和const定义的区别。第三个问题就是一个6位密码器,几秒钟随机产生一个密码,有一个人把密码器拿反了,他能正确读出数字序列的概率和能正确读出密码的概率,我blabla...一堆,他说我思路正确,但是数字错误。。。第二个问题就是对于输入x和y有六种操作(+12,-12,+7,-7,+5,-5 ),找出从x到y的最短路径,我没什么思路,他提示可以用图遍历或者树遍历,没办法,还是没思路,最后他告诉我可以对x 6种操作都执行一遍,一直找到能到达y的节点为止,我说就是所有路径都生成,然后求出最短路径啊,他说是(我就想这样计算多复杂呀,我一直以为有简便算法,不用全部计算的。。。 ) 然后接着就项目一个一个问,然后 问了一下我项目都是用Java完成的,让我大概估算一下写了多少行代码,我说大概有几千吧,然后他 分析了一下第一个项目大概需要几百,最后一个可能上千。。。然后问 我有没有用C++写过大型程序,我说没有,就最近 使用Linux下的vim写了一些小的C++程序,没有用C++完成过大型项目。最后问了一个Linux下对某文件中一列数字进行排序是怎么进行的,我也不知道。。。然后他总结了一下说我前面两个问题答得也比较深入 ,项目也比较有优势,算法题做得也还行,就是Linux下的C++编程不好,C++基础也有些欠缺,问我有没有问题问他,我就问了一下公司自然语言处理主要用于处理什么问题,他说自然语言处理就是为搜索服务的,比如用户意图和查询扩展之类的。然后我就说没别的问题了,他就说让我等通知,然后这次面试也结束了~面试结束后回实验室又好好分析了一下密码器那个问题,把步骤和结果用邮件发给了面试官,同时表示了一下感谢~~
这就是我的两次面试经历,流水账似的记录了一下~现在在等百度电面结果的通知,期待好结果~~~~~

    推荐阅读