大家好,我是阿秀。
最近很多小伙伴私信我说希望我好好描述一下去年自己自学编程的事,包括找工作的一些细节,心路历程等。
可能在你们的学校里每年进互联网一线大厂的数量比较客观,但就我所在的普通二本学校而言,还是不多的。
就我所在的实验室,历届找互联网工作里出路最好的应该就是 16 级的一位师兄了,他毕业去了苏宁。其余的师兄师姐不是去国企了,就是回家当老师或者是去移动联通等营业厅了。
有几个已经毕业了的师兄师姐在得知我的情况后说我是"逆天改命"的典型,因为能去字节跳动这种一线互联网大厂就很难能可贵,还是个 SP,这更不得了。
但我觉得真的有点夸张了,我只是比别人多花了点时间而已。他们口中的"逆天改命",真的只是多花了点时间而已。
我也没觉得自己比别人强在哪里,就是多花了点时间,不是凡尔赛,是真的这么觉得的。
知乎上有一个很有名的问题:你的编程能力从什么时候开始突飞猛进?
就我自己而言,我想应该是在我绞尽脑汁克服一些困难的时候慢慢提升的,没有某一个瞬间、某一天、某一周或者某一个月忽然提升了自己的编程能力的说法。
比如:
B 站的教学类视频收藏多了、也看多了的时候;
周日别人跑出去玩,我却在实验室里看各种技术书的时候;
力扣上的刷题数量从 0 开始逐渐变为 400+,通过从 40% 逐渐提升到 70% 的时候;
《剑指offer》中的每道题过了一遍又一遍,以至于都可以出一个刷题笔记专栏的时候;
大冬天的早上别人还在被窝里睡大觉,我早早来到实验室复盘昨晚没做出来的算法题的时候;
导师有时候疯狂 push 项目、催进度,只管提需求不管如何实现,搞得我快崩溃得受不了的时候;
纳闷钱包越来越薄、支付宝余额越变越少、实验室书桌上的技术书越来越多以至于放不下,一看当当网消费金额被吓一跳的时候;
在食堂吃饭排队打菜,忽然想起来刚才那道题/那个 bug 怎么解决,大叫一声“卧槽,我知道了”被女朋友嫌弃,被别人当作傻子的时候;
我也不知道该怎么描述自己去年的自学经历,我还是按照以前的时间叙事吧。
友情提醒,如果你看过以下两篇文章,那这篇文章你大可不看,免得浪费你接下来的 8 分钟。
双非渣硕的秋招之路总结(已拿抖音研发岗SP)
个人C++学习路线大公开
我就按照 2019.8 - 2020.8 月这十二个月来分享一下自己的自学和找工作过程吧,想到什么就说什么。
“以下涉及的学习视频、书籍以及自己的笔记等,均于文末给出相应地址链接或者 github 分享地址
说来惭愧,在 8 月之前,我对 C++ 的影响还停留在 “Hello World” 上,本科时期老师教过的 C++ 基本全忘光了。
C++ 三大特性的“ 封装、继承、多态”我真的只记得一个多态,还是死记硬背的那种。当时选择 C++ 而不是 Java作为自己的学习语言除了因为实验室项目的需要,还因为 C++ 比 Java 要难学一点。
是的,就是因为 C++ 比 Java 难学一点,大家都贪图入门快、简单、易上手,我偏不这么干,简单易上手也代表着跟你竞争的人更多。思虑再三,我还是选择了 C++ 作为我的主攻语言, C/C++ 能让我见识到整个计算机体系结构是如何被搭建起来的、程序是如何跑起来的、程序是如何被编译链接在一起的、函数的底层构造是怎样的。
说干就干,我经过再三比对和考究,选择了某马的 C++ 入门教程。于 2019 年 8 月 17 日,我开始了 自己的 C++ 自学之路,我是一个喜欢动手操作的人,一边看着授课老师在上面讲,一边在底下自己开始学,跟着视频敲代码,他怎么写,我就怎么写。
黑马C++学习记录我看的很快,我记的开的是 1.5 倍速看的,十天左右的时间我就看完啦,当时还去留了个言,现在想想也确实感谢那个时候的自己。
还好当时正值暑假时候,老师的项目暂时停滞,也没什么事情需要我去做。所以自己也能够有一个多月的时间去入门和学习,这是一段很完整的学习时间了。
2019.08.27在视频下方留言对于每一个 C++ 技术栈的同学来说,《C++ Primer》几乎可以说是一本圣经,我当时在看完上面的视频后就直接去看这本大黑书啦。
月末的时候,我去 LeetCode 写下了自己的第一道题,也就是“两数之和”的题解,从此自己就走上了一边看书 看视频,一边刷题复盘的不归路。
第一次在力扣上提交转眼就到了九月,这个时候也开学了,研究生老师也开始慢慢安排事情了。
由于白天需要帮老师做横向项目和看论文,所以我一般都在周一到周五的白天去干活写代码做项目,傍晚去跑步溜达溜达的,而在每天晚上八点之后看 C++ 书籍和刷力扣题,周六周日两天则是自己的全部学习和复盘时间。
在九月自己在看完《C++ Primer》的前八章后就开始疯狂得在力扣刷题了。因为刚上手的缘故,自己刷题速度也比较慢,对于一些不会的题往往需要两三个小时之久。
自己能顺利解出来还好,解不出来就跑去评论区看别人的解答。在刷题过程中真的是感觉到人和人之间是有差距的,实在不明白有些人的脑子在呢么那么好使。我现在还记得力扣第一题的评论区有一句名言“有人相爱,有人夜里开车看海,有人 Leetcode 第一题都做不出来。”
有时候对象邀我一起回宿舍,我也会说你先回吧。就觉得这道题没做出来回去了也睡不着,一定要把它做出来为止,为此搞到半夜一两点也是常有的事。
整个九月我都沉浸在 C++ 的世界里,也没去学别的科目。
进入十月了,在七天假期里除了第一天跟对象出去吃了顿饭,剩下的时间都用来看书学习了。嗯,是的,七天假期我也没出去玩,也没打游戏,都用来看书学习啦。
在经过九月一整月的学习我对于 C++ 有大致的了解后,就没那么把心思和时间都花在 C++ 上了。
我开始着手学习操作系统和计算机网络了,比如哈工大的操作系统、清华大学的操作系统、南京大学袁春风老师的计算机基础课程都是在这期间刷完的。还有韩立刚老师的计算机网络视频,韩老师讲课确实有意思,整个课程欢声笑语不断。
除此之外我也看了一些比较经典的书籍,像《图解HTTP》、《图解TCP/IP》、《网络是怎样连接的》都是在这个月看完的。前期有了视频的铺垫,看起来很快的。
老师依旧还是那样,我们每周五还有组会要开,要汇报自己一周的进度,包括项目上的,学习上的。说实话挺烦的,有时候自己一周明明啥也没干,也没啥进展还要在组会上吹牛逼,读研读了三年别的没咋学会,写 PPT 、美化包装自己工作的本事倒是精进不少....
时间在指缝中不断流逝,自从开始有计划地学习后,感觉时间过的更快了,有时候一周在不知不觉中就过完了。与之相对的就是视频越看越快、PDF 越滑越快、桌子上的书也越堆越多,吃饭速度也越来越快,每晚回宿舍的时间也基本都在十二点之后了。那段时间,我是我们宿舍回去最晚的一个,还好自己的室友们都给我留着门哈哈。
走在回宿舍的路上,我都会想哪一个知识点还没搞懂,明天要再重点看一遍;还有视频中讲到的某一个题,为什么自己没有解题思路;还有哪些书自己还没有看到,规划一下自己的未来一段时间的进度.....
十一月的时候我慢慢的开始去看操作系统的书籍资料了,像《现代操作系统》、《深入理解计算机系统》都是这段时间看的。我本科时间干的为数不多的正确的事就是硬着头皮把 《深入理解计算机系统》啃完了,真的是为数不多的有价值的事了,二刷的时候就很舒服~
转眼就进入十二月了,《C++ Primer》也快啃完了。看书过程中,除了记录自己的所思所想,在看这本书的过程中有些课后题我也没放过,很多人说没必要做课后习题,对此我持否定意见。这样一本经典的书籍,它的课后题都是经过精挑细选的,你看完一章学没学会检验一下就知道了,不是你觉得你自己学会了你就学会了的,每章课后习题数量不等,前三道我基本都是必做的。
我喜欢边看书边做笔记到圣诞节前后,《现代操作系统》和《深入理解计算机系统》也看了一大半了。力扣刷题也一直没落下,在刷题过程中,自己也知道了 C++ 中还有 STL 这种神奇的东西,也知道了另外四本经典的 C++ 书籍《Effective C++》、《More Effective C++》、《STL源码剖析》、《深度探索 C++ 对象模型》。
五本经典C++书籍我一口气全部买回来了,兴冲冲的直接去看源码剖析,差点把当场我劝退。。。。我又去搜索大家在看这本书的时候是怎么看的,有没有什么值得借鉴的方法。由此知道了侯捷大师,也知道了侯捷老师的几门经典课程。
“侯捷老师几门经典课程:C++面向对象高级开发(上下两部曲)、STL标准库和泛型编程、 C++设计模式、 C++新标准C++11&14、 C++内存管理机制、 C++程序的生前死后
就跟我开始学习C++时会选择从黑马C++教学视频入手一样,在学习STL的时候,我也选择了从侯捷老师的 STL 讲解视频入手,依旧是 1.5 或者 2.0 倍速看的。
十二月的时候我除了看操作系统的书籍之外也另外看了“STL标准库”和“C++内管管理”这两个视频。感觉时间真的不够用啊,想看的书和视频也越来越多,可是自己一天只有 24 个小时,还要帮老板做项目和看论文。
元旦那天,我和对象去吃了四川串串晚上去看了电影,然后继续看书、刷题。
在放寒假前我特意把两本 《Effective C++》 带回家了,现在想想还好自己带回去了,没白白浪费那个寒假。因为疫情的存在,2020 年的寒假注定是不同寻常的一个寒假,很多学生跟我一样都到了四五月份才开学。
一月份回家的时候,把侯捷老师的 STL 源码剖析视频下载下来了,存在 Ipad 里,因为以前就看过一遍,在火车卧铺上迅速过了一遍,也没花多长花间。
回家的时候家里有人生病了,一直在医院接受治疗,外出打工的爹妈也还没回来我就去陪护了。就类似下图这种病房,但我们那是十八线小县城,没有这么干净整洁。
图片来源于网络一个病房四个床位,每天来探病的人络绎不绝,在那种嘈杂的环境下不可能看得下去书,我又掏出自己的 Ipad 接着看视频,比如尚硅谷的 MySQL 视频、Linux视频都是那个时候看的。
一月下旬的时候,家里人出院了,我也能顺利回家不再继续陪护了。也终于能有一个相对安静一点的环境看书学习了,我捡起闲置了大半个月之久的 《Effective C++ 》和《More Effective C++》开始囫囵吞枣起来。也许是《C++ Primer》 打的基础比较好,看着两本书的时候并没有花很多时间,很快就看完了。
在家的时候,每天早上八点起床,吃过早饭修整一下就开始看书了,一直到中午十一点左右,中间也没什么人来打扰我;下午吃过饭就午休一会,醒了就径直去医院拿中药回来,然后就开始下午的学习了,下午我一般不怎么喜欢看书,我比较喜欢写代码,我会选择做一些课后题或者复盘一下以前做错的力扣题。到了晚上则是看教学视频,十点多了就玩玩B站,看一些比较有意思的吃播,比如华农与竹鼠的爱恨情仇、硬核厨师阿远、还有大姨绵羊的视频。睡前会跟自己的对象视频一会,然后就不知不觉的睡着了。。。
多说一句, B 站真的很多优秀视频,总是有人问我该看什么资料看什么视频,其实你自己去 B 站输入一些关键字,直接找播放量比较高的视频来看就可以的,播放量比较高的视频,质量一般都过得去。
后来到了二月,这时候国内疫情已经进入了比较严重的时期了。武汉全城封锁也已经好多天了,每天起来第一件事就是看看疫情发展情况。
在学习的时候不断的有新名词冒出来,就好像在学习 C++ 的过程中,网络编程这个词也慢慢出现,我也是知道了 C++ 后台开发跟网络编程有关。
第一反应就是直接去知乎看有没有推荐的资料,在看过差不多二十多个高亮回答后,我发现有三本书出现频率最高:《TCP/IP 网络编程》、《Linux 高性能服务端编程》、《Linux 多线程服务端编程:使用 muduo C++ 网络库》。
我最先看的是游双老师的那本《Linux 高性能服务端编程》。讲真,确实有点云里雾里的,因为以前也没怎么接触过这个。后来转头去看了《TCP/IP 网络编程》,你别说,真的越看越有意思,就有时候可能不是自己脑子有问题,是因为没在恰当的时候看合适的书。
在看这本书的过程中,我知道了一个简易版的 Web 服务器是由服务器和客户端两方组成的,也知道了回声服务器是什么意思。这是本很不错的书,我一边看一边记笔记。
TCPIP网络编程的笔记这本书上例子很多,我很快就看完了,然后就开始看《Linux 高性能服务端编程》和《Linux 多线程服务端编程:使用 muduo C++ 网络库》了。前者我好好看完了,收获很多,但后者我没怎么看完,随便翻了翻就没看了,我也不是很推荐这本书。
后来疫情逐渐严重起来,接到学校通知说要延迟开学,我有点不爽,可也有点高兴。不爽是因为在家呆久了,老妈整天唠叨我,干啥都有错,高兴是因为自己有更多的时间来学习看书了,一回学校就要开始做老师的项目课题了,就没有这么多空闲的时间了。
进入三月后,因为一直没能回学校也复习不了C++,我的笔记都在书上,看不了就很难受,只好转头去看操作系统和计算机网络的知识。同时力扣上的题也开始二刷了,当时我重点刷HOT 100 的那 100 道题,来来回回的刷,一道题最多的时候来回刷了七八遍。我并不是什么算法大佬,自己脑子也很榆,一遍记不住我就刷两遍,两遍做不出来我就去做三遍,总有能做出来的一天。
老是有人说什么算法太难,你先看看自己下够功夫了没?对于每道题,你是真的会做了没?是不是你自己做出来的?对于你不会做的题目,你有没有及时复盘和总结?
如果你的回答全部都是 Yes,那你不可能做不好算法题;如果有 No,你可以看看自己缺的是哪一步。
在复习完操作系统和计算机网络后,我除了开始继续刷力扣HOT 100,也在慢慢刷《剑指offer》,这本书上的题目都比较经典,经常出现在一些笔试面试中,可谓是经久不衰。
再者,虽然我已经有一个实验室的项目可以写在简历上,但一个项目还是不太够看,思考再三,我决定走前人走过的路,我也选择做一个 WebServer 服务器。
emm,真香!
真香定理~我是根据 TinyHTTP 和 游双老师的《Linux 高性能服务端编程》的课后大作业为基础,这两者结合后做的自己的 HTTP 服务器,后来我把它作为我简历上的第二个项目了。简历上的第一个项目是实验室的项目,跟了快两年了,终于能发挥点用处了。
可项目还没做完,学校已经给消息了让尽快回去,本来想在家把这个项目做完的,没办法匆匆买票,赶紧滚回去了。
可能谁也想不到,一个寒假居然能放 150+ 天的。回去学校第二天,我就立马把《C++ Primer》捡起来看,因为第一遍看的时候比较用心看,所以第二遍过的时候即非常轻松加愉悦了,很快就看完了。
然后又把以前的《STL 源码剖析》这本书捡起来看,因为寒假时候已经看过了相应的视频,看的很快,不到十天就看完了。随后又看了《深入探索 C++ 对象模型》,重点看了一下第三章,至此 C++方面的几本经典书籍都看完了,这几本书对于校招足够了,基本不会考察这几本书之外的知识点。
在此期间也是把自己的服务器项目完成并且开源到 Github 上了。
因为我是在一个普通二本学校读的研,历届的师兄师姐没有去大厂的先例,师兄师姐们貌似对于秋招找工作也不上心。
按理来说金九银十,他们一般在九月份就应该开始找工作的,但以前的师兄师姐都是在十一月份才开始写简历找工作,去的也都是一些愿意来我们学校进行校园招聘的企业,所以找到的工作质量可想而知。
我也私底下问过他们,得到的解释和答案就是学校比较差,然后 balabalabala 之类的。emm,我信了,因为师兄师姐比我多上一年学,见识也多一些,但还是想努力一把,想着万一能有一点机会呢。
万幸,自己努力了一把。还好,自己坚持了一下。
在六月份校招提前批的时候,我就兴冲冲的投了简历,结果全部石沉大海,后来才知道提前批是选拔优秀人才的,提前批能上岸的也都是一些好学校的学生,比如各种本硕985、211本985硕的。
投完简历没有后文,我也在找自己的原因,除了学校不行是一个因素之外,在思考有没有其他可以改进的地方。后来看了一些比较优秀人才的简历,我觉得问题有可能出在自己的简历上,因为自己的第一版简历写的着实垃圾。
所以后面又迭代完善了自己的简历,足足写了 26 个版本的简历,也正是自己精心打磨的简历使得自己在接下来的秋招正式批中能够收获到不少胜利果实。光是修改这 26 个版本的简历,就足足花了我十来天的时间。
去年的秋招正式批是在 7 .15 号开始的,在经过提前批投递简历的全盘皆输后,我开始有些畏手畏脚不敢投递简历,因为每个校招学生可以投递一个公司的机会是有限的,比如京东,每个学生都只有一次投递的机会,每次可以投递两个岗位。所以投递简历的机会,不能随便浪费。
在别的小伙伴开始大势投递简历的时候,我总觉得自己还没复习好,一直在不断复盘以前学过的知识点。我自己的经历告诉我,永远不可能有复习完的那一天的。
因为你每次面试都有可能遇到你不会的题目,所以最好的方法就是在实战中成长,多去投递简历。当然投递顺利是有技巧的,前期去投递一些小公司,积攒积攒经验,后期再投递一些互联网大厂!
所以小伙伴们不要抱着把全部的知识点复习完事后,再去开始投递简历,等你复习完了,黄花菜凉完了,校招早就结束了。
整个七月我都是在复盘知识点 + 刷题中度过的,7.15 号正式批一开始我就立马开始投递简历了。
如果是往届的师兄师姐们,他们投递第一份简历很可能要到十月份去了。还好自己没听他们的话....
不知道你们是否体验过笔试全部会做的感觉?就是我所投递的互联网公司发来的笔试,我居然都会做...这不是装逼或者凡尔赛,就是我当时的真实情况,来一道过一道,来两道过一双。
在牛客网看到他们发帖讨论今天 XX 的笔试题好难,求交流求解答之类的时候,我下意识地以为他们是不是在夸大难度,因为我觉得貌似没他们说的那么难;
傍晚在操场跑步,听到旁边的人在讨论今天的 XX 公司的笔试题怎么这么难,我停下来随口说道:今天这笔试第一题是力扣No.200,岛屿数量那题,很经典的;第二题是回文子串,在力扣上也有,你们也可以去查查,具体题号我记不清了,都是原题的。
然后我就在他们惊愕的眼神中扬长而去,接着跑我的步去了。。。。
在我过五关斩六将一般通过一场场笔试后,随之而来的就是一场场面试邀约,为了避免漏掉笔试或者面试,还专门用备忘录记录了一下。
最多的时候一天我面过五场面试,上午两场,下午两场,晚上一场。那天面试完后,感觉身体好像瞬间被抽空一般。
然后就是笔试、面试、复盘的交替进行、循环往复。那是真难熬啊,也真难受啊,在面试过程中遇到很多自己不怎么会的知识点,有时候也会被问到崩溃或者被面试 PUA ,可来不及伤心和怀疑自己,因为可能一会就要进行下一场面试了。
心态真的会崩,当我心态崩了的时候,我一般都是去操场上跑两圈,然后回宿舍洗个澡,再来到实验室看个电影或者看看吃播,然后第二天接着干!
还好,最后终于有所收获。
字节offer录用如果你能看到这里,确实很了不起。我罗里吧嗦说了一大堆,每个人的成功都是不可复制的,我也不敢说自己的经历或者学习过程一定就是正确的,但我确实是这样走过来的。
我写下这篇文章的时候是2021年的五一期间了,距离那段时光已经快过去一年了,确实挺快的,还有一个多月自己就要毕业了,时间真的很快。
有时候我就在想,“玩也一天,学也一天,为什么不试着学一下呢?万一你就成功了呢”
我是小镇做题家长大的,我记的上大学第一天代班问我们有什么才艺。
我惊奇的发现,我好像没什么才艺。但我想,我的孩子不会再像我这样了,我保证。
希望我的下一代除了会做题,儿子会跆拳道、轮滑、散打,女儿会弹古筝、弹钢琴、吹葫芦丝、唱歌、跳舞等。
1、有很多人都问我,学了多长时间?有没有1000/2000个小时....
讲真的,我也不知道有多少小时。在校的时候,周一到周五白天都要忙老师的事情,基本没时间自学,都是晚上八点之后学的。周六周日两天好好利用,各种节假日好好利用。
2、你咋不出去玩?学习不累吗?
可能是习惯了吧。以前跟师兄坐同桌的时候(他现在在华师大读博,今年该博二了),师兄很用功,每天早上八点十分就来了,每晚十二点多才走,每周工作七天,很少见他休息。我真的很佩服他,所以我慢慢也养成了这种习惯。
读研三年,差不多在校期间都是 8:30-23:30 的作息,每周 6.5 吧。这是什么概念我也不知道,只是华为二面面试官听到我在校期间的作息后,露出了欣慰的笑容。。。。
说学习累的,体验过夏天拔花生拔到腿抽筋,后背被晒得红通通的就不会觉得累了;
体验过春天弯腰插秧,秋天弯腰割稻子到晚上直不起腰来就不会觉得累了;
体验过抗 120 斤重的电缆上 20 楼就不会觉得学习累了;
体验过装灯管一天都得抬着头,到了晚上睡觉都不能躺着睡,也不会觉得累了;
体验过因为电线走线走错了,需要砸墙重来,抡大锤轮一天到晚上吃饭的时候筷子都拿不起来的时候,可能也不会觉得累了;
太多了,真的太多了,所以我觉得学习不累。
真的,学习真的已经很轻松了,已经比很多事情都要轻松了。
前段时间爆红的博士致谢感言就是最好的例子,生活的苦难始终没有击倒他。
一字一句,情真意切,细细读来,感人至深,实属吾辈楷模,现在这张图片已经成为我的手机壁纸了。
黑马C++视频链接:https://www.bilibili.com/video/BV1Tb411j7uM?from=search&seid=7291664070377547865
个人所记录的黑马C++笔记、《TCPIP网络编程》笔记、文中所涉及到所有书籍的 PDF 电子书地址:https://github.com/forthespada/CS-Books
自己做的 WebServer 服务器开源链接:https://github.com/forthespada/MyPoorWebServer
推荐????:《逆袭进大厂系列》(包含C++、操作系统、计算机网络、MySQL、Redis、情景题)
推荐????:总有人在你不知道的时候,默默前行(朋友牛逼系列)
推荐????:Web服务器烂大街?来试试这个项目吧|我可能是推荐这个项目的第一人
---END---
你好,我是阿秀,毕业于双非学校,校招时拿下字节跳动SP、华为、百度等6个offer,现于抖音部门担任全栈开发工程师。
一路走来,很累也很不容易,希望能帮助到更多像我一样的普通学校的学生,我踩的坑不希望你再踩,我走过的路希望你照着走下来。
欢迎来找我唠嗑