干货献上 2019年蚂蚁金服、头条、拼多多的面试总结( 三 )


四面
介绍下自己为什么要做逆向?怎么理解微服务?服务治理怎么实现的?(说了限流、压测、监控等模块的实现)这个不是中间件做的事么,为什么你们部门做?(当时没有单独的中间件团队,微服务刚搞不久,需要进行监控和性能优化)说说的生命周期吧说说GC的过程(说了young gc和full gc的触发条件和回收过程以及对象创建的过程)CMS GC有什么问题?(并发清除算法,浮动垃圾,短暂停顿)怎么避免产生浮动垃圾?(记得有个VM参数设置可以让扫描新生代之前进行一次young gc,但是因为gc是虚拟机自动调度的,所以不保证一定执行 。但是还有参数可以让虚拟机强制执行一次young gc)强制young gc会有什么问题?(STW停顿时间变长)知道G1么?(了解一点 )回收过程是怎么样的?(young gc、并发阶段、混合阶段、full gc,说了 Set)你提到的 Set底层是怎么实现的?有什么想问的么?
五面
五面是HRBP面的,和我提前预约了时间,主要聊了之前在蚂蚁的实习经历、部门在做的事情、职业发展、福利待遇等 。阿里面试官确实是具有一票否决权的,很看重你的价值观是否match,一般都比较喜欢皮实的候选人 。HR面一定要诚实,不要说谎,只要你说谎HR都会去证实,直接cut了 。
之前蚂蚁实习三个月怎么不留下来?实习的时候主管是谁?实习做了哪些事情?(尼玛这种也问?)你对技术怎么看?平时使用什么技术栈?(阿里HR真的是既当爹又当妈,)最近有在研究什么东西么你对SRE怎么看对待遇有什么预期么
最后HR还对我说目前稳定性保障部挺缺人的,希望我尽快回复 。
小结
蚂蚁面试比较重视基础,所以Java那些基本功一定要扎实 。蚂蚁的工作环境还是挺赞的,因为我面的是稳定性保障部门,还有许多单独的小组,什么三年1班,很有青春的感觉 。面试官基本水平都比较高,基本都P7以上,除了基础还问了不少架构设计方面的问题,收获还是挺大的 。
拼多多
面试前
面完蚂蚁后,早就听闻拼多多这个独角兽,决定也去面一把 。首先我在脉脉找了一个拼多多的HR,加了微信聊了下,发了简历便开始我的拼多多面试之旅 。这里要非常感谢拼多多HR小姐姐,从面试内推到offer确认一直都在帮我,人真的很nice 。
一面
为啥蚂蚁只待了三个月?没转正?(转正了,解释了一通 。。。)Java中的、解释下?(红黑树,有序,无序,数组+链表)查询写入的时间复杂度多少?(O(logN))多线程有什么问题?(线程安全,死锁)怎么解决?( jdk1.8用了 + CAS,扩容的时候通过CAS检查是否有修改,是则重试)重试会有什么问题么?(CAS( And Swap)是比较和交换,不会导致线程阻塞,但是因为重试是通过自旋实现的,所以仍然会占用CPU时间,还有ABA的问题)怎么解决?(超时,限定自旋的次数,ABA可以通过原理变量ce解决,原理利用版本号进行比较)超过重试次数如果仍然失败怎么办?(互斥锁)CAS和有什么区别?都用不行么?(CAS是乐观锁,不需要阻塞,硬件级别实现的原子性;会阻塞,JVM级别实现的原子性 。使用场景不同,线程冲突严重时CAS会造成CPU压力过大,导致吞吐量下降,的原理是先自旋然后阻塞,线程冲突严重仍然有较高的吞吐量,因为线程都被阻塞了,不会占用CPU )如果要保证线程安全怎么办?()怎么实现线程安全的?(分段锁)get需要加锁么,为什么?(不用,关键字)的作用是什么?(保证内存可见性)底层怎么实现的?(说了主内存和工作内存,读写内存屏障,-,并在纸上画了线程交互图)在多核CPU下,可见性怎么保证?(思考了一会,总线嗅探技术)聊项目,系统之间是怎么交互的?系统并发多少,怎么优化?给我一张纸,画了一个九方格,都填了数字,给一个MN矩阵,从1开始逆时针打印这MN个数,要求时间复杂度尽可能低(内心OS:之前貌似碰到过这题,最优解是怎么实现来着)思考中 。。。可以先说下你的思路(想起来了,说了什么时候要变换方向的条件,向右、向下、向左、向上,依此循环)有什么想问我的?