暑期实习总结——生化环材本科生的大厂实习梦
回望来路总是让人感慨万千,在我结束了我漫长的暑期实习的投递之旅后,筑梦过程中的点点滴滴瞬间涌上心头……
我终究没有辜负一年半前某个下着淅淅沥沥小雨的夜晚自己做出的决定,慢慢在我的转码之路上越走越远……
谨以此文回馈牛客,记录我的所思所想,供自己警醒与回顾,供各位参考与指正
个人背景
基础背景 | 上海交通大学,生化环材之一,23届大三,gpa一般 |
技术栈 | C++/Python/Go,服务端开发 |
暑期实习
暑期实习我避开了外企,投递了十家公司,分别拿到了腾讯,阿里,百度,字节,携程,启元世界的后台开发offer或是意向,美团,OPPO仍在流程中,佳期投资终面挂掉,米哈游笔试挂掉,面经如下:
在一年半前,我只是想着作为一个非科班的选手,能在暑期找到一份实习就再好不过了,未曾想到却能在貌似很卷的23届暑期实习能得到不少面试官们的青睐
准备阶段
和大多数人不同,我是从大二上就确定了自己在大三下需要一份暑期实习的目标,那时候我也是几乎作为一个没有任何基础的纯小白去接触编程。
我倾向于把我的时间线划分为五个阶段,分别是零基础入门期,初次投递期,再次投递期,实习期,暑期实习冲刺期。
零基础入门期(大二上)
大一上我有一点的Python基础,但是仅限于照着书上的代码随意敲了几行,所以在一开始我需要选择一门主语言,我参考完知乎上大部分的回答,觉得C++更难,更高性能,更接近底层,秉持着以科班的水平要要求自己的态度,我就义无反顾地选择了C++(虽然在后面看来语言仅仅是工具而已,语言的选择并不是那样的关键)。我开始的语言学习过程是面向刷题的,在此期间,我一边就着浙大《数据结构》的慕课,一边刷力扣,但由于我的惰性,浙大的《数据结构》只学到了树的(AVL树)章节,又由于我平平的天资,力扣在初始阶段刷的举步维艰,我依然清晰地记得对于翻转链表的递归法花了大概一个小时才理解明白,但是等到几天后写的时候还是没有写出来。这段时间我就慢慢的熬着,虽然很艰难但我还依稀记得某节物理化学课上我终于第一次的弄对了翻转链表的欣喜,某次实验课上我想明白了二分查找的激动,然后逐渐到期末,我带着学到二叉树的数据结构,力扣上的100题左右以及对C++ STL的基本使用,还有对未来的焦虑结束了这段时光。
现在想起来,我发现这段时间我并没有按照正确的方法学习,也没有获得什么特别的收获,但我还是认为这是最为重要的一段时光,我觉得它是我成长路上一段必走的弯路,通过它,我觉得是我在经过尝试之后,觉得自己可以转码了。
初次投递准备期(寒假 & 大二下)
和大多数人不同,我并不喜欢把一学期学习的时间和放假的时间区分开,而只是把一天中学习和娱乐的时间区分开,所以我一天学习的时间很短,但是寒假我依然能做到每天高效率学习两个小时(实话实说,我觉得每天能够学习两个小时对我来说已经足够累了)。我还有一个习惯就是会在寒假或者暑假只带一本书回家准备在假期有时间就看看这本书的内容,比如这个假期我就选择了《剑指offer》。
也许大多数人都是从剑指offer的第三题 "数组中重复的数字" 开始做的,但我注意到了该书在第一题和第二题的内容,分别是对于类/结构体大小的判断,以及赋值运算符的重载,而对于这两个知识点我完全不了解,根本不知道这是从何而来的知识。所以我觉得我有必要系统地学一下语言相关的内容了,于是《剑指offer》便在寒假被我搁置了,我也在寒假开始了我对语言的学习。首先我在B站上找到了播放量最高的C++课程开始学习,但由于我是一个懒惰而喜欢走捷径的人,我也觉得他某些地方讲的太慢了,所以我使用倍速+跳过某些章节的方法学了一个C++基础知识和面向对象的大概,我也只是简单的听,并没有照着敲代码。然后我第一次觉得自己行了,于是我又去看赋值运算符重载,发现我还是不会(毕竟上述课程的面向对象知识点讲的也非常笼统),所以我又选择了当时在B站找到的清华大学的两门C++网课,一门貌似是郑丽老师偏向面向对象编程的课,一门是面向对象+系统编程的课,当然由于我的惰性我第一门课听了差不多一半,而第二门课所涉及到的环境变量,信号量,linux对我来说如天方夜谈,于是我也就此作罢,但可喜的是我已经能够看懂书上赋值运算符重载章节的内容了。接下来我刚看到《剑指offer》的前几题,我又发现我对指针概念的理解十分模糊,于是我又在B站以及一个国外的论坛上找到了C语言更底层的一些教学和思考,让我印象深刻的有C、C++变量所在不同内存区的讲解(堆,栈,.bss,.data段等)函数参数(值,指针,引用)以及一些二级指针的理解,至此我的寒假也结束了。
回到学校我感觉已经是时不我待了,但是我还完全没有一份拿得出手的简历,经过我的评估,我觉得在操作系统,计算机网络和数据库三个方面我完全没有涉足,同时也没有一两个拿得出手的项目,所以我决定暂且搁置掉刷题的计划,从这几个方面的八股文入手。我采取的是刷牛客网面经的方法,浏览过大部分面经,我也较为清楚地知道了每个方面需要掌握的知识点和高频问题。一开始的阶段我采取背诵+浅浅理解八股文的方法进行学习,虽然事后看来这种方式很蠢,但我还是觉得它在一定程度上加深了我对大概知识框架的熟悉,项目方面我用C++写了一个压缩算法和一个跳表,加上结合一些博文自己捣鼓了一下linux的ubantu系统以及一些及其简单的git操作,我终于有两个属于自己的项目了。在此期间我的作息也十分正常,只是把原来上课的时间用来自学cs了,每天保证两个小时学习的时间,也并没有十分热情地all in cs。
然后我就找了两家招日常实习的公司(字节和b站)投递了,不过结果可想而见,当然是都一面挂掉了,面试的时候我就意识到了自己“千疮百孔”的知识架构,很经常出现一问三不知的情况,然后我突然迷茫地觉得找实习好难,然后我就开始颓废了。
再次投递期(大二下六月 & 暑假 & 大三上九月)
颓废的时候我不学习也就每天刷刷知乎和牛客去找找经验贴,看看别人的故事用以激励自己,应该两周之后在一次因为打球投的很准而carry全场的快乐时光后,我重新拾起了少年心气,决定再冲一冲。从基础知识入手,我首先在牛客网上看了大量有关C++的面经,在此期间,听说了推荐的《C++ Primer》,《Effective C++》,《STL源码剖析》,《深入探索对象模型》这四本书,但是很可惜,由于懒散而不愿意花时间,我只是买了一本《C++ Primer》草草地翻了翻,在暑假军训的时候瞄了几眼《STL源码解析》的电子版,就把其他的一股脑地加入我的to do list里面了。在操作系统和计算机网络方面,我配合着哈工大的网课学习操作系统,湖科大教书匠的计算机网络视频学习计算机网络,当然还是之前的原因,我只是找到对应的章节听一听就浅尝辄止,但不得不说确实也搞明白了一些知识点。
然后就到了七月中旬了,和之前相同,我还是带着没怎么看的《剑指offer》回家了,暑假开始我斗志昂扬,想着要每天认真学习,可惜我整个暑假太沉迷于篮球,除了打篮球就是打电脑端和手机端的nba 2k系列游戏,所以也没干什么事情,只是按照惯例会刷刷知乎和牛客,用大概不到一个小时的时间来收藏和粗略浏览一下别人的发帖。另外就是我每天会花一个小时跟一跟某社区上的一个机器学习的课,实践了诸如LR,SVM,Xgboost等算法。
回到学校我决定再在项目方面精进一步了,我看到了C++经典传统项目 C++ Web Server,虽然我没有什么网络编程的基础,但我还是站在前人的肩膀上借鉴参考,最后搞出了一个只实现了一半功能的Web Server,在此基础上我用网络框架做了一个巨小的网络聊天室,至此,我的第二版简历诞生了。
等到9月底我准备的还行的时候我悲伤地发现貌似没有招实习生的公司了,兜兜转转我瞄准了还有hc和b站和一家量化私募投资,因为学校还行所以我顺利地过了量化投资的简历,经过笔试和面试我便成为一名C++系统开发实习生。
实习期
虽然有了实习offer,但我面临着一个巨大的问题是我如果按照学校的安排我周一到周五上午满课,下午也有不少的课,经过利弊权衡我做出了大胆的决定——翘课实习,除了必到的实验课,我几乎翘掉了所有课用来保证一周3~4天的实习时间。实习的车程距学校来回共三四个小时,所以我的一天除了地铁上的时间和在公司的时间几乎没有其他剩余了,周末需要用来打球和补作业,所以我这段时间的收获基本都来自于公司的技术提升和偶尔在地铁上刷知乎和牛客的所思所想。
实习期间,用到linux,redis,C++,Git,Python(pandas)都让我在这方面更进一步,我也配合着实习粗略看了看《redis的设计与实现》和《Effective C++》,和之前相同,我都是定位到具体章节的胡乱翻翻,并没有细读。实习的时间除去地铁上的通勤时间还是快乐而充实的,重要的是我的简历更丰富了,这也是让我更开心的。
到了期末我提前一周离职用来考前突击,因为我的考勤我扣掉了部分平时分,但后面也还是有过得去的成绩,这时我彷佛感觉到了大学真正的意义,在我看来就是追求自己喜欢的,再花一点点时间向现实妥协,完成必须完成的没那么喜欢的事情。
暑期实习冲刺期(寒假后段 & 大三下)
我的暑期实习冲刺期主要由两个阶段构成,一个是寒假后段的面试,一个是从3月后开始的冲刺期第二阶段。
寒假后段我带着第三版简历海投,投了不少私募量化,部分外企以及部分大厂,虽然表现得差强人意有了offer,但我还是决定在大三下这学期不实习了。一是没有特别喜欢的offer,二是我为了再体验一下真正懒散的大学生活,还有就是我想着再丰富一下简历,包括夯实基础,完善项目。首先是我在学校找了一个计算机学院的相关项目,主要是python做数据处理和后台搭建,html/css/js(d3)做前端开发和绘图的项目,再者就是我学习了分布式和Go的基础,实现了简单的lab,另外我还选了操作系统和计算机网络两门课,进一步完善理论知识的同时也完成了相应的小lab。而在这期间,我也一直保持着笔试和面试的进度,在笔试和面试之中积极学习。
回顾我的四段找实习的历程,从一开始的都是一面挂,到再次投递时就是能过一面,而寒假后段的面试就是能过一面而且面评不错偶尔能过二面,3月之后就只挂过两次终面了。到后期每次面试我几乎都能表现得游刃有余而从容不迫,这时我就知道,我做到了。
后记
行笔至此不由感慨万千,犹记得刚做出决定时身边没有任何一个人支持,只是在有所小成时得到众人称赞,大概人生就是这样,有些路是得自己默默一个人走的。
我只是记录个人的转码历程,要是你和当初的我一样迷茫,想问我哪种路线适不适合有没有更优解,我只能说我知道这个问题对我的答案,而你的答案得你自己去探寻,我最由衷的建议就是树立目标制定计划任然后不断试错不断改正不断试错不断完善不断试错不断精进,还是那句话:难道向上攀登的路不比登上山峰更令人热血沸腾吗
#暑期实习##2022春招#