面试复盘 | 转转Java后端一二三面
转转的面试体验总体来说还是不错的,面试官比较友善,流程也比较快,第一次约面还会打电话跟你确认面试时间,后面的话基本在三天内会有下一面的邮件。
9.14 一面(35min)
一面面试官简单了解了下项目之后,就开始问基础的东西了。
HTTP的状态码都有哪些,499、503/502/504知道吗
说了常见的20x、30x、40x之后,面试官突然问了499,可我怎么也想不到有学过这个状态码,只能说不知道。后面查了之后,发现499是Nginx的一个状态码,意思是“client has closed connection”,原因可能是因为服务器端处理的时间过长,导致客户端主动关闭了。
502=>作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503=>(学校的网站经常出现这个。。)由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。注意:503 状态码的存在并不意味着服务器在过载的时候必须使用它。某些服务器只不过是希望拒绝客户端的连接。
504=>作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI 标识出的服务器,例如 HTTP、FTP、LDAP)或者辅助服务器(例如 DNS)收到响应。说一下java的内存回收算法
扯了新生代和老年代的标记复制和标记整理;以及CMS的收集过程,提了一嘴使用增量更新的方式来解决“对象消失”的问题,果然面试官问了下面那个问题
说一下并发标记过程的三色标记法,说下你知道的G1以及G1是使用哪种算法来修复标记变动(原始快照)
答案在《深入理解JVM》,里面的图示画的很清晰,但最好自己提炼总结一下
MySQL的索引底层数据结构
InnoDB和Mysiam的区别
MySQL的ACID实现原理
Redis的数据结构和实现方式
说了五种基本数据结构string/list/set/zset/map。再说了压缩列表是list和map的实现方式之一,而zset会使用跳表来使得插入元素能按照score有序存放,同时使用map来保存value和score的映射。
对CAP的理解,说下AP和CP
Nacos支持CP吗
不知道,因为一直认为服务注册中心应当是AP的,所以没太关注CP相关的组件。。查了之后发现Nacos可以通过配置文件切换AP和CP模式,默认是AP。但是Nacos的CP并不是严格的,因为当集群中的leader节点更新完本地的服务实例数据之后,会把数据同步到集群中的其它节点。而在这个过程当中,集群中的所有节点都是能够提供查询请求的,所以在数据没有同步完全之前,向不同的服务器发送查询请求,可能会得到不同的服务实例列表。
写一下快排,说下冒泡和选择排序的区别
了解哪些设计模式,写一下单例模式
二面(35min)
二面面试官从发量看得出是个大佬,问项目的内容多一些,主要还是围绕项目相关的技术栈项目因人而异,就不写出来了。
讲讲项目难点。实习感觉和学校做项目有什么不同。为什么采用这种解决方案。
如果判断一个整数是2的n次方?
感觉面试官想考察你的想象力。我回答了位运算的解法(
n & (n-1)
)后,面试官说不考虑效率的话,还有什么其他解法。 因为面试官说数是一个int类型,所以我们可以建一个bitmap,用来存储所有0~2^31-1的正整数,所需内存大小是256M,提前把对应的所有的2的n次方的位置置为1。最后我们再到bitmap中找到要判断的这个数的所在位置,如果为1,则说明是2的n次方。8个人,一次比赛只能有两个人,比赛结果具有传递性,即A赢B,B赢C,那A赢C,要得到前2名需要的最少比赛次数。
一开始当成赛马问题的变种去做,后来面试官提示,才知道可以看成求前k个数,所以时间复杂度是O(n * log K)。那最理想的情况就是进行一轮切分就行了,所以我当时回答是7次。欢迎评论区大佬指正。
http是客户端还是服务端主动关闭连接?
如果没开启Keep-Alive,那么服务端在传输完一次请求的数据后会主动关闭。开启了的话,保持连接的时间长短是由服务端的配置决定,通常配置都是在几十秒左右。所以应该是服务端主动关闭的?
http是在TCP还是HTTP保持长连接的
这个问题不知道如何回答比较好。个人觉得因为HTTP长连接本质是连接复用,服务端不会主动关闭TCP连接,那么TCP连接就需要保活,而TCP保活应该依赖于TCP的Keep-Alive机制,所以应当是在TCP层保持长连接?
HR面
HR问了一些比赛、学校的个人经历,实习经历的收获呀等等。HR姐姐会认真听你回答,在你说话时一直有反馈,体验良好。
PS:HR面完隔天就收到面试通过的短信,效率点赞
讨论
想和大家讨论下
- http是客户端还是服务端主动关闭连接?
- http是在TCP还是HTTP保持长连接的?
总结
转转的面试问题想要回答好也并不容易,面试官会根据你回答的点再去延展提问。同时就个人的最近一些面试经历发现,中小厂的一面大多时候是考察你的计算机基础,二面才会对你的项目深挖和问一些智力题。如果笔试表现不好,可能还会在面试中送你多几道题,所以在基础八股文这块还是要好好去掌握的。
#面试复盘##面经##转转##Java#