今天算是基本结束掉了自己的第一次密集招聘,所以稍微总结一下这次奇妙的经历。以下是不完整回忆,记录一下方便日后回顾。
公司 | 职位 | 情况 |
---|---|---|
阿里 | Node(内推) | 失败 |
腾讯游戏 | C++(内推) | 失败 |
Autodesk | 数据岗 | 失败 |
饿了么 | Node | 失败 |
微软 | 软件开发 | 待面试 |
小红书 | 后端 | 成功 |
Teambition | Node | 成功 |
暖暖游戏 | 后端 | 成功 |
英语流利说 | 后端 | 成功 |
懵逼的大厂内推面
大厂的内推面,一般都是在春招的早期开始的。因为是第一次参加这种技术面试,整个人完全是懵逼的。一个寒假刚玩的很嗨,回校以后能忘的都忘的差不多了。还没开始准备,内推面居然就开始了。
第一个电话是在3月的某天晚上10点接到的,是阿里打来的,聊的很慌。当时连 Node
都没有系统的学习一次,《Nodejs硬实战》 才看了一半,靠着之前的一些项目经验强行答题。 多进程细节 和 Http通信细节 都没有回答清楚,非常可惜。感觉现在来答至少不会是第一面就挂掉的尴尬状况。
没啃几天 Node
,又是一个晚上10点又接到腾讯游戏的电话了。当时投内推的时候,事业群是随便选的,也没想到是腾讯游戏打来的(可能是之前一学期写了一个线上斗地主的游戏吧~),又是一次没准备好的面试,超级尴尬。TCP状态机 和 C代码编译过程 这种无敌基础的问题居然给答错了,现在想起来真是贼丢脸。这次面试还暴露出来一个问题,因为平时用 Mongo
比较多的原因,对关系型数据库的理解稍弱了一些,也为后面的面试埋下了一些隐患。
疯狂准备
连续挂掉两个内推面以后,参加了一些大厂笔试。但是我就发现了一个很尴尬的问题,我一直在准备 Node
。笔试题里永远都是 C++
和 Java
,这样的准备是毫无意义的呀。这个时候我才醒悟过来,还是一心钻到 Node
里去吧,毕竟喜欢嘛,其他岗一律不投了,索性我把自己的简历也从一份整理成了两份,一份数据岗,一份Node岗。现在看来,这是非常重要的一个自我认知。
在一边疯狂系统刷 Node
的过程当中,也萌发了自己维护一个开源项目的想法,希望自己在以后的面试过程当中能够拿出一些实际的东西,这也催生了之后的 express-seven
。
这准备过程当中去面了 Autodesk的数据岗 ,这次面试和前几次不太一样,主要以我自己对项目经验介绍为主,从数据处理的项目到后端项目聊了个遍。感觉这个交流过程还是蛮开心的,但是在等了两周后还是被拒了。其实说实话,我现在也不知道被拒的具体原因吧,可能是技术栈不太合适吧。
连续的被拒,心态还是有点崩了,不过还好很快就调整回来了。继续刷 Node
,也开始在 LeetCode 上刷题,找找手感。
一直在路上的4月与5月
饿了么
第一个有准备的 Node
面试也不约而至,是饿了么大前端部。因为我的 Node
学习路线就是按照他们出的博客来学习的,当时面我的大佬也说我是第一个看完攻略去面的。下面是提问点:
- 作用域和闭包
- 内存回收机制
- 两个文件相互
require
Event Loop
- 异步和多线程的差异
然后让我写了一个 String转对象的函数 ,和一个 数组的处理函数 。代码基本都OK,但是文件的相互 require
上回答的不是特别好,只能答出会出现的现象,但是忘记原理了。没过几天也收到了拒信,说替代现在的实习生能力是够得,但是因为现在实习生名额很少,所以没能通过,主要问题是对很多 Node
原理没有去实践过。这次面试虽然没有通过,不过大佬给我指出了很多问题,也指引了我 Node
学习方向,给了很多鼓励。
小红书
4次被拒,心态真是炸裂。去小红书面试前闭关了三天时间,然后早早到了新天地SOHO,开始了三轮的面试。下面是提问点:
- 第一轮
- TCP状态机
- 手写快排
- 手写两个简单的算法题(二分,编码)
- 第二轮
- 手写两个数据结构题
- 内存分配策略
- 第三轮
- 聊项目经历
- Spring的依赖注入和切面编程
知识点和自己很匹配,所以整个过程非常的流畅,特别是算法题都是很快就解出来了。除了我对 Java
真的没有那么熟悉,所以 Spring
聊的比较差。面试官当场就说我是最近来面试的最好的,所以当场就给了口头Offer。至此拿到了第一个Offer。
Teambition
在 express-seven
写好几天后就赶到了张江高科,参加 Teambition 的面试。整个过程聊项目更多一点,因为那段时间正在写游戏服务器,所以聊了很多 Pomelo
,聊了很多多进程的解决方案。因为聊得时候直接打开我 Github 聊得,所以也问了很多项目里面的问题,以及对一些 Web框架 的认识。因为一直是TJ大神的脑残粉,所以从 express
聊到 KOA2
还是游刃有余的。技术面的时间不是很长,和HR聊了蛮长时间。整个过程也是非常的愉快,面试官也很年轻,没有压迫感,所以也算是正常发挥了。回学校不久后就接到了通过通知。这两次的成功经历,也为自己涨回来挺多自信,也积攒了很多的面试经验和技术知识。
暖暖游戏
因为一直对游戏行业有憧憬,所以也参加了暖暖游戏的面试。去到公司以后,先做了30分钟的笔试题,第一题就是 C++每种数据类型占多少字节,我确实没有认真准备过C++啊!还好除了第一题其他都答的还不错,都是一些基础的填代码,手写代码和逻辑题。然后就开始了面试,以下是提问点:
- Hadoop存储原理
- 多进程通信
- 网络通信
- 大数据量的缓存方案(Redis)
- 数据库的底层实现(B+树的增删查改)
- 无序数组找第K大数
- 游戏中服务端和客户端的同步策略
整个过程当中,因为确实没有准备 Hadoop
和 Spark
的相关知识,所以感觉 Hadoop
聊得很噶, Redis
因为对底层也不是特别熟,还只停留在内存数据库层面,所以聊得也不是特别好。但是到自己比较擅长的网络、算法区域就还比较顺畅。几天以后收到了通过通知。
超头疼的英语流利说
就昨天去面了英语流利说,长达4个小时的5轮面试,回学校以后连走路的力气都没了。这次面试是最近几次里最不顺利的,能看出自己在很多知识的掌握上都不深入,以下是提问点:
- 第一轮
-
http
通信的过程 http pipeline
- 内存的分配策略
- 内存的回收策略
- 超大数据的处理
- 数据库的底层实现(B+树)
-
- 第二轮
- 两个算法题(链表,树)
- 数据库索引
- 前后端传输加密手段
- 第三轮
Node Event Loop
- 死锁(避免方案、解决方案、悲观锁和乐观锁)
- 数据库索引为什么快(排序二叉树)
- 如何在
Node
里实现装饰器 - 单例模式
- 多线程通信
- 叙述几种排序的实现(快排,堆排,排序二叉树,冒泡)
这里还只是不完整回忆,一上来聊操作系统就聊的不太顺畅,对于 http pipeline
也是一知半解。所以第一轮其实聊得就挺噶的,不过还好后面转到了自己比较熟悉的部分。第二轮要稍微好一点,数据库索引部分因为知道原理用的比较少一点,所以聊得不太好。算法题还是比较得心应手,挺快就给出了解。到第三轮,死锁的例子回忆了半天,就感觉压力贼大,后来又被问到了知识盲点的 乐观锁和悲观锁 ,心态就有点崩了。最后记忆就混乱了,单例模式也给写错了。又因为平时用 Node
单线程的缘故,对多线程了解的要少一点,所以多线程共享内存部分也聊的很一般。总之在这三轮的狂轰乱炸下,答到后面感觉自己基础不太牢、心态不太好,有失水准了。不过很幸运,今天也接到了通过电话,自己感觉挺侥幸的,不是那种稳稳拿住的感觉,所以对自己还是有点不满意。
未来
整个春招走完算是知道了自己几斤几两,很多知识还要补,还要巩固。后面的微软面试应该还是会参加,不过暂时不考虑去实习了。校招的时候不管怎么样还是会去参加一些大厂的考试,来检测一下自己在接下来几个月的成长吧。所以文字很干,但还是希望对你有用吧。
最后共勉。