大牛是怎么炼成的?

高中:剑走偏锋

 

高中第一学期的大型考试,我的成绩都在倒数10名左右,最好的结果只是一个好点的一本。 我有点儿不甘心,后来出现了一个机会,可以参加数学、物理和信息学竞赛(简称OI),获得加分甚至保送。我动起了心思, 数学物理不用想了,很多人从小就开始学,竞争极为激烈。 我初中的时候接触过一段时间的编程(hello world那种的),所以对计算机特别感兴趣,就这样,剑走偏锋,瞄准了OI。

 

但是学习OI是需要大量时间和精力的,如果我继续坚持,就意味着会减少文化课的学习时间,更糟糕的是,高考不考计算机,所以,如果学到最后却没有奖,一切努力将付诸东流。

 

但是如果我选择放弃,没准可以考一个好点的一本,甚至边缘的211,但是如果我继续坚持,最后要么上一个普通一本,甚至二本,要么去更好的985。摆在我面前两条路,该怎么取舍?

 

当你看到一开始满满一屋子的同好,一个一个离开这间教室,你心里是很容易动摇的,但是我知道,如果我不这样做,我极大概率会一直平庸下去,所以,为了未来,搏一把

 

OI培训是很痛苦的,没有寒暑假,国庆节是最长的假期。平时就是日复一日的模拟赛,讨论题目,有时候一个题目,几天没有思路,我记得最让我难过的一次,刚刚月考结束,考了倒数第16,没敢叫我爸来开家长会,竞赛这边,刚刚的模拟比赛一道题都没有AC(通过所有测试点),被老师狠狠地批评了一顿,后来班主任给我爸打电话组织了三方会谈,看着我爸恨铁不成钢的眼神,真想找个地方大哭一场。

 

好在最后终于坚持了下来,熬过了最痛苦的时期,最后终于拿到了省一等奖(可以拿到普通985的降一本线加分资格了)。最后查到自己高考分数刚刚过一本线15分的时候,我悬着的心终于放了下来,以往的努力总算是没有白费。

 

大学的目标与迷茫

 

我本科专业是软件工程,由于有OI的背景,有很多人问我,为什么不去好好学学ACM? 拿到奖牌还可以保研。 这个问题我也问过我自己,其实原因很简单,我不想继续读研,每个人都有自己的目标和追求,去工作,去大厂就是我的目标。

 

我认为尽早地确定一个目标非常重要,上了大学之后,很多人会开始迷茫,不知道接下来该干什么,毕了业该干什么,但是在我确定了目标之后,在其他人都还在观望的时候,我已经开始向自己的目标进击了。

 

但是进大厂是一个很虚幻的目标,到底该做什么才能进大厂呢?我陷入了另一个迷茫,大一上学期我没有加入任何的实验室和组织,甚至学生会都没有参加,并没有人去告诉我应该学些什么东西,怎么样才能“进大厂”。

 

“但是,总得学些东西,不能一直这样浪费时间啊。”我告诉自己。

 

我们大一的时候有Java课,既然如此,那么索性好好研究一下Java吧。于是除了平时上课,我把其余的时间基本都花在了学习Java上,寒假的时候,在家里基本是足不出户,下载了马士兵的Java基础教程,一节一节的看,在此期间我入坑了后台,说起来也搞笑,我当时听说过JS,也听说过JSP,而且听说JS特别有用,所以准备学一下JS,但是我不知道这是两个东西,所以去网上查了“JSP教程”然后学了起来。就这样稀里糊涂的入坑了。

 

超级玛丽:追求完美

 

大一下学期有个Java课程设计,自由选定题目,用Java实现,其他同学都选择了坦克大战,音乐播放器之类的,而我想与众不同一些,选择了自己实现超级玛丽。

 

虽然看了很多Java教程,也看过马士兵的坦克大战教程,但是真到自己写的时候,就一点头绪都没有了。

 

而且素材成了第一大难题,坦克大战所需要的素材很少,坦克车不同方向的图片,还有一些其他的图片就可以了,但是超级玛丽就比较复杂了,人物跑步动作,死亡动作,怪物的不同形态等,但是在网上找了许久,都没有找到合适的,尤其是马里奥的跑步动作,没有动作会显得特别僵硬,动作图片少了也会不自然。

 

我从来没想过放弃,因为我感觉,既然我比别人多学了这么多,就应该做一些不同的东西,而且我对事物的完美程度有一种固执,做事情必须要达到我期望的最完美的状态,尤其是对于自己的作品。

 

后来灵光一闪,找不到素材,就自己做啊。于是我上网找了一个画面比较精美的马里奥游戏,然后录屏,一帧一帧的播放视频,把每一帧截下来,然后用ps抠图,当时自己就是那么的固执,一定要做到最好,一个超级玛丽全身动作和一个食人花的出场动画,我整整做了五个小时。这一整个月的时间,我把课外的所有时间和精力都花费在了这上面,有时候一旦决定去做一件事情,为其付出多少精力都不觉累。

 

最后一天,在我给游戏加上开场动画之后,做了最后一次完整的测试,大功告成!

 

整整一个月,一个我自己亲手实现的超级玛丽完成了,这一个月痛并快乐着只有我知道,那时候我是非常激动的,就像看到自己的孩子出生一样。虽然现在来看,很多地方写的不成熟,但是对于当时的我来说,这差不多是我的极限了。后来这个作品也在课设中取得了年级第一的成绩。放到github上之后,也获得了不少star。而且我感觉更重要的是,这个项目极大地锻炼了我的代码实现能力,巩固了我的Java基础。

 

疯狂学习

 

然后就到了大学最重要的一段时间,学校各大实验室的纳新,我当即报名了ING工作室后台组,工作室纳新有门槛,先是进行面试,问一些基础知识,然后复试是做项目,要求四天的时间,从零做一个贴吧出来。

 

我之前虽然看过一些后台的知识,但是并没有做过东西,也没有看的特别仔细,之前主要把精力放到了JavaSE上。这对我来说也是一个不小的挑战,最后经过四天不亚于做超级玛丽的痛苦的折磨,终于完成了一个成品,交付的时候,不出所料,放弃的人不少,进入复试的有二十几个,交付作品的时候就只有几个了,最后,这一年纳新只招了我一个

 

加入工作室之后,就有人指导了,带我的学长是13级的,后来他去美团工作了,14级的前辈都是PHP方向的,学长工作之后,就没有人带我了,好在他一开始就告诉了我要学什么东西,从Java基础到框架,到数据库,到源码等等,我现在真的特别感谢当时努力的自己,也有对于成功的渴望,也有对于知识的渴求,一半是因为兴趣,一半是因为前途。

 

当时在图书馆借了很多书,我习惯看纸质书,而且一般是多本书同时看,因为一本书看久了大脑就会变得消极,换一本书就相当于平时说的“换换脑子”,自己也十分努力,恨不得一天24小时有25个小时学习,最多的时候我记得同时看四本书,早上看《代码的未来》这种闲书,上午看《看透SpringMVC》,下午学习《深入理解Java虚拟机》,晚上学《HTTP权威指南》。

 

基础知识

 

大二下学期,17年4月的时候,学长学姐们开始找实习,我为了积累一波经验,也跟着听面试(电话面),看笔试题,结果发现了不得了的事情,我一直以为面试会问很多框架,问很多项目,结果发现我错了,面试问的满满都是底层,都是基础,都是算法和数据结构。这时候我开始重新审视自己:

 

是否之前太重视上层框架用法的学习,忽视了底层的学习?

是否接了太多无意义的简单外包?

是否算法水平还在吃高中的老底,一直在退步?

 

想明白这两个问题之后,我知道了,原来我自己走偏了,自己沉浸在接各种无意义的外包赚钱的喜悦中,却没有意识到,其实这些都是浮云,我在最该向下扎根的时候,却选择了向上生长,而且长得都是叶子。

 

从那时起,我开始做一些转变,推掉了大部分的外包项目,只接对自己有挑战的外包。开始重视基础的学习,底层的学习。

 

根据学长学姐们的面试情况,我发现数据结构是面试特别重视的,然而当时的自己算法水平已经退化很厉害了,这一块需要恶补,因为有些基础,所以这时候我直接开始刷《算法导论》(新手不建议直接上手这本书,推荐红皮的《算法(第四版)》),算法导论这本书很注重数学证明和推导,比如构建二叉堆的时间复杂度,其他书上可能直接告诉你是线性的,但是这本书上会给你进行详细的证明,所以刷这本书也让我知道了很多算法的“所以然”,刷书是一方面,另一方面就是刷题了,因为当时还有CCF考试,所以刷题是一举两得,刷题是一个持续的过程,贵在坚持。三天不刷手生是真的。

 

我的学习经历,总结来说就是三个词,方向,坚持和努力。其实真正有天赋的人并不多,我高中的一个学长,学了半年的竞赛就能拿到全国决赛的银牌,而我辛辛苦苦学了两年多,才勉强有一个省一。我学长那样的天才毕竟是少数人,大多数人都是普通人,而普通人的竞争对手,就是普通人,普通人之间的竞争方式,就是最简单的竞争方式,谁能坚持,谁的努力程度更高,谁就能超过竞争对手。一旦认准一个目标,就要坚持不懈,而且在坚持的道路上,不能偏离了方向,要时刻不忘初心。

 

准备校招

 

我真正开始准备春招是17年放了寒假之后,寒假前,我手上还有一个外包,因为甲方时不时的要求导数据,所以放假后甲方不放人,让我在学校先待一段时间,当然是有偿的,但是过了不到一周,我爸给我打来电话,说我爷爷生病住院了,我弟弟也得了感冒要住院,然后我就连夜买火车票回了家,直接奔去了医院。

 

医院的条件很艰苦,没有网,我跟我弟弟挤一张小病床,我爸在楼下陪护我爷爷,晚上根本睡不好,没有条件,创造条件也要复习,于是用自己手机开热点,把剑指offer上的题目刷完了,还刷了几套往年编程题。一直到小年,家人们都出院了,在医院的这段时间,所做的主要的事情就是刷题,和零碎的知识点复习,大概花了十天。

 

回家之后条件就好多了,大概可以每天保持14个小时的学习时间,复习资料就是网上的面经,牛客网上刷题(这一段时间刷题并不多),还有工作室学长给提供的资料。

 

这段时间我还没有想投简历,我想的是等开学后统一投简历,结果在一月十八号的时候,阿里C部门主管给我发了个邮件,大意就是无意间逛到了我的github,问我毕业后是否考虑加入阿里,我当时喜出望外,超级玛丽又给我带来了惊喜。

 

但是后来我并没有走C部门,而是走的我校友所在的T部门的内推。

 

开学后,大概是3.5号,又准备了一周之后,3.12开始投递简历,都是内推。前后分别投了:阿里,百度,美团,腾讯,京东,网易,头条,华为,链家。

 

3.12首先面的是美团,第一次面试,由于紧张和其他原因,面试表现不是很好。

 

美团一面

 

面试官:自我介绍一下

 

我:(所有的自我介绍都是一样的套路)我是XXX,来自XXX大学,大学期间加入了ING工作室学习Java后台,后来担任了后台组组长,做了不少项目,很希望加入XXX公司。

 

面试官:介绍下项目

 

我:(一个人的命运,不仅靠个人的努力,还得看历史的进程,我在所有的面试中,着重介绍的项目就是我寒假前的那个外包,因为这个外包,的确是我做过的含金量最高的一个项目了,而且这个外包在我们工作室历年接的外包项目中都是少见的,可遇不可求的高含金量项目,我自认为这个项目给了我很大的优势,这个项目是一个分类管理系统,对近200万的结构化数据进行分类筛查,分类依据是多元化的,主要是数据的一个字段和类别关键字的匹配程度,还需要做匹配度的量化排名,而且甲方要求严格,随机抽查样本,正确率必须达到95%以上,还要支持复杂条件的快速查询,优化分类过程,所以很考验算法能力,和数据库优化能力)XXX项目是XXX委托的一个外包,实现了XXX。

 

面试官:那我们聊一聊elasticsearch吧,说说倒排索引是怎么回事。

 

我:(上面介绍项目只说了项目的内容,以及实现方法,我自认为面试官会直接问项目亮点,这时候我再把准备好的两个难点,一个是量化匹配度算法,一个是数据库设计和优化一说,就完美了,结果面试官不按套路出牌,没有问难点和亮点,直接让聊一聊elasticsearch,还问了个我不会的东西)这个没有了解过。(出师不利,第一个题就给难住了)

 

接下来就是一些Elasticsearch相关的东西了,TF/IDF算法,分词器等,因为我简历里写了会用es,所以这几家公司都着重问了es,写在简历里的东西,一定要慎重,一定要保证真的会,真的懂。

 

然后就开始问Java基础,比如:hashmap的原理、原子类、volatile等。这类问题,回答的细节越多越好,只要你还有话讲,面试官就基本不会打断你,除非他认为你说的足够好了,一定要极力向面试官表现自己。

 

面试官:说说lru是怎么实现的吧。

 

我:(懵逼了,只知道这是采用抛弃最近最少使用的缓存策略的一种缓存失效算法,怎么实现的真没了解过,然后自己临时想了个O(logn)的算法,用二叉堆实现,其实这个实现不是lru,是错误的,因为我理解错了lru。然后面试官可能没听出来我理解错了,只听了我说这个复杂度是log级,然后就说这个有一个常数级的实现方法,我就不知道了)

 

下面就是数据库的一些问题,比如:说说MySQL中的锁,死锁,聚簇索引加锁和二级索引加锁有什么区别

 

这种题目,比如第一个,一定要把你知道的所有的数据库中的锁说出来,各种锁的作用,原理等,把自己知道的都说出来,还是那句话一定要极力向面试官表现自己。如果碰到自己不会的,比如第三个题目就不会,也要说出自己的思考,总比什么都不说要强。

 

面试官:说一下自己还有哪些项目值得说的?

 

这个问题非常重要,就相当于面试官给了你一次机会让你自由发挥展示自己的亮点。回答得好可以力挽狂澜。于是我就回答的超级玛丽那个项目。

 

至此,美团一面结束,面了大概28分钟(这么短),第一次面试感觉发挥的并不是很好,很多东西没有发挥出来,也有不少的问题没有答上来,难度感觉中等。

 

百度一面

 

百度一面平淡无奇,问的都很基础Java中的数据结构,粘包拆包问题,设计模式,锁,Spring等等。

 

这里我感觉有个经验可以分享,因为百度一面没有让我介绍项目,所以非常心有不甘,这么大一个亮点说不出口,所以我就一直尝试引导面试官,终于在一个问题上被我抓住了机会。

 

面试官:说说数据库的设计和优化

 

关于数据库设计优化,这个正是我的项目中的一个难点,然后我就试探了一下,问了问能不能结合项目说,面试官同意了。还有后面面试官问了Elasticsearch,我又结合项目,把项目的另一个难点讲了一下,至此,项目两个亮点都表达出来了,因此,引导面试官到你擅长的领域是特别重要的。

 

百度一面结束,大概是47分钟,总体表现还可以,面试难度属于简单模式。

 

阿里一面:最难的一次

 

这次面试是我今年春招所有面试中最难的一次,面哭了都快。

 

先是常规的自我介绍和项目介绍,原以为接下来就是问一些基础,可没想到阿里面试官不按套路出牌。继续接着项目问了下去。

 

面试官:你这个项目,我把数据量扩大100倍,并且放到互联网上,并发量变得更高了,怎么解决?

 

我:(100倍?本来就是200w左右,扩大100倍就是两亿数据,而且还要变成一个互联网应用,项目本来并发量不高,甲方只要求2000左右,一上来就问这么难的问题,这下可咋办)对于大数据量,应该进行数据拆分,这个项目如果拆分的话,最好的办法是通过不同的查询条件进行拆分(项目中查询是根据不同的查询条件去不同的表里查询的,所以这种的有天然的划分方式)

(还没等我说完)

 

面试官:你这样是假设所有的查询是平均分布到不同的领域的,万一有热点数据怎么办,比如有80%的查询条件命中了同一台机器呢。

 

我:分布不均匀可以做一个Redis集群,用来分流。我们这个项目是改动比较少,查询较多的应用。所以用Redis性价比是很高的。

 

面试官:你这个项目是不会经常改动的,但是最终还是会改动的,如果改动的话怎么保证数据的一致性?

 

我:(还是从这个项目本身的需求出发)这个项目数据改动的时候是某个时间段集中大规模改动的,所以改动是有特定的时间段维护的,在维护的时候,我们不允许访问。

 

面试官:(完全改了需求)假设你这个就是特别频繁改动呢?

 

我:(至此,我这个简单的项目被面试官扩展成了一个高并发,大数据量,改动频繁的互联网项目,现如今的问题主要集中在如何保证数据一致性)频繁改动如果保证一致性的话,可以使用nwr模型。

 

面试官:用这个方法,可扩展性不高,而且还需要在代码中感知网络拓扑,因为我们这个是廉价存储,所以机器可能会宕机,机器数量会经常变化,而且我们现在集群是异地的,而且不想添加感知网络拓扑的代码,有没有别的方法。

 

我:这样的话,根据CAP理论,是不可能保证强一致性,除非牺牲可用性。否则只能保证最终一致性。

 

面试官;但是我们是需要保证强一致性的,因为付款之类的如果有延迟的话,用户财务不就有损失了,那怎么办?

 

我:(彻底懵逼)牺牲可用性?没有其他的好方法了。

 

面试官安慰:没事,你现在的这个方案,对于你现在的这个应用场景是ok的,好,那再聊聊别的。

 

这一段应该是我面试过程中非常难受的一段了,面试官不断的改动需求,问解决方案,最后更是触及到了我的知识盲区,这也是面试官不断去试探我的极限,一看就是很有经验的面试官。接下来问了一些基础问题,线程,并发等等。然后就到了jvm这里了。

 

从JVM的内存模型开始,没想到这又是一个噩梦,面试官一个问题接着一个问题,不停地追问:如何对老年代进行优化,有哪些参数可以解决碎片问题,有哪些方案可以减少GC停顿......

 

这一段是我这次面试中第二难受的地方,这个也反映出了我平时的积累不够。所以一定要重视平时的积累,多思考。如果我平时去思考过这个问题,或者看的东西足够多,那么肯定不会回答成这个样子。然后问了个算法题,约瑟夫问题。最后问了问框架源码。

 

至此,阿里一面结束,一共面了77分钟,我一度感觉自己应该是凉了,现在只有这次的超长面试时间能安慰我:一般凉了的不会跟你聊这么久的,所以内心还是有报一丝希望,这次面试难度等级自认为是很高的,而且出现了很多失误。

 

百度二面三面

 

百度二面也是平淡无奇,问的都特别基础,es,sql,jvm,aop等等,值得注意的是,百度也问了一个经典算法题

 

面试官:两个文件,存储着int(32)类型的数值,都是10G,给你8G内存,怎么求两个文件的交集?

 

这是一个典型的bitmap问题,512M空间即可解决。这里还有一个扩展,如果统计出现次数是三次或者以上的数字,应该怎么做呢?读者可以自己考虑一下。

 

百度大概是48分钟,主要是探讨了做的项目,48分钟中,跟面试官聊项目就用了半小时,因为可聊的东西还是挺多的。面试难度简单。

 

过了四天,百度打来电话,约了三面,三面是半hr面半技术面,面试时间大概是40分钟,主要问了家庭背景,学习情况,学习方法,为什么想来百度等非技术性的知识,技术性的还是聊了聊项目,然后就给了口头offer。

 

阿里二三面

 

阿里二面就比一面简单多了,自我介绍,项目,然后就开始问算法,如AVL树, 最短路径算法。

 

这两个问题,计算机科班出身的肯定都会,那么大家都会你就没有了亮点,和别人不一样,面试官才会记住你。

 

因为之前刷过算法导论(感谢当时自己的努力),所以这个地方我可回答的就很多了,avl树这一部分从avl树聊到红黑树。最短路这部分,Floyd,bellman-ford,spfa,dijkstra,不仅说出了算法描述,而且说了其中的原理,正确性分析,各自的局限性,互相之间的关系,然后有对这几种算法的本质的考虑,以及优化方案等等。一定要让自己和别人不一样,这样才能给人留下深刻印象。

 

接下来还是基础,锁,泛型,设计模式,map等等,最后面试官还问有没有没有问到的亮点,说的超级玛丽。

 

阿里二面的面试官没有像第一个面试官那样一直追问下去,问的题目也是很基础,难度远小于阿里一面,大概是中等难度

 

阿里二面五分钟后,立马又打来了电话,是三面hr面,聊了大概20分钟,家庭,生活,学习,项目,大学的经历,实习时间(感觉有些稳了)

 

美团二面

 

过了几天,3月27号晚上,美团打来电话约了二面,这次面试难度还是相对高一些的。

 

先是自我介绍,然后项目,接下来直接问了两个算法题

 

面试官:怎么使用es来对面试者进行分类。

 

我:这是一个聚类问题,首先对面试者进行信息采集,然后进行数据清洗,标准化处理等,然后可以使用kmeans等无监督学习算法进行聚类,es用来计算两个面试者的相似性,对于面试者的技术栈,自我评价等非结构化数据,可以看做文本,用es进行匹配,来计算二者的距离,最后计算综合相似度(这个我也说不准这样可不可以,但是这好歹是个思路)

 

面试官:现在有若干借贷者,若干投资者,求一种最优的匹配策略。

 

我:(这个问题需要先考虑什么算是最优,最后和面试官探讨的结果是,尽量较少使用投资者,尽量动用资产少的投资者的钱,这样的话,这个问题可以看作是一个布尔背包问题的变形,对每个投资者,进行一次背包,看看哪一个可以容纳得下最多的借贷者,然后容纳同样多的就使用资产少的,然后将这个投资者和他所容纳的借贷者去掉,对剩下的借贷者和投资者再次进行dp,直到所有的借贷者都被包含。这个是一个贪心的思想,并没有证明是否真的能取到最优解,但是绝对是可以取得到近似最优解)

 

由此可见,数据结构和算法真的是非常非常重要,一定要刷题,刷题,刷题。接下来就是一些基础了。

 

美团二面结束,大概51分钟,难度中等偏上,这次是主管面的,问的算法较多。

 

阿里四面

 

3月27号当天白天,阿里打来电话约四面,这次是视频面,提前说了需要手写代码。加了面试官的微信号。

 

3月28号下午阿里四面,这次面试难度中等偏上。

 

一开始还是那些东西,介绍,项目,redis等等。中间还问了个分词算法这个还真不知道,于是就说了一下大概的思路,最后上网查了查,方法很多,什么隐马尔科夫模型啥的,后来上课学了一些皮毛。

 

这里值得注意的是,面试官又问了倒排索引,美团一面也问了这个,当时不会,过后查了查,现在正好又问到,所以,要把每一次面试都当成查漏补缺的机会,不会的问题过后一定要弄明白

 

接下来就是传说中的手写算法题了:

 

N个球队,每个球队有一个球队的水平,水平是个整数,设计一个函数,每次调用函数,随机取出一个球队,要求,取出的球队的分布情况和球队水平成正比。

 

这个题目不算难,主要是考虑怎么利用现有的产生均匀分布随机数的random函数,映射成和球队水平相关的随机数,这个可以用几何概型的思路,把球队的水平,抽象为线段,线段的长度就是球队水平,水平越高,线段越长,所有的球队的水平总和,即为整个线段的长度,每次从线段上随机取一个点,判断这个点属于哪一段,那么这次取出的就是这个球队,这样就达到了题目说的要求,思路有了,关键是怎么设计数据结构。我想到两种思路,分别在时间和空间上有优势,具体的细节就不再介绍了。

 

阿里四面大概是50分钟,这一面难度中等偏上,也有一些没有答上来的题目,但是最后的算法题回答的还是不错的。

 

接下里的几天陆续有美团的三面和四面,阿里的五面。基本上都是聊家庭,大学经历,发展规划,还问到了女朋友,以及打不打游戏的问题,还谈了实习时间和薪资。

 

4月3号,美团打来电话,发了口头offer。

 

4月5号晚,阿里发来短信,说已经发了意向书,然后我立马下床打开电脑点了接受。然后撤掉了还没有面试的其他所有简历。后来我才知道今年阿里T部门对实习生要求比之前提高了一个档次,只要A和以上的,真是无知者无畏,如果我早就知道这个消息,为了稳妥,我可能就不走T部门的内推了。

 

至此,我的春招实习完全结束,最后拿到了三份offer。

 

自己对结果还算比较满意,但是没有参加腾讯的面试还是比较遗憾的,虽然后来也邀请我面试了,但是还是拒绝了,因为已经有了心仪公司的offer,惊心动魄的春招已结束,就不去浪费其他公司的面试资源了。

 

对于春招,虽然一开始准备的时候,家里遇到了突发状况,有一些小插曲,但是总体来说还是比较顺利的,但是就面试表现来看,我感觉自己还是有提升空间的。

 

 

校招面试总结

 

1. 从面试题目来看,大厂校招还是看重基础的,三个公司一共七次技术面,其中有六次涉及到了数据结构和算法。所以,定要重视学科基础,基础不牢,地动山摇

 

2. 面试准备一定要尽早,刷题更是要尽早,不妨现在就开始,leetcode,codeforces,多刷题总没坏处。

 

3. 一定要主动向面试官表现自己,有时候面试官可能不会去深入问,但是你自己去深入的介绍,面试官一般不会打断你,如果你懂的很深,但是只是简单的说了说,面试官又没继续问下去,这样就很难受了。

 

4. 对于不会的东西,一定别胡诌,但是也不能不说,不会也要自己去扩展,延伸,说出自己的心路历程。比如面试官问A,我不会,但是我知道跟A很相近的B,我说一下B问题的思路,总比什么都不说强。

 

5. Github要用起来,经常往上放一些东西是很有用的,参考C部门主管内推的例子。

 

6. 基本上每一面面试官都会问你有没有什么要问他的,一句话,一定要表现出来你热爱学习,热爱技术,渴望成长,可以问一些比如”对我以后的发展提一些建议“或者”公司培养新人的模式“此类问题。

 

7. 面试过程中即使感觉自己前面表现不是很好,也别放弃,一定要全程保持冷静,保持积极,参考阿里一面。

 

8. 平时如果接外包项目,一定要接有质量的,一些无新意无挑战无难度的外包,除了能赚些钱就是浪费时间了,大学生的时间很宝贵,不要把时间浪费在赚小钱上

 

9. 学习一定要深入,不能浅尝辄止,会100种语言的hello world是没有用的,尤其是在校生,对技术钻研的深度比广度更重要(当然前提是广度不能过于狭窄,需要自己权衡),灌木丛是永远无法成材的。

 

10. 面试也看缘分,即使没有通过面试,也别放弃,吸取经验教训,再接再厉。

 

以上是我的春招面试经历,希望我的经历能够给大家多少带来一些启发,感谢我的女朋友,一直陪伴着我,鼓励着我,让我有动力去努力奋斗。拿到阿里实习offer只是一个起点,未来的路还很长,我会一直饱含激情的走下去。

posted @ 2018-07-09 14:38  小山博客  阅读(299)  评论(0编辑  收藏  举报