大家好,我是辣条,好久不见甚是想念。

前言

自学是一个老生常谈的话题了,培训机构也会拿这个给你洗脑,作为一个靠自学起来的人,我还是有点发言权的,不去评判自学好不好、行不行,我能带给大家的就是整合自己学习的资源和网络平台上一些自学的资源,分享给大家,希望能帮助到大家。

其实自学就两个方向,一个就是看视频,免费且技术系统的视频,一个就是看书,技术讲的深入简出的书。接下来我就围绕去看什么视频书籍以及去哪里看来回答

视频推荐

去这个网站注册一个账号,接下来要学习的所有课程都在里面,全部免费:

中国大学MOOC(慕课)国家精品课程在线学习平台:https://www.icourse163/

1. 第一门课:国防科大的《大学计算机基础CAP》。这门课是为非理工科专业的学生准备的一些计算机的基础知识。

大学计算机基础CAP 国防科技大学:https://www.icourse163/course/NUDT-1001614002

2. 第二门课:电子科大的《离散数学》,到这一步就可以说入门计算机科学了。

离散数学 电子科技大学:https://www.icourse163/course/UESTC-1002268006

3. 第三门课:浙大的《程序设计入门——C语言》,正式学习你的第一个编程语言。一般来说,Python语言可能比C语言更容易入门,但是C语言程序设计是一个绕不过去的必修科目,而且接下来的数据结构也需要用到C语言,因此这里花点功夫把C语言学好是大有益处的。

程序设计入门-C语言_浙江大学:https://www.icourse163/course/0809ZJU007A-199001

4. 第四门课:浙大的《数据结构》。所谓程序,其实说到底就是数据结构+算法。这门课里也会涉及许多简单又有用的算法。

数据结构_浙江大学:https://www.icourse163/course/ZJU-93001

5. 第五门课:华中科大的《计算机组成原理》。到这一步,开始进阶。

计算机组成原理_华中科技大学:https://www.icourse163/course/HUST-1003159001

6. 第六门课:哈工大的《操作系统》。这门课理论和实践充分结合,挺有趣的。

操作系统_哈尔滨工业大学:https://www.icourse163/course/HIT-1002531008

7. 第七门课:哈工大的《计算机网络》。到这一步,已经达到了本科计算机专业的平均水平了。

计算机网络_哈尔滨工业大学:https://www.icourse163/course/HIT-154005

书籍推荐

学习顺序是:

C/C++语言/算法/数据结构->计算机组成原理->计算机网络/数据库/操作系统。

重点讲讲计算机专业需要攻克的七个方向:

1.C/C++语言

虽然你只有很小概率在工作之后用到它,但它依然无比重要。

C语言最难懂的是指针,希望你在读大一的时候就征服它,内存是什么,指针的本质是什么,程序为什么会崩溃,这些问题弄懂了基本就通了。

其实C语言网上的资料特别多,我给大家特意收集了一波入门必备,学习以下四个资源即可:

实验楼——C语言入门教程

gitbook——笨方法学C

菜鸟教程——C 语言教程

慕课网——C语言入门

再说说C++呀,科班出身最好牢牢掌握C++,通过大学几年的学习,以下技术栈弄通即可。

  • C++语言高级特性:运算符重载(一元运算符、二元运算符、运算符重载难点、项目开发中的运算符重载)、多继承及其二义性、虚继承、多态、函数模板、类模板,模板的继承、程序编译链接机制、内存布局(memory layout)、对象模型、各种容器的实现(vector、map、hashmap)等等;
  • 算法和数据结构:尤其是和C++结合的算法能力及数据结构的应用能力,hash map、B+/B-树、算法在C++容器中的效率应用、DP(动态规划)等;
  • 网络底层:HTTP、HTTPS、DNS、ARP、TCP、IP、ICMP、UDP、FTP、SMTP、的实现底层;
  • 多进程/多线程编程:进程通信的方式(共享内存、pipe、Socket编程等)、同步、死锁及解决方案、线程池的实现、进程/线程的操作系统实现原理、进程的状态及切换和调度等;

推荐以下C+书籍:

《Essential c++》 《C++编程私信》 《effective C++》《more effective C++ 》《Think in C++》《C++ primer plus》《C++ coding standard》

2、算法

算法挺难,但无论是学习计算机专业还是未来找工作,它都无比重要。

推荐一本高中生都能看懂的算法书:《我的第一本算法书》

看看这本书的目录和排版!相当经典!

3.数据结构

数据结构的重要性相信不需要强调了,不仅是工作后必备的技能,如果未来要参加研究生考试也是必考科目和拉分项。

入门的话推荐《大话数据结构》。

这本书诙谐有趣,在不知不觉中让你掌握了数据结构

再推荐一本稍稍难一点的《数据结构和算法分析》。

4.计算机组成原理

无论你想要向上学习计算机的底层知识,比如编译原理、操作系统、体系结构,还是想要向下学习数字电路、数字逻辑等内容,都要先掌握计算机组成原理。计算机组成原理不仅能让你对计算机体系有一个总纲的认识,当你选择研究更深入的领域时也大有裨益。

那如何才能学会计算机组成原理呢?

学习计算机组成原理,就是通过指令、计算、CPU、存储系统和I/O,掌握整个计算机运作过程的核心知识点;通过拆解程序的执行过程,对计算机系统有一个全貌的了解。

推荐一本经典书籍:

《深入理解计算机系统》

5.操作系统

只要我们使用计算机,就会和操作系统打交道,接受它的审核与反馈。很多“热门”的技术话题,背后都离不开操作系统。比如:

Nginx 的高并发性为什么能实现?

MySQL 的 IO 性能到底怎样提升?

Redis 中经典的 Reactor 设计模式由什么技术支撑?

Node.js 的 IO 模型长什么样?

要真正解决这些问题,深入理解操作系统就是关键。

 
6、计算机网络


不管你是 Java、C++还是测试。对于后端开发的同学来说,计算机网络的重要性不亚于语言基础,毕竟平时开发经常会和网络打交道,比如:抓个包等等。所以对这一块知识点的准备还是要抱着敬畏之心,不要放过任何一个漏网之题。

推荐几本书:

《计算机网络自顶向下方法》

推荐理由:
计算机网络属于纯理论的课程,也是计算机专业选手最头疼的科目之一,市面上关于计算机网络的书籍很多都很难嚼,还会直接把人劝退。

本书是经典的计算机网络教材之一,整体的内容设计架构,使用自顶向下的方法来引导学习。从应用层开始讲解网络,这脱离了其底层的枯燥乏味,直接接触实际应用场景,更加灵活有趣。基本上高校里开设的课程的教学大纲就是这本书的目录了。

《图解HTTP》(入门HTTP必备)

图解 TCP/IP》(入门 TCP/IP 网络模型必备)

7.数据库

国内说数据库就是mysql,这点要相信我!

首先概览下mysql的知识体系:

基础:

  • sql语句
  • 表结构设计

调优:

  • 索引、慢查询优化
  • 配置参数调优

核心原理:

  • InnoDb存储引擎 (包括隔离级别、事务、锁、缓存池、回滚日志等等)
  • Mysqld (包括连接管理、进程管理、查询缓存、查询优化、日志等等)

架构与运维:

  • 用户与权限、安全
  • 备份与恢复
  • 日志
  • 分布式与高可用

对于零基础的童鞋:

推荐两本书:

1.《MySQL必知必会》 这本书讲的非常全,从基本概念,到查询到插入新建表,用户的管理,都有具体的例子,非常适合没有任何基础的同学来学习Mysql,总之这本书学习的方法就是:1、十分钟了解下数据库的基本概念 2、找到练手的数据库 3、对照着上面的内容去敲。本书里也有大量的内容是讲sql的,可以结合w3c的sql教程一起,有取舍地看。

2.《数据库系统概念》这本书是dba必看的。

看完这些并且实践+思考之后,可以算入门了。

接下来对于希望深入学习的童鞋:

我推荐几本书(很多大神都这么推荐),《高性能MySQL(第3版)》、 《MySQL技术内幕(第4版)》,《MySQL技术内幕 InnoDB存储引擎》,《深入理解MySQL》还有Mysql的官网。读完这些东西,再加些丰富的经验,理论上来讲就具备DBA的水平了。

小结

要想毕业就进大厂,本科拿到月薪15K以上,硕士拿到25K以上,做好以下这些很重要:

  • 选定一门主攻的基础语言方向,比如Python、C、Java等,并真正攻克它;
  • 算法和数据结构:数组、链表、二叉树、堆栈、排序算法、B+/B-树、DP(动态规划)等;
  • 疯狂刷题,撒比算法题、Leetcode等等,都挺不错,刷起来
  • 计算机网络:HTTP、DNS、ARP、TCP、IP、ICMP、UDP等;
  • 操作系统:IO、存储器、多线程/多进程、同步机制、处理器调度及死锁、设备管理、通道等;
  • 计算机组成原理:冯诺依曼计算机组成、计算机层次结构、计算机性能指标等;
  • 多实践多上机,机房要常去
  • 抓住一切可以实习的机会,是否有实习经历往往是大厂给不给offer的分水岭

祝大家都能学有所成,能帮助你的就到这啦,据说点赞收藏的都进大厂啦

更多推荐

大学如何自学计算机科学与技术?