Java高频面试基础问题与知识点整理

发布时间:2026/9/7 1:19:17
Java高频面试基础问题与知识点整理 目录(一)Java基础高频知识考点1.基本类型和包装类区别2.实例方法和静态方法有什么不一样?3.Java指向的是引用还是地址?怎么理解?(高频考点)4.Object类内的方法(高频考点)5.hashCode方法的作用?6.Java中一个字符占多少个字节,扩展再问int、 long、double占多少字节?7.Boolean占几个字节?8.Exception和Error9.==和equals的区别?10.String str="hello world"和String str=new String("hello world")的区别?(高频考点)11.StringBuffer和StringBuilder的区别是什么?性能对比?如何鉴定线程安全?(高频考点)12.StringBuffer 和 StringBuilder 底层怎么实现的?(高频考点)13.switch支持哪些数据类型?支持long么?(高频考点)14.创建一个类的实例都有哪些办法?(高频考点)15.final、finnally、finalize的区别是什么?16.Jdk1.8/Jdk1.7都分别新增了哪些特性?其他版本呢?(高频考点)17.简单说下Lambda表达式,其解决了什么,相比java7的处理优化了什么?18.有人说“Lambda能让Java程序慢30倍”,你怎么看?19.SpI和API区别是什么?SpI底层实现是什么?20.深克隆和浅克隆?(考频不多)21.伪共享机制简述分析22.假设引用了一个第三方的jar 有个类和我自己写的代码类一样,那么在类加载机制过程中是如何处理的?(高频考点)23.Java提供了哪些IO方式? NIO如何实现多路复用?24.谈谈接口和抽象类有什么区别?(二)Java集合框架高频知识考点(高频考点集中地)1.HashMap相关put操作,get操作等流程?(高频考点)2.Hash为啥要扩容3.HashMap如果我想要让自己的Object作为K应该怎么办?4.Hashmap 线程不安全的原因(高频考点)5.HashMap1.7与HashMap1.8的区别,从数据结构上、Hash值的计算上、链表数据的插入方法、内部Entry类的实现上分析?6.HashSet和HashMap区别7.Hash1.7是基于数组和链表实现的,为什么不用双链表?HashMap1.8中引入红黑树的原因是?为什么要用红黑树而不是平衡二叉树?(高频考点)8.HashMap、HashTable、ConcurrentHashMap的原理与区别?9.HashMap和ConcurrentHashMap区别(高频考点)10. ConcurrentHashMap的数据结构(高频考点)11.高并发HashMap的环是如何产生的(高频考点)12.哪些集合是线程安全的?13.Collections.SynchronizedCollection方法实现原理是什么?14.Array和ArrayList有什么区别?使用时注意事项有哪些?15.常用的集合类有哪些?比如List如何排序(最好说下底层上的实现)?(高频考点)16.ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和各自适应的场景是什么?(三)多线程与并发编程高频知识考点(高频考点集中地)1.进程和线程的区别,进程间如何通讯,线程间如何通讯?2.Java中线程之间如何通信3.并发和并行的区别4.Java线程的状态?细说一下BLOCKED和WAITING有什么区别?(高频考点)5.Java实现多线程的方式有哪些?(高频考点)6.Java处理多线程的方式有哪些?7.Java程序中启动一个线程是用run()还是start()?8.Thread的start方法调用两次会怎么样?Thread是如何保证start方法调用只有一次生效?(高频考点)9.什么是守护线程?有什么用?10.两个线程如何串行执行?11.可以运行时kill掉一个线程吗?12.Synchronized的实现原理(高频考点)基于对象头的 Mark WordMonitor(监视器)Synchronized 实现原理13.volatile与synchronized的区别是什么?volatile作用(高频考点)14.synchronized和Lock的区别(高频考点)15.Atomic类如何保证原子性(CAS操作)(高频考点)16.AtomicInteger、AtomicBoolean这些类之所以在高并发时高效,共同的原因是?17.关于 Atomic 类中的主要变量如下,其使用了 volatile 关键字进行修饰。你知道它在源码中的主要意义是?(高频考点)18.CAS?CAS 有什么缺陷,如何解决?(高频考点)19.比较和替换是两个动作,CAS 是如何保证这两个操作的原子性呢?Java 层次JVM 层次硬件层次总结20.Java不可重入锁与可重入锁的区别如何理解?21.无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁,解释锁升级?(高频考点)22.乐观锁 VS 悲观锁?公平锁 VS 非公平锁?独享锁 VS 共享锁?23.自旋锁 VS 适应性自旋锁,简单介绍24.为什么读多写少的情况,就适合使用乐观锁呢?悲观锁在读多写少的情况下,不也是有很少的冲突吗?(高频考点)25.死锁发生的原因26.用java 代码实现一个死锁用例,说说怎么解决死锁问题?回到用例代码下,如何解决死锁问题呢?(高频考点)27.请实现让10个任务同时并发启动?28.AQS理论的数据结构是什么样的?(高频考点)29.ReentrantLock底层公平锁和非公平锁的原理(高频考点)非公平锁(默认)公平锁同步器的基础30.多线程中sleep与wait的区别是什么?31.notify和notifyAll区别?32.除了用Object.wait和Object.notifyAll来实现线程间的交互外,你还会常用哪些来实现?33.ThreadLocal的原理和实现(高频考点)34.ThreadLocal为什么要使用弱引用和内存泄露问题(高频考点)内存泄漏场景弱引用的解决方案35.ThreadLocal怎么解决内存泄露的问题?(高频考点)36.为什么要使用线程池?37.线程池的线程数量确定?状态分析?关闭方式?38.如何控制线程池线程的优先级39.核心线程池ThreadPoolExecutor的参数/常见线程池的创建参数是什么样的?(高频考点)40.new ThreadPoolExecutor(10,100,10,TimeUnit.MILLISECONDS,new LinkedBlockingQueue(10));一个这样创建的线程池,当已经有10个任务在运行时,第11个任务提交到此线程池执行的时候会发生什么,为什么?41.实现一个自定义的ThreadFactory的作用通常是?42.常见的线程池创建和参数分析?(高频考点)43.ThreadPoolExecutor的工作流程(高频考点)44.ScheduledThreadPoolExecutor中的使用的是什么队列?内部如何实现任务排序的?45.线程池的运行逻辑,FixedThreadPool、CachedThreadPool的原理(高频考点)46.用Executors.newCachedThreadPool创建的线程池,在运行的过程中有可能产生的风险是?47.阻塞队列ArrayBlockingQueue、LinkedBlockingQueue分析(高频考点)48.请合理的使用Queue来实现一个高并发的生产/消费的场景,给些核心的代码片段。49.线程池关闭原理50.JUC下的常见类的使用,take、poll的区别,put、offer的区别?51.Future原理,其局限性是什么?并说说CompletableFuture核心原理?52.你是否了解fork/join(基本思想)?在工作中是如何使用的?说说他们的优势是什么?(高频考点)53.Java线程池的调优经验有哪些?(线程池的合理配置)(高频考点)54.一个请求中,计算操作需要50ms,db操作需要100ms,对于一台8核的机器来说,如果要求cpu利用率达到100%,如何设置线程数?(高频考点)55.如果系统中不同的请求对应的cpu时间和io时间都不同,那怎么设置线程数量?(高频考点)56.线程池核心数20,最大600,阻塞队列200,当QPS200(注意是qps)的时候,请求是调第三方阻塞超时,请问怎么提高它的吞吐量(注意不能加机器)?(高频考点)57.当前线程池是200,线程单次处理请求20ms,那么理论上单节点的qps 是多少呢?58.多线程对Long数据进行加和会存在什么问题?如何解决?59.Netty 的线程机制是什么样的?(四)其他扩展高频知识考点1.LRU算法是怎么实现的?大致说明下(高频考点)具体实现方案:使用LinkedHashMap实现自编代码:基于 HashMap 和 双向链表实现 LRU其他相关内容补充:LRU-K其他相关内容补充:two queue其他相关内容补充:Multi Queue(MQ)2.后台服务出现明显“变慢”,谈谈你的诊断思路?(高频考点)3.你了解Java应用开发中的注入攻击吗?4.在Java程序运行阶段,可以用什么命令行工具来查看当前Java程序的一些启动参数值,例如Heap Size等。5.用什么命令行工具可以查看运行的Java程序的GC状况,请具体写出命令行格式。(高频考点)6.用什么工具,可以在Java程序运行的情况下跟踪某个方法的执行时间,请求参数信息等,并请解释下工具实现的原理。7.当一个Java程序接收请求,很长时间都没响应的话,通常你会怎么去排查这种问题?8.NIO(New I/O)用到的组件有哪些?9.Netty对比Java NIO做了什么优化?(必考)干货分享,感谢您的阅读!背景互联网大厂高频面试题基本总结回顾(含笔试高频算法整理)(一)Java基础高频知识考点针对人员:1.全部人员都适用;2.正式员工:针对应届+工作1-3年的面试者,本部分可部分考察;3.外包员工:本部分一般加大比重。1.基本类型和包装类区别数据类型基本类型:包括byte、short、int、long、float、double、char和boolean等8种基本数据类型。它们是直接存储数据值的,不具有方法和属性。包装类:对应于每种基本类型,Java提供了相应的包装类,例如Byte、Short、Integer、Long、Float、