开发两年成功定级阿里P6,只因啃透了这位大佬整理的Java面试题总集

前言

Java面试随着时间的改变而改变。在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来越高级,面试官问的问题也更深入。 在我初入职场的时候,类似于 Vector 与 Array 的区别、HashMap 与 Hashtable 的区别是最流行的问题,只需要记住它们,就能在面试中获得更好的机会,但这种情形已经不复存在。如今,你将会被问到许多 Java 程序员都没有看过的领域,如 NIO,设计模式,成熟的单元测试,或者那些很难掌握的知识,如并发、算法、数据结构及编码。

由于我喜欢研究面试题,因此我已经收集了许多的面试问题,包括许多许多不同的主题。我已经为这众多的问题准备一段时间了,现在我将它们分享给你们。这里面不但包含经典的面试问题,如线程、集合、equals 和 hashcode、socket,而且还包含了 NIO、数组、字符串、Java 8 等主题。

该列表包含了入门级 Java 程序员和多年经验的高级开发者的问题。无论你是 1、2、3、4、5、6、7、8、9 还是 10 年经验的开发者,你都能在其中找到一些有趣的问题。这里包含了一些超级容易回答的问题,同时包含经验丰富的 Java 程序员也会棘手的问题。

该问题列表特别长,我们有各个地方的问题,所以,答案必须要短小、简洁、干脆,不拖泥带水。因此,除了这一个段落,你只会听到问题与答案,再无其他内容,没有反馈,也没有评价。为此,我已经写好了一些博文,在这些文章中你可以找到我对某些问题的观点,如我为什么喜欢这个问题,这个问题的挑战是什么?期望从面试者那获取到什么样的答案?

这个列表有一点不同,我鼓励你采用类似的方式去分享问题和答案,这样容易温习。我希望这个列表对面试官和候选人都有很好的用处,面试官可以对这些问题上做一些改变以获取新奇和令人惊奇的元素,这对一次好的面试来说非常重要。而候选者,可以扩展和测试 Java 程序语言和平台关键领域的知识。

一. Java基础

  1. 请你解释为什么会出现 4.0 - 3.6=0.40000001 这种现象
  2. 请你讲讲一个十进制的数在内存中是怎么存的?
  3. 接口和抽象类的区别是什么 ?
  4. HTTP请求的GET与POST方式的区别
  5. Session与Cookie区别
  6. 列出自己常用的JDK包
  7. equals与==的区别
  8. hashCode和equals方法的区别与联系
  9. 什么是Java序列化和反序列化,如何实现Java序列化?或者请解释Serializable 接口的作用
  10. Object类中常见的方法,为什么wait notify会放在Object里边?
  11. 解释一下extends 和super泛型限定符
  12. 请列举你所知道的Object类的方法并简要说明
  13. 创建线程的方式
  14. 自定义注解
  15. ArrayList扩容机制是怎么样的? 详细说一下。
  16. HashMap 1.7 和 1.8 的区别
  17. HashMap 初始容量 计算方法
  18. HashMap在并发下会产生什么问题?有什么替代方案?(HashTable, ConcurrentHashMap)。它们两者的实现原理。
  19. 手写HashMap
  20. HashMap在并发下会产生什么问题?有什么替代方案?(HashTable, ConcurrentHashMap)。它们两者的实现原理。
  21. HashMap 为什么不用平衡树,而用红黑树

二. Java并发

  1. ThreadLocal 子类及原理, OOM产生原因及防治
  2. 并发队列
  3. ThreadPoolExecutor构造函数有哪几个参数,实现原理,创建线程池的方式
  4. Executors 可以创建的线程池类型
  5. 线程池的阻塞队列为什么都用LinkedBlockingQueue,而不用ArrayBlockingQueue
  6. 为什么建议在不用线程池的时候,关闭线程池,线程池的作用就是复用线程
  7. CountDownLatch原理、CyclicBarrier原理,两者区别
  8. 如何实现一个生产者与消费者模型

三. 锁

  1. Synchronized原理
  2. synchronized和Lock的区别
  3. 什么是死锁
  4. 如何 避免死锁
  5. 什么是活锁
  6. synchronized 可重入是怎么实现的
  7. ReentrantLock可重入性怎么实现的?
  8. 非公平锁和公平锁在ReetrantLock里的实现过程是怎样的
  9. 自旋锁、自适应自旋、锁消除、锁粗化、轻量级锁、偏向锁
  10. 公平锁、非公平锁
  11. AbstractQueuedSynchronizer的作用
  12. JDK8新增的锁

四. JVM知识

  1. JVM运行时内存区域划分
  2. OOM,及SOE的示例、原因,排查方法
  3. 如何判断对象可以回收或存活
  4. 哪些对象可以作为GC ROOT 对象
  5. 常见的GC算法
  6. 常见的JVM性能监测分析工具
  7. JVM优化
  8. 什么时候会触发FullGC
  9. 类加载器有几种
  10. 什么是双亲委派模型?双亲委派模型的破坏
  11. 类的生命周期
  12. 强引用、软引用、弱引用、虚引用
  13. 编译器会对指令做哪些优化?

五. Java反射IO

  1. 请说明如何通过反射获取和设置对象私有字段的值?
  2. BIO、NIO区别
  3. Java NIO的原理

六. 设计模式

  1. 常见的设计模式
  2. 单例模式代码

七. 数据结构

  1. 如何构造一致性哈希算法
  2. 二叉树结构
  3. 平衡二叉树(AVL)
  4. 红黑树
  5. B+树 和 B-树

八. 数据库

  1. 数据库三大范式、反模式
  2. Mysql 架构图
  3. InnoDB存储结构
  4. 存储引擎的 InnoDB与MyISAM区别,优缺点,使用场景
  5. 建立索引的原则
  6. B+Tree 索引 和 哈希索引 限制

九. Redis

  1. Redis 为什么是单线程? 为什么单线程还能这么快?
  2. Redis 使用场景
  3. Redis 持久化机制
  4. Redis 数据类型
  5. 事务
  6. Redis高可用方案

十. Spring

  1. BeanFactory 与ApplicationContext 是干什么的,两者的区别
  2. Spring IOC容器如何实现
  3. Spring DI(依赖注入)的实现
  4. Spring如何解决循环依赖问题
  5. Spring Bean 生命周期
  6. Spring Bean的作用域,默认是哪个?

十一. Spring Boot

  1. 什么是 Spring Boot?
  2. Spring Boot启动流程
  3. Spring Boot启动的时候会加载哪些包?
  4. 如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
  5. 什么是 Spring Boot 自动配置?

十二. Dubbo

  1. Dubbo SPI的理解
  2. Dubbo 基本原理、执行流程
  3. Dubbo 负载均衡策略、集群策略
  4. 注册中心挂了还可以通信吗?

十三. Spring Cloud

  1. 什么是Spring Cloud ?
  2. 使用Spring Cloud有什么优势?
  3. 服务注册和发现是什么意思? Spring Cloud如何实现?
  4. 负载平衡的意义什么?
  5. 什么是Hystrix ?它如何实现容错?
  6. 什么是Hystrix断路器?我们需要它吗?

十四. 消息队列

  1. 消息的幂等性处理思路
  2. 消息队列如何保证高可用
  3. 如何保证消息可靠性
  4. 消息积压问题
  5. kafka的分区策略

十五. Mybatis

  1. MyBatis 如何执行批量插入?
  2. 简述 Mybatis 的 XML 映射文件和 Mybatis 内部数据结构之间的映射关系?
  3. 通常一个 XML 映射文件,都会写一个 Mapper 接口与之对应。请问,这个 Mapper 接口的工作原理是什么?Mapper 接口里的方法,参数不同时,方法能重载吗?

十六. Zookeeper

  1. Zookeeper 是什么?
  2. Zookeeper 有哪几种节点类型?
  3. Zookeeper 的通知机制是什么?
  4. Zookeeper 采用什么权限控制机制?
  5. 集群中的机器角色有哪些?
  6. 集群支持动态添加机器吗

十七. Maven

  1. maven依赖 生命周期

十八. 场景题

  1. 假设一个场景,要求stop the world时间非常短,你会怎么设计垃圾回收机制?
  2. 现在有一个A类,其中有A、B、C方法,C方法中调用了A、B,定义了一个A、B方法的日志切面,请问能打印出日志吗?

十九. 分布式、微服务

  1. 领域驱动有了解吗?什么是领域驱动模型?
  2. JWT有了解吗,什么是JWT
  3. 说说如何设计一个良好的 API
  4. 说说 CAP 定理、BASE 理论
  5. 微服务与 SOA 的区别
  6. 说说分布式一致性的实现方案

二十. Java性能优化专题

  1. 性能分析的方法
  2. 收集系统、jvm信息
  3. 堆大小设置
  4. 回收器选择
  5. 响应时间优先的并发收集器
  6. 调优总结

写在最后

收集题目过多,限于篇幅,就不在文中一一讲解,有需要答案复习的朋友,关注下方公众号即可获取,童叟无欺

猜你喜欢

转载自blog.csdn.net/mrchaochao/article/details/108536985