大学想报计算机专业,暑假想要自学,有哪些建议?

985 通信专业学长,转行程序员,关于计算机自学我可太懂了!

一开始我不建议你去学 Python 、Java、C++ 这种编程语言,也不建议马上看计算机基础相关的内容,我反而建议你看一本书----《浪潮之巅》,看完这本书你会感叹于计算机是多么的神奇,不过短短几十年,计算机乃至互联网行业发生了如此翻天覆地的变化。

大学想报计算机专业,暑假想要自学,有哪些建议?_第1张图片

这本书介绍了 IT 领域各个著名企业比如苹果、微软、谷歌的发展历程并总结出该领域发展规律,先看这本书能让你在大学学习计算机那些枯燥的知识时不再煎熬,见识过星辰大海,怎么会被臭水沟拦住!

看完这本书就可以先去学习一下计算机科学的课程了,建议去 B 站看这个视频----计算机科学速成课》,这套课程是 Crash Course 旗下的计算机科学相关的视频,早期发布在 Youtube 上,整个系列课程高达 12 亿的播放量, B 站上可以免费观看,有汉化有弹幕。

之所以建议看这个视频,是因为这个系列视频总时长 10 个小时,一共 40 集,基本上每集控制在 10 分钟左右,只要不到 10 小时就可以粗略了解计算机科学这门学科,如果你是一个门外汉,相信我,通过这个短短的 10 个小时足以帮你打开计算机的大门。

大学想报计算机专业,暑假想要自学,有哪些建议?_第2张图片

也不要贪多,一个暑假看一本书和一套视频足够了,高中毕业得适当放松一下。

这里不知道题主的学校是哪一个,但目前不少大学计算机老师的讲课水平是不达标的,似乎跟不上时代,只会照本宣科的念 PPT,这个时候可以考虑上 B 站看看视频,所以集中分享一些质量比较高的计算机基础的自学视频,建议先收藏,点个赞作为学习的开始。

一、计算机网络

1. 计算机网络微课堂 https://www.bilibili.com/video/BV1c4411d7jb?p=1

学习计算机网络,我首先推荐的 UP 主湖科大教书匠,他讲的计算机网络十分通俗易懂,重点的地方讲的十分细致,并且还有一些实验,更好的是有考研 408 的难题的讲解,也是非常适合考研党,除了课程内容外还有很多习题讲解视频,特别赞的一点是每天动态里都会更新一道考研题,播放量也非常的多。

大学想报计算机专业,暑假想要自学,有哪些建议?_第3张图片

 2. 2019 王道考研 https://www.bilibili.com/video/BV19E411D78Q?p=1

既然说到了考研,那我就不得不提一下王道考研了,恭喜你发现了宝藏。王道考研的计算机网络视频,播放量非常多,而且老师是一位小姐姐,声音十分动听,声音这么好听的老师给你讲课,妈妈再也不用担心我的学习了呢,总之,这个视频的质量也非常高,弹幕全是对小姐姐的高度评价。(王道考研其他的视频也不错哦,暗示一下:操作系统,数据结构等等)

大学想报计算机专业,暑假想要自学,有哪些建议?_第4张图片

 

3. 韩立刚老师 计算机网络 https://www.bilibili.com/video/BV1gV411h7r7?p=1

韩立刚老师所讲的计算机网络视频,内容比较多,但是讲解的通俗易懂,并且老师讲课的经验也十分的丰富。配套的教材是谢希仁老师的计算机网络教材,韩老师的最近的一个视频视频比较新,播放量还比较少,但是他讲的是真的不错,相比于王道考研所讲的计算机网络,韩老师更加细致一些。

大学想报计算机专业,暑假想要自学,有哪些建议?_第5张图片

4. 计算机网络(谢希仁第七版)-方老师 https://www.bilibili.com/video/BV1yE411G7Ma?p=1

在计算机网络方面,我还想推荐的一位老师就是方老师,也是一位小姐姐老师。她的视频配套的教材也是谢老师的网络教材,在线看的小伙伴也超多,弹幕都是对方老师的评价。

大学想报计算机专业,暑假想要自学,有哪些建议?_第6张图片

 

二、数据结构与算法

相信很多小伙伴,学习数据结构、算法的时候,非常的头大。

大学想报计算机专业,暑假想要自学,有哪些建议?_第7张图片

 

1. 【郝斌】-数据结构入门 https://www.bilibili.com/video/BV11s41167h6?p=1

我个人觉得他讲得非常好,郝斌老师的思路是以初学者的思路来思考的,非常适合小白,你不理解的问题,基本上他都会详细说一下,有的地方他讲的不是非常的全,但是讲的比较深刻,课程的使用的书是严蔚敏的《数据结构》可能比较晦涩难懂,可以去看看《大话数据结构》或者《啊哈!算法》这两本书。

大学想报计算机专业,暑假想要自学,有哪些建议?_第8张图片

 2. 数据结构-浙江大学 https://www.bilibili.com/video/BV1JW411i731?p=1

B站很多小伙伴都管陈越老师叫做陈越姥姥,陈姥姥的课简单易懂,二叉树和链表说的多,但是对于图太少,后面概念解释多程序少,对于新手不友好,并且这门课程到中后半段是另一位老师讲的,何老师。何老师讲解的也是非常的通俗易懂,并且拥有着强者的发型。

大学想报计算机专业,暑假想要自学,有哪些建议?_第9张图片

 3. 数据结构与算法基础(青岛大学-王卓) https://www.bilibili.com/video/BV1nJ411V7bd?p=1

王卓老师基本上把大学数据结构期末考试的重点全部都讲了,内容和 408 高度吻合,也是非常的适合考验人,还有在这里提一下王道考研的数据结构还是很不错的,总之学习数据结构重点还是需要理解,要多做题才行。

大学想报计算机专业,暑假想要自学,有哪些建议?_第10张图片

 4.尚硅谷 Java 数据结构与 Java 算法(Java数据结构与算法) https://www.bilibili.com/video/BV1E4411H73v?p=1

推荐了这么多 C 语言的数据结构,就来一个了 Java 语言的吧。尚硅谷--韩顺平老师的课程,韩老师视频内容全,并且每次课都会带着你写代码,把每一个例子都会实现,这也是张阿姨梦开始的地方。韩老师的口碑我就不多说了,评论弹幕都是对韩老师的“表白”。

大学想报计算机专业,暑假想要自学,有哪些建议?_第11张图片

 5. 大雪菜 https://space.bilibili.com/7836741?spm_id_from=333.788.b_765f7570696e666f.1

给大家推荐一位关于 LeetCode 的大神,闫学灿老师,他的视频不仅会讲力扣的每日一题,还会讲解每一次力扣周赛的题目等等。你看就完了。

大学想报计算机专业,暑假想要自学,有哪些建议?_第12张图片

 这里补充一下,想进大厂少不了学习算法和刷题,我的不少粉丝拿到腾讯字节快手offer,因为用了这套算法刷题笔记

三、操作系统

1. [完结] 2020 南京大学 操作系统:设计与实现 (蒋炎岩) https://www.bilibili.com/video/BV1N741177F5?p=1

南大的课质量真的硬,蒋炎岩老师讲的是真滴好啊。老师讲课时用的课本是 Remzi 的 Operating Systems: Three Easy Pieces ,老师的每一节视频都比较长,一次肝完贼爽,老师把晦涩的东西讲的也非常的通俗易懂,豁然开朗,很多同学都是慕名而来,看完这个也算上过南大的操作系统啦 

大学想报计算机专业,暑假想要自学,有哪些建议?_第13张图片

 

2. 操作系统_清华大学(向勇、陈渝) https://www.bilibili.com/video/BV1js411b7vg?p=1

目前清华计算机系本科的操作系统课目前都是由这两位老师讲授(向勇、陈渝),网课内容和他们课堂授课内容是一致的,同时配有一套完整的实验,实验内容是从无到有地建立起一个小却五脏俱全的操作系统(ucore),能从头到尾做下来的收获绝对是听课所不能比的,理论课上老师照顾大多数人,娓娓道来。现在有很多同学已经整理出了这门课程的随堂笔记,这门课程强烈推荐!

大学想报计算机专业,暑假想要自学,有哪些建议?_第14张图片

 3. 操作系统(哈工大李治军老师) https://www.bilibili.com/video/BV1d4411v7u7?p=1

整体看了一遍,个人觉得是 b 站上很不错的操作系统课程了(经典课程如 mit6.828 在 b 站上的似乎都没有字幕而且拍摄角度实数刁钻)。这门课的前几讲涉及 OS 启动(老师谜之口糊),需要一点汇编知识,不过遇到不会的直接网上搜即可,大可不必因为汇编而被劝退;之后的内容如多进程、信号量、内存管理等讲得很好,不做赘述。如果对这部分有不解的地方可以网上搜资料或者去看 b 站上新竹清华大学的 OS 课程最后在学这门课前建议对计算机有个整体认识,可以去学习一下经典的 csapp 或者 mit6.004(对应国内的计组,一个偏软件,一个偏硬件)

大学想报计算机专业,暑假想要自学,有哪些建议?_第15张图片

 

四、计算机组成原理

1. 计算机组成原理(哈工大刘宏伟) https://www.bilibili.com/video/BV1t4411e7LH?p=1

刘宏伟老师主讲,他的课不仅适合考研人,也非常适合初学者,初学者也听得懂。建议 1.5 倍速食用。之前有一个一百多万播放量的视频,不知道为啥没了...

大学想报计算机专业,暑假想要自学,有哪些建议?_第16张图片

 2. 计算机组成原理 清华大学刘卫东 https://www.bilibili.com/video/BV1c4411w7nd?p=1

来来来,清华的来了嗷,这门课是 2013 年的,距离 2021 年有点遥远。

刘卫东老师主讲,质量很高。我非常喜欢他讲话的逻辑和风格,看就完了,贼好。(收藏是点赞的六倍还多,就离谱哈哈哈)

大学想报计算机专业,暑假想要自学,有哪些建议?_第17张图片

 五、编译原理

(点击收藏随即退出,编译原理已了然于胸)

大学想报计算机专业,暑假想要自学,有哪些建议?_第18张图片

1. 编译原理(哈工大) https://www.bilibili.com/video/BV1zW411t7YE?p=1

陈鄞老师的 PPT 做的非常认真,讲得也很通俗易懂,思路清晰。这个是我目前为止,觉得讲的最直观简洁的了,全程没有一句废话,认真听会有很大的收获,每一句话都要仔细琢磨,并且老师那种温文尔雅的气质,你不认真听课?啊?小伙子。 认真学完真的会收获很多。

大学想报计算机专业,暑假想要自学,有哪些建议?_第19张图片

 

写到这,再介绍一下计算机专业学生该如何提高自己吧,早做打算。


1)怎么样提高自己的技术水平

2)如何准备进入大厂

一、怎么样提高自己的技术水平 ?

首先,我们来看一下,大学期间计算机专业的学生需要学习哪些专业课程,了解后才能知道有哪些方面可以提高,所以,请先务必学好以下几门课程。

1、计算机组成原理

2、计算机操作系统

3、计算机编译原理

4、数据结构与算法

5、计算机网络

一、计算机组成原理

计算机组成原理这门课很好地向我们阐述了计算机是如何工作的,妹子咨询你电脑问题的时候,答案就藏在这门课程里面(大雾)。

二、计算机操作系统

操作系统真的可以说是 Super Man,它为了我们做了非常厉害的事情,以至于我们根本察觉不到,只有通过学习它,我们才能深刻体会到它的精妙之处,甚至会被计算机科学家设计思想所震撼,有些思想实际上也是可以应用于我们工作开发中。

操作系统比较重要的四大模块,分别是内存管理、进程管理、文件系统管理、输入输出设备管理。这是我学习操作系统的顺序,也是我推荐给大家的学习顺序,因为内存管理不仅是最重要、最难的模块,也是和其他模块关联性最大的模块,先把它搞定,后续的模块学起来我认为会相对轻松一些。

学习的过程中,你可能会遇到很多「虚拟」的概念,比如虚拟内存、虚拟文件系统,实际上它们的本质上都是一样的,都是向下屏蔽差异,向上提供统一的东西,以方便我们程序员使用。

还有,你也遇到各种各样的调度算法,在这里你可以看到数据结构与算法的魅力,重要的是我们要理解为什么要提出那么多调度算法,你当然可以说是为了更快更有效率,但是因什么问题而因此引入新算法的这个过程,更是我们重点学习的地方。

你也会开始明白进程与线程最大的区别在于上下文切换过程中,线程不用切换虚拟内存,因为同一个进程内的线程都是共享虚拟内存空间的,线程就单这一点不用切换,就相比进程上下文切换的性能开销减少了很多。由于虚拟内存与物理内存的映射关系需要查询页表,页表的查询是很慢的过程,因此会把常用的地址映射关系缓存在 TLB 里的,这样便可以提高页表的查询速度,如果发生了进程切换,那 TLB 缓存的地址映射关系就会失效,缓存失效就意味着命中率降低,于是虚拟地址转为物理地址这一过程就会很慢。

你也开始不会傻傻的认为 read 或 write 之后数据就直接写到硬盘了,更不会觉得多次操作 read 或 write 方法性能会很低,因为你发现操作系统会有个「磁盘高速缓冲区」,它已经帮我们做了缓存的工作,它会预读数据、缓存最近访问的数据,以及使用 I/O 调度算法来合并和排队磁盘调度 I/O,这些都是为了减少操作系统对磁盘的访问频率。

……

还有太多太多了,我在这里就不赘述了,剩下的就交给你们在学习操作系统的途中去探索和发现了。

还有一点需要注意,学操作系统的时候,不要误以为它是在说 Linux 操作系统,这也是我初学的时候犯的一个错误,操作系统是集合大多数操作系统实现的思想,跟实际具体实现的 Linux 操作系统多少都会有点差别,如果要想 Linux 操作系统的具体实现方式,可以选择看 Linux 内核相关的资料,但是在这之前你先掌握了操作系统的基本知识,这样学起来才能事半功倍。

入门系列

对于没学过操作系统的小白,我建议学的时候,不要直接闷头看书。相信我,你不用几分钟就会打退堂鼓,然后就把厚厚的书拿去垫显示器了,从此再无后续,毕竟直接看书太特喵的枯燥了,当然不如用来垫显示器玩游戏来着香。

B 站关于操作系统课程资源很多,我在里面也看了不同老师讲的课程,觉得比较好的入门级课程是《操作系统 - 清华大学》,该课程由清华大学老师向勇和陈渝授课,虽然我们上不了清华大学,但是至少我们可以在网上选择听清华大学的课嘛。课程授课的顺序,就如我前面推荐的学习顺序:「内存管理 -> 进程管理 -> 文件系统管理 -> 输入输出设备管理」。

大学想报计算机专业,暑假想要自学,有哪些建议?_第20张图片

 该清华大学的视频教学搭配的书应该是《现代操作系统》,你可以视频和书籍两者结合一起学,比如看完视频的内存管理,然后就看书上对应的章节,这样相比直接啃书相对会比较好。

大学想报计算机专业,暑假想要自学,有哪些建议?_第21张图片

 清华大学的操作系统视频课讲的比较精炼,涉及到的内容没有那么细,《操作系统 - 哈工大》李治军老师授课的视频课程相对就会比较细节,老师会用 Linux 内核代码的角度带你进一步理解操作系统,也会用生活小例子帮助你理解。

大学想报计算机专业,暑假想要自学,有哪些建议?_第22张图片

深入学习系列

《现代操作系统》这本书我感觉缺少比较多细节,说的还是比较笼统,而且书也好无聊。

推荐一个说的更细的操作系统书 —— 《操作系统导论》,这本书不仅告诉你 What,还会告诉你 How,书的内容都是循序渐进,层层递进的,阅读起来还是觉得挺有意思的,这本书的内存管理和并发这两个部分说的很棒,这本书的中文版本我也没找到资源,不过微信读书可以免费看这本书。

大学想报计算机专业,暑假想要自学,有哪些建议?_第23张图片

 当然,少不了这本被称为神书的《深入理解计算机系统》,豆瓣评分高达 9.8 分,这本书严格来说不算操作系统书,它是以程序员视角理解计算机系统,不只是涉及到操作系统,还涉及到了计算机组成、C 语言、汇编语言等知识,是一本综合性比较强的书。

大学想报计算机专业,暑假想要自学,有哪些建议?_第24张图片

 它告诉我们计算机是如何设计和工作的,操作系统有哪些重点,它们的作用又是什么,这本书的目标其实便是要讲清楚原理,但并不会把某个话题挖掘地过于深入,过于细节。看看这本书后,我们就可以对计算机系统各组件的工作方式有了理性的认识。在一定程度上,其实它是在锻炼一种思维方式 —— 计算思维。

三、计算机编译原理

首先正式一个问题:编译原理并非随随便便就能入门的

换言之,需要准备一些基础知识在学习。

编译原理的学习和实践通常基于对计算机编译过程、计算机基本工作原理、甚至一定的数学知识有一定积累,这些知识分别分布并应用在了编译原理的不同阶段。没有这些基本知识的积累,很快就会在某个阶段由于功底不够而无法再继续后面的学习。

所以,先认认真真的积累上述的一和二在入门学习吧。

四、数据结构与算法

相信无论是已经毕业的同学还是正在学校学习的同学,都或多或少地被数据结构与算法这门课给折磨过。数据结构与算法这门课开篇就讲了一个非常重要的概念:程序 = 数据结构 + 算法,对于初学者可能还不能完全地理解这句话,不过对于已经工作两三年的同学相信对这句话是深信不疑的。

对于数据结构与算法的学习,我个人认为应该分层三个步骤:首先先大致了解什么是算法,可以通过一些科普读物来入门,这个过程我称之为入门阶段;接着可以尝试实现一些比较容易的数据结构和算法,这样可以更加深对数据结构和算法的了解,这个过程我称之为实践阶段;最后去了解数据结构与算法背后的相关数学原理等,这个过程我称之为原理阶段。

入门系列

入门的同学,我建议你不要过度追求上去就看经典书。

不要一来就拿着《算法导论》开始啃,初学就去啃这些书肯定会很费劲。你一旦啃不下来,挫败感就会很强。

然后就放弃学算法了。

所以,入门的同学,我建议你找一些比较容易看的书来看,比如《大话数据结构》和《算法图解》。

不要太在意书写得深浅,重要的是能不能坚持看完。

《大话数据结构》 这本书最大的特点是,它把理论讲得很有趣,不枯燥。而且每个数据结构和算法,作者都结合生活中的例子进行了讲解, 能让你有非常直观的感受。

虽然这本书有 400 多页,但是花两天时间读完,应该是没问题的。

如果你之前完全不懂数据结构和算法,可以先从这本书看起。

《算法图解》 跟《大话数据结构》走的是同样的路线,就像这本书副标题写的那样,“像小说一样有趣的算法入门书”,主打“图解”,通俗易懂。它只有不到 200 页,所以内容比较少。

作为入门,看看这本书,能让你对数据结构和算法有个大概的认识。

当然,这些入门书共同的问题是,缺少细节,不够系统,也不够严谨。

所以,如果你想要系统地学数据结构和算法,看这两本书肯定是不够的。

基础系列

通过基本入门算法书的调教,你已经逐渐体会到了算法的魅力,现在正是时候踏入基础系列算法的领域!!!

这些书籍需要你费点心思去阅读。

很多同学在学习的过程中,看到一篇算法科普文章经常会有这样的想法。

哎呀,要是文章的代码是 Java 语言就好了呀。

哎呀,要是文章的代码是 Python 语言就好了呀。

虽然代码并不会很严重影响阅读,但还是有很多强迫症的同学喜欢看到文章的解释代码是自己擅长的。

我这里推荐《数据结构和算法分析》,这本书非常系统、全面、严谨,而且又不是特别难,适合对数据结构和算法有些了解,并且掌握了至少一门编程语言的同学。而且,这个作者也很用心。

他用了三种语言,写了三个版本,分别是:《数据结构与算法分析 :C 语言描述》《数据结构与算法分析:C++ 描述》《数据结构与算法分析:Java 语言描述》。

面试实战系列

大家都知道,对于程序员来说很大程度上算法就是为了应付面试的。

所以,推荐三本有益于面试的书籍,分别是:《剑指 offer》《编程珠玑》《编程之美》。

《剑指 offer》这本书的目的非常明确,就是为了面试。

这本书几乎包含了所有常见的、经典的面试题。如果能搞懂这本书里的内容,应付一般公司的面试应该不成问题。

《编程珠玑》这本书的豆瓣评分非常高,有 9 分。

这本书最大的特色就是讲了很多针对海量数据的处理技巧。这个可能是其他算法书籍很少涉及的。面试的时候,海量数据处理的问题也是经常会问的,特别是校招面试。不管是开拓眼界,还是应付面试,这本书都很值得一看。

《编程之美》这本书有多位作者,其中绝大部分是微软的工程师,所以书的质量很有保证。不过,这里面的算法题目稍微有点难,也不是很系统,这也是我把它归到面试这一部分的原因。如果你有一定基础,也喜欢钻研些算法问题,或者要面试 Google、Facebook 这样的公司,可以拿这本书里的题,先来自测一下。

五、计算机网络

计算机网络相比操作系统好学非常多,因为计算机网络不抽象,你要想知道网络中的细节,你都可以通过抓包来分析,而且不管是手机、个人电脑和服务器,它们所使用的计算网络协议是一致的。

也就是说,计算机网络不会因为设备的不同而不同,大家都遵循这一套「规则」来相互通信,这套规则就是 TCP/IP 网络模型。

大学想报计算机专业,暑假想要自学,有哪些建议?_第25张图片

TCP/IP 网络参考模型共有 4 层,其中需要我们熟练掌握的是应用层、传输层和网络层,至于网络接口层(数据链路层和物理层)我们只需要做简单的了解就可以了。

对于应用层,当然重点要熟悉最常见的 HTTP 和 HTTPS,传输层 TCP 和 UDP 都要熟悉,网络层要熟悉 IPv4,IPv6 可以做简单点了解。

我觉得学习一个东西,就从我们常见的事情开始着手。

比如, ping 命令可以说在我们判断网络环境的时候,最常使用的了,你可以先把你电脑 ping 你舍友或同事的电脑的过程中发生的事情都搞明白,这样就基本知道一个数据包是怎么转发的了,于是你就知道了网络层、数据链路层和物理层之间是如何工作,如何相互配合的了。

搞明白了 ping 过程,我相信你学起 HTTP 请求过程的时候,会很快就能掌握了,因为网络层以下的工作方式,你在学习 ping 的时候就已经明白了,这时就只需要认真掌握传输层中的 TCP 和应用层中的 HTTP 协议,就能搞明白访问网页的整个过程了,这也是面试常见的题目了,毕竟它能考察你网络知识的全面性。

重中之重的知识就是 TCP 了,TCP 不管是建立连接、断开连接的过程,还是数据传输的过程,都不能放过,针对数据可靠传输的特性,又可以拆解为超时重新、流量控制、滑动窗口、拥塞控制等等知识点,学完这些只能算对 TCP 有个「感性」的认识,另外我们还得知道 Linux 提供的 TCP 内核的参数的作用,这样才能从容地应对工作中遇到的问题。

接下来,推荐我看过并觉得不错的计算机网络相关的书籍和视频。

入门系列

此系列针对没有任何计算机基础的朋友,如果已经对计算机轻车熟路的大佬,也不要忽略,不妨看看我推荐的正确吗。

如果你要入门 HTTP,首先最好书籍就是《图解 HTTP》了,作者真的做到完完全全的「图解」,小林的图解功夫还是从这里偷学到不少,书籍不厚,相信优秀的你,几天就可以看完了。

大学想报计算机专业,暑假想要自学,有哪些建议?_第26张图片

 

如果要入门 TCP/IP 网络模型,我推荐的是《图解 TCP/IP》,这本书也是以大量的图文来介绍了 TCP/IP 网络模式的每一层,但是这个书籍的顺序不是从「应用层 —> 物理层」,而是从「物理层 -> 应用层」顺序开始讲的,这一点我觉得不太好,这样一上来就把最枯燥的部分讲了,很容易就被劝退了,所以我建议先跳过前面几个章节,先看网络层和传输层的章节,然后再回头看前面的这几个章节。

大学想报计算机专业,暑假想要自学,有哪些建议?_第27张图片

 另外,你想了解网络是怎么传输,那我推荐《网络是怎样连接的》,这本书相对比较全面的把访问一个网页的发生的过程讲解了一遍,其中关于电信等运营商是怎么传输的,这部分你可以跳过,当然你感兴趣也可以看,只是我觉得没必要看。

大学想报计算机专业,暑假想要自学,有哪些建议?_第28张图片

 如果你觉得书籍过于枯燥,你可以结合 B 站《计算机网络微课堂》视频一起学习,这个视频是湖南科技大学老师制作的,PPT 的动图是我见过做的最用心的了,一看就懂的佳作。

大学想报计算机专业,暑假想要自学,有哪些建议?_第29张图片

 深入学习系列

看完入门系列,相信你对计算机网络已经有个大体的认识了,接下来我们也不能放慢脚步,快马加鞭,借此机会继续深入学习,因为隐藏在背后的细节还是很多的。

对于 TCP/IP 网络模型深入学习的话,推荐《计算机网络 - 自顶向下方法》,这本书是从我们最熟悉 HTTP 开始说起,一层一层的说到最后物理层的,有种挖地洞的感觉,这样的内容编排顺序相对是比较合理的。

大学想报计算机专业,暑假想要自学,有哪些建议?_第30张图片 

但如果要深入 TCP,前面的这些书还远远不够,赋有计算机网络圣经的之说的《TCP/IP 详解 卷一:协议》这本书,是进一步深入学习的好资料,这本书的作者用各种实验的方式来细说各种协议,但不得不说,这本书真的很枯燥,当时我也啃的很难受,但是它质量是真的很高,这本书我只看了 TCP 部分,其他部分你可以选择性看,但是你一定要过几遍这本书的 TCP 部分,涵盖的内容非常全且细。

大学想报计算机专业,暑假想要自学,有哪些建议?_第31张图片 

要说我看过最好的 TCP 资料,那必定是《The TCP/IP GUIDE》这本书了,目前只有英文版本的,而且有个专门的网址可以白嫖看这本书的内容,图片都是彩色,看起来很舒服很鲜明,小林之前写的 TCP 文章不少案例和图片都是参考这里的,这本书精华部分就是把 TCP 滑动窗口和流量控制说的超级明白,很可惜拥塞控制部分说的不多。

大学想报计算机专业,暑假想要自学,有哪些建议?_第32张图片

 当然,计算机网络最牛逼的资料,那必定 RFC 文档,它可以称为计算机网络世界的「法规」,也是最新、最权威和最正确的地方了,困惑大家的 TCP 为什么三次握手和四次挥手,其实在 RFC 文档几句话就说明白了。

实战系列

在学习书籍资料的时候,不管是 TCP、UDP、ICMP、DNS、HTTP、HTTPS 等协议,最好都可以亲手尝试抓数据报,接着可以用 Wireshark 工具看每一个数据报文的信息,这样你会觉得计算机网络没有想象中那么抽象了,因为它们被你「抓」出来了,并毫无保留地显现在你面前了,于是你就可以肆无忌惮地「扒开」它们,看清它们每一个头信息。

那在这里,我也给你推荐 2 本关于 Wireshark 网络分析的书,这两本书都是同一个作者,书中的案例都是源于作者工作中的实际的案例,作者的文笔相当有趣,看起来堪比小说一样爽,相信你不用一个星期 2 本都能看完了。

大学想报计算机专业,暑假想要自学,有哪些建议?_第33张图片

你可以发现,大学四年,计算机专业的学生要学的东西挺多的,

现在回答小标题:怎么样提高自己的技术水平

请踏踏实实的先完成对专业课程的学习,虽然有些课程比较难,但这是区分科班出身的你与半路出家的程序员的区别,否则,说实话,就实战而言,你还比不上培训班出来的学生。

然后再提升。
以操作系统为例,看看这些知识是如何用到的
组成原理:是不是学过中断、8259A、保护模式寻址等等?体现在操作系统里,为了实现进程调度,你要用时钟中断,为了会用中断,你要写8259A的控制程序;为了实现实模式到保护模式的切换和保护模式编程,你必须理解处理器的段保护机制等


数据结构:是不是觉得红黑树很高大上,好看不好用?去看看linux内核中有关查找的算法,用到红黑树的很多;再去看看最近已经在Fedra中取代ext4的文件系统btrfs,它用到的底层结构是B+树。看到了这些活生生的实例,你就会明白数据结构不仅仅是躺在教科书上的标本了。
计算机网络:去实现一个虚拟的网卡,自己去实现TCP/IP协议,网络上的东西就明白大半了。

最后再选择一门编程语言,把你的专业知识运用到上面去。

这里我以 Python 为例(事实上,我建议每个计算机专业的学生都了解一下 Python,掌握到可以简单的爬取数据即可,花个几天时间就能掌握,这些技能可以在后面的工作中带来极大的便利)

一般而言,python爬虫需要以下几步:

  1. 找到需要爬取内容的网页 URL
  2. 打开该网页的检查页面(即查看 HTML 代码,按 F12 快捷键即可进入)
  3. 在 HTML 代码中找到你要提取的数据
  4. 写 python 代码进行网页请求、解析
  5. 存储数据

1、找到需要爬取内容的网页 URL?

计算机网络:当键入网址后,到网页显示,其间发生了什么?

2、打开该网页的检查页面(即查看 HTML 代码,按 F12 快捷键即可进入)

3、在 HTML 代码中找到你要提取的数据

1)给定的种子 URLs,爬虫程序将所有种子 URL 页面爬取下来

2)爬虫程序解析爬取到的URL页面中的链接,将这些链接放入待爬取URL集合中

3)重复1、2步,直到达到指定条件才结束爬取

数据结构与算法:递归、优先队列、DNS缓存(这里需要设计一个 hash 表来存储已有的域名及其IP)

4、写 python 代码进行网页请求、解析

正则表达式、HTTP

5、存储数据

计算机操作系统:用 MySQL 还是 MogoDB

二、如何准备进入大厂 ?

相比较社招而言,在校招过程中面试官在面试过程中最看重的是你的基础能力与可塑性,而非项目能力。

要准备好校招,要有思想准备:这是一场持久战,基本上从你开始准备校招的那一刻开始,到你正式拿到 offer 的,最后确定去哪一家公司时,时间差不多一年左右。

  1. 选择方向
  2. 校招流程
  3. 怎么投递,怎么内推
  4. 校招知识储备

1、选择方向

在我看来,第一件事情应该就是选择你找工作的方向,这件事情应该在你开始找工作的半年前左右确定,比如,你2021年3月开始春招找工作,那么,我建议你最好在现在,也就是2020年10月就确定找工作的方向,为什么要这么早,后面我会具体分析。

说到工作的方向,就现在的互联网公司来说,其实可以选择的方向还是特别多的,也是看个人的选择,当然,也是可以有一些数据来做参考的;现在的校招的主流的方向有:算法,后端开发,前端开发,测试开发,运营开发,客户端开发,测试等等,这些岗位通常来说是选择最多的,对于几个岗位,我也给一下自己的建议,可以供参考。

首先是算法,算法这个方向,在我刚刚读研究生的时候也是有想过的,但是,随着深入的了解,以及对于市场对于这个岗位的需求分析,后来,我就慢慢的放弃了,当然这只是一方面的原因;对于算法岗位,现在比较热门的就是深度学习、机器学习了,由于CV方向特别火爆,这里的火爆并不是说好找工作,而是竞争太大了,就今年的算法岗位来说,或者说从去年开始,基本上就是神仙打架了,没有一两篇顶刊论文,你都不好意思说你是搞算法的,所以,如果你想找算法的工作,我的建议是,第一,是不是研究生,第二,是不是211/985以上,或者更直接点是不是985以上的学校,第三,有没有发过好的期刊的论文,我觉得这三点至少满足两点以上才可以考虑去找算法的工作,否则,建议转开发。

接下来说一下开发,开发现在其实竞争压力也不小,想进大厂的压力其实也很大,因为需求就这么多,当然,跟算法比起来就好很多了,后端毕竟方向很多,语言的选择也是很多的,比如,Java、C++、Python、Go这些语言的方向都是可以选择的,之前也说过,Go现在的需求也是在慢慢变大的,可以考虑一下这个方向,竞争可能小一些,其中,Java的竞争最大,可能是因为大家都觉得Java好找工作吧,导致投递的人数特别多,大厂就更不用说了,想找一个Java岗位的工作真的不容易,从我身边的朋友来看,以及身边同学找工作的感受来看,C++进大厂的难易程度还是小一些的,大家可以考虑一下,当然,这些选择也是看你对哪个方向更喜欢了,或者更熟悉了,这里只是给一些建议。

2、校招流程

面说了如何选择的问题,选择好了之后,就应该熟悉一下目前的校招流程了,刚刚开始的时候如果不了解的话,或者没有了解一些经验之类的,还是会犯一些错误的,所以这里给大家总结一下。

在现在的校招的模式下,校招分为春招和秋招,春招基本上是找实习的,还是少量的校招补招的,补招就是上一年秋招没有招满,然后在春招继续招人,而秋招基本上就是应届生找工作的最佳时期了。

在今年的春天,2月份开始吧,春招就开始了,很多的公司就开始招是实习生了,特别是字节跳动,在2月初就开始了提前批,2月底提前批就结束了。

所以,春招找实习的黄金时间就是2-5月了,这个两到三个月的时间都一直会有机会,也是拿实习offer的最佳时期。

接下来,6-8月这个时间段,如果你在春招找到了实习,那么一般你就在公司实习了,实习结束后,到9月开始就是要开始秋招了。

但是,这里其实有一个问题,在前面就讲到过,现在的秋招一般都会很早,可能在7月的时候很多的公司提前批就开始了,而提前批又是很好拿offer的时候,所以,选择去不去实习就显得很重要了,或者,你去实习了,如果发现你所实习的公司不是你想留的公司,建议尽早离职准备秋招。从今年的情况来看,可能因为疫情的影响,到了9月份开始秋招,发现其实已经晚了,拿我的情况跟身边的同学来说,今年9月份开始秋招,一般都是投了一大堆的公司,结果最后只有可怜的5个面试机会,这个时候才发现,提前批真的很重要,再对比一些没有实习的同学,通过提前批的面试,一般都有几个offer斩获,对比之下,发现实习的优势竟然没有了,可能这就是现在互联网公司的找工作的现实写照吧。

3、怎么投递,怎么内推

前面讲了校招的流程问题,这里讲一下在面试的过程中一定会遇到的问题,那就是投递简历。

大家应该都知道,现在互联网公司找工作,基本上都是在牛客网看相关的信息,这也是给大家提供了一个渠道。

关于投递,现在不同的公司也有不同的形式。

第一种,大公司,大公司一般都会有自己的投递官方网站的,都是在官方网站进行投递,这个麻烦的就是,很多的简历信息都是需要手动输入的,所以,还是比较耗时的,到时候遇到了你就会发现真的有点烦,有时候投递个简历需要半天;但是,有一个好处就是,可以比较实时的查看面试进度,直接在官网上进行查看就可以了。

第二种,有一些公司因为没有自己的官方网站,所以,就托管在第三方来进行这个操作,比如,在牛客网上直接进行投递,在牛客网上填写简历,然后,就可以一键投递了,这个方便一些,但是,就是感觉很多时候没有消息,我也不知道为什么。

第三种,也是依赖第三方公司,今年投递的感觉来说,一般都是依赖一个叫做https://www.mokahr.com/,这个网站一般就是公司进行内推的,这个投递网站好处就是方便投递,而且有些公司只需要你上传你的电子版的简历就可以,降低了投递成本,但是,不方便的就是查询投递进度。

大学想报计算机专业,暑假想要自学,有哪些建议?_第34张图片

 然后,说到内推,其实,方式也就那么多。一般,如果有实验室的师兄师姐在比较好的互联网公司,那么,我们可以通过这种渠道进行内推,一般也是比较靠谱的,成功率比较高;其次,现在很多内推也都是在牛客网进行了,我很多时候也是在牛客网看有没有公司的内推,这种方式有一个问题就是一般内推的人很多,最终你能不能被筛选到是一个问题;最后,还有一种方式就是通过公众号,官方的公众号投递,或者有一些公众号也会提供内推码。

最后,就算没有内推,其实也不要紧,很多人直接在官网投递,也是能够机会的,而且,现在的内推跟前几年还不一样,现在就算是内推了,最多也就是有个笔试的机会,不会直接给面试机会,直接给面试机会除非是简历特别出众。

4、校招知识储备

基本上就是上面提到那些知识点。

1、计算机组成原理

2、计算机操作系统

3、计算机编译原理

4、数据结构与算法

5、计算机网络

在这些里面,着重考察算法,对于计算机专业的学生来说,从大学开始接触到计算机的必修课里面一定是有数据结构和算法这门课程的,而且也是相当的重要,而校招,从我自身面试的经历来说,算法可以说是十分的重要,再强调也不为过。

在现在的招聘流程中,首先是有笔试,大公司的笔试一般就是2-4道编程题,题目的难度leetcode的hard以上,所以,笔试就是检验你的算法的能力;进入到面试阶段后,基本上每一轮面试中,一定是会有算法题的,现在也是一般使用牛客网进行考核,所以,大家可以先去牛客网适应适应,那么,在一次面试中,算法的重要性怎么样呢?我这么说吧,如果一轮面试中,面试官出了一道算法题,如果你做出来了,其他的专业知识点回答的很一般,你有可能进入到下一轮面试,如果你算法题没有做出来,专业知识点就算回答的再好,基本上也是凉凉。因此,从我的经验来看,面试中A出算法题,至少可以拿到60分,A不出来,那就是0分,无一例外。

那么算法如何准备呢,这也是我想跟大家聊的一个话题,因为我在找工作之前,算法的能力可以说太一般了,很多的算法都是不懂的,基本的题目也是很难做出来,但是,经过这一年的训练,现在在面试中的算法题A出来基本上是没有问题的,除非是特别难的题目,那当我没说,有过几次经历,感觉被刷KPI了;因此,如果你现在也是对算法没有任何的自信的话,不用太担心,因为我也是这样过来的,只要你坚持,有方法的训练,应对基本的面试是完全没有问题的。

最后,祝你考入了心仪的大学,选择了一个相当不错的专业。

资源&更深入的阅读资料:

领取资料的神秘通道开启点击链接加入群聊【C语言/C++编程学习基地】:828339809

你可能感兴趣的:(计算机/it,C语言,编程语言,大数据,tcp/ip,网络,http,面试)