TOP

用一天的时间面完百度了三轮面试,等了两天,今天终于收到了百度的签约通知(一)
2014-11-23 18:59:50 】 浏览:10152
Tags:时间 百度 三轮 面试 今天 终于 收到 签约 通知

应聘的岗位:开发测试工程师。首先先明确一点,这个岗位听起来像搞测试的,但其实重点在开发,因此对开发的要求也很高。以笔试为例,试卷题目和其他开发岗位基本相同,只有一两道简答题在考察的侧重点上有点区别。所以,没有一定的编程能力,不要选择这个职位。我当时笔试是霸笔的,和我一排参加霸笔的同学几乎都有这个误区,结果笔试开始不到十五分钟,就都弃考走人了。


一面


三面下来,觉得一面考的是最针对性的。估计这一场刷人最多。面我的看得出来是个很资深的工程师。跟我会面后,我立即先把我的简历递给他。他就很认真的看,顺便问我是哪里的。估计是在考虑我可能的工作地点。我们简单聊了几句,就到了一间会议室。我坐在他的旁边,面前有一张纸和一支笔。


首先是自我介绍,自我介绍是一个给面试官初次印象的绝佳好机会。建议利用这三十秒左右的时间讲清楚以下几个问题:


1. 你叫什么名字;
2. 你来自哪个学校,哪个专业,做过哪些方面的研究;
3. 你擅长什么,为什么你选择这个职位。这点很重要,一定要在自我介绍的时候就突出自己的优势。


我的自我介绍内容:


“我叫XXX, 我本科在华南师范大学就读,后来保研本校继续攻读硕士。在期间我在中国科学院实习过一年的时间,做的主要是图形图像方面的研究。我自己觉得我竞争这个职位的优势在于:我很喜欢折腾,还有偷懒。我很喜欢折腾一些别人看起来很奇葩的工具,也很喜欢通过写一些脚本,让一些繁琐的事情自动化,让自己偷懒。在平常的开发中,我也很喜欢TDD的方式,这也是为什么我很渴望来百度质量部。”


听到“折腾”和“偷懒”两个词的时候,考官嘴角扬起了一丝笑意。之后他就让我介绍自己的项目经验。项目经验一定要事先认真准备一下,有些人项目经验很丰富,但是没有认真去回顾一下,很可能就会被问倒,对接下来的面试造成很大影响。在参加百度面试的前晚,我就把自己列在简历上的项目重温了一遍,甚至把自己写过的一个加密算法的代码都背了下来。于是,他问到这个问题的时候我非常自信,先讲了自己独立完成的一个开源项目,然后一个个介绍自己的科研经验。涉及到一些有趣的算法,遇到的困难我也会有简短而生动的语言讲一下,有时他也会试图问一些让我意想不到的问题,但是没有把我难住。在讲了大概三四个项目后,这一关算过了。


接下来问我 strcpy 和 memcpy 的区别,之前我虽然把C的标准库都过了一遍,但还真没怎么用过 memcpy,于是只好坦诚说我只知道前者更高层,但比较危险;后者更底层,速度更快。


之后一道算法题:反转字符串。一看题目这么简单,我就知道肯定是注重考察我写程序的鲁棒性。所以我先跟他说明了思路:一定要先检查字符串是否为空,然后第一个字符跟倒数第二个字符交换(最后一个字符是’\0′),第二个跟倒数第三个交换,从头遍历到字符串长度的一半。面试官一看思路对头,就让我用程序写出来。我就很小心的完成了程序,写交换函数的时候还特意写成了内联模板函数,然后用异或的方式完成数据交换。顺便还跟他说如果用python写,这一个程序只需要一行(用切片)。面试官看了一下程序,没找到问题,就让我分析时间复杂度和算法复杂度,我说时间复杂度是 O(n),但是规模只有数组长度的一半。空间复杂度我就弄错了,以为多少数据复杂度就多高,所以也说是 O(n) ,面试官就问我是不是不知道什么是空间复杂度。我就老实说我没关注过空间复杂度,但我的算法是原地的。然后他就没有再问了。


接下来问我内存分配机制,前晚我刚好还重温过这方面的知识,正中下怀。于是立马画图,把进程空间的分配详细介绍了一下,顺便提了下栈帧、函数调用、虚拟内存、PA、VA、mmap、共享库等概念。对栈帧的介绍是我故意布下的陷阱:我特意提了一下gdb的“frame”命令可以在不同函数的栈帧间跳转。果然面试官接下来就立马考我gdb的使用,让我介绍一下gdb有哪些命令,gdb的命令我也在前晚重温了一遍,立马列举了十几个,还加上我的使用心得。他就继续问我知不知道 gdb 的 core 文件,我一开始听成了“call”,愣了几秒钟,就问他怎么拼。他说是“core”,我立马想到了“core dump”,就跟他说Linux C程序发生段错误的时候会提示“段吐核”,其实就是“core dump”,通常不会产生文件,但用一个命令(ulimit)可以开启输出段错误到 core 文件的功能,然后 gdb 就可以读入它进行调试。我还顺便跟他侃了一下网友关于“段吐核”应该翻译成“段吐槽”的八卦。


之后他问我如何测试一个登陆框,于是我先从输入输出数据入手,采用白盒测试法,先画了个因果图,列举了导致成功需要的数据,导致失败需要的数据。解答的过程中我不断跟面试官保持交流,问他“这个登陆框是web版的吗?”,“这个登陆框面向哪些用户?只是中国人,还是所有地区?”一步步修正自己的答案。比如,当他说是 web 版的时侯,我就知道除了测数据之外肯定要测试页面兼容性。当他说面向所有地区的时候,我就知道一定要测试不同语言的名字,顺便跟他侃了一些之前阿拉伯文导致苹果ios系统瘫痪的八卦。完成数据测试后,他问我除了测试数据之外还应该测试什么,我很快就想了压力测试(负载能力)、浏览器兼容性测试、美观度测试(是否使用和百度风格一致的页面元素)、语言测试(能否为不同地区的访客提供不同语言的页面)等等七八个其他的测试。这道题顺利通过。


接下来考我 shell 命令,首先问我怎么查看一个进程占用资源的情况。我用 top 加 grep 命令秒杀。问我怎么统计硬盘里所有文件的大小,我说看过这个命令,但想不起来(df命令),不过我知道这个命令底层是基于 inode 的,所以速度很快。他就问我 inode 是什么,我逮到机会,立马给他介绍了一番 ext2 和 inode 。他就进一步问我,给一个目录,怎么计算这个目录里所有文件的大小。我就立马写了 awk 脚本搞定。


最后看我的简历上还写熟悉 Valgrind,就问我 Valgrind 的知识。我顺便提及我喜欢在 Makefile 里调用一个 shell 脚本,该脚本用于测试所有的单元测试用例,并执行一次 Valgrind 检测内存泄露。一句话概括我对 Makefile、shell、单元测试以及 Valgrind 的熟悉度。他很满意,就跟我说他这边没问题了,应该会很快通知我下一轮。我就立马跟他说我是特意从广州过来的,所以能否安排的再紧凑些。他说没问题,下午就让我二面。我听了很开心,来之前我听说百度面试有个潜规则,凡是一天多面的,都是有希望进的。


二面


中午去吃了个饭,到百度楼下的星巴克喝了杯咖啡,就收到了通知二面的电话。这次是一个女的,我心里那个激动呀。但还是要小心,说不定是个灭绝师太。跟她会面后,发现整个过程还是非常轻松的,没考算法,都在聊项目经验,在这个过程中从侧面分析我的开发能力和交流能力。另外还问了我工作地点意向,能否选择北京。看得出来北京百度那边比较缺人。我说我女朋友在深圳读研,所以选择深圳。


这个过程中我认为有两个地方需要注意:


一个是问我之前都应聘过其他公司哪些职位。我回答阿里报的是数据挖掘,腾讯报了个后台开发,其他公司清一色报了C++。我听说百度这边的开发测试是以开发为主的,所以我才报了开发测试。一定要在面试过程中强调自己的开发能力,因为百度开发测试做的还是开发!


第二个是她问完话让我问她问题。百度三轮面试只有这一轮给我机会问问题,而我事先就精心准备了三个问题。


“我有
用一天的时间面完百度了三轮面试,等了两天,今天终于收到了百度的签约通知(一) https://www.cppentry.com/bencandy.php?fid=43&id=14938

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇百度技术类笔试题目合集 下一篇百度2011年10软件研发工程师面试..