2019年Java篇:蚂蚁金服、拼多多、字节跳动的面试总结( 四 )


系统并发多少,怎么优化?
给我一张纸,画了一个九方格,都填了数字,给一个MN矩阵,从1开始逆时针打印这MN个数,要求时间复杂度尽可能低(内心OS:之前貌似碰到过这题,最优解是怎么实现来着)思考中 。。。
可以先说下你的思路(想起来了,说了什么时候要变换方向的条件,向右、向下、向左、向上,依此循环)
有什么想问我的?
二面
自我介绍下
手上还有其他offer么?(拿了蚂蚁的offer)
部门组织结构是怎样的?(这轮不是技术面么,不过还是老老实实说了)
系统有哪些模块,每个模块用了哪些技术,数据怎么流转的?(面试官有点秃顶,一看级别就很高)给了我一张纸,我在上面简单画了下系统之间的流转情况
链路追踪的信息是怎么传递的?(的,说了Span的结构: + )
怎么保证唯一性?(UUID,说了下内部的定制改动)
是在什么维度传递的?(线程)
Dubbo的远程调用怎么实现的?(讲了读取配置、拼装url、创建、服务导出、服务注册以及消费者通过动态代理、、获取列表、负载均衡等过程(哗啦啦讲了10多分钟),我可以喝口水么)
的单例是怎么实现的?(单例注册表)
为什么要单独实现一个服务治理框架?(说了下内部刚搞微服务不久,主要对服务进行一些监控和性能优化)
谁主导的?内部还在使用么?
逆向有想过怎么做成通用么?
有什么想问的么?
三面
二面老大面完后就直接HR面了,主要问了些职业发展、是否有其他offer、以及入职意向等问题,顺便说了下公司的福利待遇等,都比较常规啦 。不过要说的是手上有其他offer或者大厂经历会有一定加分 。
小结
拼多多的面试流程就简单许多,毕竟是一个成立三年多的公司 。面试难度中规中矩,只要基础扎实应该不是问题 。但不得不说工作强度很大,开始面试前HR就提前和我确认能否接受这样强度的工作,想来的老铁还是要做好准备
字节跳动

2019年Java篇:蚂蚁金服、拼多多、字节跳动的面试总结

文章插图
面试前
头条的面试是三家里最专业的,每次面试前有专门的HR和你约时间,确定OK后再进行面试 。每次都是通过视频面试,因为都是之前都是电话面或现场面,所以视频面试还是有点不自然 。也有人觉得视频面试体验很赞,当然萝卜青菜各有所爱 。最坑的二面的时候对方面试官的网络老是掉线,最后很冤枉的挂了(当然有一些点答得不好也是原因之一) 。所以还是有点遗憾的 。
一面
先自我介绍下
聊项目,逆向系统是什么意思
聊项目,逆向系统用了哪些技术
线程池的线程数怎么确定?
如果是IO操作为主怎么确定?
如果计算型操作又怎么确定?
Redis熟悉么,了解哪些数据结构?(说了zset) zset底层怎么实现的?(跳表)
跳表的查询过程是怎么样的,查询和插入的时间复杂度?(说了先从第一层查找,不满足就下沉到第二层找,因为每一层都是有序的,写入和插入的时间复杂度都是O(logN))
红黑树了解么,时间复杂度?(说了是N叉平衡树,O(logN))
既然两个数据结构时间复杂度都是O(logN),zset为什么不用红黑树(跳表实现简单,踩坑成本低,红黑树每次插入都要通过旋转以维持平衡,实现复杂)
点了点头,说下Dubbo的原理?(说了服务注册与发布以及消费者调用的过程)踩过什么坑没有?(说了dubbo异常处理的和打印的问题)
CAS了解么?(说了CAS的实现)还了解其他同步机制么?(说了以及两者的区别,一个乐观锁,一个悲观锁)