Java面试题

参考答案请查阅《Java-Notes

Awesome Java Interview | Java面试题集锦

语法基础

类与对象

  • 为什么Java文件中只能含有一个public?

  • Java中的抽象类与接口各应该在何场景下使用?

  • Java内部类的使用场景有哪些?

异常处理

  • JavaErrorException有何设计区别?

  • catchfinally类中都存在return语句的情况下,会实际得到哪个值?

数据结构

  • 如何遍历包含大量数据的Map类型?

  • HashMap的底层数组长度为何总是2n次方?

基础类型

  • 写出下面代码的输出结果:
public static void main(String[] args) {
    String str1 = "Hello,World";
    String str2 = "Hello,World";
    String str3 = new String("Hello,World");
    String str4 = str3.intern();

    System.out.println("str1 == str2 ? " + (str1 == str2));
    System.out.println("str2 == str3 ? " + (str2 == str3));
    System.out.println("str2 == str4 ? " + (str2 == str4));
}
  • StringBuilder为什么线程不安全?

工程实践

  • 你是如何进行线上应用调试的?

  • 当发现CPU利用率及平均负载较高时,应该如何排查?

  • 在使用Docker或者K8s部署Spring应用的时候有哪些优化技巧?

Maven

  • Maven插件(plugin)goal的执行与生命周期(lifecycle)phase的关系?

数据访问

  • 一般数据库连接池应该设置为多少?

  • 数据量很大,分页查询很慢,有什么优化方案?

并发编程

  • Thread.sleep(0)的作用是什么?
  • 如何减少上下文切换?

线程协作

  • 为什么不建议使用Executors
  • Java中定义线程池参数的策略是什么?
  • newSingleThreadScheduledExecutor这种定时器可以运行多个任务吗?

线程安全

  • JMM为我们提供了哪些特性?

  • synchronized关键字是如何保证原子性、可见性、有序性这几个问题的?

  • 常见的锁优化的思路有哪些?

  • 互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景是什么?

同步

  • CountDownLatch、CyclicBarrier、Semaphore共同之处与区别以及各自使用场景?

并发容器

  • ConcurrentHashMap是如何提高吞吐量的?

NIO

Akka

Spring

IoC

  • 为什么不推荐使用Autowired?在多线程环境下为何有时候Autowired会无效?应该如何保证多线程下的注入?

MyBatis

Hibernate

  • 简述下Hibernate的优劣特性。

Toolkits & Framework

JVM

  • 简单讲下JVM中的类加载过程。JVM中的类加载和卸载的时机?如何理解JVM中不同类加载器的概念和作用?ClassLoader的作用是什么?

  • 简单讲下JVM中的双亲委派模型?什么情况下会破坏双亲委派模型?为什么?可否举个例子?

  • Tomcat中的类加载机制有了解吗?为什么这么设计?实际开发中有遇到哪些类加载器相关的问题?你又是如何解决的?

  • JVM之上的弱类型语言例如Groovy是如何实现?简单讲下动态类加载机制?

垃圾回收

  • 常见的GC调优手段有哪些?如何应对频繁Minor GC/Major GC?如何应对请求高峰期发生GC,导致服务可用性下降?
上一页
下一页