Java面试题总结

Java基础

  1. JVM、JRE、JDK的关系。
  2. 什么是跨平台性?原理是什么。
  3. Java语言有哪些特点?
  4. 什么是字节码?采用字节码的最大好处是什么?
  5. 什么是Java程序的主类?应用程序和小程序的主类有什么不同?
  6. Java和C++的区别?
  7. Oracle JDK 和OpenJDK的对比。
  8. Java有哪些数据类型?
  9. switch是否能作用在byte上,是否能作用在long上,是否能作用在String?
  10. 最有效率的方法计算2乘以8。
  11. Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
  12. float f=3.4,是否正确?
  13. short s1=1;s1=s1+1;有错吗?short s1=1;s+=1;有错么?
  14. Java语言采用何种编码方案?有何特点?
  15. Java注释的种类。
  16. 访问修饰符public,private,protected,以及不写(默认)时的区别。
  17. &和&&的区别。
  18. Java有没有goto。
  19. final有什么作用?
  20. final、finally、finalize的区别?
  21. this关键字的用法?
  22. super关键字的用法?
  23. this和super的区别。
  24. static的独特之处。
  25. static的应用场景。
  26. break、continue、return的区别及作用。
  27. 面向对象和面向过程的区别。
  28. 面向对象的三大特性。
  29. 什么是多态机制?Java语言是如何实现多态?
  30. 抽象类和接口的对比。
  31. 普通类和抽象类有哪些区别?
  32. 抽象类可以用final修饰吗?
  33. 创建一个对象用什么关键字?对象实例与对象引用有何不同?
  34. 在Java中定义一个不做事且没有参数的构造方法的作用?
  35. 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?
  36. 一个类的构造方法的作用是什么?若一个类没有声明构造方法,该程序能正常执行吗?为什么?
  37. 构造方法有哪些特性?
  38. 静态变量和实例变量的区别?
  39. 静态变量与普通变量的区别?
  40. 静态方法与实例方法的区别?
  41. 在一个静态方法内调用一个非静态成员为什么是非法的?
  42. 什么是方法的返回值?返回值的作用是什么?
  43. 什么是内部类?分类有哪些?
  44. 重载和重写的区别。重载的方法能否根据返回类型进行区分?
  45. ==和equals的区别是什么?
  46. HashSet如何检查重复?
  47. 对象的相等与指向他们的引用相等,两者有何不同?
  48. Java中常用的包有哪些?
  49. import.java和javax有什么区别?
  50. Java中IO流分为几种?
  51. BIO、NIO、AIO有什么区别?
  52. Files的常用方法有哪些?
  53. 什么是反射机制?
  54. 反射机制的优缺点?
  55. 反射机制的应用场景有哪些?
  56. Java获取反射的三种方法?
  57. 字符型常量和字符串常量的区别?
  58. String有哪些特性?
  59. String为什么是不可变的?
  60. String str=“i” 与 str=new String(“i”)一样么?
  61. String s=new String(“xyz”);创建了几个字符串对象?
  62. 如何将字符串反转?
  63. 数组有没有length()方法?String有没有length()方法?
  64. String类的常用方法有哪些?
  65. 在使用HashMap的时候,用String做key有什么好处?
  66. String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的?
  67. 自动装箱和拆箱。
  68. 序列化和反序列化,怎么让某个字段不序列化?
  69. 什么是注解?什么是元注解?
  70. 什么是泛型,有什么作用?
  71. 泛型擦除是什么?
  72. JDK8新特性有哪些?
  73. 异常有哪些分类?
  74. 字符串拼接的方式有哪些?
  75. 类之间有哪些关系?
  76. Object 类有哪些方法?
  77. 子类初始化的顺序
  78. HashMap为什么线程不安全?
  79. eques方法为什么确定的字符在前?
  80. 你能说说常用的单例模式么?
  81. 你能说一说简单工厂模式、工厂方法模式、抽象工厂吗?

Java集合容器面试题

  1. 什么是集合?
  2. 集合的特点?
  3. 集合和数组的区别?
  4. 常用的集合类有哪些?
  5. List、Set、Map三者的区别?List、Set、Map是否继承自Collection接口?List、Set、Map三个接口存取元素时,各有什么特点?
  6. 集合框架底层数据结构。
  7. 哪些集合类是线程安全的?
  8. 迭代器Iterator有啥用?
  9. 如何使用Iterator?
  10. 有哪些集合是线程不安全的?怎么解决呢?
  11. ArrayList和Vector的区别。
  12. ArrayList和LinkedList的区别。
  13. ArrayList的扩容机制。
  14. Comparable和Compartor的区别?
  15. 比较HashSet、LinkedHashSet和TreeSet三者的异同。
  16. HashMap和Hashtable的区别。
  17. HashMap和HashSet区别。
  18. HashMap和TreeMap的区别。
  19. HashMap JDK1.8之前的底层实现。出现了什么问题?
  20. HashMap JDK1.8的底层实现。
  21. HashMap的长度为什么是2的幂次方。
  22. HashMap的几种遍历方式。
  23. ConcurrentHashMap和Hashtable的区别。
  24. 什么是快速失败机制。
  25. HashSet的底层是什么?它为什么只传入一个参数?

Java多线程面试题

  1. 什么是进程和线程?他们的区别是什么?
  2. 程序计数器为什么是私有的?
  3. 虚拟机栈和本地方法栈为什么是私有的?
  4. 介绍一下堆区和方法区。
  5. 说说并行与并发的区别。
  6. 为什么要使用多线程呢
  7. 使用多线程可能会出现哪些问题?
  8. 线程的生命周期和状态。
  9. 什么是上下文切换?
  10. 什么是线程死锁?
  11. 如何避免线程死锁?
  12. 说说sleep()方法和wait()方法的区别?
  13. 为什么我们调用start()方法时会执行run()方法?为什么不能直接调用run方法?

Java多线程进阶面试题

  1. 说一说自己对于synchornized关键字的了解。
  2. 说说自己是怎么使用synchornized关键字的。
  3. 构造方法可以用synchornized关键字修饰吗?
  4. synchornized关键字的底层原理?
  5. 说说JDK1.6之后synchornized关键字底层做了哪些优化?
  6. 说一下锁的升级过程。
  7. 什么是自旋锁?
  8. 说说synchornized和ReentrantLock的区别。
  9. 讲一下JMM。
  10. 并发编程的三个重要性。
  11. 说一说synchornized关键字和volatile关键字的区别?
  12. 为什么要用线程池?
  13. 实现Runabble接口和Callable接口的区别。
  14. 执行execute()方法和submit()方法的区别是什么?
  15. 如何创建线程池?
  16. 线程池的七大参数。
  17. 说一下线程池的四种拒绝策略。
  18. 线程池的执行原理。
  19. JUC包中的原子类是哪4类。
  20. AtimicInteger如何使用。
  21. AtimicInteger类的原理。
  22. 静态变量 i 执行多线程 i++ 的不安全问题
  23. Lock 和 synchronized 有什么区别?
  24. 线程的创建方式有哪些?
  25. 线程有哪些方法?
  26. 如何关闭线程池?
  27. 谈一谈 ThreadLocal?
  28. 说一说sleep()、wait()、yield()、join()方法与区别。
  29. CAS的底层原理知道吗?
  30. 什么是ABA问题?怎么解决?
  31. 用过CountDownLatch吗?什么场景下使用?
  32. 用过CyclicBarrier吗?什么场景下使用?
  33. 什么是LockSupport详解?
  34. 你了解AQS吗?详细介绍一下。

并发容器面试题

  1. JDK提供的并发容器。
  2. 介绍一下ConcurrentHashMap.
  3. 介绍一下CopyOnWriteArrayList.
  4. 介绍一下ConcurrentLinkedQueue.
  5. 介绍一下BlockingQueue
  6. 什么是了乐观锁和悲观锁。

JVM面试题

  1. JVM的主要组成部分及其作用?
  2. 说一下JVM运行时数据区
  3. 深拷贝和浅拷贝。
  4. 说一下堆和栈的区别。
  5. Java中提供的几种对象创建方式。
  6. 对象创建的主要流程。
  7. 对象的内存布局了解吗?
  8. Java内存分配的两种方式。
  9. 保证线程安全的两种方式。
  10. Java对象的访问方式。
  11. Java会存在内存泄露吗?请简单描述。
  12. 简单描述Java的垃圾回收机制。
  13. 永久代和方法区的关系。
  14. 为什么要将永久代替换为元空间呢?
  15. String创建对象的两种方式?
  16. String类型的常量池的特殊性。
  17. 垃圾回收器的基本原理是什么?可以马上进行回收吗?有什么办法主动通知虚拟机进行垃圾回收?
  18. Java中都有哪些引用类型?
  19. 怎么判断对象是否可回收?
  20. 在Java中,对象什么时候可以被垃圾回收?
  21. JVM的垃圾收集算法。
  22. 说一下JVM有哪些垃圾回收器。
  23. 简述垃圾回收器是怎么工作的?
  24. 说一下类装载的执行过程。
  25. 虚拟机自带的类加载器有哪些?
  26. 什么是双亲委派机制。
  27. 什么是逃逸分析?栈上分配?
  28. ZGC 了解吗?
  29. 你知道哪些故障处理工具?
  30. 如何判断两个类是否相等?

Spring框架面试题

  1. 什么是Spring框架?
  2. 列举一些重要的Spring模块。
  3. 谈谈你对于Spring IOC的理解。
  4. Spring IOC的初始化过程。
  5. 说一说你对于Spring Aop的理解。
  6. Spring Aop和AspectJ有什么区别?
  7. Spring中的bean的作用域有哪些?
  8. Spring中的单例bean的线程安全问题了解么?怎么解决。
  9. 将一个类声明为Spring的bean的注解有哪些?
  10. @Component和@Bean注解的区别是什么?
  11. @RestController注解与@Controller注解。
  12. Spring中Bean的生命周期。
  13. 说说你对SprigMVC的理解。
  14. SpringMVC的工作流程。
  15. SpringMVC中用到了哪些设计模式。
  16. Spring事物管理的方式有哪几种?
  17. Aop中的术语(什么是连接点、切入点、通知(增强)、切面)?通知的类型有哪些?
  18. Spring提供IOC容器实现的两种方式。二者有何不同?
  19. Spring依赖注入的实现方式有哪些?
  20. Spring中常用的注解有哪些?
  21. ApplicationContext的实现类有哪些?
  22. Spring的循环依赖如何解决的?

Mybatis面试题

  1. 什么是Mybatis?
  2. Mybatis框架的优点。
  3. Mybatis框架的缺点。
  4. #{}和${}的区别是什么?
  5. 当实体类中的属性名和表中的字段不一样,怎么办?
  6. 模糊查询like语句该怎么写?
  7. 通常一个XML映射文件,都会写一个Dao接口与之对应,请问这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载么?
  8. Mybatis是如何进行分页的?分页插件的原理是什么?
  9. Mybatis是如何将SQL执行结果封装为目标对象并返回的?都有哪些映射形式。
  10. 如何执行批量插入?
  11. 如何获取自动生成的主键值?
  12. 在Mapper中如何传递多个参数?
  13. Mybatis动态sql有什么用?执行原理?有哪些动态sql标签?
  14. xml映射文件中除了常见的select|insert|update|delete|标签之外,还有哪些标签?
  15. Mybatis的xml映射文件中,不同的xml映射文件,id是否可以重复?
  16. 为什么说Mybatis是半ORM映射工具?它与全自动的区别在哪里?
  17. Mybatis实现一对一有几种方式?具体是怎么操作的?
  18. Mybatis实现一对多有几种方式?具体是怎么操作的?
  19. Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?
  20. Mybatis的一级、二级缓存。
  21. 简述Mybatis的插件运行原理,以及如何编写一个插件?
  22. Mybatis中如何执行批处理?

MySQL 数据库面试题

  1. 什么是MySQL?
  2. 怎样查看数据库提供的所有存储引擎?
  3. MyISAM和InnoDB的区别。
  4. 什么是索引?为什么要创建索引?
  5. 索引这么多优点,为什么不对表中的每一列创建一个索引呢?
  6. MyISAM和InnoDB实现BTree索引的区别?
  7. 什么是事务?
  8. 事务的四大特性(ACID)。
  9. 并发事务会带来哪些问题?
  10. 事物的隔离级别有哪些?MySQL默认的隔离级别是什么?
  11. 分库分表之后,id主键如何处理?
  12. 数据库的三大范式是什么?
  13. 创建索引的原则。
  14. B树和B+树的区别。
  15. 一条SQL语句是如何执行的?
  16. 一条SQL是如何执行的?
  17. 索引的分类有哪些?如何创建索引、查看索引?
  18. MySQL的体系结构。
  19. 你是如何优化SQL的?
  20. VARCHAR 和 CHAR 的区别?
  21. DATETIME 和 TIMESTAMP 的区别?
  22. 数据类型有哪些优化策略?

Spring Boot框架面试题

  1. 介绍一下Spring Boot。
  2. 什么是Spring Staters?
  3. 如何在Spring Boot 应用程序中使用Jetty而不是Tomcat?
  4. 介绍一下Spring Boot的自动配置原理?
  5. SpringBoot的配置文件格式有哪几种?
  6. 怎么加载properties配置文件?

Redis 面试题

  1. 简单介绍一下Redis。
  2. 说一下Redis和Memcached的区别。
  3. 缓存数据的处理流程是怎么的?
  4. 为什么要用Redis作为缓存(为什么要用缓存)?
  5. 介绍一下Redis常见的数据结构以及使用场景。
  6. Redis为什么不使用多线程?
  7. Redis给缓存设置过期时间有啥用?
  8. 过期的数据删除策略了解么?
  9. Redis的6中淘汰策略。
  10. Redis持久化机制(怎么保证Reids挂掉之后再重启数据可以进行恢复)
  11. 介绍一下Redis的事物。
  12. 什么是缓存穿透?怎么解决?
  13. 什么是缓存雪崩?怎么解决?
  14. 如何保证缓存和数据库数据的一致性?
  15. Redis主从复制如何实现?
  16. Redis如何实现哨兵模式?

Nginx 面试题

  1. 什么是Nginx?
  2. 什么是反向代理,如何实现?
  3. 什么是负载均衡,如何实现?
  4. 负载均衡的策略有哪些?
  5. 什么是动静分离,如何实现?

Docker 容器面试题

  1. 查看哪些程序在后台运行?
  2. 关闭、开启、重启Docker容器命令
  3. 查看所有的容器
  4. 删除容器
  5. 删除镜像
  6. 拉取镜像
  7. 列出镜像
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值