【核心整理】那些让你起飞的计算机基础知识:学什么,怎么学?

我以前里的文章,写的大部分都是与计算机基础知识相关的,这些基础知识,就像咱们的内功,若是在将来想要走的更远,这些内功是必需要修炼的。框架变幻无穷,而这些通用的底层知识,倒是几乎不变的,了解了这些知识,能够帮助咱们更快着学习一门知识,更加懂得计算机的运行机制。固然,在面试中也常常会被问到,特别是对于应届生,对于春秋招,也能够看看我前阵子写过的文章历经两个月,个人秋招之路结束了!。也有读者常常问的计算机基础知识到底是指啥?学习顺序?推荐书籍?程序员

我公众号的读者学生以及非科班的应该挺多的,因此我今天这篇文章就写一写,我学过的计算机基础知识,看过的书以及我学过的顺序面试

固然,如下是我我的的一些经验,而且学过的一些知识,仅供参考,也欢迎你们进行补充算法

1、计算机网络

在咱们用的程序中,99% 都离不开网络,做为一个程序员,我以为了解计算机网络是必须的,在大学的课程中,通常也都会开设这一门课。sql

在我学习这门课以前,我就特别好奇,一台电脑是怎么把消息发给另一台电脑的呢?例如:数据库

一、两台电脑啥线路也没有相连,怎么就能把消息发送给他呢?编程

二、世界上的电脑那么多,咋就能找到那台特色的电脑呢?有人说咱们能够 MAC 或者 IP 来惟一标识啊,但是,我就有点疑惑了,世界那么大,电脑那么多,有了这个标识,咱们该怎么找到他呢?遍历全部电脑?数组

三、多个程序同时发消息给一台电脑,电脑是如何准确把这些消息拿给这些不一样程序的呢?缓存

四、发送的消息丢失了怎么办?安全

总之,一大堆疑问,看了计算机网络以后,才豁然开朗。本身也写了一篇评价不错的文章:一文读懂一台计算机是如何把数据发送给另外一台计算机的微信

因此这里,我是强烈建议你们学一下的,在面试中,计算机网络也是高频考点,这里我大体总结一下一些必学协议以及面试高频考点:

一、http协议,包括:封装格式,常见响应码,不一样版本的区别,常见请求方法,存在哪些安全隐患,啥是无状态协议等。

二、https协议:http 是明文传输,https 是加密安全的,须要知道 https 是如何加密的、数字证书如何造成,啥的对称加密、非对称加密。

三、TCP协议:三次握手、四次挥手、如何保证可靠传输、流量控制、拥塞控制。

四、UDP:这个大体了解便可,好像内容比较少

五、DNS、ICMP、ARP、DHCP(我就不一个一个写了)

上面写的这些协议,我以为是比较重要的,特别是在面试中。我公众号文章也写了好几篇这些协议的,你们能够去计算机基础那个模块找。

对于新手推荐视频:能够看韩老师讲的视频,在哔哩哔哩搜索韩老师就能够找到 韩老师讲搞笑《计算机网络原理》。

推荐书籍:《计算机网络:自顶向下》、《图解http》

我是先看了视频,在看这两本书的(文末我会给出电子版)。

你们也能够关注个人微信公众号:苦逼的码农,第一时间获取个人文章以及一些资料

2、操做系统

操做系统也是一门很是重要的知识,在面试中也是问的很是多(固然,看公司,有些公司技术栈是 Java 的,可能问的比较少)。对于操做系统,要学的也挺多,例如:

啥是进程,啥是线程,他们的本质区别?咱们运行一个程序时,数据放在哪里?代码放在哪里?咋就还要分堆和栈?线程切换时是上下文是啥意思?

虚拟地址是什么鬼东西?线程须要那么多种状态干啥子?什么是乐观锁、悲观锁?死锁是怎么形成的?解决死锁的策略有哪些?等等

有人说学操做系统太他妈枯燥了,确实挺枯燥,不过说实话,我仍是学的挺有意思的,感受能够学到不少种策略,一种比一种好,每次看完都是:我去,咋我就想不到呢。我以为,对于前期,咱们须要多参考别人的策略,看多了,有了必定的基础,慢慢造成本身的策略,总之,看这些书,不单要掌握这些知识点,更重要的是一种思惟逻辑的提高

对于操做系统,我总结了下面一些比较核心,面试相对容易被考到的。

一、进程的通讯方式(我写过一篇很不错的文章:记一次面试:进程之间究竟有哪些通讯方式? ---- 告别死记硬背

二、进程、线程到底是由什么组成的?有哪些数据?

三、内存管理,包括:虚拟内存(重点)、分页、分段、分页系统地址映射、内存置换算法(重点)。

四、死锁的处理策略(死锁预防、死锁检测与恢复、死锁避免)

五、进程调度算法

六、磁盘寻道算法

上面说的这些,我认为是比较重要的,若是你没学过,我相信学了以后,你能够学到不少东西,知识点只是其中之一。

推荐视频:这个我没看过视频,因此想学的,我推荐去中国mooc大学找各大高校的课,也能够去国外找对应的课。

推荐书籍:我看过的书籍是《操做系统—精髓与设计原理(第八版)》,不过大佬们都推荐《深刻理解计算机操做系统(原书第三版)》,我看过目录,感受还不错,这里也推荐这一本。不过对于零基础的,我建议能够先看一本专门给小白看的书:《程序是如何跑起来的》。

操做系统的学习,仍是挺枯燥的,不过,只有把最难的啃过去,才能变的更增强大

数据库(这里我用 MySQL)

在大学的课程里,通常都会开设一门数据库的课程,不过这门数据库是没有针对某一种数据库语言的(例如 MySQL、Oracle)。不过我这里只讲 MySQL的学习,别问为何,问就是我逃了二十分之十九的课

把MySQL学好,仍是特别重要的,千万不能停留在会用的层面上,而是应该要了解一下原理,特别是对于要面试的同窗,会问挺多原理,我每次被问到 MySQL 我都会信心大增,由于我虽然不大好写 SQL,可是,知道挺多原理,记得腾讯、shopee面试时,面完 MySQL,面试官好像对我另眼相看了。好了,不吹了,说这些也是强大 MySQL 的重要性。下面就说我学过的一些知识以及推荐的学习资料吧。

对于 MySQL,须要学的还挺多的,例如,

一、一条 sql 语句是如何执行的?进行更新时又是怎么处理的?

二、索引是如何实现的?多种引擎的实现区别?聚族索引,非聚族索引,二级索引,惟一索引、最左匹配原则等等(很是重要)

三、事务相关:例如事务的隔离是如何实现的?事务是如何保证原子性?不一样的事务看到的数据怎么就不同了?难道每一个事务都拷贝一份视图?MVCC 的实现原理(重要)等等。

四、各类锁相关,例如表锁,行锁,间隙锁,共享锁,排他锁。这些锁的出现主要是用来解决哪些问题?(重要)

五、日志相关:redolog,binlog,undolog,这些日志的实现原理,为了解决怎么问题?日志也是很是重要的吧,面试也问的挺多。

六、数据库的主从备份、如何保证数据不丢失、如何保证高可用等等。

还有一些经常使用命令也要知道。

我以为,只要你了解了以上的原理,那么对数据库调优的帮助是很是大的,上面除了第六点,其余五点,在应届生的面试中,极其高频。

推荐书籍:连 sql 都不会写的,推荐《SQL必知必会》,接着推荐《MySQL技术内幕:InnoDB存储引擎》。

这里我必须推荐下极客时间的一个专栏:《MySQL实战45讲》,讲的很是好,看完应付面试,我以为够了,我每次面试 MySQL 几乎都加分,离不开这个专栏。如何你想要购买,能够在个人公众号回复**『数据库』**,我会给你发对应的购买连接(注意,这个可不是广告哈,你们买不买看本身)

4、数据结构与算法

数据结构与算法,我就不想多说了,看我文章的都知道,我写的文章 80% 是数据结构与算法相关的,重要性不用说。我秋招最大的优点估计就是数据结构与算法的掌握了。上面三门课程的学习,基本也都是离不开数据结构的,对于如何学习数据结构与算法,我以为能够在写一篇文章了,因此数据结构与算法的学习,我这里不写了,能够关注个人文章,我明天会写一篇与算法相关的。

论面试,我以为 操做系统+计算机网络+数据库 + 算法 这三个是问的最多的,因此我写的比较详细,对于学习计算机基础,不为了面试的话,我以为下面的也及其重要。我分出来讲,是为了那些要急着面试的人,能够重点学习下上面这四个。

5、汇编

我以为,如何有时间,学习下汇编是必须的,学习了汇编,可以更好着帮助咱们知道计算机是如何处理程序代码的,例如寄存器和内存是如何使用的?循环、函数调用、数组是如何实现的?地址是怎么一回事?等等。

不少二进制代码是能够反编译成汇编的,如何你会汇编,那么能够帮助咱们更好着去理解一些东西。因此这里建议你们学习下汇编,而且要动手写一些程序。

对于汇编的资料,我可能没啥好推荐的,本身看的很少。看过两本书,对于入门的,我建议看 王爽的那本书《汇编语言(第三版)》,不过这本只适合入门,若是想继续,能够看《汇编程序设计》。

编译原理

说实话,编译原理还挺难,反正我以为很难,不过有时间我以为能够学学,学了这个你能够知道咱们的编译器如何分析咱们的代码的,例如词法分析,语法分析,语义分析等等。固然,你将来可能会本身写个特定分析代码的编译器也不必定,这个时候,就更加须要学了。

对于学习的资料,我以为能够看视频 + 书。视频的话中国 mooc 大学搜索便可,书的话,说时候,我也看的很少,只看过学校指定的教材,因此这里给不了多少建议,本身当当自行搜索,哪本热门卖哪本勒。

总结

暂时先介绍这么多吧,说实话,学了这些,不仅仅是多学了一门知识,更重要的是能够提高你的罗辑思惟,给你带来更多的 idea。在以后个人公众号里,我也是主要写计算机基础 + 算法。而这些,是值得每个程序员去学习的,不管你是什么岗位。并且知识知识学了以后,你去学习其余知识,我相信能够上手的更快滴。

上面涉及到的书籍,我也去给大家搜索来了电子版的,因为这些书籍涉及到版权问题,百度云连接很容易失效,若是你想获取这些书籍,能够关注个人公众号:苦逼的码农

后台回复『计算机基础』。便可获取文章会首发于个人公众号,若是想第一时间看个人文章,也欢迎关注哦。下面是以前写的一些文章,整理出来供你们阅读

数据结构与算法

计算机网络

数据库与其余

相关文章
相关标签/搜索