自学简单编程可行吗？
必须完全可行！ 因为我就是在八个月的时间内自学C++，并且通过互联网求职找工作，顺利进入字节跳动写代码的。 因为我的本科四年都浪费了，每天浑浑噩噩，并没有都在大学四年好好学习。 直到去年，也就是我研二的时候，我才忽然醒悟过来要好好学习，因为我不想毕业就失业，也不想再回到祖祖辈辈那种面朝黄土背朝天的生活或者像父母一样去做体力活。 至少能够坐在办公椅上，吹着空调写代码要比顶着太阳割稻子好太多了，因为我小时候真的面朝黄土背朝天似的割过稻子。 以前我回答过一个问题：“你的编程能力是什么时候突飞猛进的？”刚去看了下已经获得超过1600+知乎小伙伴的赞同和2500+的收藏了！ 你的编程能力从什么时候开始突飞猛进？ 我觉得我的编程能力就是在这八个月的自学时间里突飞猛进的。 需要说明的是，在这八个月的自学时间里，对于自学编程我只能在周一到周五的八点之后再去学，还有就是充分利用周六周日两天时间刷题看书写代码。 周一到周五的白天，我还要做实验、看论文以及做老师的横向，感觉那段时间自己的时间利用率高到爆表！ 那些说学习累的的人，如果 体验过夏天拔花生拔到腿抽筋，后背被晒得红通通的就不会觉得累了； 体验过春天弯腰插秧，秋天弯腰割稻子到晚上直不起腰来就不会觉得累了； 体验过抗 120 斤重的电缆上 20 楼就不会觉得学习累了； 体验过装灯管一天都得抬着头，到了晚上睡觉都不能躺着睡，也不会觉得累了； 体验过因为电线走线走错了，需要砸墙重来，抡大锤轮一天到晚上吃饭的时候筷子都拿不起来的时候，可能也不会觉得累了； 真的，学习真的已经很轻松了。 以下回答源自于个人在你的编程能力什么时候开始突飞猛进中的回答  你如果问我有什么学习计划的话，说实话我是没有的，我干脆就按照自己前年的学习时间线来回忆一下吧。 有几个已经毕业了的师兄师姐在得知我的情况后说我是"逆天改命"的典型，因为能去字节跳动这种一线互联网大厂就很难能可贵，还是个 SP，这更不得了。 但我觉得真的有点夸张了，我只是比别人多花了点时间而已。 很多人说我是逆袭？其实不是，我只是多一点坚持而已。 以下回答摘抄自我在知乎专栏上的一篇文章 说来可笑，我自己都不相信，因为在 2019 年 8 年之前我对C++的认识只停留在 “Hello world” 水平上，还有三大特性：封装、继承、多态，我当时就只记得多态，其余两个都不记得了。 因为校招主要语言就是C++和Java，主要是想要掌握一门企业级开发语言的初衷，研二刚开始的时候，这个时候我开始了C++ 的学习之路。 有人问我为什么选择 C++ 而不是 Java ，除了因为自己喜好是一个方面，最主要的原因是Java比C++卷的多，学习Java的人实在是太多了，相比之下还是C++好上岸一点。 我自己的学习习惯就是先从视频入手，然后再去看书，所以我当时下定决心学C++后，我的第一反应就是去B站上看看有没有相关视频，看了看评论和播放量后，我最终确定了 黑马机构出版的教学视频。 搞笑的是，我记得当时自己看完后还留了个言，现在好多人在在我走过的路，看那个视频的时候给我留言。 我记得我当时开着 1.5 倍速看的，挺快的，很快就看完了，还跟着视频里敲了不少代码，我喜欢或者说是习惯了一边看视频一边跟着敲，因为这样学得更牢一些。 黑马的视频很快就看完了，又开始看经典的 C++ 书籍，我选择了《C++Primer 5th》，除了看书之外，课后习题我也基本都做了一下，并且从网上找了正确的习题答案，进行查漏补缺。 我个人比较喜欢做笔记，如果看的是纸质书就在书上写写画画，如果是 PDF 就做标记之类的，我记得大概花了 3 个月左右的时间过了一遍这本 C++ 圣经。 月末的时候，我去 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++ 对象模型》。 我一口气全部买回来了，兴冲冲的直接去看源码剖析，差点把当场我劝退。。。。 我又去搜索大家在看这本书的时候是怎么看的，有没有什么值得借鉴的方法。由此知道了侯捷大师，也知道了侯捷老师的几门经典课程。 我都看过了，其中有些视频甚至二刷三刷，就比如STL源码解析的视频。 侯捷老师有句话讲的非常好：源码之下，了无秘密！ 这些视频以前我就保存过来着，后来听说B站将这些视频全都下架了，现在想想还好我保存了，有需要的可以下载一波。 下载 | 侯捷C++系列视频 就跟我开始学习C++时会选择从黑马C++教学视频入手一样，在学习STL的时候，我也选择了从侯捷老师的 STL 讲解视频入手，依旧是 1.5 或者 2.0 倍速看的。 十二月的时候我除了看操作系统的书籍之外也另外看了“STL标准库”和“C++内管管理”这两个视频。 对了，如果你跟我一样是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 服务器是由服务器和客户端两方组成的，也知道了回声服务器是什么意思。 这本书上例子很多，我很快就看完了，然后就开始看《Linux 高性能服务端编程》和《Linux 多线程服务端编程：使用 muduo C++ 网络库》了。前者我好好看完了，收获很多，但后者我没怎么看完，随便翻了翻就没看了，我也不是很推荐这本书。 后来疫情逐渐严重起来，接到学校通知说要延迟开学，我有点不爽，可也有点高兴。不爽是因为在家呆久了，老妈整天唠叨我，干啥都有错，高兴是因为自己有更多的时间来学习看书了，一回学校就要开始做老师的项目课题了，就没有这么多空闲的时间了。 现在想想应该多在那个时候刷一些算法题的，因为现在的互联网招聘过程中很看重算法题，在自己去年顺利上岸后也总结了一些不错的算法题，有需要的可以看看。 进入三月后，因为一直没能回学校也复习不了C++，我的笔记都在书上，看不了就很难受，只好转头去看操作系统和计算机网络的知识。同时力扣上的题也开始二刷了，当时我重点刷HOT 100 的那 100 道题，来来回回的刷，一道题最多的时候来回刷了七八遍。我并不是什么算法大佬，自己脑子也很榆，一遍记不住我就刷两遍，两遍做不出来我就去做三遍，总有能做出来的一天。 老是有人说什么算法太难，你先看看自己下够功夫了没？对于每道题，你是真的会做了没？是不是你自己做出来的？对于你不会做的题目，你有没有及时复盘和总结？ 如果你的回答全部都是 Yes，那你不可能做不好算法题； 如果有 No，你可以看看自己缺的是哪一步。然后对照着补充不就完事了吗？ 最多在刷题的过程中你可以选择性的看一些别人总结好的资料，比如这种前人准备好的一些刷题笔记之类的，支持三种语言就很不错。如果算法题有障碍可以多看看。 在复习完操作系统和计算机网络后，我除了开始继续刷力扣HOT 100，也在慢慢刷《剑指offer》，这本书上的题目都比较经典，经常出现在一些笔试面试中，可谓是经久不衰。 再者，虽然我已经有一个实验室的项目可以写在简历上，但一个项目还是不太够看，思考再三，我决定走前人走过的路，我也选择做一个 WebServer 服务器。 emm，真香！ 我是根据 TinyHTTP 和 游双老师的《Linux 高性能服务端编程》的课后大作业为基础，这两者结合后做的自己的 HTTP 服务器，后来我把它作为我简历上的第二个项目了。简历上的第一个项目是实验室的项目，跟了快两年了，终于能发挥点用处了。 可项目还没做完，学校已经给消息了让尽快回去，本来想在家把这个项目做完的，没办法匆匆买票，赶紧滚回去了。 可能谁也想不到，一个寒假居然能放 150+ 天的。回去学校第二天，我就立马把《C++ Primer》捡起来看，因为第一遍看的时候比较用心看，所以第二遍过的时候即非常轻松加愉悦了，很快就看完了。 在此期间也是把自己的服务器项目完成并且开源到 Github 上了。 因为我是在一个普通二本学校读的研，历届的师兄师姐没有去大厂的先例，师兄师姐们貌似对于秋招找工作也不上心。 按理来说金九银十，他们一般在九月份就应该开始找工作的，但以前的师兄师姐都是在十一月份才开始写简历找工作，去的也都是一些愿意来我们学校进行校园招聘的企业，所以找到的工作质量可想而知。 我也私底下问过他们，得到的解释和答案就是学校比较差，然后 balabalabala 之类的。 emm，我信了，因为师兄师姐比我多上一年学，见识也多一些，但还是想努力一把，想着万一能有一点机会呢。 万幸，自己努力了一把。还好，自己坚持了一下。 在六月份校招提前批的时候，我就兴冲冲的投了简历，结果全部石沉大海，后来才知道提前批是选拔优秀人才的，提前批能上岸的也都是一些好学校的学生，比如各种本硕985、211本985硕的。 投完简历没有后文，我也在找自己的原因，除了学校不行是一个因素之外，在思考有没有其他可以改进的地方。后来看了一些比较优秀人才的简历，我觉得问题有可能出在自己的简历上，因为自己的第一版简历写的着实垃圾。 所以后面又迭代完善了自己的简历，足足写了 26 个版本的简历，也正是自己精心打磨的简历使得自己在接下来的秋招正式批中能够收获到不少胜利果实。光是修改这 26 个版本的简历，就足足花了我十来天的时间。 去年的秋招正式批是在 7 .15 号开始的，在经过提前批投递简历的全盘皆输后，我开始有些畏手畏脚不敢投递简历，因为每个校招学生可以投递一个公司的机会是有限的，比如京东，每个学生都只有一次投递的机会，每次可以投递两个岗位。所以投递简历的机会，不能随便浪费。 在别的小伙伴开始大势投递简历的时候，我总觉得自己还没复习好，一直在不断复盘以前学过的知识点。我自己的经历告诉我，永远不可能有复习完的那一天的。 因为你每次面试都有可能遇到你不会的题目，所以最好的方法就是在实战中成长，多去投递简历。当然投递顺利是有技巧的，前期去投递一些小公司，积攒积攒经验，后期再投递一些互联网大厂！ 所以小伙伴们不要抱着把全部的知识点复习完事后，再去开始投递简历，等你复习完了，黄花菜凉完了，校招早就结束了。 整个七月我都是在复盘知识点 + 刷题中度过的，7.15 号正式批一开始我就立马开始投递简历了。 如果是往届的师兄师姐们，他们投递第一份简历很可能要到十月份去了。还好自己没听他们的话.... 不知道你们是否体验过笔试全部会做的感觉？就是我所投递的互联网公司发来的笔试，我居然都会做...这不是装逼或者凡尔赛，就是我当时的真实情况，来一道过一道，来两道过一双。 在牛客网看到他们发帖讨论今天 XX 的笔试题好难，求交流求解答之类的时候，我下意识地以为他们是不是在夸大难度，因为我觉得貌似没他们说的那么难； 傍晚在操场跑步，听到旁边的人在讨论今天的 XX 公司的笔试题怎么这么难，我停下来随口说道：今天这笔试第一题是力扣No.200，岛屿数量那题，很经典的;第二题是回文子串，在力扣上也有，你们也可以去查查，具体题号我记不清了，都是原题的。 然后我就在他们惊愕的眼神中扬长而去，接着跑我的步去了。。。。 在我过五关斩六将一般通过一场场笔试后，随之而来的就是一场场面试邀约，为了避免漏掉笔试或者面试，还专门用备忘录记录了一下。 最多的时候一天我面过五场面试，上午两场，下午两场，晚上一场。那天面试完后，感觉身体好像瞬间被抽空一般。 然后就是笔试、面试、复盘的交替进行、循环往复。那是真难熬啊，也真难受啊，在面试过程中遇到很多自己不怎么会的知识点，有时候也会被问到崩溃或者被面试 PUA ，可来不及伤心和怀疑自己，因为可能一会就要进行下一场面试了。 心态真的会崩，当我心态崩了的时候，我一般都是去操场上跑两圈，然后回宿舍洗个澡，再来到实验室看个电影或者看看吃播，然后第二天接着干！ 还好，最后终于有所收获。 如果你能看到这里，确实很了不起。我罗里吧嗦说了一大堆，每个人的成功都是不可复制的，我也不敢说自己的经历或者学习过程一定就是正确的，但我确实是这样走过来的。 我写下这篇回答的时候是2021年的五一期间了，距离那段时光已经快过去一年了，确实挺快的，还有一个多月自己就要毕业了，时间真的很快。 有时候我就在想，“玩也一天，学也一天，为什么不试着学一下呢？万一你就成功了呢” 现在你要再问我，我的编程能力是什么时候提高的？ 那我觉得是在 B 站的教学类视频收藏多了、也看多了的时候； 周日别人跑出去玩，我却在实验室里看各种技术书的时候； 力扣上的刷题数量从 0 开始逐渐变为 400+，通过从 40% 逐渐提升到 70% 的时候； 《剑指offer》中的每道题过了一遍又一遍，以至于都可以出一个刷题笔记专栏的时候； 大冬天的早上别人还在被窝里睡大觉，我早早来到实验室复盘昨晚没做出来的算法题的时候； 导师有时候疯狂 push 项目、催进度，只管提需求不管如何实现，搞得我崩溃得受不了的时候； 纳闷钱包越来越薄、支付宝余额越变越少、实验室书桌上的技术书越来越多以至于放不下，一看当当网消费金额被吓一跳的时候； 在食堂吃饭排队打菜，忽然想起来刚才那道题/那个 bug 怎么解决，大叫一声“卧槽，我知道了”被女朋友嫌弃，被别人当作傻子的时候； 就是在这些时候，我的编程能力提高的，也是在這些时候学会编程的。