你想进什么公司,和你读什么计算机方向,关系不是很大。只要是理工科的学生,面对技术岗位,其实机会是差不多的。 至于你想什么职位,那显然和你的专业/方向关系较大,比如说很多大数据职位,就明确表示要求你DM/ML/NLP/IR背景,但是这也只是说这些学生可能更有优势些,事实上,数学和统计学出身的,很多搞这个非常牛逼的。 所以,不要问选什么导师,选什么方向;也不要问我的实验室很水老板很菜我还能找到好工作吗?你要问的是:我想毕业去互联网公司,我读研的这几年是应该打酱油呢,还是打地沟油? 想找一个好的互联网技术类、研发类工作,无非就是以下4点,你任选一点,做好了,都是有利的,哪4点? 语言层面 算法层面 项目层面 专业层面 具体分析如下: 语言层面你是想搞C++还是Java?选定一门语言后,多看一些这方面的书。C++,不用说了,《EffectiveC++》,《MoreEffectiveC++》,《InsideTheC++ObjectModel》等等。Java,最好能看点虚拟机相关的。尤其是Java虚拟机的内存管理。以及多线程、线程池、设计模式等。问题来了:学C++好还是学Java好呢?语言争论每天都在发生,真的好无聊。建议按照方向和兴趣来选择,不靠谱的说:如果是想做大型游戏开发、底层研发、系统研发、驱动研发等等,就选用C/C++。如果是想做网站开发、网络研发、上层开发、Android开发等等,就选用Java。顺便说一下,有空可以学学Python。算法层面学好算法。这个有两条路,最好是并行,那就是看书和做题。看书的话,主要有《算法导论》、《算法》(RobertSedgewick著)、《算法竞赛入门经典》、《挑战程序设计竞赛》找一本认真看,认真思考。证明过程可以不看,但是算法思想最好能懂,以及实现,最好能在纸张上写出来。复杂度总要知道吧?研一的时候,我就把算法导论上的很多算法,都自己亲自coding了下。特别复杂的数据结构,比如红黑树、B树,没空就别搞了。互联网面试一般都不要求的。主要是排序、查找、简单DP、贪心、图算法和搜索。根据身边同学的面试经验,二分搜索和快速排序,是面试常备了。看书的时候,如果有时间,可以思考几个问题:这个算法的时间空间复杂度,各是多少?如何分析? 工程实现里,都有哪些trick?如何加速? 这个算法可能用在哪些方面?有哪些应用?你比如说吧,求交集的算法,就广泛用在倒排索引、新浪微博共同北京哪里的白癜风医院最好北京哪家医院治疗白癜风治的好
|