非科班转码一年,秋招总结&记录
对自己转码这一年走过的路,做个记录,希望能帮到一些同学。有点想到啥就说啥,所以写得比较凌乱,不喜欢不许喷我!!!
个人情况
本硕某末985非科班(车辆/机械),读研前0代码基础,唯一接触过的代码就是matlab相关了。最初读研选的方向的是智能驾驶,其实做的东西就是CV相关,当时整天看的都是机器学习、神经网络、吴恩达的课程这些东西。然后去年疫情在家,了解了一下就业情况,不了解还好,一了解吓一跳——如果找对口工作,就要投算法岗,而我这导师其实做的是传统机械方向,没法在这个方向提供论文和项目等支持,而自己的水平更无法在相关竞赛上获奖,于是在两位提前转测开的hxd的劝说下,我开始了我的转码路,这中间间歇性犹豫,最终大概是在去年六月份正式转码,当时选择的语言栈是C++。
学习过程
先放链接, https://www.zhihu.com/question/278682736/answer/1331073476 这是我转码过程中最终确定学习计划参考的一篇文章,见仁见智,仅供参考。个人认为,学习过程中,借鉴他人思路是好的,尤其是我们非科班,不知道计算机专业课的优先级。但切忌看见啥就喜欢啥,一直徘徊不定、瞻前顾尾,早点确定好自己的学习计划,就可以早点全身心投入学习。
再列举一下我自己在转码过程中看过/周边许多人推荐的书籍:《C++ Primer》、《Effective C++》、《STL源码解析》、《深度探索C++对象模型》(后三本书的译者/作者都是侯捷老师,他的视频强烈推荐,如果只看书太晦涩了);《深入理解计算机系统》(大名鼎鼎的CSAPP)、《计算机网络 自顶向下方法》、《TCP/TP详解卷1》、《图解HTTP》、《大话数据结构》、《MySQL必知必会》、《MySQL技术内幕 InnoDB存储引擎》、《Linux高性能服务器编程》(人手一个的WebServer项目的出处)等等。
最后说结论,以我选择的C++语言栈为例:C++语法&计算机网络&操作系统&数据结构与算法这四项是校招相关岗位的重中之重。其中我建议掌握基本的语言语法后(也就是能敲简单的代码),就可以刷LeetCode了,哪怕是一天一题,两天一题也可以,但一定要坚持刷题(这也是我找春招实习的血的教训,我当时就总是推迟刷题,想着抽空集中刷个几十题。但算法题是个量变引起质变的过程,刚刷题的时候很痛苦,很多思路/方法都没接触过,等到临近面试才开始集中式刷题是完全来不及也刷不动的。当然,有了做题基础后完全可以集中刷题,我在秋招的时候就是集中刷了几天codetop的高频题当复习,我个人很推荐这个网站,是牛客的一位红名大佬胖子哥做的)。对于做题的数量,我个人秋招时的LC题量是300题左右,算是个中位数了,我觉得足够应付国内大部分面试算法题了,同样仅供参考,毕竟算法题要看个人天赋和临场发挥了。
而数据库的优先级可以往后放放,而其中校招最常见的MySQL优先级>Redis,至少我春招实习过程中,没有一次被问过redis,秋招过程中也很少被问,就算问了说没学过也影响不大。当然,最好还是都学习一下,掌握常规的八股文。另外,还需要学习了解一下基本的linux操作/常识,这在B站大学有许多视频,尚硅谷/小甲鱼等都不错,挑个适合自己的就行。而计算机组成原理,我个人觉得可以不看。
对于八股文,我觉得不要纯背,不然面试官一问细点就GG。或者说,至少等自学得差不多,看完相关知识的书/视频后再去背。把看面经,查答案,总结八股当成查缺补漏的一个过程。
春招实习
我在去年十二月底份过了一遍demo项目webserver后(这里提前说下,我被这个项目坑惨了,当然是我自己的原因,一定要对自己写到简历上的项目负责),就开始找春招实习了:
第一家面试的是CVTE,结果因为自学的知识不牢固,也没怎么看八股文,问啥啥不会(大端小端,C++拷贝构造函数的形式,智能指针这些问题我都回答不出来),面试完简直怀疑人生,觉得自己太菜了(当时的确菜到爆炸),于是就暂停投递,先总结八股文;
第二家面试的是科大讯飞,比较顺利OC了,因为工作地点就在家乡,当时也愿意去,可惜由于疫情,年前无法入职,最终年后由于拿到其他offer就没有去了,但还是感谢给了我第一个机会。由于手上已经有合适的中厂实习offer了,于是我后面面试的都是相对而言的大厂:字节、阿里、腾讯、百度、华为。
第三家面试的是字节,这里感叹一下字节的面试效率的确高,投递没多久就约面了,由于是第一次视频面(前面两家都是电话面/腾讯会议没开视频),而且是大厂,面试时很紧张,面试回答得稀烂,面评估计很不好看,当时就决定暂时不尝试字节了,以免面评花掉!这里强调一下,别信各方宣传的实习招聘/提前批招聘不影响后续招聘(除非说明了部门直招,不录入系统),是个大厂都有面试系统,会有详细的面评记录,如果面评很差,很容易给捞你的部门造成不好的印象,如果面试间隔很短,甚至可能会出现没有部门愿意捞你的情况,毕竟没有人相信你会在那么短时间里有这么大记录。
另外几家的面试情况是:
腾讯估计面了有七八次,其中wxg某部门二面挂,csig某部门二面挂,pcg和csig其他部门也挂了几次;
阿里一面了两三次,大家也知道阿里一面基本是资格面,不太难,我个人也觉得面试情况还好,但最后都不了了之了(其中一次让我印象深刻,让我写算法题,写出来之后,说我的解法是错误的(可我当时前不久才从LC看得最优解),争论了半天,他代入了几个测试用例发现没问题,然后又说我的时间复杂度不是最优,又争论半天,等面试完我找到LC原题一看,我的解法和时间复杂度都是最优的,直接晕了);
华为主管面后排序挂了;
百度OC了,之后也去北京实习了三个月,部门是小说研发部,语言栈主要是PHP/GO,从校招角度考虑,果断选择了GO。这段经历我稍微说下:我整个转码过程,在春招/秋招时都没太大压力,首先我对自己要求没那么高,毕竟互联网的中厂的薪资就能吊打传统车企/研究所了,我想着自己能去个中厂或银行就够了,这点能力我肯定还是有的,只是早迟问题;其次我觉得转码只是我的一个尝试,如果不合适,大不了我就回车企/研究所。但是在实习半个月时,我压力巨大,有时候午饭一个肉夹馍都吃不下(作为对比,我实习第一天午饭吃了三个菜两碗饭),毫不夸张,我当时已经和家里人和朋友说,准备离职了(如果当时离职了,我肯定就不继续转码了)。而这个压力主要来源于我自己,组里的同事、mentor、主管其实都挺好说话,并没有人push我。只是我从纯理论第一次到工程实践,啥也不会,业务代码理不通(php+go),Linux系统不熟悉(连cd目录都不会用tab补全),git老出错(冲突不会解决,一直找日志号reset)等等。当时mentor就和我说,“可能你的一些问题我们发现不了,或者觉得不是那回事,建议你找XX聊下,他之前也刚入职,也和你差不多大,可能面临的状况和你差不多”。于是我和这位比我大两岁的正式员工聊了聊,最后被开导成功,熬过了啥也不明白的两周,之后顺利度过了蛮充实的两个月。这段实习还让我改变了自己的想法,不一定就要去大厂的核心组工作,虽然可能技术成长快,但也可能面临着加班,很大的压力,新人背低绩效等。而一个相对稳定的“边缘”部门,可能日子过得也不错。至少我实习时,早上十点上班,组里许多同事晚上八点多就能下班,组里氛围也不错。人各有志,对我个人而言,生活>>事业,反正都是打工,生活快乐第一!
这里我也建议,有条件能去实习,就尽量实习,一方面可以熟悉实际生产环境,还可以为简历增光;另一方面,会给自己带来一些不一样的思考,毕竟想当卷王和能不能当卷王是两回事。
秋招公司
我实习到六月时,发现许多企业已经/快要开启提前批,而自己算法题和八股文都已经两个多月没看,十分生疏了,这样参加秋招等于送死,再加上自己月底正好有些事,于是在六月二十几号结束了我三个月的百度之旅,回到了学校。经过了半个月的简单准备后,开始了投递。从七月到九月,我陆陆续续投递了有六十余家企业,这之中有的是提前批,有的是正式批,在时间线上也不作区分:
其中简历挂了的(官网流程一直不动,未进入笔试/面试阶段的我都算作简历挂)有:米哈游、一点资讯、猿辅导、快手、深信服、soul、陌陌、IBM、大华、地平线、网易雷火等。有的是的确不达标(比如yyds米哈游);有的可能是overqualified;有的是投递PM岗位试试,肯定被挂;有的是自己SB,认为测评不重要乱做被挂的;还有的是公司SB,比如我认识的我校的科班/非科班无人通过某厂的实习/秋招提前批的简历筛选。
其中笔试完没响应的有:拼多多,爱奇艺,蔚来,虾皮,莉莉丝,大疆,zoom、亚马逊、英特尔、微软、京东等。这里我也对有的也略作说明:拼多多是的确AC太少笔试挂了;亚马逊第一次笔试其实题目真的不难,但是系统故障,安排补测直接就寄了;英特尔笔试只能用C/Python,根本不会,GG;蔚来和虾皮的提前批和正式批笔试都做了,有的还AK了,但没给面试机会,写这篇帖子之前我是真想喷,但写到这,还是算了,只能怪自己简历不够优秀吧,但想提个建议,大家辛辛苦苦腾出时间做笔试,如果hc不够,要么你题目弄难点,用区分度来刷人,要么直接简历卡严格点,笔试AK或几乎AK不给面试,这不纯闹着玩浪费我们时间么!
其中自己因时间冲突放弃笔试或因故拒绝面试的有:TCL、小米、旷世、商汤、garena、360、YY、恒生、B站、oppo、小马、TME、腾讯云子公司、小红书、斗鱼、网易互娱、顺丰、花旗、西山居等;
最终参加面试的有15家:MTK、虎牙、TP-LINK、字节、科大讯飞、腾讯、携程、Bigo、百度、阿里、美团、华为、农行、momenta、知乎;
其中已经OC的有TP-LINK、MTK、字节、百度、美团; 知乎和讯飞在节前刚三面/hr面,华为大池子懂得都懂,不过hr也主动告知在走审批了,这三家问题应该不大,这一共有8家;
农行线上二面后至今无体检消息,momenta一面完问是否接受实习offer,果断拒了;
虎牙二面主管面纯聊天,只问我本专业做了什么,然后挂了,有些懵逼;
腾讯IEG魔方工作室二面挂,虽然挂了,但一二面的面试体验都不错,二面算法题偏C,看我写得磕磕绊绊也主动给我换了,气氛也挺愉快,还让我回忆起了初中玩的洛克王国。算上实习,面试腾讯有十次了,可能真的是越想要的越难得吧TAT
接下来,首尾呼应了,一定要对自己写到简历上的项目负责,剩下来的几家我全是因为WebServer挂的:腾讯csig一面,携程一面,bigo二面,阿里一面。前面我也说了,这是去年年底做的一个demo项目,当时本来就很菜,实习之后也都没怎么管过了,但我秋招还是放在了简历上了。这就造成问我这个项目时,“XX是怎么实现的”,“XX有什么要注意的”等一堆关于这个项目的细节我全都回答不上来,这不挂我还能挂谁?而且估计面评也不太好看。阿里的面试官直接叫停了我的面试,然后给了建议“如果只是把代码抄了一遍就放在简历上,这样真的不太好”,也是这次之后,我把我电脑上的源码重新找出来,一个一个模块重新梳理了一遍。然后在这之后问到这个项目时,面试官的评价都是“看来你这个做得蛮深刻”、“你确实下功夫了”这类。但是挂掉的也无法复活了,队友挂机可以remake不掉分,自己挂机不仅掉分还要被惩罚。希望大家能吸取我的教训,宁愿被多问些八股,也别把自己不熟悉的东西写简历上,一定要对自己写到简历上的项目负责!一定要对自己写到简历上的项目负责!一定要对自己写到简历上的项目负责!
可以看到,我投递了六十多家,最后只面试了十五家。所以大家不要不好意思海投(不需要海投的大佬除外),别想着拿了offer不去是不是不太好。一方面,面试是越面越熟练,越有感觉,面多了,才能应对自如;另一方面,你也无法确定哪些公司你最终能拿到offer,所以只能多尝试。拿到了兜底的offer后,完全可以拒绝自己绝对不会去/无法拿来argue的公司的面试/offer,至少我个人是这样的,我也很讨厌恶意集邮(特指恶意集邮)的一些人,真就拿自己不当人,卷中王,卷中皇?
结语&感谢
写得像流水账一样,但写到这,太困了,等会还要健身,晚上还要游泳,就不改了哈哈。最后感谢转码道路上提供帮助的各位:本科到研究生都是同学,带着我转码的黄金三镖客,offer收集机阿炜等同门战友,百度小说研发部的两位mentor和会哥、昂哥等同事,等待广东相会的写go的靓仔姜总、鱼总,阿秀校招群的各位伙伴们等等,希望大家秋招/春招顺利,拿到心仪的offer!