工作一段时间了,特别向往互联网大厂,我自己不是科班,学历和经历都很一般的情况下,对自己的感觉有一些溢价,经历了几个互联网的内推,结果被虐的体无完肤。记录一下这几次面试的耻辱经历。。。。
首先每个面试都会有手写算法 ,其实不太明白手写算法的意义,除算法工作外感觉和实际工作中的关系不太大。。。但是一直在准备,手写基本都写出来了,虽然大多是都是暴力,不是最优解法。
一、第一个也是最有希望的一个。
1.hashmap 红黑树 (经典八股文起手。。)
2.分布式锁
3.redis
4.dubbo原理,如何自己设计一个dubbo,注意什么。。
5.mq原理,如何设计,如何保证时序,重复消费等问题。
6.讲一个最复杂的业务流程,遇到了什么难题,如何发现,如何解决,底层原因是什么。
7.由上一个问题引出了 mysql b+树索引, 多线程问题。
也就30多分钟,基本都说出来了,一脸懵逼突然说结束,我还在想为什么面试这么水,自认为很完美,结果收到的反馈是 “基础,底层一般,对自己的业务流程描述不清晰” 。说实话这个反馈收到心里很难受,觉得不至于差到这个水平,并且面试真的很水,我感觉很敷衍,后来打听知道,其实只是碍于推荐的人面子或者没有hc敷衍一下而已,不管怎么样也好,菜应该就是原罪,但也难受了几天。
二、第二家是游戏公司,感觉办公环境,氛围真的挺不错,以前做的都是业务,没有做过游戏,感觉业务和技术栈差距有点大,在去的时候填信息表,有个学历的选项,本科,硕士,博士。 我是大专,没有这个选项。。
再一次emo。
1.三页的题 ,基础题 ,代码执行题,几道算法题,几道场景题。其中一道线程间通信的题,没有回答出来。
2.多线程,线程间通信,还是回答的模棱两可,很一般。
3.拿出了我一年前写的stream的博客,说思路,如何优化,对stream原理的理解,各个参数的理解,用过哪些api,如何用,回答的也一般,只是停留在使用的层面。
4.jdk7、8、9、10、11各有什么特性。。。。 回答没有了解过。。。
5.netty框架,protocol buffer 基本没有用过,不了解。。。
6.mongo更新原理,和其他数据库区别。
7.jvm 各个垃圾回收器区别。
8.对一些游戏的看法,喜欢什么类型游戏,这时候感觉总算缓和了一点尴尬的气氛。
我自己对这次面试的感觉就是灾难,我这时候开始意识到了自己对自己水平的评估产生了溢价。
三、这个不是互联网,是一个小型公司,面了将近四个小时之久,面试相对简单了。。。
1.依旧手写一堆基础题,场景题,算法题。
2.讲项目,讲复杂业务流程,遇到什么问题,什么原因,怎么解决。
3.再讲一个复杂流程,如何设计,思路是什么,为什么这么做。
4.再讲更久以前的项目,怎么做,如何设计 ,流程是什么。
结束。。。
很幸运拿到offer,对自己水平彻底认清了,溢价很严重。。
四、也是互联网,类似搜索引擎的业务。
1.hashmap(经典起手)
2.两道简单到中等难度算法手写,写出来了,细节有一点错误,面试官提醒后改对了。
3.redis 和 mysql 自增函数。
4.如何设计一个分布式,高并发,点赞排行榜的功能,实时性要求高和不高怎么做。
这次面试通过了,说要二面,我已经对自己缺乏信心,没有继续面,暂时还是需要很多提升。。
最后总结下来,就是没有对自己有清晰的认知,学历经历技术确实一般,自以为看了一些源码,做了几个复杂业务,可以做到,最后原罪就是很菜,心里不是很舒服,但是更加提醒自己需要努力,提升空间还有很大很大。。。