也许互联网大厂BAT更看重你的计算机基础知识(2022必看的操作系统,计算机网络的学*方式

校招面试求职,大厂学*导航

认准「小龙coding」,致力于打造全网最佳大厂进阶*台~

大家好,我是小龙。

我们都知道无论是在工作还是学*中,对于每个程序员,计算机基础一定是特别重要的。

为何要学计算机基础?

知识体系角度来讲,学好计算机基础,相当于在你脑袋初步构建了一个计算机。

知道计算机大体是怎样组成的,知道我们*时使用的系统是怎么运行的,知道我们*时上网数据是怎样传输的,知道我们程序可以怎样去尽可能优化时间和空间使得性能更佳,知道我们数据是怎样存储的。。。。

相当于为自己打造了一个坚实的基础,以便后续学*可以更加轻松。这样说吧,也许你直接学各种编程语言,框架知识什么的依然可以学的很好,但或许你可能就不能很好很快的把各个知识联系在一起,建立一个完整的知识体系网络,学到后面你会发现,其实很多知识都是相通的,并且你所谓的各种语言、框架最终还是需要操作底层来协调工作。

课程学*角度来讲,大学计算机专业计算机基础课程是必修的专业课程,而且特别重要。因此,为了考个考成绩,拿点什么奖学金,证书,学好计算机基础课程是很重要的。

从工作求职角度来讲,也许你觉得成绩,奖学金其他什么的对你不重要,那找一份好的工作应该是你所盼望的吧。先不说互联网大厂,就是目前稍微大一点的公司,就要求应届生熟练掌握计算机基础。

而且某些大厂比如 字节跳动 ,招聘要求即使你什么都不会,只要会一门编程语言,计算机基础掌握的好,便可以被录取。你要相信,越是大的公司反而会越在乎你的基础知识;

因为校招生并没有太多公司的真实项目经验,业务场景接触的也少,因此,考察你基础知识便是最好的选人标准,而且大厂注重人才培养,只要你基础好,培养上手就快。

由于读者可能基础不一样,并且目前需求不一样,也许有的是零基础,也许有的之前大概学过,但是对于面试的考察却摸不着头脑,因此我会从两个维度来介绍学*方式,以便迎合不同程序需求的同学。

初入道场

如果你是零基础、基础薄弱、想系统学*计算机基础知识就看这里。

操作系统

Operating System:

1、操作系统(哈工大李治军老师)32讲(全)超清

MOOC:https://www.icourse163.org/course/HIT-1002531008

配套实验课:https://www.shiyanlou.com/courses/115

我愿称之为一绝,李老师的这门课。绝对牛逼绝对硬核,这门课建议先去学*汇编课程基础,再来看会有更深刻的收获;不然看到中间会很晕。

2、 2020 南京大学 “操作系统:设计与实现” (蒋炎岩)

B站:https://www.bilibili.com/video/BV1N741177F5

南大操作系统,yyds,不多这个人感觉更适合加餐和加深理解

如果是为了考研,建议看传统的操作系统课程,北大的课程理论讲解比较细致,清华的课程更深入难度更大。 如果是想真正的提升实战能力,强烈推荐蒋岩炎老师的相关视频,MIT也很好,不过英语能力有较高的要求。

3、清华出版

清华出版的操作系统课程,配套实验是 UCore:

https://www.xuetangx.com/course/THU08091000267/5883104

4、【麻省理工学院】MIT 6.S081 操作系统工程 operating system engineering

官网(英文):https://pdos.csail.mit.edu/6.828/2020/schedule.html

中文字幕:https://www.bilibili.com/video/BV1Dy4y1m7ZE/

这门课,我个人觉得直接封神。虽然它小但是却很完整,重现了经典的 UNI XV6,可以学*到设计思维,循序渐进,一步一步在你的脑海里建立起 OS 的大厦框架。相信程序员大部分都知道这门课,国外的课就是牛逼~

5、其他

个人感觉,上述的相关课程对建立完整知识体系和加餐补给都很够了,十分不错。但是可能对新人有些难度,大家也去网上找一些基础视频先大概看看,对于上面可能更好理解。

我该学到什么程度?

对于大部分同学,其实大概梳理一下整个操作系统的知识体系即可,对于你构建你的完整知识体系和找工作已经足够。不过如果你想往研究方向或者就个人兴趣爱好而言,可能需要再深度研究。

在看视频学*同时可以结合一些经典书籍学*,比如

  • 《现代操作系统》

其中内存、进程、IO 是重点,这几块是最贴*我们*时学*工作的,之后面试也重点考察这几点。

计算机网络

学*计算机网络我给大家分享一个方法,按照「总—分—总」的思路来学*。(此总分总是我胡乱用词,相信大家可以贴切理解)

什么意思?

体系流程—总

首先,不要着急去学某个单独的章节,或者一来就从头到尾挨着去学。这样效率和收获会极低。

我们应该首先了解计算机网络整个脉络,「数据是怎样在网络中传送」的,也没有叫你每个细节都要搞清,浅尝即止。不过我们需要在脑海形成一个整体流转过程。


推荐【网络】半小时看懂<计算机网络>

https://www.bilibili.com/video/BV124411k7uV

除了那些搞研究的专业者之外,我们这些普通人,需要的不是特别深的理论,不是上来就计算各种进制,我们渴求的,是能从整体上,把我们生活中常见的,以通俗易懂的话语解释的让人能听懂。

从另一方面说,这也是一个引子,感兴趣的人自然会去深入研究,再不感兴趣的人,像路由、网络这些,生活中常见的,总会有用得到的时候。


知识详解—分

然后,我们再根据脑海的大体映像,带着可能存在的某些细节问题再逐步去学*,剖析细节,全面学*。

推荐-中科大-计算机网络

https://www.bilibili.com/video/BV1JV411t7ow

其中对于HTTP、TCP、IP 等协议是特别重要的,此处为大家推荐几本优质书籍。

《图解HTTP》、《图解TCP/IP》,这两本书都以图文形式很好的去讲解知识,有趣易懂。

实战抓包—总

最后,我们再通过自己抓包实战去亲自体会各个层,各个协议。

推荐使用 Wireshark工具,可以去抓取每一个数据报文的信息,可以清楚的查看各个数据报文的结构,亲自去验证书本的知识啦。

而且当你 「抓取」到报文自己去验证分析一遍,你会有种豁然开朗的感觉,而且觉得挺有成就感,并且再也不会感到枯燥。最重要的是再次把整个知识网络连接起来啦。

推荐书籍:《Wireshark 网络分析的艺术》

另外,想要功力更上一层楼,给大家推荐基本经典书籍:

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

对于 TCP/IP 网络模型深入学*的话,推荐《计算机网络 - 自顶向下方法》,这本书从 HTTP 开始,逐层剖析,详解,对建立完整且有深度的知识体系很有帮助。

  • 《TCP/IP 详解 卷一:协议》

其次,如果想要深入学* TCP,推荐大家赋有计算机网络圣经之说的《TCP/IP 详解 卷一:协议》,此书虽然枯燥,但是真的讲得很细,很好。

历劫飞升

如果你是 “老油条”、或者最*找工作需要应付面试的,就看这里。

求职在于针对准备,快、准、狠。个人觉得,此时不再适合挨着看书去学*,这样效率极低,而且在极短时间下,再加上自己心里慌,容易把脑袋绕晕却什么没记住理解。

我们只需要分两步走:

  • 第一步:自述整体体系(不懂百度)
  • 第二步:分解核心知识,着重复*(哪个核心哪个细节不清楚去找相关资料),最后临考之前看常考面试题。
  • 应付面试:推荐看「小龙coding」后台回复「面试笔记

计算机网络

首先你需要去搞懂这几个问题:

  • 从 URL 输入到页面展现到底发生什么?
  • 一个数据包是如何发送出去的?

然后分解核心知识,可以围绕这几个常考面试题去学*理解。

  • TCP三次握手、四次挥手相关?
  • TCP粘包、拆包相关?
  • TCP 状态中 TIME_WAITT 什么时候·产生?为何产生?怎样避免?
  • 拥塞控制、流量控制相关?
  • HTTPS连接过程相关?
  • TCP 如何实现可靠传输的?(类比问题:如何基于 UDP 实现可靠传输)

一方面:通过常考面试题可以着重有针对去学*核心知识点;

二方面:可以针对准备,应付面试(主要目的);

操作系统

首先你需要去搞懂这个几个问题:

  • 一个程序是怎样运行起来的?(不用太细,具体到每个细节)
  • 操作系统主要由哪些模块组成,操作系统作用?

然后同样分解核心知识,可以围绕这几个常考面试题去学*理解。

  • 进程间通信方式(消息队列、共享内存、管道、信号量等)

  • 进程和线程的区别

  • 进程的状态、切换、调度

  • 协程

  • 虚拟内存

  • 死锁检测与避免

  • 并发经典的问题(哲学家就餐问题)

  • 内存为什么分段、分页

  • 页面置换算法(LRU要能简单模拟,熟练说出其实现思路)、进程调度算法

posted @ 2022-02-23 11:18  小龙coding  阅读(356)  评论(0编辑  收藏  举报