「高级java工程师」常见面试题及其答案: 「高级java工程师」常见面试题及其答案(持续更新)_好人老李的博客-CSDN博客 目录 java基础 面向对象与面向过程的区别? JRE、JDK、JVM的区别? java的数据类型有哪些? 重写和重载的区别? java创建对象有几种方式? 反射 什么是反射?有什么作用? 反射的优缺点? ==和equals()的区别? final、finally、 finalize 的区别? String String类为什么设计成不可变? String、StringBuffer和StringBuilder的区别? 异常 java常见的异常类型有哪些?有什么区别? IO BIO、NIO、AIO 有什么区别? 序列化和反序列化 什么是序列化和反序列化? 序列化的作用? 什么是serialVersionUID? 如何生成serialVersionUID? 如何实现序列化? 集合 ArrayList和LinkedList的区别? HashMap 的工作原理? HashMap的扩容机制? ConcurrentHashMap工作原理? HashMap和HashTable的区别? 多线程 进程和线程的区别? 线程有几种状态? sleep() 和 wait() 有什么区别? 创建线程有哪几种方式? 如何停止一个正在运行的线程? 线程池的工作原理? synchronized与ReentrantLock的区别? 什么是死锁?如何防止死锁? 什么是threadlocal?工作原理? volatile的作用和原理? JVM JVM对锁进行了哪些优化? JVM 是由哪几部分组成的? 谈谈类的加载过程? 类加载器有哪些? 什么是双亲委派模型?有没有办法打破? java对象的内存结构? 什么是引用?java中引用有几种类型? 深拷贝和浅拷贝的区别? gc有哪些类型?有什么区别? 常用的垃圾回收算法有哪些? jvm中,有哪些垃圾收集器? 哪些对象可以作为GC时的根节点? Spring Spring、SpringMVC、SpringBoot的关系? mysql 索引为什么会让查询变快?