以下是 Java 面试高频 10 道题 + 精炼答案(覆盖基础核心、JVM、并发、集合等重点,适合面试快速记忆):
private 限制访问,提供 getter/setter 等公共方法交互,降低耦合、提高安全性(比如实体类的属性封装)。extends 继承父类非私有属性和方法,实现代码复用;但 Java 只支持单继承(避免菱形依赖),可通过接口间接实现多继承。List list = new ArrayList<>(),调用 list.add() 时实际执行 ArrayList 的实现,提高代码灵活性。特性 | String | StringBuffer | StringBuilder |
|---|---|---|---|
可变性 | 不可变(final 修饰字符数组) | 可变(数组扩容) | 可变(数组扩容) |
线程安全 | 安全(无修改操作) | 安全(方法加 synchronized) | 不安全(无锁) |
效率 | 最低(修改会创建新对象) | 中等 | 最高 |
适用场景 | 少量字符串操作 | 多线程环境字符串拼接 | 单线程环境字符串拼接 |
JVM 内存模型(JMM)定义了线程如何通过内存交互,解决多线程可见性、原子性、有序性问题; 核心分区(基于 HotSpot 虚拟机):
StackOverflowError,扩容失败抛 OutOfMemoryError。System.currentTimeMillis())提供内存支持,同样可能抛 StackOverflowError/OOM。run() 方法,调用 start() 启动线程(底层调用 start0() native 方法)。 缺点:单继承限制,无法继承其他类。run() 方法,通过 new Thread(runnable).start() 启动。 优点:无继承限制,可实现多个接口;缺点:无法直接获取返回值。call() 方法(可返回值、抛异常),结合 FutureTask 包装,通过线程池启动。 优点:支持返回值和异常处理,适合异步任务;缺点:代码稍复杂。synchronized(关键字,可修饰方法/代码块,底层是监视器锁)、ReentrantLock(类锁,支持公平锁/非公平锁、可中断)。volatile(修饰变量,保证可见性和有序性,不保证原子性)、原子类(AtomicInteger,基于 CAS 实现原子操作)。ConcurrentHashMap(分段锁/CAS 实现线程安全)、CopyOnWriteArrayList(写时复制,读无锁)。特性 | HashMap | ConcurrentHashMap |
|---|---|---|
线程安全 | 不安全(多线程put可能扩容死循环、数据丢失) | 安全 |
实现方式 | 数组+链表/红黑树(链表长度>8转红黑树) | 数组+链表/红黑树+CAS+synchronized(分段锁优化为节点锁) |
支持操作 | 无原子操作,需手动加锁 | 支持 putIfAbsent 等原子操作 |
遍历特性 | 快速失败(modCount校验,并发修改抛 ConcurrentModificationException) | 弱一致性(遍历不抛异常,可能读取旧数据) |
适用场景 | 单线程环境 | 多线程并发环境 |
Throwable,分为 Error(错误,如 OutOfMemoryError,JVM 层面,无法捕获修复)和 Exception(异常,可处理)。IOException、SQLException),避免遗漏处理。RuntimeException(如 NullPointerException、ArrayIndexOutOfBoundsException),通常是代码逻辑错误,无需强制捕获,建议通过代码优化避免。new 对象,降低组件耦合。@Component、@Autowired)或 Java 配置类定义 Bean,容器启动时初始化 Bean 并注入依赖。@Before、@AfterReturning)、切面(Aspect,切点+通知)、动态代理(JDK 动态代理基于接口,CGLIB 基于子类,Spring 自动选择)。@Transactional)、全局日志打印、接口权限拦截。这些题目覆盖了 Java 基础、JVM、并发、集合、Spring 框架、分布式核心考点,答案简洁且直击要点,面试时可结合实际项目经验补充案例(比如“项目中用 ConcurrentHashMap 解决了多线程统计问题”),效果更好。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。