来自公众号:
帅地玩编程
作者:
帅地
个人简介:
一个热爱编程的在校生,我的世界不只有coding,还有writing。
目前维护订阅号「苦逼的码农」,专注于写「算法与数据结构」,「Java」,「计算机网络」。
我公众号里的文章,写的大部分都是与
计算机基础知识
相关的,这些基础知识,就像我们的内功,如果在未来想要走的更远,这些内功是必须要修炼的。
框架千变万化,而这些通用的底层知识,却是几乎不变的,了解了这些知识,可以帮助我们更快着学习一门知识,更加懂得计算机的运行机制。
当然,在面试中也经常会被问到,特别是对于应届生,对于春秋招,也可以看看我前阵子写过的文章
历经两个月,我的秋招之路结束了!
。
也有读者经常问的
计算机基础知识究竟是指啥?
学习顺序?推荐书籍?
我公众号的读者学生以及非科班的应该挺多的,所以我今天这篇文章就写一写,我学过的计算机基础知识,看过的书以及我学过的顺序
当然,以下是我个人的一些经验,并且学过的一些知识,仅供参考,也欢迎大家进行补充
一、计算机网络
在我们用的程序中,99% 都离不开网络,作为一个程序员,我觉得了解计算机网络是必须的,在大学的课程中,一般也都会开设这一门课。
在我学习这门课之前,我就特别好奇,一台电脑是怎么把消息发给另外一台电脑的呢?
例如:
1、两台电脑啥线路也没有相连,怎么就能把消息发送给他呢?
2、世界上的电脑那么多,咋就能找到那台特点的电脑呢?
有人说我们可以 MAC 或者 IP 来唯一标识啊,可是,我就有点疑惑了,世界那么大,电脑那么多,有了这个标识,我们该怎么找到他呢?
遍历所有电脑?
3、多个程序同时发消息给一台电脑,电脑是如何准确把这些消息拿给这些不同程序的呢?
4、发送的消息丢失了怎么办?
总之,一大堆疑问,看了计算机网络之后,才豁然开朗。
自己也写了一篇评价不错的文章:
一文读懂一台计算机是如何把数据发送给另一台计算机的
所以这里,我是强烈建议大家学一下的,在面试中,计算机网络也是高频考点,这里我大致总结一下一些必学协议以及面试高频考点:
1、http协议,包括:
封装格式,常见响应码,不同版本的区别,常见请求方法,存在哪些安全隐患,啥是无状态协议等。
2、https协议:
http 是明文传输,https 是加密安全的,需要知道 https 是如何加密的、数字证书如何形成,啥的对称加密、非对称加密。
3、TCP协议:
三次握手、四次挥手、如何保证可靠传输、流量控制、拥塞控制。
4、UDP:
这个大致了解即可,好像内容比较少
5、DNS、ICMP、ARP、DHCP(我就不一个一个写了)
上面写的这些协议,我觉得是比较重要的,特别是在面试中。
我公众号文章也写了好几篇这些协议的,大家可以去
计算机基础
那个模块找。
对于新手推荐视频:
可以看韩老师讲的视频,在哔哩哔哩搜索
韩老师
就可以找到
韩老师讲高校《计算机网络原理》
。
推荐书籍:
《计算机网络:
自顶向下》、《图解http》
我是先看了视频,在看这两本书的(文末我会给出电子版)。
二、操作系统
操作系统也是一门非常重要的知识,在面试中也是问的非常多(当然,看公司,有些公司技术栈是 Java 的,可能问的比较少)。
对于操作系统,要学的也挺多,例如:
啥是进程,啥是线程,他们的本质区别?
我们运行一个程序时,数据放在哪里?
代码放在哪里?
咋就还要分堆和栈?
线程切换时是上下文是啥意思?
虚拟地址是什么鬼东西?
线程需要那么多种状态干啥子?
什么是乐观锁、悲观锁?
死锁是怎么造成的?
解决死锁的策略有哪些?
等等
有人说学操作系统太他妈枯燥了,确实挺枯燥,不过说实话,我还是学的挺有意思的,感觉可以学到很多种策略,一种比一种好,每次看完都是:
我去,咋我就想不到呢。
我觉得,对于前期,我们需要多参考别人的策略,看多了,有了一定的基础,慢慢形成自己的策略,总之,看这些书,不单要掌握这些知识点,更重要的是一种思维逻辑的提升
对于操作系统,我总结了下面一些比较核心,面试相对容易被考到的。
1、进程的通信方式(我写过一篇很不错的文章:
记一次面试:
进程之间究竟有哪些通信方式?
---- 告别死记硬背
)
2、进程、线程究竟是由什么组成的?
有哪些数据?
3、内存管理,包括:
虚拟内存(重点)、分页、分段、分页系统地址映射、内存置换算法(重点)。
4、死锁的处理策略(死锁预防、死锁检测与恢复、死锁避免)
5、进程调度算法
6、磁盘寻道算法
上面说的这些,我认为是比较重要的,如果你没学过,我相信学了之后,你可以学到很多东西,知识点只是其中之一。
推荐视频:
这个我没看过视频,所以想学的,我推荐去
中国mooc大学
找各大高校的课,也可以去国外找对应的课。
推荐书籍:
我看过的书籍是《操作系统—精髓与设计原理(第八版)》,不过大佬们都推荐《深入理解计算机操作系统(原书第三版)》,我看过目录,感觉还不错,这里也推荐这一本。
不过对于零基础的,我建议可以先看一本专门给小白看的书:
《程序是如何跑起来的》。
操作系统的学习,还是挺枯燥的,不过,只有把最难的啃过去,才能变的更加强大。
也欢迎大家持续关注我的公众号: