曾经在bat网易等大公司实习的你们当年的实力到达了一个什么样的高度?

当初你们都是可以完成什么样程度的项目?
关注者
4246
被浏览
463404

116 个回答

大三时候自己申的微软,面了好几轮,讲自己做的各种小项目(都是做着玩的),各种奇怪的算法题,当时是测试开发岗。最后一轮部门测试的老大面,问的问题是一个接口的功能是输入三角形的三边长,输出三角形的面积,应当设计哪些测试样例进行测试。
去了之后主要的工作是用SCOM给组内的测试系统建一个管理Package,主要就是看文档研究怎么做,因为组里别人也不会,实习导师也不会。这个Package基本是以XML为基础的,当时XML我就知道是跟HTML差不多的东西,一遇到DTD直接懵逼了,各种恶补学了一个星期才看懂SCOM的文档说的是啥……然后WMI、VBScript、Powershell一个都不会,一个一个学。
SCOM是微软研发的一套分布式监控系统,一开始安排做这个事情只是因为有要求必须要有,所以随便安排了一个实习生去做。后来他们产品上线放了几天假出去玩了一趟,回来的时候我给导师写了封邮件,告诉他在他们不在的这段时间里,他们的几百台机器里面有一台服务出现了异常崩溃然后重启了,引起崩溃的原因是内存占用过大,当时的监控数据(附图)等等,后来他们从里面抓出来了一个内存泄漏问题,然后才发现,我擦这玩意居然还挺好用的。后来还给部门内部做了一次报告讲解了一下这个东西的功能。

==================================================================

自己给自己总结中心思想真的超丢人的好吗

1. 面试实习生时候问的问题跟实际的工作内容毫无关系,也并不需要你对某个方面有专业了解,因为你一定不了解。面试实习生主要看的是思考问题的方法论是否正确,还可能有脑子是不是好使。
2. 实习生从事的工作基本上都不是很重要的工作,用人单位充分考虑到了实习生做不出成果或者做出的成果质量不达标的风险,所以很少有实习生的工作进入最终产品的情况,大部分都是写一些内部使用的工具之类的
3. 虽然如此,实习生的工作也不见得都没有意义,也经常会出现实习生的工作质量超出了预期的情况,实习生的评价就是这么来的。

===================================================================

实习生主要做的都是一些没多大意义的杂活,不过杂活有时候也有杂活的好处,可以给你充分的自由度来设计一个小系统,路子野一些也没关系。
实习中间做过的一个小系统是给部门的电视机用的,那个电视机其实是个大显示屏,后面有服务器,是个Windows的操作系统,所以屏幕上放出来的就是个Windows的桌面。平时他们会放一些幻灯片的工具来展示一些内容,但是幻灯片只能显示图片不能显示文字,而且调整格式很麻烦,所以就想找我做个展示用的网页,功能很简单:1. 能把几个现成的网页或者图片拼成一页,比如上下分割,左右分割 2. 能定时自动切换
我设计这个系统也很简单,ASP.NET + SQLServer,全是微软的技术。SQLServer里面存分页配置,左右还是上下,左边的URL,右边的URL。ASP.NET用frameset直接显示出来就行,然后加个setTimeout自动跳转到下一页。现在看来路子还是很野的……不过比起以前自己做的那些小项目来说,其实已经正规很多了,这也是大公司耳濡目染的效果。
我做完之后测试组马上开心地拿去用了,然后开发就哭了:测试组把Bug Tracker的页面全投到电视机上了,走来走去的人都能看见:XXX,3个紧急Bug未修复;XXX,1个Bug已经过期2天;XX系统,3个测试例未通过……
想起这个事我到现在都觉得很得意,SCOM Package也许他们只会用一个版本,这个系统应该能用相当长时间,每当开发一抬头都会在心里默念:这个该死的实习生……

===================================================================

后来部门老大路过看见了,就去问测试的头谁做的系统,他也想用。老大不懂技术,是做产品的,但是精通Excel,他有一些Excel里面有做好的图表,想把Excel里面的表格和图片也投到电视上,Excel随时可能会更新,他希望更新的时候传个新的Excel就能把心的图投出来。我想了一下,拿Excel的.Net接口应该可以搞定,ASP.NET里面直接调Excel,路子野一点没问题!老大要给我定个日程,我说大概一个星期吧。老大就问我:三天行不行?
我:……
说实话一个星期的确是有余量的,毕竟都有偷懒和保险的心理。老大就又说:哎呀你现在一个星期反正也只来4天(我是兼职的,还有一天要上课),就少一天,我看没问题,你也不用加班,先按3天排,做不完拖一天没问题
我当时想,怎么我也得拖到第四天来证明我对工作量的判断是对的。想是这么想,还是在第三天下班的时候做完了……我怎么就管不住我这手呢!
所以你看,不要觉得老大不懂技术好糊弄。人家可能不懂技术,但是人家懂你。

后面这些其实跟题目关系不大,刚好想起来就随便写写。虽然题目问的是进去之前大概要什么水平,但看看进去之后做的这些事,大部分本科毕业生有一定编程基础,然后做到敢想敢干,不怕困难, 肯下功夫去学,基本上都能做得到。当时我的实习评价还是很不错的,所以说明大公司需要的实习生,其实就是这个水平。
感觉实习来说大公司一般不期待你做什么出来,因为它们主要是让你了解公司文化,为校招甄别和储备人才,所以项目一般都是优先级不是特别高的小项目。小公司就一般把你当半个全职使,当然实习生一般待待就走,所以一般让干点杂活,当然也有特别优秀的人参与实际的开发。

我就俩实习经历,一个是在Morgan Stanley (Shanghai).
当时在组里做的一个内部工具,为实时交易信息的数据网络几千个进程的配置文件开发可视化编辑工具,同时可视化进程间的通信关系。当时Team已经有一个之前实习生三个月搞的项目,做了进程通信的可视化,是用GraphViz画的图,然后当做网页背景往上面用绝对位置盖链接,不忍直视。老板给我看的项目简介是想用C#搞一个新的。
我想了一想,图交互用C#太蛋疼了,这显然应该是网页干的事情,何况还有D3JS这种神器。而且由于为了出国的关系,要冲GPA,所以各种课的课程项目为了展示效果基本上都跟同学用网页写了一些炫酷的UI(比如数据库课,大家实现的网站功能都一样,只能比UI了……丧心病狂),所以有一些后端经验,又自学前端,用D3JS,Bootstrap,Django从前台到后台整个写了一遍,网络可以放缩,高亮,弹出详细信息等等,然后因为网络文件系统比较慢,还手写了memory cache(实习生没权限,不给用数据库啊)。
搞笑的是当我把前端的基本样式写出来给他们看的时候,一个不太懂网页的同事以为这是设计文档,问我你搞这么好看到时候实现不实现得出来……
最后大家用得非常爽,老板还半开玩笑的说,这个工具可以去找那些美国的Team要钱去了(每个金融市场都有一个和我们一样的Team,然后各个组之间发生业务往来是要算钱的),因为美国的网络配得比较早,由于历史原因,几千个进程全部塞到一起,所以没这工具维护起来非常蛋疼。
现在反思,有两大遗憾,一是当时编译原理没学好,解析基于bash语法的配置文件用了一堆不太有章法的if else,bug非常多,调试了很久,写个状态机或者定义下语法用个语法分析器来做简单得多也健壮得多;二是公司内比较流行敏捷开发,他们也不知道他们到底想要啥,所以用着用着就要我加个新功能,但是框架设计好的情况下除非推倒重来否则很难优雅地实现,只能用了一些奇技淫巧,非常的丑陋也更难维护。(当然好处是我做开发的时候没那么多规矩,比较灵活,不用写一堆文档给大家看再讨论在实施)

现在在Riverbed Technology.
这是一家网络公司,干的事情大致相当于硬件云硬盘,只要接入一个设备,就可以像换手机那样迁移公司数据,所有数据都在远处的数据中心备份和维护,并利用本地cache减少网络延迟带来的影响。他们刚开始似乎也对实习生没啥期待,给我列的项目竟然有把2进制的metadata转成json的项目。不过见我有Machine Learning背景,就说这还有一个磁盘预读的算法设计需求,根据磁盘读取的历史信息,预测文件系统接下来要读哪个扇区。
不过私底下跟我说,这个比较难,你不一定要弄出啥惊天地泣鬼神的方法,可以拍脑袋想几个规则,然后试试,让我们知道啥不行就可以了。
这问题不属于经典的机器学习模型,在读了几篇比较扯的论文后,借鉴其中有用的部分搞出来一个基于有向图的模型,目前测试表现还不错,现在缓存命中率从个位数上升到大概95%(当然因为文件系统本身有预读,然后远端服务器也有基于文件系统的预读算法,实际提升没这么明显),准备用C++实现然后整合到系统里,希望在实习结束前能够被合并到产品代码里去吧。

我觉得一个程序员最荣耀的事情是所写的代码在CPU内存里一直活着,所以我尽力让它们有活下去的理由。
为什么?