事实证明,万事开头难,但是更重要的是机会永远只会留给有准备的人。

Hey,你好,我是Ray。一个无名小卒,nobody,一个尝试学习计算机的自动化学生。很高兴认识你。

在这里我也想聊一聊我的学习经历和一点个人的分享:

  • 自我评价

我是一个很无聊的人,我只在意自己本分的事情,除非是非常感兴趣的事情,我也无意追求更加刺激的、可以自我提升的任务。我是一个偏内向的人,但是又不善于拒绝他人,也被叫做老好人,也从小到大吃了不知道多少的亏。很有工具人的典范,只有到了我有用的时候才有人想起我。

因此大学前三年的日子里,我的生活变得异常的单调,无非就是本专业课程的相关知识,我尽力在自己的本分下做到最好,而至于其他相关的活动,无论是数学建模竞赛还是什么奇奇怪怪的项目,即使我有试过,结局也并不是很好。毕竟,我人脉很差,压根找不到很好的队友,我也毫无意愿去充当一个leader的角色去安排任务(毕竟我都不知道要学啥),毫无经验的我加上几位划水的同学,直接在大一给我留下深深的心理阴影,之后我就再也不参加类似的活动了。我不喜欢任何形式的娱乐,不管是游戏还是啥的,可能是因为手残,或者也是自己懒得过分了。

我的前两年就很混乱,自动化本专业的一堆破事搞得似乎我还不够忙一样,我居然还丧心病狂的给自己安排了一个人工智能双学位。某种程度上算是我的一种赎罪,学校安排了转专业的相关机会,我本来非常想选择计算机专业,但是到了关键时刻我却开始迟疑了起来,我怕自己闭塞的人脉,换了专业之后可能面临完全失联的情况(毕竟学号不会变,寝室也不会换,我和其他同专业同学的联系也就上课那么两下,考试复习的时候就会很要命),就这么给放弃了。我自己的官方说法是自动化专业是万金油,挺好的,没必要换(都是骗自己的话了,现在想来都后悔),但是没转成计算机又很不甘,加上学校新开设了人工智能双学位(计算机双学位没有面向我们学院开放,估计是给文科了),就去试了一下。事实证明是一个更加错误的决定,到了期末压力暴增,本来电子信息EE专业课业就不算轻松,各种实验、实验报告、考试压在身上,还要兼顾一门双学位,学一些机器学习、数字图像处理的一些课,加上教务处不做人,有的时候三天能考五到六门考试,真的是非常的心力交瘁,两边的绩点都稳不住了,晚上一点在教室看书的时候经常会想何必呢,但是为了这个学位还是愿意努力下去,最多分数丑陋点。

我是一个很喜欢在私下折腾的人,拿过Linux在大一做过主力系统,当时还记得配了一个非常炫酷的i3wm,玩过树莓派,调过GPIO编程,也架过自己的服务器。加上自己的英语勉勉强强还行?老本从小学吃到大学,撑过了江苏高考,就每天嘻嘻哈哈看看读读,也不刻意去记忆一些啥,NPR WSJ NYT都有去听,news也一直有在看,美剧不带字幕Netflix看的也很开心,四六级裸着也能过,也是别人经常羡慕的对象,并不感觉自己退化了太多。感觉自己肯定谈不上优秀,毕竟绩点比我高,活动比我丰富多彩的人多了去了,但是也是有自己的一点小骄傲。

前两年也一直对自己未来的选择感到迷惑,不知道做什么,学校都说自动化专业是万金油,但是做什么好呢?是去工厂去机床,做机械相关工作;还是,去选择电网相关,从事电网相关工作;还是去选择嵌入式开发相关工作;还是简简单单读个研,把矛盾和抉择再延迟几年?

  • 矛盾显现

大概是大二下学期吧,COVID-19爆发的那个学期,大家都被迫困在家里,学校被迫线上上课。

之前我们上的都是基础课,我一直自我感觉尚可,谈不上非常优秀,但是每门课一直处理的还可以,绩点大致3.4/4的样子。

这个学期,第一次开始接触我们专业的专业课,其余课程像是数电模电虽然难,但是也还没达到劝退我的地步,甚至我在考试的时候还做出了不错的成绩。当时最劝退我的课程还是控制电机,虽然说老师真的很好,但是我是真的理解能力有限,书和作业都看的一知半解,即使这门课是开卷考试依然让我产生了深深的不适。此后还有奇奇怪怪不同的专业课轮流给我带来折磨。

正是那个20年的寒假一直到夏天,我第一次下定决心要自己学点新的知识,第一反应自然的是想学习一些互联网开发的知识。我当时懵懵懂懂,隐隐约约在逛B站的时候看到程序羊CodeSheep大佬写了整整一大面的Java后端知识版图,在除了震惊之余一时也想不出别的情绪。

当时我自己的编程水平真的是菜的抠脚,大一的时候在学校里只会教一些C语言程序设计之类的课,教材还是用的谭浩强的教材,编译器还在用VC++6.0,更为致命的是大一还不允许带电脑,以至于做个代码作业得去机房,平时作业真的就“物理”写在作业本上交上去,体验差到了极致。多重buff叠到了一起的时候,我干脆直接失掉了学习的热情,我也不知道是教材问题大一些,还是老师的问题大一些,还是我的问题最大,反正我很早就产生了一种对编程的畏惧(某种程度上这也是我转专业时迟疑的原因)。

既然要开始相关的学习,我的第一反应就是得把算法带起来,我的第一反应就是leetcode,这里面的原因就很复杂了。大一暑假的时候在爸妈的不懈督促下(后来才知道他们只是想让我确定自己有没有考虑好转专业相关事宜,让我去做咨询的),拜访了当时已经大三在深圳字节暑期实习的表哥,他应该从事的是前端的相关岗位,我在那里呆了一周,字节所在的大楼也没什么好看的,繁华的商业街也没啥太大的感触,但是我有幸在7月21号亲眼观看了一场第146场leetcode周赛,当时我是纯菜,啥都看不懂(他T1 WA了两次,看得我大受震撼),最后临走关头想问点学习方面的建议是就被给了一句“先把算法刷好再说吧”,这也就是我和leetcode缘分开始的地方了。

  • 题海战术

我是一个很无趣的人,我总是感觉自己的忍耐阈值会比别人稍稍高一些,大一的早自习即使室友经常闹腾到半夜也几乎一场都没翘过,与其说我是一个强迫症,更不如说我只是纯粹喜欢坚持中间的过程罢了,即使他没有什么太大的意义。

刷了leetcode的第一天是20年的5月31号,我是那天作出的决定。

还记得leetcode刷到的第一道题目是小青蛙跳台阶(还记得评论区顶上的那个斯大林回旋跳,很好笑),就是一个很简单的斐波那契数列,我傻乎乎的写了一个递归,直接超时了,当时自己对动态规划之类的概念完全没有了解,看了一晚上大佬们写的题解,什么是动态规划,还有他相关的性质,看的迷迷糊糊,懵懵懂懂,晚上睡觉的时候还在想,也不知道那天晚上到底想通没(笑)。

之后的日子里,就是配合着leetcode的每日一题一直坚持了下来,一开始那是真的非常的艰辛,毕竟我是啥都不懂,看啥都费劲。每天准时半夜12点蹲每日一题,蹲到了就看题,试着写,写不出看题解,看不懂换篇再看。幸运点1点就能睡了,难的时候看到天蒙蒙亮,被迫躺下,等天亮了继续,为了这些事情昼夜颠倒,疫情在家里也少不了多少挨骂。

在坚持了两周的持续做题之后,本着nothing to lose的想法,我直接去了周赛,一开始也是相当的惨烈,但是我坚信一切都是有收获的,每场周赛我没做出来的题目,我都会在比赛结束后仔细复盘,拿出大佬写好的题解仔细读,能看懂思路就写最好,看了代码自己在写一遍那也行,反正重在理解,通过周赛我对各路知识点的掌握速度某种程度上还加速了,因为每次我都能学到一些奇奇怪怪的新知识,像是位运算、动态规划、并查集,更加令我兴奋的是如果我能把一道周赛题目驾驭住,也许题库中的其他相关题目也就不在话下了,正所谓举一反三。当然这样的学习消耗的时间也是海量的,我经常为了大佬题解中间的三四行字看上个大半个小时才能理解,有时一道题目从白天看到深夜,但是我相信一切都是会出结果的。由于这种不平衡的时间输出,我也丢掉了很多东西,比如大三的绩点还有父母的信任理解,毕竟他们还是希望我读研的。

这段时间里,刷题和周赛积分不断刺激着我,我一直被一种上分的冲动裹挟着,现在想来可能也是真的大意了。

就在这样高强度的做题下,我居然坚持了大半年,一直坚持了21年的寒假,那个时候的我已经把基础的知识点吃的差不多了,周赛已经是稳定三题选手,题量大概刷到了1200,周赛积分也已经上升到了2000。

但是更加激烈的危机却浮现在了眼前

  • 危机:应届了

还没等到我来得及反应,我已经进入到了大三的下学期,也就是今年21年的三四月份了,寒假的时候周围不管是家人还是一些同学都开始提醒我找实习相关的事情要准备起来了,空间里偶尔也能看到同学在准备的一些小分享。

而这个时候的我,算是个只会刷题目的废物,我就零基础学了一年,我算个啥?和打竞赛的大佬比根本就是垃圾,而计算机基础方面我又缺失了很多,我甚至还不知道要学什么。那个时候我做的最错误的决定,就是把头埋了下去,加大了刷题目的力度,我知道这么做是不会有好下场的,但是我还是做了下去,也许我就是贱,不愿意踏出自己的舒适区,也许还有一些别的原因:

学习是需要依赖意志的,但是消磨意志却有一万种方式。早在大三上学期的时候经常从B站大佬的口中听到Spring和SpringBoot这些词,尝试着去学习了一下,我却发现了很多障碍。其实就是视频点进去完全看不懂罢了,知识的学习需要前继知识的,如果不了解Maven JavaWeb MySQL的相关知识,又怎么可能直接去掌握Spring呢,现在想来也是可笑,自己听到了个名字就冲动的去学习,结果开出了一个庞大的“递归学习问题”。没有人为我替这些知识点做拓扑排序,我点开一个视频,可能为了学会它就要再点开四个看,以此往复,意志被迅速的消磨殆尽了。我看了半天,连Spring是个什么都不能理解。当你的意志被消磨殆尽的时候,或许你会产生永远没法学好它的错觉,这也就是我害怕学习的另一层原因,我的人脉太闭塞了以致于没有前辈能给我一个学习计划,或者带着我走路。

就这样,一步一拖,虽然在逃避但是每一天都是煎熬,就像放假的时候最后一天明知道一堆作业没有做却还是在玩,玩的时候一点都不开心。直到4月30号,我对那天记得很清楚,那天下午字节停止了暑期实习的投递,而到那个时候我甚至还没有做出过任何准备,这根本不是敢不敢的问题,我连一份正经的简历都凑不出来,我到那个时候才发现了自己已经落后了太多了。

  • 补救&堕落

5月1号的那天,我开始了自己的学习,虽然我之前在leetcode刷题一直用的是Java,但是我感觉自己其实只是会了点皮毛,事实也的确如此。

我就从B站那一堆奇奇怪怪的培训班视频开始看起,从MySQL开始,到Java Web到Spring,我发现沉下心来还是能学到不少东西的,只是可惜之前我的时间全被浪费了。培训班的视频我曾经一直不屑去看,总是感觉看书会更好,实际上我感觉也没啥不妥,初学体验还是挺好的,就是讲的有点慢,我记了笔记,还开了两倍速。

此外,我知道自己的计算机基础一直是很迷糊的状态,计算机网络虽然学过,但是肯定没有科班同学学的好,至于操作系统那我根本是一点概念都没有,至于多线程编程,当时真的是一窍不通,连“线程安全”什么意思都不知道。但是我也知道可以去牛客之类的网站可以搜刮面经,但是每次看的都是心惊胆战,全是我看不懂的问题,每天都是要完的感觉。

当时很幸运的在leetcode刷题群里,看到了鲂姐整理的八股基础小本本,八股小册点开来440页,多多少少给我了极大的震撼,我在学习Java基础的同时,开始看八股小册,从计算机网络开始看,感觉还尚可,但是越是往后看越是感觉力不从心,尤其是Java虚拟机里面的很多概念像是GC都是迷迷糊糊模棱两可的状态,也就是通过里面的几句话我貌似大致了解了原理(其实可能差的还蛮多的)。我隐隐约约的意识到了自己除开八股可能需要自己好好深入理解一下,不然八股看的一知半解,怎么去糊弄面试官呢。

到了六月,在自己勉强的多线压力下,我花了一个月的时间基本勉勉强强的学习了Spring的一点基本的用法,并且在网上的项目参考下,写了一个很简单的基于SpringBoot的博客项目,顺便深入了解了一下像是Thymeleaf之类的一些用法,做了点什么简单的异常拦截,做了个AOP访问日志记录,整个项目大体上还是一个CRUD,我自认为没啥技术含量,就在这种东拼西凑的情形下搞了份简历(里面全是坑),抱着试一试的心态投了一下字节的日常实习。想想也知道,被吊着打,可怜的我没见识过那么多的八股,连个HashMap和ConcurrentHashMap的原理都说的支支吾吾的,synchronized的认识停留在了是个锁,到了JVM GC机制直接哑火了,动态代理静态代理啥区别不知道,一堆问题问了只能不知道过,更要死的事情是算法题一紧张没写出来。面完了,我不动脑子都知道凉透了,我突然间不知道自己这么一年都干了些什么,八股八股不行,基础基础不行,算法算法不行,接下来的相当一段时间都是迷茫状态。我很机械的学习,我知道自己差远了,自己纯看八股只是自欺欺人,假装看懂了,一被问到就忘光了,说明理解完全靠强记是不行的。

  • 互助小组

就这样迷茫着继续补缺,不知不觉到了7月份,很有幸的是在最迷茫的时候被林同学和老猫拉了一把,一直记在心里。林同学也是个非科班的同学,老猫是个打工人,那个时候林同学在准备秋招,老猫在准备跳槽。那天在刷题大群里水群的时候,抱怨了两句自己很苦恼,他们很大方的带上了我,我自己当场就承认了自己很垃圾,不配他们带,但是他们还是执意要带上我。

接下来的每天晚上八点或者九点,我们就开上一个腾讯小会议,把各自思维导图拿出来互相分享补充,有的时候互相充当面试官问问题,另外我们还会互相推荐学习资料,现场投屏打开pdf截图,另外我也是这一段时间里发现了自己的表述一直很成问题,大概也和自己长期不喜欢说话有关系,他们也很好的鼓励我,让我自己对着一个个问题自己大声说出来,我一直都很感激。

到了后期,我们的面试小组就更加热闹了,大家晚上都会把自己刚刚接到的面试面经直接投屏,大家一起复盘,遇到特别难或者不好回答的问题还会互相支招。这也是我最快乐的时光,在他们俩的帮助下,我感觉自己的知识体系慢慢形成了,在他们的帮助下我还自己花时间去看了《深入理解Java虚拟机》《高性能MySQL》《并发编程艺术》这样的书,有时间自己写了笔记做了博客。

秋招很快就开始了,林同学凭借着他扎实全面的知识体系,很快杀穿了全场,虾皮阿里字节到处拿offer,老猫经历了点波折,总算也安稳落地了。

而我,只能是说前期发挥尚可,美团一面二面都算勉强顺利,但是三面终究还是卡在了项目上(项目太垃圾了),之后网易也是二面挂,很大程度上感觉还是自己没准备好。字节也是卡在项目上了,面了几家发现了自己的问题,我感觉干脆从头再整一个项目会比较好,最后看中了牛客上的那个精品求职课论坛项目。一边学一边面,压力就更大了,后半期我基本放飞自我了,全部都在学我的新项目,也没投多少,还是觉得自己太菜太自卑了。

另外顺便说一句,虽然我刷的题量很大,感觉应付笔试压力会很小,但是面试的时候被出到的问题绝大多数还是高频题,所以的话还是建议多看看高频题,不然还是很容易翻车的。

  • Now~

leetcode我从5月份开始就是放飞自我的状态了,随手做做,毕竟没有那么大的精力去顾。最近周赛试了两把,感觉状态也在大倒退,希望能尽快恢复吧,后会有期!

Btw,11月了,算是有点出戏了,offer他只是会迟到,不会缺席的,快乐总是来的出其不意

不管再怎么难,请不要放弃,都会有的

且行且珍惜吧,一起加油