三本+双非拿到小米offer,我的经验总结
Posted Datawhale
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三本+双非拿到小米offer,我的经验总结相关的知识,希望对你有一定的参考价值。
Datawhale干货
作者:王大鹏,小米数据开发工程师,Datawhale成员
校招的世界其实很真实,拥有优秀天赋和学校背景的人,往往能在校招中拿到评级更高的offer。但天才的故事有些司空见惯,真正激动人心的是平凡人也能靠着不懈努力实现逆袭。希望自己一些微不足道的经历能够切实的给目前或者将来要准备校招同学一些启发和帮助。
一、我的个人背景
我是一名计算机专业的学生,三本+双非出身。今年秋招拿到了一些SSP和SP评级的offer,目前在小米做数据开发。接下来从复习方式、学习路径及总结三个方面,来分享下自己的经历。
二、对于双非院校找工作,我自己的经验总结
现在去搜索各个经验贴,看到怎么复习拿offer,最多的回答一定是'去刷题'。我想提醒一点,去看或学习别人的成功经历之前,一定要考虑下对方在学校及经历方面的加成,对于自己是否适用。比如对方是名校出身,那么即使他没怎么做过项目,只要专注于刷题,也是可以拿到不错的offer,但是如果你的学校不是那么出名,如果你也选用这条路线,可能结果会事与愿违。结合我自己的经验,我认为一个好的复习路线可以是:面向简历复习。
1. 准备一份合格的简历;(后面会说怎么去做)
2. 在面试前,打开你的简历,拿出一张A4纸,假想你自己是面试老师,然后对着这个A4纸直接手撸,先自我介绍,再到项目介绍,再到自己负责哪个模块以及其中遇到的挑战和难点;
3. 技术面一般分为基础知识和项目。基础就是就是计算机基础:数据结构、计算机网络、算法、设计模式这些,这些是无论你写不写到简历上,都会被问到。其次是你简历里的项目内容,正常面试老师会问你在项目里做了什么,然后以某个点来切入。打颗栗子:“我在项目中用了协程的方法,提高了读取效率。”那么面试老师接着可能就会问,如何创建协程的?协程和多线程多进程有什么区别?为什么协程会比多线程高效等等。所以你写项目到简历时,一定要往前考虑到三步,给自己开路而不是挖坑;
4. 对于基础题的话,平时要多积累。我的积累方法的底层逻辑就是费曼学习法,我学到一个点时,我会试着用自己的话把这个点总结一遍。网络、数据库、操作系统这些基础题,其实问来问去也就那几道题,可以去博客上去用自己的话总结,后面写的多的话也可以把blog链接挂在简历上,也更有总结的动力。我之前写CSDN,现在访问量已经有70w+了(id同精神抖擞王大鹏);
5. 自己在总结知识点时,务必要理清楚每个知识点之间的一些联系,看看它们之间可以通过什么来进行链接。这样不仅可以让自己更深刻的理解知识,还有个好处就是在面试中可能会遇到自己不熟悉的知识点,但你经过整理后会理解其中的底层逻辑,可以把问题串到你熟悉的知识点。再打颗栗子:面试老师问你解释下HashMap,你突然忘了这是个什么,但是你对多线程很熟,你可以最后提下它是线程不安全的,把问题引入多线程;或者你数据结构很强,那你就主说它是红黑树,把红黑树给讲透彻了;再或者你对JDK的特性比较熟悉,你可以主说它在JDK1.8进行优化,同时把JDK1.8的特性阐述。前提是你确实对某方面比较熟悉,如果都不熟的话,就说自己正在学,用的比较少吧。
6. 针对算法,算法是贯彻在日常学习的,这个在下文的路径学习中再单独来说。
三、知识是学不完的,从项目入手学习
对于路径而言,我的想法是做好减法,即先学项目需要的。对于校招来说,首先要投简历,简历上需要有项目,而计算机基础和算法这些是学不完的,所以先准备项目,再根据项目来准备基础和算法是比较必要的。
1. 项目准备:
校招中,针对项目的面试其底层逻辑是什么?我的理解是以项目角度来侧面考察基础的层次,通过你对项目的理解,从而衍生出各种或底层或基础的东西。
准备项目这块光自己看视频远远不够,需要自己去提炼出里面的重点内容,且对于项目中的难点要反复迭代,形成自己对于架构的一套理解。
说了这些,有些同学可能觉得说的太虚。那我直接在这里打颗栗子(算法可能部分适用):
1. 先在网站任意搜索一个项目,通过目录大概可以看出来这个项目是个电商,包含的模块有:电商搜索、仓储、缓存、下单支付、商品信息增删改查等等;
2. 假如说你这里选了电商搜索作为自己项目的一个难点,那么接下去你就需要深挖这里的业务逻辑和技术实现。去谷歌下同类型的这个项目,都怎么来做搜索这个模块的,用到了哪些技术。完成这一步,基本可以确定你项目的业务背景,你负责的内容,以及实现过程;
3. 接着确定技术难点,难点可以分为业务难点和技术难点。业务难点是业务场景,技术难点就是框架及选型方案;
4. 如果是业务难点,还是拿这个商城打栗,库存问题如何与逻辑/物理产品设计对应,可以去搜索商城的多个不同的做法,然后从这几种不同的做法抽象出来比较好的业务逻辑;如果是技术难点,先去假设,比如在高并发下商品库存更新了,我们怎么解决?接着再去研究下这个高并发情况的理论及代码实现。
2. 写简历:
很多同学都看过或听过简历分享,这里需要注意的是,要考虑到分享老师的学校背景及经历,是否适用于自己。在自己的简历中,自己的哪些情况要详写、略写、倒置或者减掉。
校招简历要写的内容一般就四个模块:个人信息,教育经历,实习经历(如果有),项目经历。
同时注意三个误区:
上下排版而非左右排版。人一般阅读简历时都是从上到下,从左到右的顺序,因此简历需要遵循一个上下排版的规则。有些简历模板是左右排版:把不太重要的信息放在了左边,而把教育背景和工作经历这种重要的信息放在了右边,实际上会很不符合阅读习惯。
经历丰富也不要全怼上。很多同学写简历时,都喜欢把过去的经历统统整到简历上。而岗位的基本逻辑,并非看你这个人厉不厉害、经历丰富不丰富,而是看你适不适合这个岗位。如果你的一个经历与岗位需求没有关联,甚至还相差很远,那么写上就不是一个很好的优势。简历里应该体现的,是你的这一段工作经历,与应聘这个岗位之间的关联。
主观评价不要过多。一些同学在写简历时,很喜欢加上过多的主观评价。一份简历,如果想要获取对方的认可和信任,一定要尽可能的去客观的描述,而不要主观性过强。通过实际例子和数字量化的方法,来客观描述。
针对各个模块的详细写法,我之前的总结可参考:
https://mp.weixin.qq.com/s/8xlVWq_dmociKZLfPTFr_w
3. 复习简历
写好简历后,就是复习简历了。
第一步,画个思维导图框架,自己在脑袋里捋详细内容,看能不能串联起来,能否串联起来的标准是:对于和项目相关的基础部分的通用知识是否可以融会贯通,并与自己的项目产生结合。
第二步,拿一些公司练手,先面一些不太意向的公司,把自己的感觉找到,并且能对自己简历上的项目、技术,做到很熟悉、对答如流的程度。不断从各个模块完善自己的面经知识库和薄弱点;
第三步,复盘自己面试过程,改进迭代。下图是我不断迭代形成的各个模块的清单:
第四步,投意向大厂。等到自己感觉面试中差不多可以做到有来有回了,且自己对每个模块的步骤有些流程化了,再开始投自己意向的大厂。
4. 刷算法题
算法这块要根据你自己的实际情况定路线。如果时间充裕(比如大二或者研一研二开始找实习),那么大可以系统学习数据结构和各个算法模块。但是对于大多数同学来说,我的建议是直接从算法题目反推着去学数据结构,需要什么去有针对性的学,以解答题目为目的的学习,会更高效一些。
其次概况以下几个注意点:
一般不要把太大量的时间去复习题目太长或比较怪的题。面试时的时间有限,所以面试老师一般不会出一段很长文字的题让你去做阅读理解,我们在刷题时,可以把80%的时间用在精炼的问题上;
刷算法题要归类,刷完一题后整理时,要把它归类到某个主题下;
一道算法题的题解可能有多种,不要浪费时间在探究多种解法上。当然优先去理解最优解,最优解看不懂再看其他解法。
四、现在放弃,还太早,肝就完了
在校招过程中,投了几家简历而没得到回应的情况非常常见。很多同学这时候就开始自我怀疑了。但是你要知道,有时没回复的因素很多,可能问题也不在你。只有你尝试了所有的机会,比如投完了全中国的所有公司,还是一家都进不了,那么再开始自我怀疑。现在放弃,还太早。所以肝就完了。
同时一定要有不卑不亢的心态,不要觉得自己是双非就低人一等,或者别人是名校就非常仰慕。Datawhale也有很多名校出身的同学,我平常的心态就是以发展的眼光来看自己,去请教学习别人的优点,同时也要看到自己的部分优点,然后对自己加以改造。比如身边有一个实习生,他虽然比自己晚来了几个月,但是我发现他接触学习新业务时比我要快很多,那我私下里里就可以和他讨论请教下他面对一个新领域的业务时,是怎样去理解的,也是会很有收获。
以上就是自己的一些不成熟的经验分享,希望能够帮助到大家,少走弯路。
整理不易,点赞三连↓
以上是关于三本+双非拿到小米offer,我的经验总结的主要内容,如果未能解决你的问题,请参考以下文章
双非院校,0项目经验,三个月入职大厂自动化测试岗,月薪30k+