计算机基础通常可划分为三大板块。首先是编程基础,涵盖熟练运用C、C++、Java等编程语言;其次是计算机学科的基础知识,像数据结构、操作系统、计算机网络等;最后是数学与英语,包括高等数学、线性代数、概率论等。
一、编程基础
编程基础是入门级别,不管你是考研还是找工作,至少得把编程语言学好,这是基本功。
这部分的重点就是练编程能力,总的来说,就是能把一个想法或者需求变成可以解决这个问题的程序。学计算机不可能啥都记得住,但至少得知道有什么、怎么用、用的时候上哪查,脑子里得有个思路。
然后就是实践,这个阶段写东西不用有太多目的性,重点是把学的技术都用上,巩固和锻炼自己。不知道写什么的话,看看你每天用的最多的应用、玩的最多的游戏,这些都是好项目。比如说微信,不用全部去实现,能不能去写一个好友管理系统模拟好友列表呢?GTA五写不了,那能不能模拟一个背包系统或者写写简单的贪吃蛇、坦克大战之类的。别去纠结有没有用,有想法就按照自己的想法去写,写的过程当中遇到问题、解决问题,就是在锻炼能力。编程主要就是先分析业务需求,看看我们要为谁写、一个解决什么问题的程序,分清楚后再思考用什么技术去解决,把技术真正用到实际当中去,这个过程才是最重要的。
二、学科基础
这部分包括数据结构和算法、操作系统、计算机网络、计算机组成原理、编译原理等等。这部分内容很容易被大家忽略,不仅非科班的人会忽略,很多科班出身的同学也只是为了完成学校的作业。结果找工作的时候也挺难的。
计算机技术主要可以划分为两类,分别是技术应用和技术研发。技术应用指的是那些已设计好、可直接使用的技术工具,如C、C++、Java,以及各种中间件、库和框架等,与之对应的岗位就是我们常说的程序员。这类程序员的主要工作是学习如何运用这些技术工具进行业务开发,例如用Java开发网站系统,用C、C++开发游戏。由于这类岗位更注重业务与技术的融合,所以对计算机基础知识的要求相对没那么高。而技术研发则是专注于开发程序员所使用的技术工具本身,像编译器、数据库、游戏引擎等。从事技术研发的人员虽然也被称作程序员,但这其实是程序员的进阶发展方向,对计算机基础知识的要求极高。
接下来就是就业问题了,大部分人会选择开发岗位,因为这类岗位数量众多,对人员的要求相对宽松,薪资范围跨度较大,从月薪五六千到年薪四五十万都有,不同学历背景的人基本都能找到适配的岗位。而研发岗位相对较少,因为研发成本高昂,通常只有大公司才有能力开展,小公司一般没有大量自研技术的需求。研发岗位的特点是薪资丰厚,起步年薪就在二十万以上,从事算法和体系结构的人员年薪百万也并不罕见,当然,对从业者的要求也非常严苛。
第三部分则是数学和英语
这两点的争议很大。很多人说学习计算机这俩不重要,编程不需要英语,更不需要数学。这话没错,开发岗位确实不影响,很多错误信息还有专业术语看多了自然就懂了,很多经典书籍也有中文版,数学也是一样,初中生学好了也能写出好代码。但是这句话它只适用于开发岗位或者是小公司开发岗位。如果说想走AI呢?如果说想走量化呢?那如果说又想去考研呢?举个例子,有个985的科班生本来能够保研很好的院校,就是因为英语六级没过,考了两年都没能上岸。所以作为学生,学好数学和英语是最基本的要求,再抗拒也要尽量去把四六级过了,把数学学了,尤其是在自己未来想走什么方向都不知道的情况下。学东西不一定是为了用,不一定是为了简历上的漂亮,而是为了让自己以后有选择的余地。平时不好好打基础,光是应付考试,等到后面想考研、想走这些要求数学的方向的时候再去补就麻烦了。
最后,再说一次计算机专业的就业问题,可能很多在校的同学都意识不到问题的严重性,整体不知道干什么,浑浑噩噩的在学校度过四年。但目前的计算机除了985就业率还算不错外,剩下的即便你是211没有实习,没有竞赛,你毕业后可能都找到合适的工作,双非就更不用说了,就业率都过不了30%。剩下的民办、二本,一个班可能就一两个找得到工作,所以,想要去实习,去竞赛,让自己的简历更好的话,就提前打好这些基础。