Java开发实习生——喜马拉雅(30min)
面试官是个年轻小伙,体验良好,非常和蔼,你不懂的面试官会给你回答出来,面试官按照简历往下问的
- 自我介绍
- 使用过哪些集合?
- ArrayList和LinkedList的区别?
- 反射机制,反射机制你常用在哪里?答得Spring的ioc
- 什么情况下用单线程?什么情况下用多线程?
- jvm内存区域
- jvm垃圾回收算法
- 操作系统是什么?
- 假如让你设计一个malloc(),和free()你会怎么做?之前看过,面试的时候忘了。。。
- 如何查找慢查询sql,慢查询如何优化?开启慢查询日志,MySQL配置文件中可以配置时间阈值。用explain分析sql
- 说到explain,explain中都有哪些字段
- ref中的const字段表示什么?有点忘了,答得是会走索引,面试官只出走的是唯一索引,比如主键索引就会走这个
- redis中字符串怎么表示的?
- rehash的过程,以及为什么要rehash?
- IO多路复用
- Netty中的IO多路复用形式
接下来就开始问项目了:
RPC:
- “可扩展向后兼容的私有RPC协议”是什么?为什么不用HTTP?
- 传输层采用tcp还是udp?为什么?用的tcp,我答的因为tcp是可靠性传输能够保证服务调用的可靠性,面试官提示还有TCP的超时重传机制以及tcp是全双工的
- "插件化可扩展的微内核架构"怎么理解,SPI机制怎么实现的?
- 关注AP,CAP是什么?为什么要关注AP而不是CP?
- 关注AP的注册中心除了nacos还有哪些?关注CP的注册中心有哪些?AP:eurukaCP:zoomkeeperAP/CP:nacos
- 幂等性是什么?为什么只对有幂等性的服务进行重试
- CompletableFuture如何实现全异步,优点以及缺点答的还不是很清楚,优点吞吐量更大,缺点没有说出来,面试管提示了得分业务,全异步编码复杂,不能用事务
IM:
- 总未读数与会话未读是什么意思,为什么要用redis+lua
- 使用redis事务不行吗,redis中的事务是怎样的
- redis事务支持回滚吗?
算法:
比较简单,面试官让口述
- 二叉树的镜像翻转
- 反转链表