我这个星期在上海面试,已经面了8家了,其中一家挂在了业务面试上,其他都是挂在了技术一面,崩溃,分享下面试题,我真的不知道到底是怎么了,怎么会有如此变态的题目。 1.为什么hashmap默认长度是16,为什么链表到了8 会转红黑树。我说是为了查询性能,面试官也不满意,说我没有想过。。 2.rabbitmq是如何防止队列阻塞的,我说 主要看消费端的情况,面试官说 抛开消费端不谈。就光看mq本身是怎么防止阻塞的。。 3.聚集索引查询,一共会扫描几次内存。 4.分布式锁如何实现,不借助第三方技术。 5.除了sync ,voliate,还能怎么保证内存可见性? 6.eureka,我想新增一个功能,给出一个eureka上挂载的服务列表,并且实现服务的上下线怎么做? 7.redlock 红锁有什么缺陷,怎么解决? 8.缓存穿透如何解决,我说 分布式锁,他说 这样性能很差,不行 9.redis接受到命令后,它是如何修改内存的。 10.如果叫你设计一个分布式系统,你会怎么设计?是 主节点接收到数据就算成功,还是全部主节点把数据成功分发给子节点才算成功,我说这是AP 和CP的权衡,互联网项目一般采用AP,所以我觉得一台成功就算成功,面试官说 主节点接收到命令后就挂了,数据不就不一致了吗?我说 要保持一致的话,就可能用采用CP 半数机制的方案了。不知道这回答怎么样。。 11. 如何解决线程死锁的问题,我说了造成死锁的四个必要条件,只要打破其中一个就可以,然后Java也提供了一些分析工具,如 JConsole,VisualVM等,可以帮助我们分析问题,定位到问题,面试官说 这个只是你的理论,没有实践。 12. 在没有dump文件的情况下,如何分析系统挂掉的原因。 13.一般来说,你会如何分配堆内存,给老年代分配多少,给新生代分配多少。 14. 什么是顺序IO
在此我也不知道说些什么好,还是默默推荐几个篇文章给大家
另外想获取更详细知识总结:
关注:Java后端技术栈