给计算机专业新生的一些学习建议

一、个人介绍

老学长是一个从双非本科(南信大,计算机也还行,专业也有不少大佬,但比例还是少数)考研至南京大学的过来人,虽然还没正式进入过工作,但是对于考研、春招面试等还是有了丰富的经历。最近,刚上完一周研究生的课程,梳理回望过去并规划未来,有些感悟,因此想在此分享一些经验给刚上计算机的同学们。关于我的更多介绍可以见我的github,欢迎stars。
给计算机专业新生的一些学习建议_第1张图片

二、明确方向

对于刚进大学的同学,大多数人还处于兴奋期,想着如何在大学玩儿、谈恋爱等,可有些同学已经开始自学编程语言和计算机基础、准备加入ACM,了解企业实习等事情。那么计算机的方向有哪些呢?

  • 保研(专业成绩+本科学校+竞赛、论文+项目+其他)
  • 考研(择校+坚持+专业课成绩+项目)
  • 就业(学校+技术+项目+算法+其他)
  • 出国(专业课成绩/绩点+学校+竞赛、论文+雅思/托福)

刚进大学,对于这些肯定还是十分模糊的。学长给出的建议 玩着学,学着玩,多去探索、多去折腾,发现自己适合、热爱的、擅长的。但核心一定要记住以下几点:

  • 努力学习计算机基础(关于计算机基础的学习路线网上有许多,也可以参考我的一些建议学习路径)
  • 考好期末考试,千万不要挂科(我曾因为记错考试时间而重修,会浪费时间精力,也会影响保研和奖学金等)
  • 在保证以上两条情况下,可去精通学习一门编程语言,然后去做一些有趣的小项目,拥有编程则拥有全世界。

如果觉得自己基础和编程语言能力差不多了,那你就可以开始搞事情了;你可以去主动联系院校老师做项目\科研,可以广泛去参加竞赛(ACM、蓝桥杯、程序设计竞赛、软件杯等)、也可以直接去GitHub找开源项目学习成长,甚至还可以尝试找实习(但不推荐过早去找,基础不牢地动山摇)。

三、一些工具

  1. 计划总结软件
  • Excel表:二维表格十分方便去细化每天或每周的计划,做任何事情都需要先规划,明确目标在进行细化目标和任务,这样更好地去完成、执行。
    给计算机专业新生的一些学习建议_第2张图片
  • XMIND:进行梳理、思考、联系、总结,知识的建立即是神经突触的连接,发生联系,而人的社会熟悉也是关系,因此理清关系则是掌握知识的关键,而思维导图则很好地帮助完成此项工作。
    给计算机专业新生的一些学习建议_第3张图片
  1. 笔记类软件(一定要养成做笔记的习惯,方便后续整理思考)
    Notion:支持MarkDown语法,也方便Web在线、手机上进行整理阅读,十分方便,极力推荐!注意命名的规范和目录的整理,让自己体系脉络更清晰。(缺点,不支持全文检索)
    给计算机专业新生的一些学习建议_第4张图片
    OneNote:微软的一个笔记软件,不方便支持共享、手机的操作,也不是MD语法,不方便一种通用。但是整体层次感更舒服。
    给计算机专业新生的一些学习建议_第5张图片
  2. 刷题类网站
  • 牛客网(除了找面经,还可以进行一些计算机基础知识刷题来检验自己的掌握情况)
  • 力扣(刷算法题,认准力扣就好了,面试时推荐可以先看 代码随想录)
  1. 项目学习
  • GitHub:GitHub是真心强大,里面有很多的大神以及优质开源项目;建议常逛。
  • Gitee:码云,国内版代码仓库
  1. 网课学习资源
  • B站
  • MOOC

在时间充裕的情况下,建议多啃经典黑皮书,网课的学习辅助理解。

四、 计算机基础

  1. 计算机组成及数电、模电
  • 认识计算机系统组成构成(硬件+软件)

  • 认识数据、信息如何在计算机通过数字系统表示(二进制)

  • 认识存储(存储器的层次及原理)、缓存,解决数据的存储、保存

  • 认识计算(指令系统、CPU的组成和原理)

  • 认识计算机内部的通信(寻址、总线、IO)

推荐:
(1)CSAPP 深入理解计算机系统:比较全面地介绍了计算机系统的构成、程序如何运行及通信,进阶好书
(2)麻省理工学院机组网课:从信息、数据、数电基础到存储、CPU等讲解,比较基础、全面
(3)计算机组成:硬件、软件接口:更加详细地介绍软件和硬件的组成

  1. 操作系统
  • 认识操作系统的概念和作用

  • 学习并发化:进程、线程管理,状态机、死锁、锁、信号量。可结合Java的并发学习,涉及内存模型管理(一致性问题,分布式)

  • 学习虚拟化技术:内存管理、虚存、缓存,可结合机组的存储部分

  • 学习持久化技术:文件管理、磁盘管理

  • 学完之后,可深入分析JVM和MSYQL的体系结构设计和原理

推荐:
(1)JYY南大网课
(2)现代操作系统
(3)学完之后,可进行Linux相关的深入学习,例如Unix经典入门、深入LInux

  1. 数据库
  • 学习数据库的概念和作用(关系代数、数据库模型等)

  • 学习SQL的基本使用和高级使用、过程式存储SQL

  • 学习数据库的表、模型设计,了解相关的设计范式

  • 数据仓库,学习了解常用的数据库
    非关系型:Redis、MongoDB、Memcached
    关系型:MYSQL、Oracle
    大数据相关的存储:HDFS、

  • 学习MYSQL:深入MYSQL的执行引擎、体系结构(SQL的解析,优化等)、性能与优化

推荐
(1)数据库概论
(2)高性能MYSQL

  1. 计算机网络
  • 学习基本的网络模型,通信的过程
  • 掌握并熟悉TCP、IP,HTTP
  • 清楚网络的连接过程,理解cookie、session等作用

推荐
(1)网络是怎么连接的
(2)计算机网络基础(谢希仁)
(3)计算机网络:自顶向下
(4)HTTP权威指南
(5)Unix编程
学习时,可结合Java的通信框架以及C/S模型的设计

  1. 数据结构与算法
  • 学习数据的组织
  • 理解算法复杂度
  • 掌握递归、迭代、分治等思想
  • 认识基本的数据结构(线性表,栈/队列,树等)
  • 熟悉常用的基本算法(排序类-快排常考、数组类、链表类)
  • 了解基本算法思维:分治、贪心、动规

推荐
(1)数据结构.严蔚敏
(2)算法导论
(3)算法4

更多详情,欢迎关注本人GitHub和给与star支持!

你可能感兴趣的:(软件架构&设计方案,学习,java,面试)