一、Java基础语法
1. JDK和JRE的区别
o JDK(Java开发工具包):包含JRE + 编译器(javac)、调试工具(jdb)、文档生成工具(javadoc)等开发工具,适合程序员编写代码。
o JRE(Java运行环境):仅包含Java虚拟机(JVM)和核心类库,适合普通用户运行Java程序。
通俗理解:JDK是「厨房全套工具」,JRE是「微波炉加热剩饭」的简单工具。
2. Java基本数据类型
类型 | 关键字 | 大小 | 示例值 |
整型 | int | 4字节 | 42 |
长整型 | long | 8字节 | 100000L |
浮点型 | float | 4字节 | 3.14f |
双精度型 | double | 8字节 | 3.1415926 |
字符型 | char | 2字节 | 'A' |
布尔型 | boolean | 1位 | true/false |
3. 自动装箱与拆箱
o 装箱:基本类型 → 包装类(如 int → Integer)
Integer num = 10; // 自动装箱
o 拆箱:包装类 → 基本类型(如 Integer → int)
int value = num; // 自动拆箱
常见坑点:Integer比较用equals()而非==,因为==比较的是对象地址。
二、面向对象编程
1. 类与对象的关系
o 类:模板(如「汽车设计图」),定义属性和方法。
o 对象:实例(如「一辆特斯拉Model 3」),根据类创建的具体实体。
2. 面向对象三大特性
- 1. 封装:隐藏内部细节(如用private修饰属性,通过get/set方法访问)。
- 2. 继承:子类复用父类功能(如Dog extends Animal)。
- 3. 多态:同一方法不同实现(如Animal a = new Dog(); a.sound()调用狗的叫声)。
3. 抽象类与接口的区别
特性 | 抽象类 | 接口 |
方法 | 可包含具体方法 | JDK8前只能有抽象方法 |
变量 | 可包含非final变量 | 默认public static final |
继承 | 单继承 | 多实现 |
设计目的 | 代码复用 | 定义行为规范 |
三、集合框架
1. ArrayList vs LinkedList
对比项 | ArrayList | LinkedList |
底层结构 | 动态数组 | 双向链表 |
随机访问 | O(1)(快) | O(n)(慢) |
插入/删除 | O(n)(尾部快) | O(1)(任意位置快) |
适用场景:频繁查询用ArrayList,频繁增删用LinkedList。 |
2. HashMap工作原理
o 存储结构:数组+链表/红黑树(JDK8后链表长度≥8时转红黑树)。
o 哈希冲突:通过hashCode()计算桶位置,不同对象可能哈希值相同,用equals()判断是否重复。
o 扩容机制:默认负载因子0.75,当元素数量超过容量*负载因子时扩容为2倍。
四、异常处理
1. try-catch-finally执行顺序
try {
// 可能出错的代码
} catch (IOException e) {
// 处理IO异常
} finally {
// 无论是否异常都会执行(常用于关闭资源)
}
注意:若try或catch中有return,finally会在返回前执行。
2. 自定义异常
class MyException extends Exception {
public MyException(String message) {
super(message);
}
}
// 使用示例
throw new MyException("自定义错误信息");
五、多线程基础
1. 创建线程的两种方式
- 1. 继承Thread类
class MyThread extends Thread {
public void run() {
System.out.println("线程执行");
}
}
new MyThread().start();
- 2. 实现Runnable接口(更推荐,避免单继承限制)
Runnable task = () -> System.out.println("线程执行");
new Thread(task).start();
2. synchronized关键字
o 作用:保证同一时间只有一个线程执行代码块。
o 示例:
public synchronized void add() { count++; } // 同步方法
synchronized (lock) { count++; } // 同步代码块
六、数据库与JDBC
1. JDBC连接步骤
- 1. 加载驱动:Class.forName("com.mysql.jdbc.Driver");
- 2. 建立连接:Connection conn = DriverManager.getConnection(url, user, pwd);
- 3. 创建Statement:Statement stmt = conn.createStatement();
- 4. 执行查询:ResultSet rs = stmt.executeQuery("SELECT * FROM table");
- 5. 处理结果:while (rs.next()) { ... }
- 6. 关闭资源:rs.close(); stmt.close(); conn.close();
2. 事务的ACID特性
o 原子性(Atomicity):事务要么全部完成,要么全部回滚。
o 一致性(Consistency):事务前后数据库状态合法。
o 隔离性(Isolation):并发事务互不干扰。
o 持久性(Durability):事务提交后数据永久保存。
七、框架基础(Spring)
1. Spring的IoC和DI
o IoC(控制反转):对象的创建权交给Spring容器。
o DI(依赖注入):通过构造函数、Setter方法或注解自动注入依赖。
示例:用@Autowired注解自动装配Service层到Controller。
2. Spring Boot自动配置原理
- 1. 启动时加载META-INF/spring.factories文件中的配置类。
- 2. 通过条件注解(如@ConditionalOnClass)判断是否生效。
- 3. 自动创建并装配Bean到Spring容器。
以上为Java初级面试的核心考点。建议结合实际代码练习,例如手写单例模式、实现线程安全的计数器等,加深理解。
本文暂时没有评论,来添加一个吧(●'◡'●)