专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java初级开发必背面试题(一)(java开发工程师笔试题)

temp10 2025-03-23 23:49:21 java教程 4 ℃ 0 评论

一、Java基础语法

1. JDK和JRE的区别

o JDK(Java开发工具包):包含JRE + 编译器(javac)、调试工具(jdb)、文档生成工具(javadoc)等开发工具,适合程序员编写代码。
o JRE(Java运行环境):仅包含Java虚拟机(JVM)和核心类库,适合普通用户运行Java程序。
通俗理解:JDK是「厨房全套工具」,JRE是「微波炉加热剩饭」的简单工具。

2. Java基本数据类型

类型

Java初级开发必背面试题(一)(java开发工程师笔试题)

关键字

大小

示例值

整型

int

4字节

42

长整型

long

8字节

100000L

浮点型

float

4字节

3.14f

双精度型

double

8字节

3.1415926

字符型

char

2字节

'A'

布尔型

boolean

1位

true/false

3. 自动装箱与拆箱

o 装箱:基本类型 → 包装类(如 intInteger

Integer num = 10; // 自动装箱

o 拆箱:包装类 → 基本类型(如 Integerint

int value = num; // 自动拆箱

常见坑点:Integer比较用equals()而非==,因为==比较的是对象地址。


二、面向对象编程

1. 类与对象的关系

o :模板(如「汽车设计图」),定义属性和方法。
o 对象:实例(如「一辆特斯拉Model 3」),根据类创建的具体实体。

2. 面向对象三大特性

  1. 1. 封装:隐藏内部细节(如用private修饰属性,通过get/set方法访问)。
  2. 2. 继承:子类复用父类功能(如Dog extends Animal)。
  3. 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. 1. 继承Thread类
class MyThread extends Thread {
    public void run() {
        System.out.println("线程执行");
    }
}
new MyThread().start();
  1. 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. 1. 加载驱动:Class.forName("com.mysql.jdbc.Driver");
  2. 2. 建立连接:Connection conn = DriverManager.getConnection(url, user, pwd);
  3. 3. 创建Statement:Statement stmt = conn.createStatement();
  4. 4. 执行查询:ResultSet rs = stmt.executeQuery("SELECT * FROM table");
  5. 5. 处理结果:while (rs.next()) { ... }
  6. 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. 1. 启动时加载META-INF/spring.factories文件中的配置类。
  2. 2. 通过条件注解(如@ConditionalOnClass)判断是否生效。
  3. 3. 自动创建并装配Bean到Spring容器。

以上为Java初级面试的核心考点。建议结合实际代码练习,例如手写单例模式、实现线程安全的计数器等,加深理解。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表