三个问题。我之前看过一本书,关于谷歌如何做测试的,叫做《How Google Tests Software》。所以我想问您的是:
1. 在谷歌,做开发测试的部门叫做“Engineering Productivity”,顾名思义就是“开发效率”部门。但在百度,负责开发测试的部门叫做“质量部”。请问在百度,开发测试工程师是对程序的质量负责,还是对程序开发的效率负责?
2. 在谷歌,开发测试工程师叫做“Embedded Engineer”或者“SWT”(Software Engineer in Test),顾名思义就是嵌入其他部门,跟其他部门合作开发。那请问在百度是否也是这样的情况?是否会影响质量部内部的交流?
3. 在谷歌,SWT常常需要接触不同的业务,虽然很有新鲜感,但可能带来的问题是难以在一个领域中深入下去。您作为一个资深的开发测试工程师,能否传授一下经验:我怎么在“新鲜”和“深入”这两个点之间做好平衡?
”
我问第一个问题的时候她眼睛就亮了,我估计他们内部应该也传阅过这本书籍。从这三个问题她就看出我是有备而来的,而且就盯着这个职位了。面完之后,她让我到旁边休息室休息一下,下午五点半三面。
三面
终于等到三面,在这之前陆续有一些学生过来签协议和面试的,我都主动跟他们聊天交流,给过来接待面试者的考官留下了比较好的印象。三面也是个很资深的工程师,应该是传说中的Boss级的人物。自我介绍之后,也先跟我聊项目。这时候我祭出了我的终极武器——我跟他说我曾经用人工神经网络破解了百度地图坐标的加密算法。他听了很稀奇,赶忙问我怎么做到的。我很自信的跟他解释了一番。也许是因为这里获得了较大好感吧,接下来他问我的算法题很简单,也是字符串的处理:
给两个字符串A和B,找出A对于B的最长前缀。
例:
A: abcdeabcdesa
B: description
最长前缀:des
思考了一番给出了动态规划和直接遍历计数两种方案,考官就叫我实现第二种。我就很小心的写代码,同样心里默默告诉自己一定要把各种边界条件考虑清楚。我写代码的时候,他就在旁边打电话通知其他的学生面试。我在他打完电话之前就完成了程序,他看了一下,没有问题。就又问了我一个如何测试的问题,搞定。
之后又问了我一个智力题:一个长方形,挖去一个圆。在只给出这个圆的圆心,但不允许知道这个圆大小的情况下,如何把剩下的面积分成两半?
我就问他有没有厚度,如果有,直接平剖。答曰否。
又问他可不可以系一条绳子,可以的话,找出重心,利用重心切两半。答曰不可以。
之后他给了我两个很重要的提示:如果没有挖掉那个圆,一个长方体分成两半,有多少种分法?我说三种,他说不对,再想想,答案应该是无穷个。
于是我就发现只要经过长方形中心的直线都可以将长方形分成两半。又问他能否对折这个长方形,答曰可以。加上这个条件,问题昭然若揭了:先分别沿两条对角线对折得到长方形中心,然后沿着长方形中心和圆心的直线再对折一次,这一条折线刚好就可以把剩下的面积分成两半。他满意的点了头。接下来就问我是否愿意选择北京。我还是保持和上面一样的回答。之后他就没有问题了,跟我说可能要过一段时间才给我通知。他送我到门口,走之前我跟他握了个手。
回来两天后我就收到了百度的口头offer。
总结
最后总结三点成功原因吧:
1. 低调。简历有把握的才写,不要求多。多了显得浮夸,而且面试一般要问项目经验,一旦被问倒,被刷的几率很大。我一开始写了两页简历,把自己会的各种技术都拼命往里放,结果腾讯连笔试都被没过。郁闷得很。后来被女朋友批评了一番,把简历缩成了一页,适当突出自己的优势,也有利于我针对性的准备和发挥。另一方面,就是学会降低姿态,虚心跟面试官保持交流。学会旁敲侧击思考问题,把问题的范围缩小再缩小。千万不要自以为了不起,装出一副目高一切的样子。这样的人换做我是面试官也一定会刷。也许是以前做过学生干部,也读过一些管理、励志、心理学方面的书籍,所以和面试官交流的过程我都能控制在一个轻松的氛围,并主动引导面试官问及我熟悉的知识。
2. 自信。有句话说得好,“有的人到了战场才祈求胜利,有的人在上战场之前,就已经胜利了”。自信的来源是平时一点一滴的积累,立足于自己的兴趣,不断深入去挖掘。如果你学了很多东西,但是面试总是受挫,不要因此气馁。而应该立即调整,总结失败原因,然后想想怎么发挥出自己的东西。我腾讯和阿里巴巴在笔试一关就被刷了,让我非常郁闷,甚至怀疑过自己是不是不适合开发。但后来我从沮丧中走出来,不断总结自己失误的地方,在接下来的几个公司的面试都很自如的发挥出自己的长处。