你遇到过哪些质量很高的 Java 面试?

192 阅读3分钟
mp.weixin.qq.com/s/qWrO9BnIe…

这是一篇我在知乎上面关于问题『你遇到过哪些质量很高的 Java 面试?』的回答,获得了部分网友的认同。


原文地址:

https://www.zhihu.com/question/60949531/answer/579261846


全文如下:

面试,从来都是一个随机性很高的过程。但凡是质量高的面试,必然是面试官根据面试者的回答,循序渐进,抽丝剥茧,横向纵向分别展开的。

那种,面试之前就订好了准备问哪些问题的面试官,按照自己的问题清单,从头问到尾,整个面试过程的质量不可能高。

我觉得,质量高的面试,就是从一个点切入,然后逐渐考察面试者对于这个点相关的知识体系的了解。

举几个例子

比如考察Java类加载相关问题:

什么是类加载?

双亲委派是什么?

为什么要双亲委派?

如何破坏双亲委派?

为什么要破坏双亲委派?

修改类加载策略要复写哪个方法?

知道模块化吗?

知道Java9的模块化技术吗?

jigsaw,jboss modules和osgi的区别?

ClassNotFound怎么回事?

如何解决ClassNotFound?

ClassNotFoundException和NoClassDefFoundErr区别?


比如考察计算机网络相关问题,一般从tcp/ip入手:

OSI七层协议?

三次握手?四次关闭?

为什么要三次握手,两次或者四次行不行?

Tcp和Udp区别?

粘包和拆包?

一次网络请求全过程?

什么是DNS?

负载均衡?

CDN?

页面响应慢如何排查?

SESSION?

SESSION和cookie区别?

没有cookie如何实现SESSION?

SESSION有没有限制?有限制怎么办?

代理和反向代理?

--------------------------------------

除了以上的情况外,还有一种聪明的面试官,从一个开放性的问题下手: 能简单介绍下您现在所做项目和过程中的技术难点或有遇到瓶颈吗?

下面就是一个面试官和面试者都比较优秀的情况下,一场关于分布式相关的高质量面试现场。

这种问题直接回答高并发分布式场景的数据一致性问题。(参考:关于分布式一致性的探究

然后面试官问:如何解决的呢。

答:在并发方面考虑了乐观锁和分布式锁。在一致性方面不同场景使用了不同策略。

问:介绍下乐观锁

答:乐观锁巴拉巴拉(参考:深入理解乐观锁与悲观锁

问:分布式锁如何实现

答:基于数据库,基于缓存,基于zk三种。然后再把三种方案的优缺点说清楚。(参考:分布式锁的多种实现方式~)

问:关于缓存和ZK了解多少

答:常用缓存,redis,memcached等。当然还可以说memcached容易被总来做DDOS攻击(参考:GitHub遭受的DDoS攻击到底是个什么鬼?)。ZK就简单介绍下原理,常用场景等。(参考:[高级]Zookeeper介绍(四)——Zookeeper中的基本概念

问:数据一致性怎么保证

答:先扯一段CAP和BASE(参考:分布式的CAP理论 ),再说说2PC,3PC(参考:深入理解分布式系统的2PC和3PC)以及有啥缺点,过度目前常用的策略。比如最大努力通知,可靠消息最终一致性。TCC分布式事务等。在说下业务场景都有哪几个。 最终是如何选择的。最后再说一句:当然,数据一致性的最后一道防线还是人工介入。要做好数据对账,实时数据检验以及报警。保证可以及时发现线上问题。