从去年年底开始感觉在实验室的进步越来越缓慢,没有刚实验室那股劲,后来的项目因为没有迫切的需求,进展比较缓慢,把大部分的时间花在课外学习上了,研究主题主要在搜索引擎、key/value存储上,C++&设计模式上,虽然这样接触了很多新的东西,但理解还是比较肤浅,故一直希望暑假找个地方实习,看看在公司大家是怎么做事的。于是从5月开始投了百度、腾讯、阿里、淘宝、支付宝等公司系统研发的职位(之前的博客中写了几篇面经,有兴趣的同学可以挖出来看看),最后选择去百度基础架构部实习,从读过《壹百度》后,去百度一直是我心中的愿望。
7月6日,入职百度,开始了实习之旅,认识了HL、CP、JP这三位工作导师,还有另外一个北邮的实习生同学ZP。在入职后,前两周做新人练习,接着参加一个分布式消息系统的开发工作,至9月29日离职。
新人练习
刚进公司,收到一封基础架构部发出的欢迎邮件,上面有新人指引及各种资源的链接。看了很多文档,对百度的了解也更加深入了,发现以前的认识很多地方都是不正确的,以至于现在有人对百度做出非客观评价时,心里总会有些小波澜,有种想去纠正别人的冲动,正印证了根叔那句话,“母校就是那个你一天骂八遍却不许别人骂的地方”。
我的新人练习题很简单,给定一个文本文件(500w行左右),将其词条分解出来(内部有分词库),并统计各个词条出现的频率,然后将结果降序输出结果。要求写出详细设计文档,代码,任务时长两周。
接到任务后初步了解了下内部的日志库、配置库、分词库(因为库的版本问题,纠结了很长时间)的用法,觉得题目不难,简单的写了下设计文档,跟CP沟通了下就开始编码了,编码加调试大概花了两天时间,程序可以跑了,功能上也满足需求,时间20s左右,当时觉得两周的任务这么快就搞定了,心中大喜。给CP看结果的时候,他提出了的几个问题,文档写的不够详细,性能上有很大的优化空间,部分编码不符合规范,单元测试做的不够,然后说这个任务起始很简单,主要是通过任务熟悉在公司做事的流程、熟悉基础库的使用…而我想的却是如何最快的完成任务,丝毫没有考虑完成的好不好,以及需要从中收获些什么,于是在接下来的时间,踏踏实实的重新思考问题,将能并行处理的部分用多线程解决..,在锁上做优化,把整个设计想清楚后,现转化成文档,然后开始编码,测试,思路比前一次写的时候清晰多了,最后程序处理任务的时间为6s左右,连自己都有点震惊。
项目研发
在完成新人练习后,我和ZP就开始学习分布式消息系统的一些资料,从需求分析到总体设计、详细设计等,最后分别做了串讲,在公司每天都要各种讲座、技术交流,可惜时间有限。我主要负责系统API端的开发,之前我没有想到实习生会参与开发工作(后来也证明这样做是有风险的),接下来的日子,就是每天学习以前的代码、构思API的设计及实现(这部分在之前的设计中没有过多的`讨论)、写文档、写代码、进入测试阶段后,不断修bug。在这过程中,通过阅读他人的代码,学到很多编程技巧,也学到了很多系统设计方面的知识,对团队协作的认识也更深一些了。
离职的时候,项目测试进行了半个月左右,API上测出的bug也被逐一修复,对于还没有测试到一个点我很是担忧,回学校后听CP说那个点上出了很多bug,但除了给他们提供一些辅助信息,别的事情我也帮不上忙,对此我深感愧疚和遗憾。
百度文化
百度的文化是简单可依赖,在公司的两个多月,我深刻的体会到这一点。同事之间简单的称呼名字,平时大家交流起来,丝毫没有因为级别不同而拘束。
做新人练习的时候很多问题都是在别人的帮助下解决的,而寻求帮助的方式只是简单的从内网查到hi号,在hi上的另一边,总有人耐心的回复我的问题,而这些人我连面都没见过。在项目开发的过程中,CP和JP也总是不厌其烦的解答我的各种问题,真的导师,敢于面对惨淡的学生,我相信他们带出来的每个学生以后都不会差的,百度员工的口碑不是吹出来来的,是一代代百度人不断努力打造出来的。
导师&同事
公司分配给我的导师是CP,但我认为在这个几个月中,CP、HL、JP都是我的导师,在工作和生活上给了我不少帮助,向他们请教问题的次数我既不清了,被他们请吃饭的次数我也记不清了,回武汉前请他们吃饭,他们还想着怎么给我省钱。
很庆幸遇到ZP这样的同事,每天有人一起纠结去哪吃饭、吃完饭在百度大厦外面转一圈聊聊八卦、去前台关注下百度指数。现在回过头想想,如果实习的时候没有一个聊得来的同事,日子会有多么枯燥。
最后的结果
走到时候同事们说早去早回,我笑着跟他们说“会回来的”,最后的结果是我食言了。因为私人原因,我最后选择了去淘宝核心系统部,希望各位同事们理解,最后,再次感谢百度各位同事在我实习期间的关心和帮助。
因篇幅问题不能全部显示,请点此查看更多更全内容