校招实录-百度篇

校招回忆录---百度篇

2015届[2014年秋]百度(研发转安全)校招求职经历

本文由****-蚍蜉撼青松【主页:http://blog.****.net/howeverpf】原创,转载请注明出处!


       需要提前说明的一点是,由于这系列文章都是记录我自身参加各大公司校招的经历,部分推断或评价(尤其是对面试官的评价)是带有很大主观色彩和一定偶然性的,不一定准确也不求客观,所以我的这些文章真的只能作为一个侧面的参考。管中窥豹,可见一斑,但切勿以偏概全哦~


一、网申

校招主页:http://talent.baidu.com/component1000/corp/baidu/html/intro.html

       百度提供的工作地点还蛮多的,就研发类岗位来说,主要是北京、上海、深圳。比较“凶残”的是,百度校招网站上的岗位划分真是细到“令人发指”,不仅种类多,连尼玛工作地点都是岗位名称的一部分。比如神马:“深圳-研发工程师”、“上海-研发工程师”、“北京-研发工程师”,这竟然是三个不同的岗位志愿!!!我也是醉了~~~

       百度校招网申的时候只能投递一个岗位志愿。它提供的安全方面岗位有两类,一是安全工程师,二是安全研究员,以北京的岗位为例,二者的要求分别如下(其实上海和深圳的岗位在网站文字的描述上也和北京是一致的):

校招实录-百度篇

图1 百度-安全工程师与安全研究员的岗位需求信息描述


二、笔试(研发工程师)

       仅就今年来说,百度针对不同的岗位给出的是不同的笔试题。我网申的是深圳-研发工程师,其笔试一共是七道题。其中,1-3是简答题(分别涉及计算机网络、操作系统原理、数据库原理),4-6是算法与程序设计题,7是系统设计题。

       说来惭愧,虽然我觉得今年度娘的笔试题相对往年来说还算蛮对胃口的(只有第五题,第七题一个不会一个不知要答什么,对我一个非软开科班出身的人要求不能太高,大家要多体谅~),但是并我没有通过笔试。【一开始还以为是大家都做得太好,后来跟面试官交流才知道是没找到我的笔试答卷,面试官还以为我没参加笔试,想想也真是醉了~】下面是今年成都这边的研发工程师笔试题:

1.描述一下TCP三次握手和四次挥手的过程,并说明为什么挥手需要四次

2.列举你所知道哪些操作系统内存淘汰算法,并作简要说明

3.描述一下数据库设计的几个范式

4.给一个单链表,求他的中项(若有两个,以前面一个为准)

5.一个正整数集合S,设A、B、C都是集合中的元素,且满足 C=A+B,求C的最大值

6.用堆栈来模拟队列,要求实现enqueneue(入队)、dequeneue(出队)、isEmpty(是否为空)三个操作

7.手机推送系统的设计(骚瑞,细节记不清了)

       根据事后与同学的交流,安全工程师的笔试题比较专业,有问到渗透、逆向相关的非常具体的细节问题;相对而言,安全研究员的笔试题就很欢乐了,就五个安全方向(Web安全、逆向、漏洞挖掘、网络安全、移动端安全)各给出了100分的简答题,可以任选一方向作答,也可以在多个熟悉的方向作答,题目总分值超过100分即可。【据一位参加安全研究员笔试的童鞋描述,题目好多都比较简单,例如:请列出你常去的5个安全论坛?……(我也好想去啊!!!)】

       好吧,我承认我当时怂了……


三、面试

       我等了几天都没等到研发工程师的面试通知,后来反倒是百度的安全部门因为人没招够,给了我面试的机会,想想我这折腾得也真是有点无语~在此,我要先谢谢习大大,因为大大吹了一股春风,好多单位(比方说中电30所)的安全岗位在扩招,好多公司(比方说百度、阿里、华为)在喊安全岗人没招够,这个行业今年需求特别旺盛的赶脚!

       据了解,百度的面试一般是三面,前两面是技术面,第三面是主管面。我第二面结束就华丽的扑街了~~~


3.1 一面(安全研究员)

       一面采用的是电话面试+在线写代码的形式,其中电话面试耗时半小时左右,在线写代码大概耗时一刻钟。整个一面偏向于对我的整体情况的初步了解。

       因为我最初报的是研发工程师,所以电话打过来一开始先说明了面试的岗位变动并咨询我是否愿意,又花了几分钟聊了一下今年安全开发类人才短缺的情况。下面是一些我还有印象的几个面试题:

1.主要的开发语言?
如果在VC里面有一个局部变量,未被初始化,打印出来是什么?【刚好当时《猿泡沫》正流行~】

2.TCP三次握手的过程?

3.关于SSL会话劫持技术一些细节(整体流程、DNS劫持的实现、技术缺陷与改进)【我简历上有提到流量劫持】

4.对于一个很大的文件,读取该文件的指定行信息【awk的使用】

5.关于博客
a)socket的IO模型现在清楚了么?【上次面试百度实习的时候不清楚的问题,博客上有提到】
b)知不知道epoll?
c)请解释一下“XML外部实体扩展漏洞”是个怎样的漏洞?【在我的博客上手贱转载过,已删……】

6.问得差不多了,我们在线写个程序,两个升序单链表合并成一个升序单链表【在这个网站写的,http://collabedit.com】

7.你有什么要问的?


3.2 二面(安全工程师)

        二面是在市中心的一个酒店进行的现场面试,耗时1h左右,偏向于实际编码能力的考察。下面是一些我还有印象的几个面试题:

1.做个自我介绍,主要包含你擅长什么和你做过什么?

2.先写个程序,两个升序单链表合并成一个升序单链表【已经写过了,啊,换一个】

3.进程通信有哪些机制?
a)请现场写一个共享内存的实例
b)说下管道通信的过程

4.shell命令用的多么?是否知道连接和重定向?在重定向的时候经常会用到的一个&符号,你知道是干嘛的么?
那你知不知道proc目录?这个目录里的文件又有什么特点

5.fprintf()与write()两个函数有什么区别?【是否有缓冲】

6.<项目1>
a)爬虫的工作流程?URL去重如何实现?
b)给出了一个关于URL重复的更准确定义,现在给出一个含有超过1亿条URL记录的文件,问如何去掉其中重复的URL,请写出实现【最大败笔之一】
c)如何扫描SQL注入,XSS

7.<项目2>
a)项目数据如何获取?
b)项目的性能瓶颈有哪些?
c)有哪些措施或方法可以优化MySQL的效率?【最大败笔之二】

8.<项目3>
a)这种代理的开源实现应该不少吧?你个人对此做出了什么贡献?或是在实现过程中做了哪些改动/优化?

9.你觉得还有哪些是你擅长我却没有问到的?
那如果有一个用户举报说他可能受到了流量劫持,你会怎么确定他遇到了什么攻击/故障?

10.你有什么要问的?


3.3 面试官的介绍

1.百度安全部门主要业务的和产品
“移动终端安全、PC终端安全(百度杀毒、百度卫士)、网页挂马检测、云加速/CDN”


四、小结

       就网申来说,百度的招聘网站与主站之间相对独立,账号都得重新注册,不能直接用百度账号。比较想吐槽的是,岗位名里面竟然还夹带了工作地点,实在是眼花缭乱。但这可能也是因为同一个岗位在不同的城市负责的业务有所不同(例如,同样是安全工程师,网页挂马检测主要是北京这边做,杀毒则主要是上海那边在做),目测你申请的是哪个城市的职位,面试官也会是那个城市来的。

       就笔试来说,研发工程师的笔试比较兼顾基础理论与编码能力,难度适中;安全研究员的笔试比较欢乐也比较基础,但你若是真在五个大类里挑简单的做,也很难脱颖而出,选择其中一个擅长的方向把100分做完,再选择其他方向的几个题做一下,应该是一种相对较好的方式,因为这可以凸显你专精且博学的T字型知识结构。

       就面试来说,百度的面试官态度还是蛮好的,交流比较愉快;我发现百度的面试官貌似比较喜欢考察链表相关的编程题,尤其是喜欢让写“两个升序单链表合并成一个升序单链表”;面试官比较关心的技术包括:逆向(来自与其他同学的交流)、Web漏洞检测、安全开发。

       总的来说,非常感谢度娘给我面试的机会,尤其感谢第一位面试官对我的肯定,这也是我今年校招第一次通过一面,进入二面,把我被企鹅打击得体无完肤的信心重新捡了回来!虽然还是密布尘埃,但终究还是被我逐渐擦亮了。


写在最后

       本文旨在从一个求职者的角度,将百度今年校招的流程、岗位需求对大家做一个简单的介绍,希望能够让有意在今后加入百度的学弟学妹们有所收获,有的放矢。作者经历有限,所以某些内容(笔试题目、面试形式等)仅针对成都地区。

       虽然我在文中记录了笔试、面试的一些真题,但是我并不希望我的读者只是冲着这些真题而来,我希望的是,你们通过我的经历,能够从侧面对百度以及它研发(or安全)工程师(or研究员)的岗位有更多的了解。共勉!