一、个人介绍
老学长是一个从双非本科(南信大,计算机也还行,专业也有不少大佬,但比例还是少数)考研至南京大学的过来人,虽然还没正式进入过工作,但是对于考研、春招面试等还是有了丰富的经历。最近,刚上完一周研究生的课程,梳理回望过去并规划未来,有些感悟,因此想在此分享一些经验给刚上计算机的同学们。关于我的更多介绍可以见我的github,欢迎stars。
二、明确方向
对于刚进大学的同学,大多数人还处于兴奋期,想着如何在大学玩儿、谈恋爱等,可有些同学已经开始自学编程语言和计算机基础、准备加入ACM,了解企业实习等事情。那么计算机的方向有哪些呢?
- 保研(专业成绩+本科学校+竞赛、论文+项目+其他)
- 考研(择校+坚持+专业课成绩+项目)
- 就业(学校+技术+项目+算法+其他)
- 出国(专业课成绩/绩点+学校+竞赛、论文+雅思/托福)
刚进大学,对于这些肯定还是十分模糊的。学长给出的建议 玩着学,学着玩,多去探索、多去折腾,发现自己适合、热爱的、擅长的。但核心一定要记住以下几点:
- 努力学习计算机基础(关于计算机基础的学习路线网上有许多,也可以参考我的一些建议学习路径)
- 考好期末考试,千万不要挂科(我曾因为记错考试时间而重修,会浪费时间精力,也会影响保研和奖学金等)
- 在保证以上两条情况下,可去精通学习一门编程语言,然后去做一些有趣的小项目,拥有编程则拥有全世界。
如果觉得自己基础和编程语言能力差不多了,那你就可以开始搞事情了;你可以去主动联系院校老师做项目\科研,可以广泛去参加竞赛(ACM、蓝桥杯、程序设计竞赛、软件杯等)、也可以直接去GitHub找开源项目学习成长,甚至还可以尝试找实习(但不推荐过早去找,基础不牢地动山摇)。
三、一些工具
- 计划总结软件
- Excel表:二维表格十分方便去细化每天或每周的计划,做任何事情都需要先规划,明确目标在进行细化目标和任务,这样更好地去完成、执行。
- XMIND:进行梳理、思考、联系、总结,知识的建立即是神经突触的连接,发生联系,而人的社会熟悉也是关系,因此理清关系则是掌握知识的关键,而思维导图则很好地帮助完成此项工作。
- 笔记类软件(一定要养成做笔记的习惯,方便后续整理思考)
Notion:支持MarkDown语法,也方便Web在线、手机上进行整理阅读,十分方便,极力推荐!注意命名的规范和目录的整理,让自己体系脉络更清晰。(缺点,不支持全文检索)
OneNote:微软的一个笔记软件,不方便支持共享、手机的操作,也不是MD语法,不方便一种通用。但是整体层次感更舒服。
- 刷题类网站
- 项目学习
- GitHub:GitHub是真心强大,里面有很多的大神以及优质开源项目;建议常逛。
- Gitee:码云,国内版代码仓库
- 网课学习资源
- B站
- MOOC
在时间充裕的情况下,建议多啃经典黑皮书,网课的学习辅助理解。
四、 计算机基础
- 计算机组成及数电、模电
-
认识计算机系统组成构成(硬件+软件)
-
认识数据、信息如何在计算机通过数字系统表示(二进制)
-
认识存储(存储器的层次及原理)、缓存,解决数据的存储、保存
-
认识计算(指令系统、CPU的组成和原理)
-
认识计算机内部的通信(寻址、总线、IO)
推荐:
(1)CSAPP 深入理解计算机系统:比较全面地介绍了计算机系统的构成、程序如何运行及通信,进阶好书
(2)麻省理工学院机组网课:从信息、数据、数电基础到存储、CPU等讲解,比较基础、全面
(3)计算机组成:硬件、软件接口:更加详细地介绍软件和硬件的组成
- 操作系统
-
认识操作系统的概念和作用
-
学习并发化:进程、线程管理,状态机、死锁、锁、信号量。可结合Java的并发学习,涉及内存模型管理(一致性问题,分布式)
-
学习虚拟化技术:内存管理、虚存、缓存,可结合机组的存储部分
-
学习持久化技术:文件管理、磁盘管理
-
学完之后,可深入分析JVM和MSYQL的体系结构设计和原理
推荐:
(1)JYY南大网课
(2)现代操作系统
(3)学完之后,可进行Linux相关的深入学习,例如Unix经典入门、深入LInux
- 数据库
-
学习数据库的概念和作用(关系代数、数据库模型等)
-
学习SQL的基本使用和高级使用、过程式存储SQL
-
学习数据库的表、模型设计,了解相关的设计范式
-
数据仓库,学习了解常用的数据库
非关系型:Redis、MongoDB、Memcached
关系型:MYSQL、Oracle
大数据相关的存储:HDFS、 -
学习MYSQL:深入MYSQL的执行引擎、体系结构(SQL的解析,优化等)、性能与优化
推荐
(1)数据库概论
(2)高性能MYSQL
- 计算机网络
- 学习基本的网络模型,通信的过程
- 掌握并熟悉TCP、IP,HTTP
- 清楚网络的连接过程,理解cookie、session等作用
推荐
(1)网络是怎么连接的
(2)计算机网络基础(谢希仁)
(3)计算机网络:自顶向下
(4)HTTP权威指南
(5)Unix编程
学习时,可结合Java的通信框架以及C/S模型的设计
- 数据结构与算法
- 学习数据的组织
- 理解算法复杂度
- 掌握递归、迭代、分治等思想
- 认识基本的数据结构(线性表,栈/队列,树等)
- 熟悉常用的基本算法(排序类-快排常考、数组类、链表类)
- 了解基本算法思维:分治、贪心、动规
推荐
(1)数据结构.严蔚敏
(2)算法导论
(3)算法4
更多详情,欢迎关注本人GitHub和给与star支持!