[father::元笔记汇总]
2022_最新C++开发学习路线_极限找工作版
前言
本路线由“汤姆还在写代码”编写
-
公众号:汤姆还在写代码
- 公众号
是一条汇总网上许多资料,而不是资料的纯粹堆砌,让人眼花缭乱的复制粘贴,没有任何实际的API、概念的堆砌,因为API、书里的概念完全可以查得到,在书里也能学得到,所以这不是帮你在总结所有的知识点,而是根据实际的计算机系课程来安排学习路线,并且配合上面向就业的学习,做到了不和工业界面试脱节,非常实际、非常认真、非常掉头发,真心求个视频三连!
极限找工作,面试要考
注:极限找工作版,意思是不管科班怎么学,我只学面试要考的内容,工作用得到的内容,工作用不上,面试不考的,一律不学!只能通过大量的记忆先上车后补票,等上车后,一定要把基础再回头打扎实噢~. :O
第零步:准备
一些给你的话
- 1、不管做什么事情,从现在开始永远不会晚,关键在于,你为了得到你想要的东西,你愿意付出多少努力和代价?中考努力过吗?高考努力过吗?大学努力过吗?如果你说你不喜欢考试,所以没有努力过,其实也可以。然而,当你要考虑赚钱这样的现实问题的时候,你应该足够成熟,知道必须付出很多努力,才能拿到自己应得的收获,这绝对不是轻轻松松就能完成的事情。学计算机、学编程、学技术,如果你能做到非常努力,坚持不懈一周、一个月、一年、两年、三年、五年,我不相信你成为不了非常优秀的工程师,我不相信你拿不到非常高的薪资(薪资你可以直接看看小程序“天窗说”),也不相信你比不过其他的面试者,学会认真学习、坚持学习,这一点弥足珍贵。
- 2、计算机从不骗人,也没有人为设置的门槛,你付出多少,它就给你回报多少,你不用自我包装,你的代码会说明一切。许多耳熟能详的大公司,仍然有学历没有那么高的同学,通过自己长久的努力,最终成为各个研发方向的佼佼者,这样的自我实现的故事有很多,请你千万先放下浮躁的心,不要追求几周、几个月、一年我就要怎样怎样,而是把工作当作一个长久的事业来看,量变到质变,如果不按年来作为单位计算,其实可以认为你的目标是定得比较低的。
- 3、即使是在各种大公司,许多高学历的同学也是需要不停地学习,这个行业几年就会天翻地覆,这就意味着会有各种各样的机会,各种各样能够翻身的机会,关键在于你是否做足够了准备。每个人都有自己的目标和追求,如果我们的目标,一个月达不到,我们半年达到、一年达到好不好,如果你觉得太漫长,那我们多努力一点加快自己的速度是否可以。
- 4、计算机相关专业的就业,已经是相对其他行业非常友好了,想一想其他很多别的专业的同学,作为同样进入一所学校的同学,有可能人家的分数还更高一些,但是为什么没法得到那么高的毕业起薪呢,为什么有那么多就业困难的专业呢,和他们相比,计算机的就业已经非常适合普通人了,至少它有机会能够帮助你获得更好的生活。
- 5、我知道你看到这里,也许会觉得这都是鸡汤,但我还是会这样结尾:追求更好的生活,是每个人的权利,努力的意义在于给自己、给你在乎的人、在乎你的人,更多的选择,更好的生活,而这是一定会付出代价的,你为了达到一个目的,你愿意付出多少代价?
了解行情
-
微信小程序“天窗说”、“OfferShow”,看一看到底市场上的大厂研发工程师的薪资是多少
- OfferShow
- 天窗说
如何学习
-
1、如果推荐的是书怎么学
-
1、首先忘记你高中、大学、各种在学校里面的学习方法,在这条学习路线上没有任何的考试、没有任何的强迫,学习只有一个目的,就是掌握知识,然后获得更高的竞争力,你只有一个人去比较,就是你自己,你是在为了自己而活,学习是为了你自己、你在乎的人、在乎你的人,和其他人没有任何关系,不要关心别人的速度、进度、收获,只要你每天都进步很多,就是绝对的胜利。
-
2、要清楚的是,我们看书不是为了考试,没有说一定要通过刷题来检验自己是否学会,也没有说一定要在看完书之后,还能背诵书中的内容,甚至于大部分的笔记也是不需要的。你的最大的笔记库一定是Google。
- 通过像高中学习那样,通过记笔记的方式把书上所有 所有 所有的概念、API、定义抄下来,效率极低,不推荐。只记关键信息,一定要学会使用Google,一定要学会经常搜索、经常看其他人的博文,这个是100%重要。
-
3、因此,我们看书学习的方式,最好就是:好好地、不浮躁地刷完一本书,不要一目十行,看清楚每句话、每个概念,不要走神,不要看书不动脑。重点:看书里每一个概念、每一句话,在看书的那个一秒钟,一定要搞懂、理解了那句话到底说的是什么意思。
-
4、只要你做到了看书的那个时刻,完全理解了每句话说的是什么意思,即使把书关上,忘记了也没关系,但是你要做到遇到了忘记的知识点,你可以翻书、可以google,然后复习、强迫自己再记一下,而不是在看书的时候背书
-
5、同时要知道的是,不能光看书,书上时不时会有一些简单的、复杂的编程题出现,建议只要是写代码相关的问题,都动手试一试,一定要写代码,如果遇到不需要怎么打代码的问题,可以只思考、不动笔、看答案。
-
-
2、如果推荐的是视频怎么学
- 视频该倍速就倍速,懂的东西,不要花太多时间重复去看
- 播放量最多、最火的视频,有部分就只是讲一讲应用方法、API如何调用,因为这部分的受众很广,大家都看得懂,而学编程需要跟其他人脱颖而出,就需要看那些有深度的资料。你会发现,很多非常非常非常优质的课程,国内优秀985同学都学的资料,很多就是经典的教材、以及国外的网课、在线做实验。
- 看视频,不能光看,不做笔记,不写代码,绝对不能。
- 同样的课程,学习优秀的教材,一定会比看视频,学起来更加系统性,知识体系的建立更加扎实,你的书被翻烂了,才是学得好
- 看视频,可以帮助你快速入门,但是如果想要深入这些学科,看书、看博客、看代码、写代码、自己思考、自己设计、自己实现、绞尽脑汁、熬夜,是绝对的。不会有看完视频,就完全掌握这个技术,是不可能的
学习的软硬件推荐
-
伙伴
- 你一定要善于使用你的电脑,你的电脑是你的亲密战友,是你的最好伙伴,是你进步的工具,不要在电脑这里委屈自己,用自己能力范围内的最好配置。对你的计算机要尊敬、热爱,把他当作一个人来看待,他是你最亲密的伙伴。
-
硬件
-
电脑
-
入门
- 使用Windows操作系统,有条件建议使用16GB内存的电脑。只有在部门学习内容时(如需要在本地电脑跑服务器程序、进行机器学习相关工作),对性能要求较高,否则,即使是8GB的电脑,也足够应付计算机专业的学习了。
-
进行了系统性的计算机专业学习之后,至少你要在学习操作系统课程、Linux开发基础之后
-
你会需要使用Linux
-
方案一:选择购买云服务器,搭载Ubuntu或者CentOS任何一种均可。通过终端的方式连接上你的服务器,然后进行学习,包括不局限于操作系统课程、数据库、项目搭建等。没有图形界面
- 简单来说,如你购买腾讯云后,腾讯公司会有一台24小时不间断运行的“电脑”,该“电脑”使用Linux操作系统,随时等你用终端连上来使用,该“电脑”就是你的服务器
-
方案二:将自己的电脑安装vmware等虚拟机工具,安装桌面版Linux系统,非常推荐,对计算机的配置要求比较高,建议16GB能获得更好的体验
-
本地虚拟机安装Linux操作系统的方式,你也可以将它视作你的服务器,只是该服务器不是24小时开机,是你亲自打开电脑才能使用的服务器。服务器这个概念不是什么很屌的概念,可以就想象成一台24小时运行的电脑而已。方案三、四、五是类似的概念
-
-
方案三:使用vmware等虚拟机,安装服务器版Linux系统,即没有桌面,没有图形界面,和购买云服务器类似,然后通过本地终端的方式登录自己的虚拟机,节省电脑性能(相对于虚拟机跑桌面版Linux操作系统)
-
方案四:安装双系统,Windows和Linux双修,有动手能力的同学可以考虑
-
-
虚拟机软件
-
最好的虚拟机软件推荐 - 十佳评测
-
虚拟机 VMware 和 VirtualBox 哪个更好用?
-
-
视频
-
如何安装虚拟机?Ubuntu Linux 虚拟机安装教程
-
VMware虚拟机之Linux虚拟机安装
-
-
-
针对比较熟悉计算机、动手能力、查阅资料的能力强的同学,强烈推荐使用MacBook Pro学习编程,单纯体验上会非常好
-
-
手机
- 不需要,学习的时候,不要被手机影响,手机对于学习编程这件事,绝大部分时候没有任何帮助
-
-
软件
-
记笔记
-
Typora
-
推荐使用Typora,不一定非要学习Markdown语法,学也可以,只是Typora可以通过快捷键,来达到将文字格式改为标题、加醋、斜线等操作,和使用Markdown语法编写的体验没有太多差别
-
Typora
-
视频
-
【狂神说】程序猿,你真的会用Typora吗?
-
【软件教程】如何用Typora记笔记? | 附带Markdown基础教程
-
-
-
手写
- 不推荐!
-
-
写代码(C/C++)
-
小白按照书本、视频中推荐的IDE或编辑器去配置,视频、书里怎么教,你怎么用
-
稍微入门之后,IDE可以考虑Dev C++、Clion,编辑器可以考虑VSCode(VSCode也非常适合远程开发,即代码均在Linux服务器上,而通过网络连接,使用本地的VSCode编辑服务器上的代码)
-
常见的IDE
-
Dev-C++
-
介绍
- Dev-C++是一个Windows环境下的一个适合于初学者使用的轻量级C/C++ 集成开发环境(IDE),它是一款自由软件,遵守GPL许可协议分发源代码。 Dev-C++ 使用MingW64/TDM-GCC编译器,遵循C++ 11标准,同时兼容C++98标准。
-
DevC++
-
视频
-
-
Clion
-
介绍
- Clion 是一款专为开发C及C++所设计的跨平台IDE。它是以IntelliJ为基础设计的,包含了许多智能功能来提高开发人员的生产力。
-
Clion
-
视频
-
-
-
常见的编辑器
-
VSCode
-
介绍
- Visual Studio Code是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代码自动补全、代码重构功能,并且内置了命令行工具和Git 版本控制系统。用户可以更改主题和键盘快捷方式实现个性化设置,也可以通过内置的扩展程序商店安装扩展以拓展软件功能。
-
VSCode
-
视频
-
VScode最新版安装教程及入门使用(小白必看)
-
活动作品『教程』VsCode五分钟上手教程 无一句废话
-
-
-
Sublime Text
-
介绍
- Sublime Text是一套跨平台的文本编辑器,支持基于Python的插件。Sublime Text是专有软件,可透过包扩展。大多数的包使用自由软件授权发布,并由社群建置维护。
-
-
-
-
-
画流程图、架构图
-
draw.io
-
桌面版
-
在线版
-
视频
-
只会用 Office 画流程图?许多人试用过这个后直呼回不去了 👍 | Draw.io 教学
-
draw.io绘图工具快速入门-比visio和processon好用且免费
-
-
-
-
思维导图
-
XMind(非XMind8经典版)
-
视频
-
Xmind思维导图从入门到精通-官方推荐教程
-
活动作品学习思维导图 XMind 2022 使用教程(上)
-
-
-
搜索引擎
-
一定要学会使用Google
- 题外话:Google需要翻墙,翻墙软件需要你自己寻找,这里不作推荐
-
尽量不要用百度,你猜百度的工程师一般用什么搜索引擎?
-
-
浏览器
- 只推荐使用Chrome
-
音乐
- 推荐网易云音乐
-
-
欢迎关注B站:汤姆还在写代码,晚上下班、节假日,只要有空就会直播,只要有想交流的,可以直播交流,也可以关注公众号(汤姆还在写代码),私信交流
第一步:基础
基础部分中,标注🌟号的书籍,可以参考我的视频:
《【大厂必备】全站唯一的计算机系专业必修课教材推荐》 https://www.bilibili.com/video/BV1o34y1t7b7
领取所有标🌟号书籍pdf版的方式:关注公众号“汤姆还在写代码”,回复关键词:教材
资源下载,点击角标展开
- 基础部分中,标注🌟号的书籍,可以参考我的视频:
《【大厂必备】全站唯一的计算机系专业必修课教材推荐》 https://www.bilibili.com/video/BV1o34y1t7b7
领取所有标🌟号书籍pdf版的方式:关注公众号“汤姆还在写代码”,回复关键词:教材
顺序,从上到下依次学习,尽量不要跳跃
计算机导论
-
计算机科学导论
-
书籍
-
《计算机科学概论》
- 导论,就是一个目录的作用。我建议学计算机之前先看看,看不懂不要紧,有个大致的印象就差不多了,本来也是起一个计算机系目录的作用,不用对目录的每个名词都刨根问底,以后有的是机会。一共只有三百多页,已经算很少了。
-
视频
-
【计算机导论】计算机科学导论(大神之路-起始篇)
-
【传思翻译组·中英字幕】CS50 哈佛大学 计算机科学导论 名校公开课【合集·完结】
-
-
-
-
软件工程导论
-
书籍
-
《软件工程:实践者的研究方法》
- 不建议初学者读,不建议大部分人读,六百多页,很花时间,内容和知识太多太繁杂,确实也算是软件工程SE的目录,但更适合等你其他必修课学完之后,再确定好以后做软件工程的方向,并且开始工作之后,再读这本书,书里的知识绝大部分更偏向于工业实践,在学校里面,读了意义也不大,大概率无法理解。可以直接跳过,但是确实软件工程导论已经没有其他书可以推荐了,软件工程本来就是从计算机科学与技术里面细分出来的分支,不要对这门课要求太高。
-
-
数学类(可以不看)
- 高数
- 线性代数
- 离散数学
- 数值分析
- 概率论
基础类(必看)
-
C语言
-
书籍
-
《C程序设计语言》
- C语言这种书,要学深入了,可以推荐很多书,但是这里我是把它当作本科第一门编程语言来学习的,所以没必要学什么特别厚的书,这本就够了,学学语法,熟悉一下学一门语言大概有哪些的东西,写一点迷你程序就够了,最重要的是:
-
-
1、学习指针,了解到了内存管理最基本的东西,给你以后学操作系统课程有一个印象。
2、学习从代码到可执行程序,了解整个代码到生成产物的过程,给你以后学编译原理埋下伏笔。
所以要我说初学者学C语言的目的是什么,我觉得是学语法感受编程、学指针感受内存管理、学编译感受从代码到执行。
- 视频
- 《郝斌C语言自学教程》
- https://www.bilibili.com/video/BV1os411h77o?from=search&seid=12019891631087030458&spm_id_from=333.337.0.0
- c语言编程
- https://www.bilibili.com/video/BV1q54y1q79w?from=search&seid=14042480972427059049&spm_id_from=333.337.0.0
-
简单面向对象语言(C++为例)
-
网站
-
-
数据结构
-
书籍
-
《数据结构(C++语言版)》
- 学习数据结构,语言不是什么问题,用什么语言都可以学习数据结构,用C、C++、Python、Java都可以实现各种各样的数据结构,为什么这里用的教材语言是C++的,纯粹是因为我暂时没有找到其他语言更好的国内教材。
-
-
视频
-
-
C++系统性学习
-
书籍
-
《C++ Primer》
- 听我先说啊,这本书800多页,非常厚,而且是工具书、字典那样的,其实根本不适合新手入门去学习面向对象技术与方法。
-
-
为什么这里就推荐这个书,最大的原因是数据结构教材,用到的语言是C++,当然也有用C语言的,但是我没找到特别好的书,所以没有办法,只能让大家先看看C++,大部分初级工程师在使用C++的时候,也只用到了面向对象的特性,很多高级特性都用不上,模板都用得很少,真的就是写ifelse而已。
这本书非常厚,不管是第一次学C++还是第N次学C++都要看,所以我推荐你们,先去什么类似菜鸟教程那样地方,先把C++大概的内容过一遍,那个应该很快就能过完,然后你过完之后就去看我接下来介绍的以C++为语言的数据结构教材,如果你看不明白,发现有不懂的C++的地方,你再去看这个C++ Primer,不要把C++ Primer当作是那种,看完了书,就再也不翻了,不会的,你会经常、一直去翻它。
- 视频
- 黑马程序员C++
- https://www.bilibili.com/video/BV1et411b73Z?from=search&seid=13183150833974805017&spm_id_from=333.337.0.0
- 【零基础学C++】老九零基础学编程系列之C++
- https://www.bilibili.com/video/BV12x411D7xr?from=search&seid=13183150833974805017&spm_id_from=333.337.0.0
-
计算理论与算法分析
-
书籍
-
《算法设计与分析基础》
- 我们计算机系上的课,是计算理论和算法分析,这里只推荐了算法分析的教材。因为计算理论那里面的什么图灵机的构造,图灵完备性证明之类的,更偏于理论,你们肯定学起来也枯燥,觉得没意思,那是属于计算机系开天辟地级别的知识,如果有兴趣,可以自己去找相关的书来看,我就不推荐了。
- 主要是本科教材要么找不到,要么就是写得比较一般,网上又推荐什么算法导论纯粹来搞笑的,这本算法书挺好的,但内容确实也挺多的,确实是我之前视频说的课程算法。我看了目录,就勾起了我大二的回忆,希望大家不要怕这本书太厚太多,还是可以看看的,实在不能理解的内容,跳过就好了,以后再来理解。
-
-
视频
-
-
数据库原理与设计
-
书籍
-
《数据库系统概论》
-
《数据库系统概念》
- 数据库是真的不好推荐,国内的教材和国外的教材其实是两种思路,国内是把你当天才,很多东西默认你懂,或者是一句很简单的话直接带过,觉得你理解了;而国外的教材就是把你当傻子,讲得非常细,非常多,就像是把上课的时候学生提问都记录下来了。从页数也可以看得出来,一个400页,一个800页,当然这是概论课,不会花大心思给你讲MySQL怎么用,MySQL只是理论的一种实现框架罢了,大学教这个不是为了让你去打工当后端,而是看你是不是对数据库研发感兴趣,以后没准你就选了这个方向。
-
-
这两本书就是国内外大学教材的一个经典对比
所以到底你们更喜欢哪种教学方式呢,这个取决于你,当然了,我大二学的是国内的教材。
- 视频
- 【合集】数据库原理及应用 东南大学 徐立臻 共72讲
- https://www.bilibili.com/video/BV1ux411G7Bs?from=search&seid=4251814840266741666&spm_id_from=333.337.0.0
- 【强烈推荐】数据库系统原理(哈尔滨工业大学 战德臣)国家精品课程
- https://www.bilibili.com/video/BV14P4y1u7Jd?from=search&seid=4251814840266741666&spm_id_from=333.337.0.0
硬件类(软件开发方向可以不看)
- 电路分析基础
- 数字逻辑
- 硬件课程设计(流水线CPU设计等)
进阶类(必看)
-
操作系统
-
书籍
-
《操作系统导论》
-
《操作系统原理、实现与实践》
- 进阶类的操作系统,可以看的书特别多,你去豆瓣上搜索操作系统四个字,有特别多经典的黑皮书,我这里全都推荐的话,入初学者肯定是看不完的,所以更多还是推荐一些导论类的课程,等你们看完了,学完了,再去看那些黑皮书,其实就挺好的。
-
-
这里的国内那本,最大的优点是章节分得很清晰,界限分明,非常像我大三学的那门课的样子,可能也是因为国内的教材设计是一脉相承的,我觉得挺适合一开始看这本的。
国外的那本,章节可能分得不是很清晰,但是循序渐进,短小精悍,讲的细致的地方也更多,典型国外教材风格。
不知道你们到底适合哪种,所以都给你看介绍一下看看。
- 视频
- 王道计算机考研 操作系统
- https://www.bilibili.com/video/BV1YE411D7nH?from=search&seid=17202356376188624184&spm_id_from=333.337.0.0
- [完结] 2020 南京大学 “操作系统:设计与实现” (蒋炎岩)
- https://www.bilibili.com/video/BV1N741177F5?p=18
-
计算机组成原理
-
书籍
-
《计算机组成原理唐朔飞》
-
《计算机组成与设计硬件/软件接口》
- 计组本身就是软硬件都有的课程,一开始找这种讲整个体系的书的时候,就特别累,因为确实很难兼顾自学,同时又要书还不错,保证一定的深度,比较难搞。
-
-
大学的时候学的书,基本都是学校老师写的教材,或者是上面那种样子的书,高等教育出版社,几乎都是一模一样的,看你感觉自己喜欢哪种书吧。这个书,其实想做软件工程,尽快找个工作,转码,确实也不是必须看的,和计算机体系结构、汇编、编译原理一样,面试根本不问。但毕竟大学是通识教育,是让你找到未来方向的,所以感兴趣,看看其实也行。
-
计算机体系结构
- 这个课很硬件,我感觉我推荐了,大家也不会看,关注我的更多的还是想在互联网、游戏行业的,就索性算了吧。
-
计算机网络
-
书籍
-
《计算机网络》(谢希仁版)
-
《计算机网络:自顶向下方法》
- 这两本书,我本科的时候都看了,我特别特别特别特别喜欢这门课。
-
-
上课用的谢希仁那本,结课后自己看的自顶向下。谢希仁的那本是自底向上的,当时大三从物理层开始往上学,最后学到应用层之后,开始介绍我们互联网的各种各样的应用,给我的感觉就是一切的辛苦终于换来了成果,好像打开了一座又一座的金矿一样。
但是呢看完谢希仁那本,还是有一些疑问,所以又去看了自顶向下,看完之后之前的挺多问题就解决了,谈不上哪本书更好,因为我看自顶向下的时候已经对计网有很多理解了。
- 视频
- 王道计算机考研 计算机网络
- https://www.bilibili.com/video/BV19E411D78Q?from=search&seid=12718027877043170479&spm_id_from=333.337.0.0
- 中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程
- https://www.bilibili.com/video/BV1JV411t7ow?from=search&seid=12718027877043170479&spm_id_from=333.337.0.0
-
汇编与接口技术
-
书籍
-
《汇编语言》王爽
- 还是一样的,汇编面试不问,属于基础课,但工作之后有概率会遇到汇编语言,但需要你解决的问题,大概率比书里面的问题浅非常多,学有余力去看看吧。当然如果你想做相关工作的话,那就不一样了
-
-
视频
-
汇编语言从0开始 重制版 自学必备(配套王爽汇编语言第三版或第四版)
-
汇编语言程序设计 哈尔滨工业大学
-
-
-
编译原理与设计
-
书籍
-
《编译原理》(龙书)
-
《编译原理》(清华大学出版社)
- 到了编译原理、汇编、计网这种课程,推荐入门书已经没有任何意义了,基本都开始推荐经典教材了,因为看这个的时候早就不是入门阶段了,深度早就该提上来了。
-
-
龙书很经典,但编译原理这门课和计网、操作系统类似,需要你写代码,非常重要,你也可以去看网上的各种lab,都可以,你觉得适合自己的学习方式就好,觉得学到了知识就好,没任何问题,也完全不用跟我一样,喜欢看书啃书,这个完全是因人而异。
这里为什么还把清华大学出版社的编译原理拿出来,就是告诉大家,我本科学的就是这个书,我的编译原理老师很厉害,很不错,但是我不太喜欢这本教材,当时上这个课我看这本书非常难受,总有一种哪里好像没讲的感觉,但我翻来翻去,就是找不到知识点,但就是感觉脑海里的知识缺了一块,不知道是为什么。强烈不推荐大家看这个紫皮书。
- 视频
- 编译原理(哈工大)
- https://www.bilibili.com/video/BV1zW411t7YE?from=search&seid=10855978266166448302&spm_id_from=333.337.0.0
- 编译原理—混子速成期末保过ahhah
- https://www.bilibili.com/video/BV1ft4y1X7p6?from=search&seid=10855978266166448302&spm_id_from=333.337.0.0
选修类(后端开发方向选看)
-
Java语言程序设计
-
Linux程序设计
-
书籍
-
《鸟哥的Linux私房菜基础学习篇》
- 大部头,仅入门,不要去记忆,而是理解、应用一次书中提到的各种概念即可,一定要配套一个Linux操作系统来进行学习,边学边写
-
《Linux高性能服务器编程》
- 仅仅是一本Linux服务器编程的入门书,在学过C语言、计算机网络、操作系统之后学习
-
-
视频
-
活动作品【小白入门 通俗易懂】2021韩顺平 一周学会Linux
-
尚硅谷Linux教程(千万级学习人次,好评如潮)
-
-
-
分布式系统设计
-
书籍
- 《大规模分布式存储系统:原理解析与架构实战》
- 《Paxos到Zookeeper:分布式一致性原理与实践》
- 《分布式系统:概念与设计》
-
视频
-
【麻省理工学院—中文字幕】也只有MIT大佬才能把分布式系统讲的明明白白,油管超人气Java公开课
-
【剑桥大学】DDIA作者Martin Kleppmann分布式系统(机翻)
-
活动作品分布式系统之一致性算法(Paxos、Raflt、ZAB),听完保证有收获!
-
-
第二步:实力提升
进入这一步,一定是要基础部分提到的内容已经掌握很熟练之后,再来进阶学习,否则学习效率会很低,因为你看不懂。并且该部分需要自己选择内容去学习,并非全部都要完全掌握。
C / C++
- 《C++ Primer》
- 《Effective C++》
- 《STL源码剖析》
操作系统
- 《现代操作系统》
计算机系统
- 《深入理解计算机系统》
计算机网络
- 《计算机网络:自顶向下方法》
- 《TCP/IP 详解》
- 《图解HTTP》
数据库
- 《MySQL必知必会》
- 《高性能MySQL》
缓存
- 《Redis设计与实现》
第三步:工作必会技术
英语
- 至少也要六级水平,如果考虑出国留学,尽早进行语言考试。强烈推荐将自己的个人手机、iPad、电脑设置为全英文系统,观看英文视频,尽量使用英文字幕。个人解决计算机相关的任何问题时,编写的任何文档、资料,在不紧急的情况下,都使用全英文
阅读文档
- 不管是任何一项技术,它最好的资料就是官方文档,以及代码;学技术一定要学会的步骤是,1、看官方文档;2、按照官方文档跑项目;3、看官方文档(以及各种Google出来的博文)的项目介绍;4、按照官方文档的解释,去看源代码。
- 必须要学会使用Google,一开始从百度等搜索引擎切换到Google你会不习惯,等你查阅的资料越多,你会越来越喜欢Google,至少对于优秀的工程师来说,没有人愿意用百度
- https://www.google.com/
StackOverflow
-
一个英文的编程问题提问、回答网站,初学者能用到的机会很少
-
StackOverflow——一个全世界秃头程序猿都在用的网站
命令行
-
介绍
- 学会使用终端、命令行工具、Terminal、Shell工具,不管你怎么叫他,就是那个程序经常用的黑框框,很多时候并不是在写代码(有时候会使用编辑器,在黑框上面写一些代码,因人而异),而是在操作Linux、操作计算机
-
终端工具
-
Mac
-
iTerm2
-
-
Linux
- 默认Terminal
-
Windows
-
不应当使用终端工具操作Windows电脑,而是连接到Linux(虚拟机或服务器)后,用终端操作Linux系统
-
Putty
- PuTTY是一款集成虚拟终端、系统控制台和网络文件传输为一体的自由及开放源代码的程序。它支持多种网络协议,包括SCP,SSH,Telnet,rlogin和原始的套接字连接。它也可以连接到串行端口。其软件名字“PuTTY”没有特殊含义。
- https://www.chiark.greenend.org.uk/~sgtatham/putty/
-
-
-
配置自己的终端
-
可以看看我的视频,《程序员的命令行不是黑白的,而是五彩斑斓的黑》
-
Vim
-
指南
-
教学视频
-
《最强Vim新手指南,手把手教你打造只属于自己的代码编辑器!》
-
《上古神器Vim:从恶言相向到爱不释手 - 终极Vim教程01 - 带你配置属于你自己的最强IDE》
-
Git
-
简介
- Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 [1] 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
-
教程
-
官网学习
-
《Git教程》
-
《Git教程》
-
一个游戏方式学习Git,推荐看完一个教程后食用
-
《猴子都能懂的Git入门》
-
-
视频
-
【狂神说Java】Git最新教程通俗易懂
-
【尚硅谷】Git与GitHub基础全套完整版教程(快速上手,一套搞定)
-
GitHub
-
一个用Git进行版本控制的,代码托管平台。
-
教程
-
《一看就懂!Github基础教程》
-
《【尚硅谷】Git与GitHub基础全套完整版教程(快速上手,一套搞定)》
-
GNU Make(Makefile编写)
-
简介
- 大家第一次写 hello world 程序的时候一定都记得,在编辑完 helloworld.c 之后,需要用 gcc 编译生成可执行文件,然后再执行(如果你不理解前面这段话,请先自行谷歌 gcc 编译 并理解相关内容)。但如果你的项目由成百上千个 C 源文件组成,并且星罗棋布在各个子目录下,你该如何将它们编译链接到一起呢?假如你的项目编译一次需要半个小时(大型项目相当常见),而你只修改了一个分号,是不是还需要再等半个小时呢?
-
教程
-
《跟我一起写Makefile》
-
-
视频
-
[linux从零到精通] gcc和Makefile,多文件编译神器是怎么练成的,解放程序员的双手就这么简单
-
[教程]Makefile的写法
-
makefile 编译Linux C/C++项目快速入门
-
CMake
-
Makefile太难写了,我们需要CMake来简化我们的步骤,写少点东西,让它自动生成Makefile!
-
视频
-
从零开始详细介绍CMake
-
基于VSCode和CMake实现C/C++开发 | Linux篇
-
《超详细的cmake教程》
-
《上海大学CMake视频教程一小时》
-
【技术】手把手教你写CMake一条龙教程——421施公队Clang出品
-
Docker
-
简介
- 云开发相关,大大简化我们的部署流程!
-
教程
-
《Docker-从入门到实践》
-
CI/CD
-
【狂神说】CI/CD到底是什么?十分钟理解企业级DevOps
-
尚硅谷 - Jenkins 持续集成工具教程
情商
第四步:离谱之路
前言
-
项目,就是你看完、学完、自己默默实现完之后,可以写进你简历的项目。强烈建议,不要做重复相似的项目、不要做不适合校招生做的项目、尽量做能体现计算机系水平的项目、你的项目不要只局限于一门语言,并非做C++路线,就一定要做C++项目,你做Go、Java项目一样很不错嘛,前提是项目要好
-
这里给出的项目,只是例子,更多好项目,别人没做过的项目,你要自己创造、或者自己去查找,如果这里列出来,可能就有很多人一样做了,所以先学会模仿项目,再学会创造项目、做更深入的项目
-
重点多说一句:并非就一定要做C++项目,你做Go、Java项目一样很不错嘛,前提是项目要好,之前流行过一阵Go的RPC框架,也很好!
- 下面列出的,只是一部分例子,更多项目,请关注我的视频~
-
重复相似的项目
- 商城系统、博客系统、图书管理系统、各种XX应用层系统
- WebServer、简单的课程设计
项目
这部分是根据网络整理出来,适合C++后端开发写入简历的项目,有的没有文档,因此需要你直接看它的源码实现,只要你理解了它的代码,并且自己手动实现一次,就能保证面试的时候对答如流,那么写进简历是没问题的。
-
实现STL
-
基于C++实现一个迷你STL
-
实现标准库部分容器和算法,对标准库进行扩充
-
-
实现WebServer
-
Linux C++ WebServer
-
(不适合写进项目)非常简单的http服务器
-
-
实现网络框架
-
基于IO多路复用和线程池的C++网络库
-
轻量级网络框架,线程池技术,C++11
-
Linux C++高性能TCP服务框架,基于Reactor模式,支持单线程、多线程Reactor,也支持UDP服务
-
-
协程
-
libco(建议直接阅读源码,不用写进项目)
-
文章
-
漫谈微信libco协程设计及实现(万字长文)
-
腾讯开源的 libco 号称千万级协程支持,那个共享栈模式原理是什么?
-
-
-
数据库
-
利用c/c++ 开发基于B+树的小型关系型数据库
-
C / C++ 丝绸之路(完全可以跳过,有时间再看,面试的时候大概率不会对校招生问到这么细的)
- 《C和指针》
- 《C专家编程》
- 《C陷阱与缺陷》
- 《C++ 沉思录》
系统设计
-
《数据密集型应用系统设计》
-
《大话设计模式》
-
《代码整洁之道》
-
《重构》
-
《深入理解Nginx》
Unix高级(难度比较大)
- 《Unix网络编程》
- 《Unix环境高级编程》
- 《Linux多线程服务端编程 使用muduo C++网络库》
国外优秀网课(有一定难度)
-
《MIT 6.S081: Operating System Engineering》
-
《CS162: Operating System》
-
《CMU 15-418/Stanford CS149: Parallel Computing》
-
《MIT6.824: Distributed System》
第五步:面试准备
计算机基础知识复习
- 将上面你学习过的内容,包含下面关键词的,都重新复习、做笔记一下
- C、C++、数据库原理与设计、操作系统、计算机网络、Linux程序设计、Shell、MySQL、Redis
面试常考内容复习(所谓的八股文,我不是很喜欢这个称呼)
-
注:一定要在学习了上面的第一步之后,再来做这里的计算机基础知识复习,这里的复习主要是针对面试会考的内容,高频内容,针对面试去复习,并不适合作为学习内容!
-
《CS-Notes》
刷“面试算法”题
-
推荐:codetop高频题
- codetop能够按照出题的频度去排序刷的题目,甚至能按照不同的企业、岗位去展示从高到低频度的题目,手动整理,童叟无欺!
- https://zhuanlan.zhihu.com/p/365332969
- https://codetop.cc/home
-
《剑指Offer》
-
《TOP面试题》
数据结构与SQL题
-
《SQL题库》
-
《数据结构题库》
场景题以及智力题(可以通过google去搜索解决问题,锻炼搜索能力~)
-
书籍
- 《数据密集型应用系统设计》
-
场景题资源
-
面试系列 场景题与智力题收集
-
写一个面试中场景题的总结
-
后端场景题
-
面试场景题:如何设计一个排行榜?
-
其他问题
- 假如有 10 亿个数,只有一个重复,内存只能放下 5 亿个数,怎么找到这个重复的数字?
- 如何设计一个秒杀系统(服务端、数据库、分布式)?分布式系统的设计?
- 有一个服务器专门接收大量请求,怎么设计?
- 如果让你自己设计 RPC 框架你会如何设计?
- 怎么快速出现一个 stackoverflow 错误?
-
大厂面试助手(十二):场景和设计
-
-
智力题资源
-
【盘点】面试中常常看见的智力题 烫
-
【智力题】大厂最爱问的智力题
-
互联网大厂最爱问的智力题总结(带详细答案) 烫
-
简历编写
-
使用超级简历,最后生成PDF
-
优秀简历排版
-
简历对比
-
排版不合适的简历
- 简历来自网络
-
排版合适的简历
- 简历来自网络
-
简历投递与内推
-
对于投递方式的说明
-
直接投递
- 即到各个公司的校招官网,上传简历,等待公司的面试官筛选你的简历并发起面试
-
内推
- 内推对于面试者来说,唯一的作用是能够将我们的简历定向到具体的小组里。首先一个公司不同部门、不同小组之间是千差万别的,所以这种方式能让我们去到比较好评的部门;其次不要认为内推就能减少面试轮次,是不行的,所有的面试基本都是3轮技术面(1面同事或mentor,2面leader,3面leader的leader或者交叉面,即其他组的同级别leader)+1轮轻松的HR面。
-
-
牛客网找内推
- 使用方式:翻到下面的帖子,选择感兴趣的方向,留言、发送邮件给发帖人,或按照发帖人提供的方式进行联系。这样内推需要海投,发帖人不一定会处理,可能是简历不过,可能是忘记处理
- https://www.nowcoder.com/discuss/referral/index
-
官网投递(一样很高效)
-
实习僧海投
面试套路
-
关于面经
- 我建议你不要看别人的面经,除了徒增焦虑,感觉自己菜以外,没有任何有效信息摄入,别人考的内容,你不一定考;别人的知识储备,你不一定有,简单的面经没人看,难的面经一堆人卷,复习接雨水,面试二叉树反转。只关注好自己有没有复习好,不要过分关注别人怎么样。
-
关于面试常见QA
-
实习和校招面试流程是怎样的?
-
一般是面试官直接和你联系,然后约定一个面试时间,发给你一个在线会议的链接。到了约定时间后,双方一起进入面试的在线会议链接,然后打开摄像头,面试官提问,你回答问题。而做算法题的时候,一般会给你一个在线编辑器,里面你输入的内容,面试官也能够看到,许多面试官会直接采用牛客网的面试链接,因此你要熟悉没有IDE的情况下,刷算法题,比较推荐的就是leetcode刷题,acm模式,不要有什么联想功能
-
当问题问完,以及算法题做完后,面试官会让你反问,这个时候
-
如果你感觉面试情况不错
- 可以和面试官积极交流一下,展现出你比较积极的一面,比如询问具体需要做什么,面试中还需要补充哪些知识,是否有特别不足的地方,需要提升的地方。建议这时候不要询问上班时间、加班情况、卷不卷这种问题。除非你个人技术实力确实比较强,那么其实可以对这些你的底线问题进行询问,避免之后在后续面试浪费时间,当然最好的建议还是,在面试之前就大概了解,你的底线是否会触及,这样可以节约你的面试官的时间。
-
如果感觉面试情况一般
- 建议就少说话了,好好准备下一次面试,不要陷入面试失利的情绪中,好好准备下一次面试,复盘一下问题,哪些是没有复习到的知识要点?哪些是面试流程上,你可以更主动地避免?哪些是面试官的原因。不需要太过自责,有时候面试官的友好引导,也会影响我们的面试发挥。
-
可以问过没过吗?
- 一般来说,面试官都是不会回答这个问题的,事实上,过没过最清楚的应该是你自己,大概80%的问题答出来了,而且你的竞争者不卷、这个岗位的hc不卷的话,过面试没什么问题。
-
-
-
面试一般要多久?
- 不管是实习生面试还是应届生面试,每一轮技术面试的时长都是固定的,一般来说就是40-80分钟,包括做算法题的时间。由于面试一开始是由你自己做自我介绍,因此事实上一开始面试的主动权是掌握在你手上的,如果你自我介绍几十秒钟就结束了,而你的简历又写得非常简单,那么面试官大概率会让你先做几道算法题,再通过做题的第一印象来对你进行面试,判断你是否通过。
-
一开始就做算法题?
- 然而事实上,很多人面试,算法题是最后一个步骤,甚至对于面试表现比较好的同学来说,最后做算法题的数量也许就一道两道的样子,然后提供一个思路,代码实现就好了,甚至都不要求你运行,面试官也许会一眼就能看出你的思路大概是不是正确的。因此,最好保证你的算法题是最后来做,而不是在一开始的时候就做算法题,如果遇到了面试官在开始的时候直接打断你,要求你先做算法题,只能说你运气不是很好。
-
实习生面试会比应届生的面试要简单吗?
- 一般来说,从面试的实际体验上,面试官明面上会告诉你,实习生和应届生的要求是一模一样的,不会有任何的包容。但实际执行的过程中,有可能会感受到,对实习生回答不上来问题是更包容的,尽管对于应届生来说,回答不上来问题,也是比较包容的,毕竟每个人的精力是有限的,大部分的同学都不是对于每一个问题都能够回答得非常好,总有纰漏的地方,或者并不了解的地方。
-
遇到不会的技术怎么办?
- 和面试官,不卑不亢地说清楚:“不好意思,这个技术我不是很清楚。”当然如果你只是了解,并不知道其源码实现,也是很正常的,也要和面试官说清楚,不要强答,也不要害怕。
-
答不上来问题就会挂吗?
- 不会。面试是人和人的交流,绝对是会有运气的存在的,因此答不上来,最后却过了,是很正常的情况,把每一次面试都当作
-
全部答上来就会拿到offer吗?
- 不一定。过的概率比较大,但是每一次面试,一般都是有另外几个同学在同时和你们竞争,如果人家一样答得很好,但是在简历上、其他地方上有比你突出的地方,比如实习公司和学校在同一所位置,实习时间比你更长,他和hr面试时的稳定性更好,很有可能最后offer就发给他(如果hc只有一个,不能发给多个人)。
-
和HR面试有什么注意的?
- HR面试的问题都比较开放性,一般问的问题是看你是否适合过来,看看你的稳定性,你要站在hr的角度去考虑hr的问题。比如问你有没有对象?你的对象在什么城市?你以后打算在哪里发展?可能就是看你的稳定性,那么对你来说最有利,但不一定是事实的回答就是,你没有女朋友,你对象就在公司所在城市,你打算在公司所在城市发展,未来想要在公司越干越好,绝对没想过跳槽。。。这样那样的回答,是比较符合hr的期望的,所以在回答每一个问题的时候,好好思考一下对方主要是想问什么,根据你自身的情况,去回答对应的问题。规则是死的,人是活的,不要有做题家思想,考虑太多真实与虚假,正确与错误,正义与不正义的问题
-
为什么官网简历一直在筛选?
- 可能是因为你的简历不够突出,一直没有面试官捞起来,并向你发起面试,可以考虑重新改一下简历,再重新上传,一般一周内都会有面试发起的,好的简历一般两三天就会发起新的面试(即便是被挂掉之后的情况)
- 这时候也可以考虑询问内推人、或者相关联系人(你投递简历的时候联系的那个人,前提是你不是使用的校招官网直接投递),你的简历情况
-
为什么面试结束后,一直没有通知下一步进展(没有挂,也没有说发起下一次面试)?
- 1、可能只是面试官还要面试其他人,当你们所有人面试通过后,就会进行排序,最后选出hc个数量的面试者通过,然后参加下一次面试;2、这种情况,也可以直接询问你的内推人,到底是什么情况,如果面试官认为是挂掉了,那就催促一下对方,尽快结束流程,然后等待下一次面试官的捞起简历、发起面试
-
面试挂掉还会有人捞吗?
- 即使是面试挂掉,并不代表是你能力不行,也许只是简单的因为hc数量不够,根据排序你被筛掉而已,这很正常,所以很运气。因此即使是挂掉,只要之前有人向你发起面试(显然的,毕竟你是面试挂了),正常情况下都会有新的面试官向你发起面试的。
-
面评是什么?很重要吗?
- 面评,就是当你结束面试之后,面试官会将本次面试的评价、对面试者的评价写入系统。只要没有出现很糟糕的情况:1、和面试官吵架、双方态度很差,以及各种奇怪的状况;2、你的面试完全没有认真准备,90%的问题都没有回答上来,显然是假的;3、各种方面的不认可面试官等等。。。
- 不能说很重要,也不能说不重要。只要是正常情况下,面评不会影响任何事情,就算是面试挂了,也没有什么问题。
-
-
最好的面试实践
-
0、好好丰富你的简历,让你的简历有话可说,你的实习经历、你的项目经历都有话可说。在刚进入面试会议间的时候,面试官让你先做自我介绍。
-
1、做完自我介绍,不要简单的就是介绍你是谁,你哪里来的,想去哪。而是自我介绍结束,立刻开始聊你自己的简历,你会的技术栈是什么,你的项目经历是什么,你主要做了什么东西,用到了什么技术,为什么要用这个技术?你负责的是哪块,难点是什么?你的实习是在哪里,实习主要工作是什么?
- 你要知道的是,你的简历里的内容,一定是你比面试官掌握得更清楚的,这时候主动权在你的手上,好好把握这部分的节奏,既要有深度又要有广度,不要被面试官带了太多节奏。
-
2、当你经过第1点之后,你会发现,时间已经过了差不多20分钟了,这时候你的简历已经聊完了,你和面试官已经亲切交流过了。这时候,一般面试官会直接问你“八股文”,也就是问你很多,我告诉你复习过的知识,一般都是一问一答的形式,或者是对一个问题,一起深入探究。
- 你要记得,这部分,并不是绝对的一问一答的方式,也不是做题,当遇到困难需要你思考的问题的时候,适当请求面试官的点拨,达到一个在面试的时候,就有的一个共同合作的关系(就像在工作一样),当然你绝对不能直接问面试官怎么做,而是带有思考地给出方案,然后询问面试官的看法。
-
3、当你完成第2点的时候,你会发现又20分钟过去了,差不多就已经快结束了。这时候,双方都比较累了,大概率面试官会让你做算法题,这样他会轻松一点,当然如果你俩现在就已经60多分钟了,可能就不做算法题了,也不是不可能的事情。这时候剩20分钟,做算法题,给一道做一道即可
- 先记住,你做完了一道题,如果做得很好,那就会给你一道新的题,更难的题,题是做不完的,除非你把面试官的题库做完了,一般在一次面试中都有四五道。
- 既然如此,那到底怎么办呢:)巧妙的方法是,刷太快的话,不要急着提交,大概差不多的时候你再提交,比如面试官询问你是否已经完成的时候,你再提交,这时候你可以解释你在思考是否有遗漏的情况、以及有没有更好的解决方式,如果你有时间,顺便分析一下时间空间复杂度,在解释给面试官的时候,这样会更科班、更专业。
-
4、等算法题做完之后,面试基本上就算是完成了,这时候面试官也许会让你反问他一些问题,不过如果面试情况不是很好的话,可以选择不问,当然也可以直接比较礼貌地告诉面试官:“感觉今天面试的发挥不是很好,如果没有通过的话,希望他能够帮忙快一些释放简历,然后自己方便好好复盘,准备被其他面试官捞起来重新面试,好好准备下一次的面试。”
-
第六步:大学就业最佳实践
必读
-
国内的大学教育的目的
-
大学教育,并不是说要把你培养成一位工程师,并不是说你是计算机系的学生,你好好学完了这四年的课程,你就能够找到一份薪水相当不错的工作,这是一个比较大的误区。
-
大学教育,也没有说希望你一定要毕业就工作,或者以后就一定从事计算机方向的工程师,因此它会有很多通识性质的教育,比如说,每个计算机系的学生都要掌握的各种知识,C语言、面向对象、算法、数据结构,这些知识不管以后你是做开发工程师,还是做算法工程师,还是去继续深造、在科研方向有一定的造诣、走学术路线,不管你是走什么方向,都是对你有很大的益处的。
-
而读完大学四年,你更应该做的事情,是不断地试错,在四年里,一般情况下你完全没有任何的工作压力、经济压力,你可以在这四年尝试各种各样的方向,比如你可以考虑保研考研的方式去读研,你可以考虑刷GPA和语言考试去国外留学,甚至在国外工作,你也可以尝试去实验室、去参加各种竞赛,你也可以去参加大厂实习,你可以学习前端、后端、客户端、大数据、测试、嵌入式、芯片设计、自动驾驶算法、量化开发等等等等各种计算机专业相关的岗位的开发知识,甚至你可以自己学习产品经理、运营、数据分析岗位的各种方向。
- 当你发现这些方向你都尝试过之后,这时候你完全可以选择你自己真正喜欢,你自己真正感兴趣,你自己适合自己的方向,绝对不要,绝对不要,绝对不要人家喜欢什么,人家学什么,人家干什么,你就跟着人家干什么,一定要找到自己的兴趣所在。这也是为什么学生最好应该好好把基础知识学习牢固之后,再考虑卷上层框架的事情,计算机基础课发展了几十年了,有各种各样的教授为之付出汗水,而框架也就是几年十几年的历史,更多的还是为了就业、工作、实现功能而存在,是完全不适合学生在一开始就去非常认真地深入的。你可以一开始尝试玩一玩,但最好不要一开始就很认真地按照工作背八股文那样去卷,那样的学习路线个人是不推荐的。
-
另外一个角度来说,大学教育,也有一定的筛选目的,通过考试成绩,来筛选出一批应试能力较强的同学(这也是比较好的纯粹为了筛选的手段),然而对于那些不擅长应试的同学,就完全不管不顾,你考试分低,学校一般是不会要求你从60分一定要考到90分的,学校没有这个必要去督促你。
- 然而这时候被筛选走的那一批学生,只能通过自己的方式,要么通过考研应试再挤进去,要么只能自己自学,按照工业界的要求,自己学习工作需要的知识,也就是面试要考的内容,然后期望通过面试,最终拿到一个很不错的offer。
-
所以,我建议如果没有保研、考研、刷GPA的计划,你的计划是未来两三年,你考虑就业,去大厂工作,拿到年薪几十万的offer,那么我建议你最好不要跟着学校的课程进度去走。
- 1、学校让你大一只学C语言、数据结构、C++什么的,你就不要大一只学这些,千万千万自己自学,按照这个学习路线,就是提前自学后面的课程。最好的方式就是,在大一、大二两年内,修完所有的计算机专业的必修课!必修课!一定是自学,绝对不要想着自学学得不好,自学效率低,说实话很多拿大厂offer的,就是靠自学,学校的课靠不住的。
- 2、为什么要大一大二修完所有必修课?因为这是为了给你找实习、找工作去给自己增加项目经历、面向工作岗位去提升能力留下充足的时间。
- 3、一般来说,大三下的那个春天,就是你找暑期实习的时间,大三到大四的那个暑假,就是你正式进行暑期实习的时间。而大四刚上学,你面对的就是真正的秋招校招,然后10-12月份参加秋招补招,大四下的春天,参加春招,一般是3-5月份。最后6月毕业。
- 4、因此,最好的时机,就是在大二到大三的那个暑假就开始,为了就业而准备,并且一定要面向面试、未来工作岗位去准备。在已经有了前面两年,在计算机专业基础上扎实的功夫以后,这时候面向面试、面向工作岗位的补充知识,完全是信手拈来,只是纯粹的多花时间就能够掌握、能够增加自己履历的功夫。相对于解数学题、竞赛、考试,已经是非常友好了,从暑假开始,一直到次年4月开始找暑期实习前,你有充足、但紧凑的时间按照这个学习路线去准备,如果你真的按照这个路线准备得非常扎实,拿到暑期实习是比较自然的一件事。
- 5、而当你参加暑期实习后,你的整个简历,就已经丰富了最后一步,也就是实习经历。当你后续参加秋招、春招的时候,实习会给你带来非常非常非常厚重的优势,而那个时候你的目标就应该是去争取ssp offer,而不是局限在拿一个大厂offer上面。
-
大一
-
上学期
-
完成基础课的学习(在第一步:基础中)
- 计算机科学导论
- C语言
- 简单面向对象语言(以C++为例)
- C++系统性学习
- 数据结构
-
-
下学期
-
完成基础课的学习(在第一步:基础中)
-
计算理论和算法分析
-
数据库原理与设计
-
操作系统
-
使用Linux操作系统
- 特别要区分开和学习操作系统的区别,这里仅仅是让你熟悉与使用Linux操作系统,并不是要你系统性学习Linux操作系统
-
Linux程序设计
-
-
大二
-
上学期
-
完成基础课的学习(在第一步:基础中)
- 计算机组成原理
- 计算机体系结构
- 计算机网络
-
-
下学期+暑假
-
完成基础课的学习(在第一步:基础中)
- 汇编语言
- 编译原理与设计
-
必备个人实力增强(在第二步:个人实力中)
-
C/C++
- Effective C++
- STL源码剖析
-
计算机网络
- 图解HTTP
-
数据库
- MySQL必知必会
- 高性能MySQL
-
缓存
- Redis设计与实现
-
-
大三
-
上学期
-
完成第三步:必备工作技术
- 因为这里全是一些应用性质的技术,对于基础扎实的同学,都是非常简单的,都是一些软实力的体现。
-
开始包装简历
-
注意,暂时不要面向面试去复习,由于你的基础知识掌握得很牢固,面向面试的复习会非常轻松,因此这时候,最重要的是包装你的简历,你没有实习,最重要的就是用你的学生经历、项目经历去包装自己的简历!
-
项目经历(根据兴趣选择,不贪多,完全掌握更重要)详细见第四步:离谱之路:项目
- 实现STL
- 实现WebServer
- 实现网络框架
- 协程
- 数据库
-
离谱之路:有余力的再看,到这一步就已经是追求ssp了,不看这里也完全能够拿到大厂sp offer了,是一个长期的过程,要从现在,一直到毕业之前,都要不断学习这里部分的内容
-
系统设计
- 《数据密集型应用系统设计》
- 《大话设计模式》
- 《深入理解Nginx》
-
Unix高级
- 《Linux多线程服务端编程库:使用muduo C++网络库》
- 《Unix网络编程》
- 《Unix环境高级编程》
-
国外优秀网课(选择合适的)
- 《MIT 6.S081》
- 《CMU 15-418》
- 《MIT 6.824》
-
-
按照前面提到的简历编写方法去编写自己的简历
-
-
-
-
下学期
- 1、巩固上学期里面的学习内容,不断巩固
- 2、按照第五步:面试准备去好好准备
- 3、去投递简历,参加暑期实习面试
大三-大四的暑假
- 参加暑期实习
- 建议能够拿到转正offer是最好的
大四
-
可能在上半学期,你仍然在延续暑期实习,继续在实习
-
不要放弃、躺平,不管有没有拿到暑期实习的转正offer
-
1、参加秋招,面试拿其他家的offer
- 国内私企
- 国内外企
-
2、等待秋招结束的薪资谈判
- 用各个offer,进行argue,选择你最感兴趣的offer最终拿下
-
3、如果没有好的offer,或者想要更大的总包,那么就继续参加秋招补招、春招
-
4、如果考虑各种体制内的机会,如研究生的选调生选择,都是可以的,可以好好考虑一下,不一定说,就一定要去大厂
-
毕业
- 祝你毕业快乐,从学生的身份转换到打工人是不容易的,希望你能放平心态,不要给自己太多压力,人生是有很多比工作、学习、技术更重要的事情,比如你的家人、你的对象、你的朋友,可以多花点时间在最亲近的人上面,人只活一世,年轻的生活也只活一次,不要为了加班,放弃了很多美好的风景。
附录:相关资源
C/C++编译器
-
Clang :由苹果公司开发的
-
GCC:GNU编译器集合
-
LLVM :模块化和可重用编译器和工具链技术的集合
-
Microsoft Visual C++ :MSVC,由微软公司开发
在线编译器(练习C++)
-
coliru :在线编译器/shell, 支持各种C++编译器
-
Compiler Explorer:交互式编译器,可以进行汇编输出
-
codepad :在线编译器/解释器,一个简单的协作工具
集成开发环境(IDE)
-
CLion:来自JetBrains的跨平台的C/C++的集成开发环境
-
Dev-C++:可移植的C/C++/C++11集成开发环境
-
Code::Blocks :免费C,C++和Fortran的集成开发环境
C/C++代码检查(提高代码质量)
-
Cppcheck :静态C/C++代码分析工具
-
OCLint :用于C,C++和Objective-C的静态源代码分析工具,用于提高质量,减少瑕疵。
C++标准
-
C++ Standard Library - 一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分
-
Standard Template Library - 标准模板库
-
C POSIX library - POSIX系统的C标准库规范
-
ISO C++ Standards Committee - C++标准委员会
-
C++ FAQ − C++ 常见问题
-
Free Country − Free Country 提供了免费的 C++ 源代码和 C++ 库,这些源代码和库涵盖了压缩、存档、游戏编程、标准模板库和 GUI 编程等 C++ 编程领域。