计算机博士需要什么?
个人情况:本科软工,硕士计算机,研究生期间在硅谷某大厂实习,毕业后回到国内另一大厂工作至今(刚好20年) 先上结论:算法、数据结构、编译原理、操作系统、计算机网络这几本书是必读书目(后面会说为什么);其他书籍和项目经验都是加分项,不是必须项。
为什么要读这些书——因为这些是学科的基本素养。 具体解释:
1.什么是基本素养?就是无论你在大学学什么专业,这些书籍是你必须要掌握的基础知识,就好比不管你学习好不好,数学你必须得学会加减乘除四则运算一样。所以这些书本知识也是你面试聊天谈吐的必备要素,也是面试中那些面试官喜欢问的专业问题所在,更是你写出代码的根本来源(哪怕你以前没学过,但你通过看书学会了,那也是基础能力的体现)。 如果连这些最基本的要素都不具备,那你和码农这个职业基本上可以说是无缘了。所以说这些基础知识是必备的。
2.为什么要读这些书——因为这些知识经过时间的洗礼和社会的锤炼并没有被淘汰,反而经过了不断的完善,已经形成了普适性的准则,可以说能够熟练支撑这些知识的运用,基本上可以通吃互联网行业的软件工程师职位。
3.那么哪些是必须掌握的? ——算法、数据结构、编译原理、操作系统这四门课程所涉及的知识是必须要熟练掌握。为什么是熟练掌握而不是深入掌握呢?因为要深入一个领域,你需要花大量的时间和精力,可能还不一定能取得很好的效果。而熟练掌握的意思就是,提到某个知识点你能马上使用(不假思索)出来并且没有错误。举个例子:比如我让你当场手写快速排序的复杂度并实现,只要你回答是正确的,那就是掌握了。反之就是还没掌握。 当然,很多知识并不是说你掌握了简单的一两层就会用到,可能是需要你积累很多东西才能灵活运用。但是基本的素养是需要你花时间去掌握的。
4.为什么是这几本? 因为这是我觉得我这辈子花时间和精力最多,而且我认为最重要并且最有用的几本书(可能因为我是科班出身且专业是软工的缘故吧)。如果你以找工作为目的,那么我建议你就找这三本专业书(算法、数据结构、操作系统),然后每一章都过一遍,重点理解。至于编译原理和中高级编程,你可以选择性阅读。 如果时间充足,你可以把教材后边的习题都做一下(一定要动手做!不能只看不写!),这样能保证你的基本功不会生疏。 至于简历上的项目经验,如果是计算机相关专业的话,随便找一个开源的项目,加入其中并发挥你的技术能力,完成从0到1的项目开发,这也是能加分的一项。(注意项目最好是能在简历关闭投递日期前搞定,不然就作废了。)