1、阅读经典书籍,比如《深入理解计算机系统》、《数据库系统概念》、《代码整洁之道》等等,这些都是非常优秀的书籍,每次阅读都会有新的收获。PS:不要看那种3天学会Java之类的垃圾书,内容很浅没深度!
2、多逛技术社区。平时多逛逛全球最大的同xing交友社区Github、StackoverFlow等技术社区,关注最新的技术动态,尽量参与到开源项目建设,如果能给优秀的开源项目奉献自己的代码,那是非常nice的,对于以后找工作面试也有非常大的帮助。
3、培养写文档的能力。写文档是计算机专业学生的必备技能。有空可以学习下markdown语法,比word好用太多了。markdown编辑器推荐Typora(最近收费了)、语雀。
4、多动手写代码,切忌眼高手低!如果你确信自己对大多数的基础知识和概念足够熟悉,并且能够以某种方式将它们联系起来,那么你就可以进行下一步了,你可以开始尝试编写一些有趣的 Java 程序。刚开始动手编写程序时,请可能会困难重重。但是一旦挺过去,接下来即使这些问题再次出现,你也能轻松解决。
5、学会使用google搜索。很多同学遇到问题,不会利用好搜索引擎,而是在一些交流群咨询,往往“事倍功半”,问了半天也没得到想要的答案。建议题主学习下搜索的技巧,多用谷歌搜索,少用百度搜索,谷歌搜出来答案更准确,而不是通篇复制粘贴的“垃圾”。
6、实习非常重要!一定要去参加实习,不管是日常实习还是暑期实习,最好能参加,有实习经验的话,秋招很加分!暑期实习最好大三之前开始准备,不然时间会有点紧张!
PS:双击屏幕可以点赞收藏,记得帮我点个赞哦~
7、每天刷一道算法题,养成刷题的习惯。很多互联网公司都会考察手写算法题,如果平时没有练习,那么笔试或面试的时候大概率会脑袋空白,game over。建议从大二开始,每天抽空到leetcode上刷刷题。
8、参与计算机竞赛。比如ACM国际大学生程序设计竞赛、GPLT团队程序设计天梯赛、蓝桥杯、中国大学生计算机设计大赛等,或者企业主办的比赛,如华为软件杯精英挑战赛、百度之星程序设计大赛等,参加这些比赛对找工作和保研都有加分,并且对你的代码能力、团队合作能力和逻辑思维能力也有很大的提升。
9、绩点要刷高一点,绩点高对你保研、考研或者找工作都有很大的帮助。尽量提高绩点,还有就是不能挂科!挂科对你以后发展影响挺大,切记!
10、明确自己的就业方向,利用大学充裕的时间来提升自己。
11、打牢计算机基础
要特别重视计算机基础,无论以后是找工作还是考研,基础很重要。
计算机专业课程里边,计算机基础课程无非以下几个:
计算机组成原理操作系统编译原理计算机网络数据结构与算法数据库基础
下面简单介绍下怎么学习好这几门计算机基础课程。
如果你是计算机小白,那我推荐你花 10 个小时左右的时间看看《计算机科学速成课》系列视频。这是一门很全面的计算机原理入门课程,每节课只有短短10分钟,却比大学老师十几节课讲的东西都清楚的多!整个系列一共41个视频,B站上有中文字幕版。
每个视频都是一个特定的主题,例如软件工程、人工智能、操作系统等,主题之间都是紧密相连的,比国内很多大学计算机课程强太多!
这门课程通过生动形象的讲解方式,向普通人介绍了计算机科学相关的基础知识,包括计算机的发展史、二进制、指令和程序、数据结构与算法、人工智能、计算机视觉、自然语言处理等等。
每节课程短小精悍,只有短短十几分钟,适合平时碎片化时间观看。
课程目录如下,光看课程大纲都有学习的欲望~
操作系统
无论学习什么编程语言,和需要和操作系统打交道。如果对操作系统不熟悉,那么你在未来的学习路上将会遇到很多障碍,比如线程进程调度、内存分配、Java的虚拟机等知识,都会一头雾水。因此,只有把操作系统搞明白了,才能够更好地学习计算机的其他知识。
书籍推荐
入门级别书籍:《现代操作系统》、《操作系统导论》,进阶:《深入理解计算机系统》
强推《深入理解计算机系统》 这本书。
CSAPP是一本很好的书,糅合了计算机组成原理、操作系统、网络编程、并行程序设计原理等课程的基础知识。对于刚接触编程,或者像大彬这种非科班出身的人来说,这是一本指导性的书,它会告诉你,要想成为一个优秀的程序员,应当重点理解哪些计算机底层原理,告诉你应该在以后的自学过程中,应该重点学习哪些课程,比如操作系统和体系结构等。
这本书的电子版我已经整理到Github仓库了,这个仓库上还有大彬整理的其他300多本经典的计算机书籍PDF,包括C语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等,可以star一下,下次找书直接在上面搜索,仓库持续更新中~
Github地址:
视频教程推荐
国外视频
MIT操作系统课程:MIT6.268
课程地址:
MIT6.828 是一门非常值得学习的课程,广受好评,是理论与实践相结合的经典。
只要你跟着项目一步一步走,做完 6 个实验,就能实现一个简单的操作系统内核。
每个实验都有对应的知识点,学完理论知识后会有相应的练习,学习体验非常棒!
建议在开始学习这门课之前先熟悉C和汇编,对计算机组成有一定了解。
另外推荐Udacity的Advanced OS公开课:
国内视频
清华大学的操作系统公开课:
由清华大学两位老师向勇、陈渝讲授,同时配有一套完整的实验,实验内容是从无到有地建立起一个小却五脏俱全的操作系统,以主流操作系统为实例,以教学操作系统ucore为实验环境,讲授操作系统的概念、基本原理和实现技术,为学生从事操作系统软件研究和开发,以及充分利用操作系统功能进行应用软件研究和开发打下扎实的基础。
操作系统主要知识点:
计算机组成原理
计算机组成原理,主要学习计算机的基本组成原理和内部运行机制,并探索硬、软件之间相互作用的关系,以及如何有效利用硬件提高系统性能。
书籍推荐
首推《计算机是怎样跑起来的》。这本书相对比较基础,描述计算机各个方面。从单片机电路开始,汇编,结构化程序,数据结构于算法,面向对象,数据库,TCP/IP原理,加密解密,XML,软件工程统统有清晰描述,易于理解。在知识的整体理解基础上再阅读文档,学习编程会事半功倍。所以而推荐本书。
另外还有两本书也不错,推荐给大家《计算机组成与设计:硬件 / 软件接口》 、《深入理解计算机系统》
视频推荐
国外视频
【麻省理工学院-中文字幕版】计算机组成原理:
课程为 MIT 6.004 Computation Structures, Spring 2017,如果英文不错,可以跟着学学,课程质量很高。
另外Harvard的CS50课程也很经典:
国内视频
哈工大刘宏伟的计算机组成原理:
刘宏伟老师主讲,他的课不仅适合考研人,也非常适合初学者,初学者也听得懂。
编译原理
编译原理介绍了编译程序构造的原理与实践,让你明白高级语言都是如何被转换为另外一种语言的。学完编译原理,可以尝试自己去实现一个完整的小型面向对象语言的编译程序。
编译原理有点难,做好心理准备。
书籍推荐
《编译原理》和《编译器设计 第二版》。
特别是《编译器设计第二版》这本书,对于对编译有兴趣的同学,这本书绝对是值得推荐的。
这本书覆盖了编译器从前端到后端的全部主题,很多算法都可以在 JVM C2 compiler 中找到对应实现。整体翻译很流畅,不愧是经典!
视频推荐
哈工大的编译原理视频:
比起很多砖头书和博客,强太多!陈鄞老师的 PPT 做的很好,讲得也很通俗易懂,课程评价也很高。推荐!
编译原理-国防科技大学的课程:
课程前置知识:具备计算机程序设计语言和程序设计知识,对数据结构与算法、计算机原理、离散数学等相关知识有一定了解更好。视频简洁明了,适合多刷几遍。
数据结构和算法
为什么学习数据结构与算法?对于计算机专业的同学来说,这门课程是必修的,考研基本也是必考科目。对于程序员来说,数据结构与算法也是面试、笔试必备的非常重要的考察点。
数据结构与算法是程序员内功体现的重要标准之一,且数据结构也应用在各个方面。数据结构也蕴含一些面向对象的思想,故学好掌握数据结构对逻辑思维处理抽象能力有很大提升。
书籍推荐
《大话数据结构》和《算法图解》
《大话数据结构》 这本书最大的特点是,通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。这本书特别适合初学者。
《算法图解》是非常好的入门算法书,示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量。
很多学Java的同学,可能会问有没有Java版本的数据结构和算法书籍?
当然有的,可以看看《数据结构与算法分析 java语言描述》这本书,用Java语言描述各种数据结构和算法,对于Java开发者来说,更容易理解。
视频推荐
UCSanDiego的数据结构与算法专项课程:
浙大陈越姥姥的数据结构课程,非常详细,涵盖常见的算法和数据结构。链接:
浙江大学陈越姥姥和何钦铭教授联合授课,非常经典的课程。姥姥我的偶像!
小甲鱼的数据结构和算法课程。
数据结构与算法主要学习以下内容:
学完感觉还很吃力?可以借助一些刷题网站巩固下。下面推荐几个刷题网站。
牛客网
作为牛客红名大佬,来给牛客宣传一波!(牛客打钱!)
牛客网拥有超级丰富的 IT 题库,题库+面试+学习+求职+讨论,基本涵盖所有面试笔试题型,堪称"互联网求职神器"。在这里不仅可以刷题,还可以跟其他牛友讨论交流,一起成长。牛客上还会各种的内推机会,对于求职的同学也是极其不错的。
LeetCode
力扣,强推!力扣虐我千百遍,我待力扣如初恋!
从现在开始,每天一道力扣算法题,坚持几个月的时间,你会感谢我的(傲娇脸)
我刚开始刷算法题的时候,就选择在力扣上刷。最初刷easy级别题目的时候,都感觉有点吃力,坚持半年之后,遇到中等题目甚至hard级别的题目都不慌了。
不过是熟能生巧罢了。
LintCode
与Leetcode类似的刷题网站。
LeetCode/LintCode的题目量差不多。LeetCode的test case比较完备,并且LeetCode有讨论区,看别人的代码还是比较有意义的。
LintCode的UI、tagging、filter更加灵活,更有优点,大家选择其中一个进行刷题即可。
计算机网络
计算机网络这门课需要学习计算机网络的概念、原理和体系结构,知道计算机分层结构,物理层、数据链路层、介质访问子层、网络层、传输层和应用层的基本原理和协议,掌握以 TCP/IP 协议族为主的网络协议结构,并且了解网络新技术的最新发展。
书籍推荐
《计算机网络自顶向下方法》
这本书是经典的计算机网络教材,采用作者独创的自顶向下方法来讲授计算机网络的原理及其协议,自第1版出版以来已经被数百所大学和学院选作教材。书中从应用层讲起,然后展开,摆脱了从物理层开始的枯燥,直接接触应用实例,更能吸引读者的兴趣。而且,书上很多例子举的很好,生动形象。
视频推荐
视频推荐中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程。这门课是2020年秋科大自动化系本科课程录制版,可与中科大学生一起完成专业知识的学习。
链接:
另外还可以看看哈尔滨工业大学李全龙老师的计算机网络课程,也是很不错的网课。链接:
如果你想更深入去学习计算机网络的话,建议看看 CS 144。
链接:
计算机网络核心知识点:
数据库
互联网应用大多属于数据密集型应用,对于真实世界的数据密集型应用而言,除非你准备从基础组件的轮子造起,不然根本没那么多机会去摆弄花哨的数据结构和算法。
实际生产中,数据表就是数据结构,索引与查询就是算法。而应用代码往往扮演的是胶水的角色,处理IO与业务逻辑,其他大部分工作都是在数据系统之间搬运数据。在最宽泛的意义上,有状态的地方就有数据库。它无所不在,网站的背后、应用的内部,单机软件,区块链里,甚至在离数据库最远的Web浏览器中。
书籍推荐
《MySQL必知必会》主要是Mysql的基础语法,很好理解。后面有了基础再看《高性能mysql》,这本书主要讲解索引、SQL优化、高级特性等,很多Mysql相关面试题出自《高性能MySQL》这本书,值得一看。
视频推荐
伯克利的 CS168 课程:
国内中国人民大学王珊老师的《数据库系统概论》。链接:
码字不易,如果觉得对你有帮助,可以点个赞鼓励一下!
发表评论