一、 java基础面试题(经典):面向对象与核心语法
面向对象是Java的基石。在回答java基础面试题(经典)中的此类问题时,不仅要说出概念,更要结合代码实例说明其实际应用场景。
1. 面向对象的三大特性
封装、继承、多态。其中多态是面试中最常被问到的点。
2. 接口与抽象类的区别
抽象类可以包含状态(成员变量),接口在Java 8之前只能包含常量。抽象类支持单继承,接口支持多实现。
3. == 与 equals 的区别
==比较的是值(基本类型)或内存地址(引用类型)。equals默认也是比较地址,但String等类重写了该方法,比较的是内容。
二、 java基础面试题(经典):集合框架深度剖析
集合框架是Java开发中使用频率最高的部分。以下表格整理了java基础面试题(经典)中关于集合的高频对比考点。
| 对比维度 | HashMap | Hashtable | ConcurrentHashMap |
|---|---|---|---|
| 线程安全 | 否 | 是 | 是(分段锁/CAS) |
| Null键/值 | 允许 | 不允许 | 不允许 |
| 性能 | 高 | 低 | 高 |
| 底层结构 | 数组+链表+红黑树 | 数组+链表 | 数组+链表+红黑树 |
2.1 ArrayList 与 LinkedList 的区别
ArrayList基于动态数组,随机访问速度快(O(1)),但插入删除慢;LinkedList基于双向链表,插入删除快,但随机访问慢。在java基础面试题(经典)中,常考它们的底层实现及适用场景。
三、 java基础面试题(经典):多线程与并发编程
并发编程是区分初级与高级Java工程师的重要分水岭。本部分详解java基础面试题(经典)中的线程安全与锁机制。
3.1 创建线程的四种方式
- 继承Thread类
- 实现Runnable接口
- 实现Callable接口
- 使用线程池(推荐)
在实际开发中,强烈推荐使用线程池,以避免资源耗尽。这是java基础面试题(经典)中的必考题。
3.2 synchronized 与 ReentrantLock 的区别
synchronized是JVM层面的锁,不可中断,自动释放。ReentrantLock是API层面的锁,可中断,支持公平锁,需要手动释放锁。
3.3 线程池的核心参数
创建线程池时,必须指定7个核心参数:corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, threadFactory, handler。
在java基础面试题(经典)中,面试官常问:当队列满了且线程数达到maximumPoolSize时,线程如何处理?答案是执行拒绝策略。
四、 java基础面试题(经典):JVM内存模型与垃圾回收
JVM是Java的底层核心。理解java基础面试题(经典)中的JVM知识,有助于排查线上OOM等问题。
4.1 运行时数据区
包括:程序计数器、Java虚拟机栈、本地方法栈、堆、方法区(元空间)。其中堆是GC的主要区域。
4.2 常见GC算法
标记-清除、标记-复制、标记-整理、分代收集。年轻代使用复制算法,老年代使用标记-整理或标记-清除。
4.3 双亲委派模型
当一个类加载器收到类加载请求时,首先将请求委派给父类加载器。这样可以保证Java核心API的安全性。打破双亲委派常见于JDBC、Tomcat等场景。
五、 java基础面试题(经典):Spring框架核心原理
Spring是Java企业级开发的事实标准。以下问题属于java基础面试题(经典)中Spring部分的必问内容。
5.1 IOC与DI
IOC(控制反转)将对象创建权交给Spring容器。DI(依赖注入)是IOC的具体实现方式,通过构造函数、Setter或注解注入依赖。
5.2 AOP的应用场景
面向切面编程,常用于日志记录、事务管理、权限校验等横切关注点。Spring AOP基于动态代理实现。
5.3 事务传播行为
REQUIRED(默认,支持当前事务,不存在则新建)、REQUIRES_NEW(挂起当前事务,新建事务)等。
六、 java基础面试题(经典):网友还关心(高频问答)
除了上述核心知识点,java基础面试题(经典)中还有一些细节问题常被忽略,但却是面试官考察细致程度的关键。