图 by:赵学弟@清华园
关于作者:程序猿石头(ID: tangleithu),现任阿里巴巴技术专家,清华学渣,前大疆后端 Leader。欢迎关注,交流和指导!
背景
今天 1024 程序猿节,首先祝大家节日快乐~
熟悉石头的朋友知道,我本科就读于某985(CSU,专 “教如何打 CS” 的大学,也称“长沙左家垅男子高等职业技术学院”),然后硕士保送到某 Top2(THU,也叫“北京五道口职业技术学校”)。
硕士毕业之后,石头也一直从事编码相关工作,从大一开始接触计算机,至今也有 10+年头。计算机相关专业有一个明显的好处,就是你在大学所学的相关专业知识和你就业联系得很紧密。所以,在学校的时候,专业课就一定要好好学习和理解。
如果不是计算机相关专业呢?前两天我一个公众号的读者朋友就比较焦虑,找我沟通说目前在某厂实习,因为不是科班出身,明显感觉和周围同期入职的科班实习生要差一些。
其实,这也没关系,从看到这篇文章的时候开始,就积极准备,弥补相应的专业知识即可。
积累专业知识,重视基础
专业基础知识其实才是重中之重,也是最能拉开程序猿之间差距的地方。在阿里社招面试的过程中也是非常看重基础的,过去项目不牛 X 没关系,基础知识一定得杂实。
石头在参与社招面试过程中,领导也特别交代,除了一般的沟通交流外一定要看基础,基础好,解决问题时有逻辑、有条理,简单的代码题目能写个八九不离十,基本上一面二面也就过了。
那么,到底有哪些专业知识呢?就以我本科 CSU 大学给安排的课程来挨个阐述。我还特意去翻了下我之前的成绩单,有各个学期的各个课程安排。
-
可视化程序设计基础:其实就是上面提到的 VB,通过可视化的效果来正向反馈自己学习。其实,也可以通过比如用 HTML+JS 来体验一下,对“编程”有个直观感受作为入门也不错。
-
C/C++程序设计基础:C/C++ 还是非常基础的,建议入门编程之后都掌握一下。
-
离散数学:离散数学对锻炼逻辑思维等还是有很大的帮助。印象中当初老师直接在课上跟我们玩了一个“数十八罗汉” 游戏,就利用了离散数学里面的思想让老师能够保证赢。
-
数据结构:这个不言而喻,后文详述。
-
算法分析和设计:这个不言而喻,后文详述。
-
汇编语言程序设计:这门课程有利于让大家理解自己写的代码是怎样被计算机认识,底层是如何运转的。推荐学习,书籍可推荐王爽的《汇编语言》。
-
操作系统:随便列几个话题,看看其中的分量。进程、线程、死锁,内存管理、进程调度、任务调度等等,是不是现在工作中也离不开。推荐参考书籍如:《深入理解计算机系统》、《操作系统导论》。
-
计算机网络:TCP/IP,路由,网络 7 层/ 4 层协议,HTTP,DNS 等等。推荐参考书籍:《计算机网络-自顶向下方法》、《TCP/IP详解》等。