文章目录
微信公众号搜“非典型开发者”,添加关注,不再迷路
返航
这篇博客是这两年来写的第三百篇博客,所以不打算写和技术相关的东西,而是想用来回顾和总结一下这几年来的学习生活历程,回顾几个重要的时间节点。算是一篇写给自己看的总结吧。
今年是地狱开局难度,肺炎施虐中国和海外地区,目前已经有近10w人被感染(包括治愈的),比03年的Sars更加恐怖。其他的地区还有非洲蝗灾、澳大利亚山火、美国流感等。
原本打算2月9日返校,但是学校的开学时间被推迟至少一个月,可能到四月份才会开学,现在还不得而知。
这篇总结写了好几天,几乎是想到哪写到哪。不知道自己以后再看到这篇总结时是怎么样的心情和境遇呢,哈哈。
开篇的图片是我很喜欢的一张图片,是去年回家过年时,从湛江乘船到海口所拍,我很喜欢这种在大海上航行的感觉,毕竟从小看海贼王长大,不禁脑补一波自己成为“海贼王的男人”,哈哈哈。
这张图片意味着返航,是我从学校返航回我的家中,我也顺着这张图,将思绪返航到几年前。
我的中考和高考
我出生在海南的某个小县城中的某个小镇子,籍贯是广东揭阳,所以算是在海南土生土长的“客家人”。
从小学到初中,我的成绩都很差,沉迷于电脑游戏,在初二时的成绩也只能勉强考上我们县最差高中。
在初二升初三的那个暑假,父亲刚从外面工作回来,走进我的房间翻看我的暑假作业情况。
我的暑假作业中写满了游戏中的术语,突然,父亲把我的暑假作业都撕碎了。
“不想读书了,以后就和我做苦工吧,以后一辈子都活在这个小地方,像我一样”
看着父亲离去的背影,我突然意识到如果我不好好学习,我可能这辈子都不会走出我们县城这个范围,但是我想看见更大的世界。
所以从那时起,我放弃了玩了三年游戏,把账号送给了工会的一个朋友,专心的开启了复习之路。在初中的最后一年里我几乎把一切时间用来复习之前没有认真学习的课程,从班级倒数十名逆袭到了年级前十。
在中考中,我发挥地格外的好,考取了年级第三名,最后被三亚市某私立学校免学费录取。
这所私立中学在三亚市还算有些名气,当时我也顺利地进入了这所学校的火箭班中,接下来就开启了三年的高中生活。
高中三年里,由于火箭班采取的是末位淘汰制度,两个火箭班会在高一和高二两年中进行末位淘汰,最后只留下一个火箭班最为高三重点培养的班级,另一个班级则不做重点培养。
所以在这三年中我的学习也算是刻苦,成绩也比较理想。那时心中的理想高校是华南理工大学,高一与高二几乎都是班级前几,在高三的省考中最好的成绩是三亚市前二十名,我认为华工势在必得。
2017年参加高考,令我终身难忘,因为高考的试卷是我历次考试中做得最烂的一次。整场数学考试几乎都在发懵。
那一年,是近几年来全国高考难度最大的一年,全国各地的重本线都比去年低了三十分以上。
我考砸了,最后报志愿的时候,我听取了父母的建议,放弃了江浙和北方的一些211大学,报了南方某所普通一本,并且被机械自动化专业所录取。
就这样,我成为了家族第一个考上一本大学的孩子,也是当时我们初中的班上唯一一个。
初入大学的迷茫与思考
当时新生开学典礼上,我们一帮新生都怀揣着对未知的兴奋,听着校长、院主任、优秀师兄的发言,听得我们热血沸腾,感觉大学就是知识的海洋,可以任我们遨游。
听着一堆社团中的师兄师姐介绍各种社团、部门、活动时,我感觉到大学真实充满了精彩!就这样,跟风参加了几个社团的面试和考核,没有什么才艺的我,最大的作用就是被刷KPI和充人头。
在开学的前一个月,我还积极地报名成为了辅导员助理、班级的实践委员等,就这样忙碌了一两个月。
一两个月后,身边的同学开始出现了奇怪的现象,大家似乎都没那么热爱学习,开始了玩游戏、刷剧、吃吃喝喝的生活。
似乎除了高考时拥有奋斗的目标,在上大学后大家都成为了无所事事的人,大家好像都忘记了自己曾是某个地区的佼佼者,而接受了普通与平庸,忘记了曾经那个努力的自己。当然,我也是其中之一。
由于对自身的专业其实并不感兴趣,所以上课时觉得蛮无聊的,就这样,在大一的上半个学期中,我陷入了一种十分迷茫的状态,我不知道我未来要做什么,以及要成为什么样的人。
那时的一个深夜,在王者连跪十局后,我打开了朋友圈,在里面发布了一条心情:
“不是因为玩物而丧志,而是丧志才玩物”
当时每天的生活就是上上课,抄抄作业,没有目标,没有对自身的定位,找不到上大学的意义。
我甚至开始了看一些哲学的书籍,例如苏菲的世界、梦的解析、自卑与超越,不是为了充实自己,而是真的不知道自己应该做什么。
人生第一个Hello World!
由于对自己的专业并不感兴趣,并且以后也不希望从事机械行业的工作,我开始在知乎上搜索,我应该怎么办,我应该学些什么,做些什么。
我开始思考未来应该做些什么,我的定位是什么,我的职业规划是什么,我不想再混下去了。
我的微信签名改成了"想好明天要做什么了吗",一直到今天都没有换过。我想时刻提醒自己要为自己的未来负责,要想好明天要做什么。
“富学金融,穷学计算机”
考虑到自己家中并没什么背景,所以没有考虑学金融类的知识。所以我的想法就变成了学习计算机专业的知识,以后成为一名程序员。
首先考虑的是转专业,当时是考虑转去计算机学院的专业,可是发现每年可以转专业的名额都是极少的,一届一万人,可以成功转专业的不到200人,几乎每个人都必须是他当前专业的前几名。
因为我自身的成绩并不好,所以走不了转专业这一条路。
于是我萌生了自学编程的想法,我开始在网上搜索应该学哪一种技术,最后我选择的是Java这门语言。
2018年1月13日,大一上学期的期末,我正式地开始自学Java这门语言,在这之前我并没有任何的编程经验,也不了解什么是数据结构、算法或操作系统这些基础知识。我甚至不知道什么是“编译”。
当时也是头铁,装个JDK都装了半天,差点就此把我劝退。
终于,折腾了一个下午,我终于搭建好了JDK环境,我使用NotePad++对着书本敲上了第一个main函数,第一行输出语句,使用javac对程序进行编译,使用java运行程序,输出了我人生第一行HelloWorld!
我高兴得发了一条朋友圈,向我的朋友们展示我的“成果”,要是那天没能输出这一行HelloWorld,我现在可能已经没有在学习Java了。
这一行HelloWorld几乎改变了我的人生轨迹,从那天起,我找到了自己的目标,就是将来要成为一名Java开发工程师,开发软件,写程序,即使当时还并不知道Java的作用。
一开始的学习十分地痛苦,对于书中的几段代码,我可能都需要理解个半天。但是我并没有就此放弃或怀疑自己,而是告诉自己坚持下去。所以放弃了一开始就看书这种学习方式,转而向视频中学习。
大一一年,我靠某培训机构的培训班视频,从Java基础学到了数据库、Servlet、Web前端框架、JS、Spring、MyBatis等开发技能,从无到有一步步进行学习,后来在18年5月份的时候,我学习到了SSM框架,当时觉得自己应该有所输出才会把知识记得更牢固、理解得更透彻。
“深入理解一项技能最好的方式就是教授他人”
所以,2018年5月份,我正式在CSDN上开始写博客进行输出或者是记录我的学习笔记,一直到现在几乎都没有中断过。
第一次尝试找实习
18年的9月,此时我刚上大二。看完了培训班的视频,开始自学SpringBoot,然后用SpringBoot和Gradle迭代了一下github上的博客系统,此时我自信满满,觉得自己可以尝试着去找一下实习了。
于是当时关注到了大学城这边的某大学有个初创企业想招技术合伙人,当时也是怀着试试的心态过去那边面试。
这所学校离我的学校只有两公里左右,我骑着我的小死飞,跟着导航大概花了二十分钟左右就到了,然后去到他们所谓的公司的一个办公室面试。
面试我的是一个三十多岁的大叔,大叔连我的简历都没有看一眼,上来就和我聊我会些什么,现在是大几了。
我说我大二了,他有点震惊,觉得我哪来的勇气来面试,然后和我聊了下为什么不做本专业,我又巴拉巴拉一大堆,说我对Java的理解,和对后台开发的认识。
聊了几个简单的问题,大叔开始问我觉得技术合伙人是一个什么样的定义。
我说应该是类似于实习生之类的叭(当时也只想找实习)。
大叔说不是的,他有个大项目,是一款小程序,他整合手中的资源,有八成的概率可以成功,他现在需要我作为技术合伙人,从0到1组建开发团队(或整个开发团队就我一个人,前后端,嗯)
我此时心中有些发蹙,是什么项目能有八成概率成功的,然后问了他大概是什么项目,他说现在还没确定。。还没确定。。还没确定。。!
好的,我知道我可能要被骗入传销组织了,至少这个大叔神志不是很清醒。所以随便尬聊了半个多钟,加了个微信我就回学校去了。
回到学校后回复他自己不是很想做技术合伙人,并且祝他项目成功。(刚才看了一下,目前还在找技术合伙人,已经过去一年多了)
这应该算是我的第一次用自己所学找实习。
加入工作室
18年11月,计算机学院的朋友转了一个推文给我,是创客空间的一个互联网团队正在招收大二的前后端开发,我看了一下,感觉我应该可以去试试。
在填报名表时,里边有个个人技能介绍,当时年少无知,对技术的理解很差,写下了我认为可能是我最近五年来都没办法达到的层次:
- 精通Java编程,熟悉SpringBoot的使用
- 精通MySQL数据库、Redis缓存数据库,并且使用过集群
- 熟悉Dubbo搭建分布式应用
- 熟悉Maven、Solr搜索引擎技术、RPC技术
- 。。。。
现在看来当时还是太年轻了,都敢用“精通”和“熟悉”这样的字眼,native。
十二月份的某个周六,晚上九点,我开始了第一轮面试。
第一轮面试有二十多人参加吧,当时我等了很久,是倒数第二个被面试的。
进入会议室中我开始面了,首先是自我介绍,然后两位师兄对着我的简历和博客,问了我一堆问题。
问题都是这样开头的:听说你精通xxx、熟悉xxx,那么要是遇到了xxx问题,你该如何解决?
我脑子已经有点断片了,但还是支支吾吾地说出了自己的看法,最后的一个令我印象深刻的问题是
“如何用栈实现队列?”
我又是一堆思索,最后承认自己想不出来。当时对数据结构的理解很肤浅,觉得就是什么ArrayList、LinkedList、HashMap这种,用API不就好了吗?最后被打脸,连两个栈实现队列的思路都没想到。
可能是由于我的知识面比较广,对于一般的开发来说还是可以做到的,所以我也顺利地通过了一二轮面试,成为了当年的两个后端新人之一。
对技术的反思
加入工作室后,我们后端组组织了一场交流会,主要是用于交流一下后端学习路线上的问题。
了解到我的个人情况之后,师兄们纷纷表示我学的太多框架与业务上的知识,所以建议我多多学习数据结构和算法、计算机网络这样的基础知识。
我也开始从师兄的面试经历中了解到,其实对于应届生或者校招生来说,基础知识更为重要,没有基础知识,以后的发展也不会长远。
所以从那时起,我的学习重心开始有了偏向。
在大二的一年中,开始了对数据结构和算法的学习,我终于开始理解到数据结构和算法对开发者来说有多么的重要。
例如ArrayList的底层是数组,为什么数组不能够改变大小?因为它是线性表,线性表创建时需要申请一段连续的空间,如果需要改变数组的大小,那么只能够再开辟另一块连续的空间,然后进行复制。
为什么HashMap要使用数组与链表的结合?因为这是解决哈希冲突的方式之一,其他的方法还有一次线性探测法,二次线性探测法等。
我终于开始意识到
程序 = 数据结构 + 算法
再看完了师兄推荐的《算法第四版》之后,我又开始看一下计算机网络和操作系统的书籍,例如《计算机网络自顶向下》、《操作系统精髓》等书,遇到不明白的地方,就去找一下别人总结的博客或者是在b站上看视频。
就这样,我慢慢地“从尾到头”去学习基础知识,这是一个长久的过程。
第一次做外包项目
2019年1月,由于掌握的开发技能比较全面,在加入工作室的一个月后负责人就打算让我和大三的的师兄师姐一起做一个保利地产某部门的投票系统,不过由于人员有限,所以后端只有我一人,其余师兄师姐作为前端开发,
这是我第一次做外包项目,我在听了师兄说的一些开发流程后,我又开始在网上找资料,学习了Git的使用和阿里巴巴数据库建表规范,以及如何梳理业务流程并根据业务流程画ER关系图、如何使用PostMan做接口自测,Eolinker做前后端API对接等。
由于系统可能会有300人左右同时投票,所以第一次了解到真正的【并发】的概念,不过当时做的处理比较少,只是简单地把MySQL的并发量参数和Tomcat的并发量调大,然后用Redis缓存热点的数据。
终于,在代码写完后,大家进行了简单的测试,最后逻辑上是不存在Bug了,然后把它交付给保利那边。
2月份的那个夜晚,工作室的人都回家了,只有我还呆在学校。这一天就是保利他们使用这个系统的时候了,我盯着数据库的数据量变化和3306、6379端口,保证当MySQL或Redis服务挂掉的时候我能够尽快重启服务。
还好,那天晚上并没有出现服务宕机的情况,一切正常,我长呼了一口气。
这就是我第一次做真实项目的经历,我从中学到了很多。
脱单纪念日
19年7月18日,是我大学四年来最最有纪念意义的一天,因为在这天我与喜欢的女孩成为了情侣。
本身我上的就是纯工科院校,学院的男女比例是20:1,班上也只有一个女生的我本来是想大学就这么单身下去了,可是没想到一个我会在大二的时候脱单,哈哈。
她是我们团队中做产品经理的师妹,第一次见到她是在吃夜宵的时候,那天她也穿着一身蓝色的裙子,很漂亮。
第一次见面,一番攀谈之后才知道原来她也是客家人,并且是计算机类专业的,我开始心生好感。
在之后的一个月几乎没有见过面,只是在团队开会时见过几次,也仅此而已。再后来交集比较多的时候是她和几个师弟作为项目的测试,那时候还特意约师妹出来吃夜宵,聊工作哈哈。
在19年7月18日的凌晨一点钟,我们几个刚从工作室肝完项目一起去吃夜宵,然后快两点钟的时候散伙了。因为我和师妹都是东区的,所以她提议开电动车载我回去。
回到一半她提议要不要去转一转,然后我们就边转边聊天,因为我们两者都相互有好感,就这样聊着聊着确定了情侣关系,当时还在华工旁边的一个下坡上。所以,我们是在电动车上确定的情侣关系,想起来还真是挺有意思的哈哈。
准备春招
在19年9月份,我已经上大三了,我意识到自己应该开始准备春招。
之前LeetCode也陆陆续续地刷了一百题左右,但是许多都已经忘记了,所以我又开始刷题和总结。
之前看的Java多线程、MySQL、JVM也已经忘得差不多,所以我开始复习之前写的博客和笔记,发现许多遗漏和错误的地方,所以我又开始了重新的学习之旅。
那两个月份主要是重新看《Java多线程编程艺术》、《深入理解JVM》、《Redis深度历险》这三本书,同时也有在刷《剑指Offer》上的 题目,在这个过程中我突然发现原来有道云笔记是一个神器啊,用来记笔记真的太方便了,并且可以多端同步。
所以果断开了一年的会员,所以从那时起,有道云笔记成为了我最经常使用的工具,我在这里记录着自己的笔记抑或是自己的一些思考和学习心得、面试心得。
时间很快,两个月的时间一下就过去了,时间来到了11月。这时我已经复习完了常问的基础问题,并且也积累了一定的编程题数量,所以12月份我开始了投递我的第一份简历,并且不断地修改和完善它。
投出去的简历大多是日常实习的,大概投了二十多家吧,但是有回应的并不多,有回应的几乎也因为考试月不能实习而拒接给我面试,直到那天,一个叫做CVTE的公司给了我笔试的机会。
人生第一个Offer
19年的11月,CVTE开始招收21届的长期实习生,我抱着试一试的心态参与了这个实习项目。
由于是第一次参加笔试,我对CVTE的笔试网站并不熟悉,做完了20道选择题后就不能够再回头看自己选的答案。第一道编程题写了出来,但是在做第二道编程题的时候出现了一些问题,导致我的网页刷新后,直接提交了第二道题。
我以为我的第一次笔试就这样凉了,因为我觉得做得比较糟糕,第二个编程题直接没写完。但是过了一星期之后,我还是接收到了笔试通过的消息,于是进入了面试阶段。
面试在CVTE黄浦区总部举行,但是面试的后一天就是控制工程的考试了,我还没有进行复习,很纠结要不要去。
最后是女朋友鼓励我去,因为面试的机会很宝贵,黄浦区也比较近,大概一个多小时的地铁就到了,最多就是少了一个下午的复习时间。所以我选择参加面试。
面试那天,我提前半个钟头抵达了香雪站,在外面等待的同学几乎都是参加CVTE面试的。一辆大巴车把我们载到了CVTE总部,一开始HR先带着我们一堆人参观了CVTE的各种健身房、电影厅、办公场所等,然后介绍了一下实习福利,最后让我们在大厅中等待通知面试。
一面很顺利,主要是问了一下项目的支付流程和与第三方的对接问题,然后问MySQL索引相关的知识,最后是白纸手写归并排序。写完之后,面试官让我去外面等待,马上开始二面。
二面开始了,主要问的是Redis、多线程和JVM的相关知识,然后问了一下项目问题,最后是问我希望做什么业务(我有点吃惊,我还可以选的吗?)
最后是白纸写一个双指针的算法问题,大概写了十分钟然后和面试官讨论了一会儿,让我出去等待HR面。
HR来到的时候已经六点多了,所以HR提议先吃个饭,然后再开始综合面试。
在快要七点的时候进行了HR面,问了下我为什么不做本专业,为什么选择后端开发等等问题。有一个问题我记得很清楚,问的是“你身边有你很讨厌的人吗?”
我的回答是
我身边没有我很讨厌的人,因为我觉得每个人都有缺点,我自己也有缺点,所以要保持包容的态度去看待他人,学会与他人相处。
哈哈,我都不知道当时我的脑回路是怎么想到这句话的,说完这段话,我觉得HR看我的表情都变得温柔了。
HR面后的第七天,收到电话通知通过了三轮面试,在九月前可以选择来实习的时间。
这就是我获得人生第一个Offer的经历。
惨败字节与阿里
20年2月20号,这天我同时被邀请参加了字节服务端开发实习生二面和阿里妈妈Java实习生三面,那时也算是做好了准备,把之前做过的算法题再分类总结,梳理了一遍。我以为我应该能收获到其中一个Offer,没想到均以惨败告终。
字节之前已经面过一次,不过是一面就凉了,这次撑到了二面。
字节二面约在了下午5点,一开始的问题比较简单,最后要求做一道编程题,是一道数学规律类问题,和数字中1的个数类似,不过面试官修改了一下题目要求。
暴力法提出后被否决,希望我能够想出优化解法,也就是通过总结数学规律来解决问题。但是当时脑子一片空白,根本想不出这些数据间有什么规律,之前也很少做这种找规律的问题。20分钟后面试官说换一个问题吧,然后换了个背包问题的变种问题,当时脑子一片空白了,啥都没想出来,所以二面就这样凉了。
阿里妈妈三面在晚上八点开始,1个多钟头全程怼着项目问问题,问项目中的实现细节和难点,遇到的问题等。
由于这个项目已经过去了半年,所以有一些细节回答上出现了严重的错误,面试官抓住错误一步一步深入,我也一点一点地答蹦了,并且项目本身并不算出彩,技术难度低,亮点少。所以最后也凉了。
这是我目前与字节和阿里距离最近的一次面试,面试完了之后心情很难受,消沉了一段时间。
在这段时间里我想特别感谢的人有两个,一个是我的女朋友,没有她每天晚上和我视频谈心,我可能会一直消沉下去;第二个人是虎牙直播的张大仙,大概这之后的十多天我每晚都会边玩王者边看张大仙直播,几乎每天都守着张大仙下播我才睡觉,哈哈。
在这段时间里我的王者技术倒是精进了不少,因为我主玩上单,一个人单排上分还是比较难的。但是还是打到了星耀三段位,王者段位就不追求了,毕竟不是经常玩。
这段时间看大仙直播和从游戏中,我悟到了一些道理:
- 团队合作比单打独斗更重要,一个人永远打不赢三个人
- 无论现在有多强势,一个小失误就有可能被对手抓住,一波翻盘,所以一定要稳住
- 现在很弱就不要招惹敌人,好好发育,怂在塔下,等经济起来了,敌人也飘了的时候,抓住机会和队友一波翻盘
- 收益并不是线性的,前期注意积累经济,后期强势起来,经济会滚起雪球,越滚越大,所以要注意对自己投资
- 猥琐发育,别浪;稳住,我们能赢!
开始种下一棵树吧
非洲经济学家Dambisa Moyo在《Dead aid》一书的结尾留下了一段简洁却令人深思的话:
种一棵树最好的时间就是十年前,其次是现在。
从现在的角度来看,种一棵树最好的时间是十年前,因为十年前种下的树,现在已经长大。
但从未来的角度来看,种一棵树最好的时间就是现在,就是此刻。
“树”并不是树,而是理想或目标。只要是值得做的,无论之前是否错过,请抓紧时间,立刻开始。
美国有一条小诗,我觉得讲的很好,贴出来作为本篇总结的结束语吧:
纽约时间比加州时间早三个小时,
但加州时间并没有变慢。
有人22岁就毕业了,
但等了五年才找到好的工作。
有人25岁就当上CEO,却在50岁去世。
也有人直到50岁才当上CEO,然后活到90岁。
有人依然单身,同时也有人已婚。
奥巴马55岁就退休,
川普70岁才当上总统。
世上每个人本来就有自己的发展时区。
身边有些人看似走在你前面,
也有人看似走在你后面。
但其实每个人在自己的时区有自己的步程。
不要嫉妒或嘲笑他们。
他们都在自己的时区里,而你也是。
生命,就是等待正确的行动时机。
从现在开始,种下一棵树吧!
更新
- 2020年11月
整个9月到10月能投的大厂已经不多了,主要都是参加的正式批,拿到的offer有阿里、字节、华为、BIGO、小米这几个,目前从部门、工作内容、工作地点和薪资来考虑,最后应该还是会选择字节吧。。。快点把三方签好,后面去实习一段时间,然后好好做毕设才是王道,太累了,不想每天都这么紧张,自己也不是offer收割机,秋招上岸后,学点其他的东西,好好提升自己,或者放松放松吧。 - 2020年9月
现在是2020年9月,8月底才从阿里答辩完回到学校,开始匆匆忙忙地准备秋招,今年的秋招特别地早,我完美地错过了提前批。腾讯HR面挂、Shopee HR面挂、快手简历挂、N个公司笔试挂。。。后端今年真的太卷了,各路高学历算法大佬涌入。钉钉HC不够不给转正,我和同组的实习生都被推荐去了其他部门参加面试,整个9月基本上都在这种失败和打击下度过,有时候期望越大,失望越大,不如好好准备剩下的面试。 - 2020年4月
现在是2020年4月,前两个月在迷茫和坚持中度过,依然每天刷题、学习和看面经,也是在这个月拿到了阿里巴巴-钉钉事业部和腾讯-CSIG-腾讯云的后端实习Offer。
总结起来吧,找工作/实习是一个长期的过程,要做好不断学习的准备,不要被一时的失败或者挫折击倒,挺过去好好复习,offer肯定是有的,只是满不满意而已。暑期应该还是会选择去阿里实习吧,毕竟在JAVA领域阿里的技术很厉害,钉钉也是疫情期间绩效最好的部门(听说那边转正率很高哈哈哈),想去那提升自己的视野,为后续的秋招当简历敲门砖。