面试准备架构

非科班拿下阿里offer,我做对了哪些?

2019-01-20  本文已影响0人  3f29eb5edacd

本文转载自-公众号算法修炼笔记

2019届校招结束,坎坷沉浮,尽尝酸甜苦辣,辛苦鏖战,终究获益良多,将所得总结于此,以纪念一个新的开始。
注:本文首发于牛客网https://www.nowcoder.com/discuss/122463,有修改。

目录


0. 概述

首先介绍一下我的基本情况,让大家有所参考。

然后要明确,offer与认知思维、专业技术、面试技巧以及运气都分不开,即offer = 认知思维 + 专业技术 + 面试技巧 + 运气

接下来我将围绕认知思维、专业技术面试技巧以及学习资料展开介绍。

1. 我的练级之路篇

1.1 选择与方向

关于我的练级之路,我想从一个面试经常问到的问题谈起:你为什么要从搞雷达转到搞Java开发呢?为什么从一个非常高端的领域转到一个简单的应用领域呢?你不觉得浪费你的才能吗?是的,我的研究方向是雷达相关,与Java开发完全不搭边,为什么要转呢?主要原因有以下几点(注意,面试的时候可不能这么回答呀,童鞋们,我这里只是说了个大实话而已,面试的时候得包装啊,童鞋们):

1.我发现我不适合做雷达方向的研究,整个雷达领域其实涉及的知识点是非常多的,需要掌握雷达相关理论和雷达设备本身以及战场环境3个纵深领域的知识,而雷达理论、雷达设备与战场表现三个领域的表现其实并不完全一致,想要做出成绩,其实需要经历大量年限的积累,对整个雷达领域有了一个整体的积累之后,你才能做出有效的成绩(注意这里的有效是指不是骗国家钱的那种研究,而是实实在在的能用在实战中的研究,不细说了),因此整个领域的发展不是循序渐进的发展,而是断崖式厚积薄发的发展,因此其实挺难的。

2.雷达方向的就业面很窄,基本上主要去研究所工作,而研究所的工作氛围并不适合我(说的直接点,事实上是工资更加不适合我)当然了,现在其实随着自动驾驶的兴起,雷达算法工程师也逐渐可以去民用公司赚钱,这点其实非常好。

因此想要换一个方向去做,或者说换一个技术路径去发展,但是毕竟是换一个方向去发展,时间和精力有限,需要选一个难度较低的切入点,因此选择了 Java后端开发工程师

既然谈到了选择,这里需要提醒一下大家,在找工作之前,一定要想想自己适合做什么样的工作,自己感兴趣的是什么工作,这点非常重要。

1.2 制定计划

谈完选择,定下方向,接下来就是制定计划了。整个准备过程其实一直都是制定计划、执行计划、打破计划、重新制定计划、重新执行计划的循环。因此我下面就直接介绍我都做了哪些事情。直接上图吧。

image

在这个过程里你会发现,生活从来没有准备到完美的时候,计划永远都赶不上变化,那么校招也是一样,你永远不会有准备好的那一天,那就在准备了多少就直接上战场吧。

1.3 执行计划

既然知道了该做什么事情,那么你就应该像一只野兽一样,开始捕猎,不见血不停止,你需要拼命地野蛮生长。

(1) 2017.10.1 - 2017.10.15 我其实是2017.10就有意识的开始准备找工作了,但是那个时候需要干实验室老板的任务,因此都是每天项目任务完成之后,开始零散的学习Java基础知识,当时每天项目任务完成,开始复习的时候,基本都是晚上11点左右了,每天基本上学习到凌晨0:40左右,回宿舍休息,第二天接着来。就这样,学习了差不多有半个月,后面项目越来越紧,需要投入的时间越来越多,然后就开始中断了。对Java有了一个整体的认识。

(2) 2018.2 直到寒假放假,大概2018.2 才有了2周完整的学习时间,这2周,深化了一下Java基础知识,Java基础基本上已经有一个全面的了解了。3月返校,老板的任务更重了,基本上挤不出什么时间复习,因此我加班到5月中旬,把我所有的相关的任务全部做完之后,跟老板商量,能不能开始找工作,不再做实验室项目了,老板曰,可以。尽管后面老板还找我,但是其实已经没有那么频繁了,因此我开始有了一定的时间复习,但事实上,其实并不够,其实还是有很多实验室项目的事情需要做,但是好歹可以有自己的时间复习了。

在这里我要给大家一个建议:当你实验室活很多的时候,你需要给你的老板去说你即将要找工作的事情,去和他商量,为啥这么做呢?首先,老板对你毕业有身杀大权,你需要征求他们的同意,才能有一定的时间去找工作,不至于发生因为找工作而没有完成实验室任务,导致和老师发生冲突,那就不好了;其次,你提出找工作的事情,其实是给老师释放一个信号:你要找工作了,希望老师能少安排活,即使他最后没有少安排活,也会降低对你完成任务的期许,这样不容易造成冲突。

(3) 2018.5.15 - 2018.6.15 正式复习开始了,在这段时间里,开始大量复习计算机网络、Linux、数据库(MySQL, Redis)的知识,大量总结归纳。同时呢,也开始准备一个Java后端的项目:这个项目其实就是叶神的高级项目课https://www.nowcoder.com/courses/semester/senior, 然后边做边学习Spring Boot,Spring,MyBatis这些框架,同时也加深对数据库的理解,并且有意识地开始学习如何优化代码,如何引入设计模式。 在整个项目的学习和准备过程中,我要给大家一个建议:那就是准备校招的时候,其实应该以结果为导向,以实战为线索,在实战中,在项目中去应用自己学习过的知识,同时学习新的知识,通过迭代来将知识、能力以及思维逐渐形成一个体系:知识-思维-能力-案例 四位一体的体系。

(4) 2018.6.16 - 2018.7.15 这段时间里,最重要的事情莫过于算法了,在这段时间里,主要的工作就是看算法相关的书籍,了解算法基础知识,然后开始刷题,加深理解。

在学习算法的过程中,其实,也一直接着做Java后端的项目;同时呢,还在深入的学习JVM, 学习设计模式。

(5) 2018.7.16 - 2018.8.8 这段时间呢,主要完成Java后端的项目,同时,伴随着Java多线程、设计模式的学习,然后开始复习计算机网络、Linux、数据库等。

(6) 2018.8.9 - 2018.11 这段时间呢,就开始了大量的笔试,面试。

1.4 小结

其实整个校招准备的过程中,就是一个制定计划、执行计划、打破计划、重新制定计划、重新执行计划的循环。在这个过程里,你会被很多乱七八糟的事情打断,你需要不断平衡实验室工作和校招复习之间的准备工作。这里你就需要采取很多策略,去保证你的复习时间和复习质量,同时你也需要采取有效的心态和认知去对待整个过程。

整个校招过程中,你会发现,你的认知和思维会影响你的技术准备、面试发挥,你的技术准备的程度、面试发挥的好坏又会反哺你的认知和思维,整个过程是一个稳定自我,提升自我,然后挑战外在的一个过程。

下面就详细地介绍一下,该如何准备。

2. 认知思维篇

2.1 战略悲观与战术乐观

我在学习过程中,一直有个态度,就是战略悲观与战术乐观。什么意思呢?解释一下:

所谓的战略悲观是指,在整个准备的过程中,心态上,要认识到自己永远都不可能准备完美,永远会有缺失和漏洞,这是很正常的,甚至单纯的一个知识点,以现在的能力,每个人都不可能准备到面面俱到,因此不要苛求自己,不要追求完美主义,抓大放小,抓住主要矛盾,解决核心问题,这是很重要的。

所谓的战术乐观是指,一旦要参与战斗,一旦去笔试,去面试,那么你就认为你是准备好的,在这样的情况下,你要明白,你需要做的是发挥出你现有的水平,发挥出你当下的水平就够了,而不是去瞻前顾后,认为自己这也不会,那也没看,不要管那些,你要做的就是自信地去应对每一场笔试,每一场面试,把你会的发挥出来,而且每次战斗都要比上次要进步,那么你的目标就达到了。

因此,在整个校招的准备过程中,你需要做到:

整个校招由大大小小多场战斗组成,你要赢的是最后的胜利,而不是某一场的胜利,因此自信地去应对每一场。所谓胜败乃兵家常事,单场的失败只能证明你当下没有准备好,你要做的是查漏补缺,不断精进,迎接下一场战斗。其实,当你参加一定场次之后就会发现,哎呀,原来套路是一样的,那个时候你就可以开始收割了。

记住:战略悲观与战术乐观做一个长远有野心,当下有信心,事后有决心,正确认识成败,立足长远的求职者

2.2 自由与平等

我在面试的过程中,保持的态度是自由与平等,什么意思呢?解释一下:

所谓的自由与平等,指的是面试者和面试官之间是平等的,面试者与面试的公司之间是平等的,没有任何的等级之分,这里的自由与平等,既指个人尊严与人格的平等,也指面试者和公司之间的选择平等,双方没有任何的权力和资格去藐视和歧视对方。这个非常重要。

面试者在参加面试的时候,需要保有自由与平等的态度,要做事先做人,要认识到你与面试官之间是平等的,首先保持你自己的人格尊严,然后再考虑面试,因此你没有必要对面试官卑躬屈膝,低声下气,没有必要惧怕对方,没有必要去紧张,见面了,一声干净利落地“老师好”或者“面试官好”,然后一字一句的清晰地去与面试官交流你的观点和主张,这个非常的重要。不要因为一个面试而丢掉了自己的骨气,这远比你面试本身更重要。

既然是自由平等的,那么面试者与公司之间的选择也自然是自由平等的,有时候,你可能会发现自己明明准备的很好,面试交流的也很好,但是就是被挂了,为啥?只能说明你的面试不符合这个公司的招聘标准,只能说明公司认为你不合适,不能说明你不行,或者你的方向选择是错的,尤其不能说明你的智商有问题,你要做的是,心里淘汰掉这家公司,然后接着下一家。

记住:自由与平等做一个自信,大方,自尊,平等的求职者

2.3 胜而后战

是故胜兵先胜而后求战,败兵先战而后求胜。 - 《孙子兵法·形篇》

这句话是说,两军交战,胜利的队伍在战斗之前就已经做了充分的准备,胜利是准备好的结果。

这句话其实很好地说明了,整个校招,若想取得好的结果,其实得早点开始准备,尽全力地早点开始准备,要明白,开始准备的早,不一定结果就好,但是准备的晚,大概率是很难取得自己满意的结果的。

孙子有云,“凡战者,以正为合,以奇为胜”。这句话是说,作战,先要把正面的兵排好,要排的不偏斜,合乎法则,这叫正;如果此时你还有多余的兵力,你就赢了,这叫以奇(ji)为胜。

这句话其实很好地说明了,整个校招其实不止你自己要复习地好,你要复习地好到干掉和你竞争同一个岗位的人,那么你就应该比你的同行多做准备,不仅要充分的准备,而且要额外的准备。

曾国藩,一代文人,但是在打仗上确实甚为了得,为啥呢?因为老爷子喜欢“结硬寨,打呆仗”。老爷子打仗的时候,大部分时间,都在挖沟,基本上他参加的战场,都是沟壑纵横。他先用结硬寨的方式把敌人围起来,限制敌人的行动能力,使自己利于不败之地,然后再徐徐图之,以求胜利。

曾老爷子这个方式,其实也正是我们校招的方式,应对每一场面试,我们要做的就是掌握核心知识点,尽最大努力,做尽可能充分地准备,使自己在专业能力上立于不必之地,然后徐徐图谋更好的待遇。

记住:凡战者,以正为合,以奇为胜。以结硬寨,打呆仗的方式去尽可能充分地准备校招(其实有时候也意味着尽可能早的去准备),确保自己在能力上能立于不败之地,那么剩下的就是尽情发挥,然后收割校招的胜利果实了。因此,做一个用笨办法踏实复习的求职者

2.4 军团作战

校招,其实不是一个人的战斗

整个校招过程中,信息海量,一个人很难兼顾到所有的情形,例如你无法关注到所有公司的求职信息,你无法了解到所有公司的情况,因此你需要找一群小伙伴,一起去奋斗。

所谓军团作战,就是指,找一群志同道合的小伙伴,组成学习同盟,互相交流学习,互相沟通经验,互相共享求职信息,攻守相伴。这样的团结互助其实不止体现在信息上、能力上,更体现在学习过程中,相互之间的心理的支持和关心上,这些都很重要,大大提高了校招的效率和成功率。

记住:军团作战。提高准备效率,做一个团结合作的求职者

2.5 提前准备

所谓的提前准备,是指:

一定要注意,提前批的难度和正式秋招的难度是有区别的

说明:

3. 专业技术篇

3.1 概述

关于专业技术呢,是指你的硬实力,硬实力的考查呢,主要从2个角度进行:

宽度在一定程度上决定了你是否能够进入一家公司,深度则决定了你offer的等级。对于bat,甚至更好的公司来说,有时候深度甚至可能决定你是否能够进入这家公司。

3.2 专业技术

一门语言(以Java为例)

(1) Java核心知识

(2) JVM

面向对象与设计模式(了解常用设计模式及其应用场景、示例)

数据结构与算法

(1) 时间复杂度和空间复杂度分析

(2) 常用的数据结构及其特点

(3) 常用算法

(4) 常见的手撕代码问题

计算机网络

OS

数据库MySQL

数据库Redis

Web与常见框架

分布式架构

项目

(1) 准备项目对于秋招而言是非常重要的,为啥呢?

(2) 如何准备项目呢?我以我准备的Java后端项目为例说明,即叶神的高级项目课

实习

关于实习,我没有去实习过,因为实验室老板不让去,我会结合去实习的同学谈谈实习的建议:

4. 面试技巧篇

4.1 形象和谈吐篇

面试过程很短,对于一个人的认识和了解也很有限。那么如果你的技能一般的话,就需要加强形象和谈吐了。所谓实力不够,形象来凑。

形象方面,最好穿工作便装,休闲的也可以,但是要干净、整洁,不要有异味、不要邋遢(刮胡子,梳头发,熨衣服,这些都很重要)。尤其是HR面,基本上都是小姐姐,不要吓到她们。

另外,保持微笑,表现得热情、开朗和幽默非常重要。每个人都喜欢积极乐观向上的人。交谈的时候,不要挤牙膏,别人问一句你答一句,要直接把前因后果都讲清楚。最好能够以讲故事的心态分享你的故事,尤其是hr面,最好能够把hr妹子逗笑,但是切记不要撩。

说话的时候,要看着对方,一方面,这是对对方的尊重和礼貌,另一方面,这也是一种自信。就算没有回答好,也不要低着头,不要像做错事情一样。万一碰到有说不清楚的内容,不要犹豫,直接上图。对于比较复杂的或者面试官听不懂的问题,一定要换个思路表达。

4.2 心态篇

面试的时候,你要保持一个自信的心态,无论你准备的到位与不到位。

面试的时候,紧张是正常的,但是你要通过前面的自我介绍(如果没有自我介绍的话,前几个问题回答慢一点)的时间来调整自己的紧张。

注:详细的心态管理见 2. 认知思维篇

4.3 面试技术篇

4.3.1 Checklist(简称cl)

在整个秋招面试过程中,最好能够准备一个checklist, 这个cl是用来在你面试前进行模拟面试的,那么cl包含哪些内容:

以下详细介绍这几个方面:

4.3.2 模拟面试

面试和你的笔试一样,笔试需要做大量的题目去模拟,那么面试也必然是的。那么如何进行面试的模拟呢?

注意: (1) 面试开始前,给面试官一个微笑,简单大方地问好:“面试官好”或者“老师好”,然后双手将简历(或者所需材料)递给面试官 (2) 面试结束后,给面试官一个微笑,简单大方地对面试官表达感谢:“谢谢您,再见”,然后带着自己的东西离场。 (3) 面试过程中,

5. 学习资料篇

Java

面向对象与设计模式

数据结构与算法

计算机网络

OS

数据库MySQL

数据库Redis

Web与常见框架

(框架这部分,我认为通过官网直接上手实战,然后再去分析其源码)

分布式架构

项目

Git & Github

上一篇下一篇

猜你喜欢

热点阅读