程序员读研如何提升技术之我见(转载)

你想进什么公司,和你读什么计算机方向,关系不是很大。只要是理工科的学生,面对技术岗位,其实机会是差很少的。html

至于你想什么职位,那显然和你的专业/方向关系较大,好比说不少大数据职位,就明确表示要求你DM/ML/NLP/IR背景,可是这也只是说这些学生可能更有优点些,事实上,数学和统计学出身的,不少搞这个很是牛逼的。linux

因此,不要问选什么导师,选什么方向;也不要问个人实验室很水老板很菜我还能找到好工做吗?你要问的是:我想毕业去互联
网公司,我读研的这几年是应该打酱油呢,仍是打地沟油?git

想找一个好的互联网技术类、研发类工做,无非就是如下4点,你任选一点,作好了,都是有利的,哪4点?github

  • 语言层面面试

  • 算法层面redis

  • 项目层面算法

  • 专业层面编程

具体分析以下:设计模式

语言层面网络

你是想搞C++仍是Java?选定一门语言后,多看一些这方面的书。

C++,不用说了,《Effective C++》《More Effective C++》《Inside The C++ Object Model》等等。

Java,最好能看点虚拟机相关的。尤为是Java虚拟机的内存管理。以及多线程、线程池、设计模式等。

问题来了:学C++好仍是学Java好呢?语言争论天天都在发生,真的好无聊。建议按照方向和兴趣来选择,不靠谱的说:

若是是想作大型游戏开发、底层研发、系统研发、驱动研发等等,就选用C/C++

若是是想作网站开发、网络研发、上层开发、Android开发等等,就选用Java

顺便说一下,有空能够学学Python。

算法层面

学好算法。这个有两条路,最好是并行,那就是看书和作题。

看书的话,主要有《算法导论》、《算法》(Robert Sedgewick著)、《算法竞赛入门经典》、《挑战程序设计竞赛》

找一本认真看,认真思考。证实过程能够不看,可是算法思想最好能懂,以及实现,最好能在纸张上写出来。复杂度总要知道吧?

研一的时候,我就把算法导论上的不少算法,都本身亲自coding了下。

特别复杂的数据结构,好比红黑树、B树,没空就别搞了。互联网面试通常都不要求的。

主要是排序、查找、简单DP、贪心、图算法和搜索。 根据身边同窗的面试经验,二分搜索和快速排序,是面试常备了。看书的时候,若是有时间,能够思考几个问题:

  • 这个算法的时间空间复杂度,各是多少?如何分析?

  • 工程实现里,都有哪些trick?如何加速?

  • 这个算法可能用在哪些方面?有哪些应用?你好比说吧,求交集的算法,就普遍用在倒排索引、新浪微博共同关注、计算Jaccard系数等等上。

除了看书,还有就是很重要的:刷题啦。主要有pojzoj等。找一个网站,认真刷一些题目,踏踏实实的,别浮躁。

项目层面

若是实验室比较牛,基本上忙项目就足够累死累活了;不过作了相对给力的项目,对于找工做,仍是有很大帮助的。基本上不用怎么愁了。

若是老板这儿没项目呢?

若是实验室比较水,那就尽可能去实习。大公司的实习经验很能给简历加分。若是老板不让你出去实习。ok,既然实验室很水,说明自由时间比较多,那仍是能够干不少事。好比说,github上就有不少开源项目,你能够选择一两个著名的,阅读源码,而后尝试本身也参与进去。

说几个我比较感兴趣的开源项目吧:redisspark

专业层面

你对数据挖掘很精通,你对推荐系统很熟悉。你在NIPSSIGIR上发表论文无数;你是百度推荐大赛,阿里巴巴大数据比赛冠军常客。

也就是说,除了尝试发顶会论文,还能够参加各类比赛。本专业本领域里都有什么比赛能够参加呢?搜一下微博或者知乎,或者问下师兄师姐,不就知道了?

专业层面,能够作的东西很是多。好比,你对数据挖掘很感兴趣,那么数据挖掘中的常见模型,咱们了解多少?机器学习,咱们掌握到什么程度了?举个例子:

  • SVMlogistic regression这两种model,有什么特色?各自的适用场合?

  • feature selection的经常使用方法有哪些?为何lasso能够做为feature selection

  • Adaboosting为何不容易over-fitting?你能不能从statistical view来解释解释?

  • 哦,你和我说,你不是搞学术研究,你反感Learning Theory,你说你是一个工程师,那你写了多少代码?

scikit-learnweka,以及spark,你会用哪一个工具?(熟悉一种工具)

你有本身下载一些数据集跑跑实验吗?你有参加一些大数据相关的竞赛吗?(动手实验/参加比赛)

专业层面,能作的,要作的,还有不少。

哦,最好熟悉下linux的基本使用。

最后的话

若是能在读研期间作到这里的一点或者几点,到时候甚至不须要翻《编程之美》或者leetcode就毫无压力啦。 最后说几点我的感觉。

  • 算法牛,项目牛,长得又帅,又精通不少语言,这种人,是很少见的。

也就是说,你想拿一个好offer,通常只要有一两点突出,就能够了。

  • 互联网面试,除了个别公司个别面试官,通常都是要考查(考查?考察?这两个词有什么区别?考察是调研、研究、分析的意思)算法的。你研一的时候准备,看书作题,总比研三的时候抱佛脚来的好吧?

何况,算法的学习,也不只仅是为了面试吧?多是受益终身的。或者,吹牛皮装逼做为谈资,也是能够的。

  • 别轻易说我就要去某某公司。到时候,你会发现,选择比你想象的多。

也有可能比你想象的还少,为何?

就看你有没有作到我上面说的这些了。

 

原文地址:http://developer.51cto.com/art/201511/497862.htm

相关文章
相关标签/搜索