一、JVM与性能优化
描述一下 JVM 加载 Class 文件的原理机制? 什么是类加载器? 类加载器有哪些? 什么是tomcat类加载机制? 类加载器双亲委派模型机制? Java 内存分配? Java 堆的结构是什么样子的? 简述各个版本内存区域的变化? 说说各个区域的作用? Java 中会存在内存泄漏吗,简述一下? Java 类加载过程? 什么是GC? 为什么要有 GC? 简述一下Java 垃圾回收机制? 如何判断一个对象是否存活? 垃圾回收的优点和原理,并考虑 2 种回收机制?基本原理是什么? 深拷贝和浅拷贝? 什么是分布式垃圾回收(DGC)?它是如何工作的? 在 Java 中,对象什么时候可以被垃圾回收? 简述Minor GC 和 Major GC? Java 中垃圾收集的方法有哪些? 讲讲你理解的性能评价及测试指标? 常用的性能优化方式有哪些? 说说分布式缓存和一致性哈希? 什么是GC调优?
二、Redis
redis数据结构有哪些?
Redis缓存穿透,缓存雪崩?
如何使用Redis来实现分布式锁?
Redis的并发竞争问题如何解决?
Redis持久化的几种方式,优缺点是什么,怎么实现的?
Redis的缓存失效策略?
Redis集群,高可用,原理?
Redis缓存分片?
Redis的数据淘汰策略?
redis队列应用场景?
分布式使用场景(储存session)?
三、网络编程
TCP建立连接和断开连接的过程? HTTP协议的交互流程? HTTP和HTTPS的差异,SSL的交互流程? TCP的滑动窗口协议有什么用? HTTP协议都有哪些方法? Socket交互的基本流程? 讲讲tcp协议(建连过程,慢启动,滑动窗口,七层模型)? webservice协议(wsdl/soap格式,与restt办议的区别)? 说说Netty线程模型,什么是零拷贝? TCP三次握手、四次挥手? DNS解析过程? TCP如何保证数据的可靠传输的?
四、设计模式与重构
说说几个常见的设计模式(23种设计模式)? 设计一个工厂的包的时候会遵循哪些原则? 列举一个使用了 Visitor/ Decorator模式的开源项目/库? 如何实现一个单例? 代理模式(动态代理)? 单例模式(懒汉模式,恶汉模式,并发初始化如何解决, volatile与lock的使用)? JDK源码里面都有些什么让你印象深刻的设计模式使用,举例看看?
五、分布式
什么是CAP定理? 说说CAP理论和BASE理论? 什么是最终一致性?最终一致性实现方式? 什么是一致性Hash? 讲讲分布式事务? 如何实现分布式锁? 如何实现分布式 Session? 如何保证消息的一致性? 负载均衡的理解? 正向代理和反向代理? CDN实现原理? 怎么提升系统的QPS和吞吐? Dubbo的底层实现原理和机制? 描述一个服务从发布到被消费的详细过程? 分布式系统怎么做服务治理? 消息中间件如何解决消息丢失问题? Dubbo的服务请求失败怎么处理? 对分布式事务的理解? 如何实现负载均衡,有哪些算法可以实现? Zookeeper的用途,选举的原理是什么? 讲讲数据的垂直拆分水平拆分? zookeeper原理和适用场景? zookeeper watch机制? redis/zk节点宕机如何处理? 分布式集群下如何做到唯一序列号? 用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗? MQ系统的数据如何保证不丢失? 列举出能想到的数据库分库分表策略?