马上实习离职,写下实习的面经给要实习的同学作个参考。有点久了,尽可能的还原吧。
刚提交简历不久,就有个MM(应该是HR)给回复了,直接打电话来约面试时间,时间定下来之后,邮件里又确认了下等等。不得不说,百度的HR还是很不错的
先说下我面试的职位是云计算开发测试工程师实习生,百度的云计算部门在鹏寰大厦,这名字有点难写,不知道有没有写错。
一面的面试官是个GG,人很nice,后来实习中经常遇到。抱着个笔记本就下来了,没有穿脱鞋,头发也不乱,看来QA应该不是很辛苦。上来第一句,“哈工大的啊?”,我一听,难不成遇到师兄了。一面总的来说,面试的都是些基本的问题。首先问了程序的在内存中存储的问题,分几个段,这个也只有些印象了。然后又问malloc实现以及和C++中new的区别。这个以前在HIT的IBMTC学得《深入理解计算机系统》讨论班,几个实验中有一个就是malloc实现。至于和new的区别,不得不说的一点是new申请内存的时候把类型也给“申请”了。所以在C++中初始化对象的时候如果用malloc可能会出现问题。然后问了些linux上的基础知识,之后我会再详细说下linux下一些比较有用的命令。
如果说百度面试的一个重要的环节肯定就是考查算法了。先让我动手写了一个quicksort程序,这个不难。像QuickSort,BiSearch这些考查基本功的算法,大家都应该很快的可以写出的。然后又问两道算法题目。题目我不太记得了,真的抱歉。
最后就简历上的东西问了问,这里有两点有必要分享一下。一是简历的制作一定要实事求是,什么意思大家都知道,就不说了;二是,当被问到自己熟悉而面试官不熟悉的东西,比如自己做的项目什么,表述一定要表述清楚,比如项目的背景技术这些东西就很容易被忽略。还有对测试的看法以及测试case的设计。
一面持续了一个小时,可以说是很基础的技术面了。最后出于公司礼貌,面试官会让你问他一些问题,当然面试结果肯定是不会和你说的了。如果大家被面的不太爽的话,机会来了一定把握住了喽。
一面是上午11点面试的,12点结束。晚上的时候二面的面试官给我打电话,告诉我通过了一面并约二面的时候。如果面试没有通过的时候,大家也会收到HR的通知的。
二面由于时间的问题,面试官临时调整了下,是个很nice的MM :)。后来知道是比一面的面试官级别高一些。当时面试的人比较多,我们就到了五楼的休息间。面试官MM也是抱着一个笔记本,上面是我的简历。先简要的问了下我的情况,然后就让我写strcmp函数实现。大家可能都感觉好简单啊!其实不然,大家可以搜索下像strcpy,strcmp之类字符串函数在面试中的注意点。边界的检查尤为重要。然后就这个程序进行测试,其实也就是设计测试用例,这个就看考虑问题是否全面了。然后也考查了一些linux下的命令使用,这个之后再统一写吧,比较多。然后考查算法,有266个整数,大小区间在0到255,其中有且只有两个数是相同的,要求找出这个重复的整数。我想了想,给出了个数学的解法:0到255的总和减去题目中266个数字的和得到一个方程组;0到255的平方减去题目中266个数平方得到又一个方程组,其实就是不变量的思想。面试官愣了一下,好吧,懂了。然后用了bit-map计数实现,很简单。
关于位的有趣的问题比较多,这里分享几个。上面说的面试题中是找出重复的数。把题目变一个:有N个整数,其中只有一个数出现一次,其他数都出现了两次,要求找出这个数。联系到位操作很容易想到怎么做。对于没有想到的同学,建议马上去google一下位运算中的异或操作。关于异或操作还有一个有趣的面试题:有一个桶,里面有白球、黑球各100个,人们必须按照以下的规则把球取出来:1、每次从桶里面拿出来两个球;2、如果是两个同色的球,就再放入一个黑球;3、如果是两个异色的球,就再放入一个白球;问:最后桶里面只剩下一个黑球的概率是多少?以后整理下吧!
最后也是问了些项目经历什么的,还有针对职位的面试:如何测试一台自动售货机?
二面持续一个多小时,结束的时候我问面试官MM,你评价我吧?哈哈。
二面完没多久,HR就打电话来了解了一些情况,并协商了入职时间。
由于时间比较久了,面经的质量有点低,有什么问题,大家可以随时联系我哈!