deepseek给我出的面试题,你能写多少?

以下是针对您的项目经历和技能整理的面试题目,分为技术深度项目实践综合设计三类:


一、技术深度类

Java基础
  1. 如何理解JMM中的可见性、有序性和原子性?结合volatilesynchronized说明它们的实现原理。
  2. 请解释ConcurrentHashMap在JDK 7和JDK 8中的线程安全实现差异,为什么JDK 8改用CAS+synchronized?
JVM
  1. 垃圾回收算法中,标记-复制和标记-整理分别适用什么场景?G1收集器的优势体现在哪里?
  2. 如果线上服务频繁Full GC,你会如何排查和优化?请结合MAT工具分析堆转储文件的思路。
并发编程
  1. 如何用ThreadPoolExecutor实现一个支持动态调整核心线程数的线程池?拒绝策略有哪些实际应用场景?
  2. 在熔断器中,如何通过滑动窗口算法统计请求失败率?请描述实现思路。

二、项目实践类

RPC框架项目
  1. 网络通信

    • 在Netty中如何设计自定义协议?粘包/拆包问题如何解决?
    • 为什么选择模板方法模式封装负载均衡算法?与策略模式有何区别?一致性哈希算法如何避免雪崩问题?
  2. 服务治理

    • 限流器中如何实现滑动时间窗口限流?熔断器的状态转换(关闭/半开/开启)逻辑如何设计?
    • 业务分组的流量隔离具体如何实现?是否考虑过类似Kubernetes Namespace的隔离机制?
  3. 扩展性设计

    • SPI机制与工厂模式在序列化/压缩工具扩展中的协作关系是什么?如何通过XML配置动态加载实现类?
技术派社区项目
  1. 登录认证

    • 扫码登录流程中,如何保证验证码与半长链接的映射安全?如何防止验证码被暴力破解?
  2. 消息通知

    • 为什么选择Kafka作为消息中间件?如果消息丢失,如何通过ACK机制和重试策略保证可靠性?
  3. 性能优化

    • Guava和Caffeine的本地缓存差异是什么?如何通过Canal保证缓存与数据库的最终一致性?
    • Redis ZSET实现排行榜时,如何解决分数相同的时间排序问题?

三、综合设计类

  1. 系统设计

    • 如果要求你设计一个支持千万级并发的短链服务,你会如何设计数据存储、缓存策略和分布式ID生成?
  2. 分布式理论

    • RPC框架如何实现服务注册与发现的最终一致性?若ZooKeeper集群脑裂,会如何影响服务发现?
  3. 故障排查

    • 假设线上RPC调用出现大量超时,你会如何逐步排查问题(从网络、线程池、服务负载到熔断策略)?
  4. 架构权衡

    • 在技术派项目中,为什么选择半长链接实现扫码登录?与WebSocket长连接相比,优缺点是什么?

四、扩展问题

  1. 技术选型

    • 在RPC框架中,为什么选择一致性哈希而非普通哈希?是否考虑过一致性哈希的虚拟节点数量优化?
  2. 代码设计

    • 如果要求为负载均衡策略新增“加权随机”算法,如何在不修改原有代码的情况下快速扩展?
  3. 生产经验

    • 在Docker+Kubernetes部署中,如何通过资源限制(CPU/Memory)避免服务因OOM被Kill?

建议准备方向

  1. 项目难点:重点复盘RPC框架中协议设计、服务治理的挑战,及技术派性能优化的落地效果(结合具体数据)。
  2. 源码理解:对Netty的Reactor线程模型、Spring AOP的代理机制等底层实现需有清晰认知。
  3. 设计模式:模板方法、工厂模式在项目中的实际应用场景需能举例说明。

你可能感兴趣的:(Java面试,Java面经)