1. Java基础面试题概述
Java作为一门历经25年发展的编程语言,其基础知识的掌握程度往往是面试中的第一道门槛。根据2023年Stack Overflow开发者调查,Java在全球编程语言使用率中仍稳居前五,企业级应用开发岗位中约78%的面试会从基础概念开始考察。
我参与过上百场Java技术面试,发现候选人最容易在基础环节暴露出知识盲区。本文整理的实际面试题均来自阿里、腾讯、字节等大厂近3年的真实面经,不同于网上流传的"八股文"题库,更侧重考察对原理的理解和实际应用能力。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心语言特性面试题解析
2.1 面向对象三大特性深度剖析
封装性的考察往往从getter/setter的设计开始:
java复制// 反面案例:直接暴露字段
public class User {
public String password;
}
// 正确实现
public class User {
private String password;
public void setPassword(String plainText) {
if (plainText.length() < 8) {
throw new IllegalArgumentException("密码长度不足");
}
this.password = BCrypt.hashpw(plainText);
}
}
面试官常追问:为什么字段要私有化?setter中做校验有什么好处?加密处理应该在哪个环节进行?
继承相关的问题常围绕super和this的区别展开:
java复制class Parent {
String value = "parent";
void print() {
System.out.println(value);
}
}
class Child extends Parent {
String value = "child";
@Override
void print() {
System.out.println(super.value); // 输出什么?
System.out.println(this.value); // 输出什么?
}
}
这个例子会考察对Java字段隐藏(field hiding)机制的理解。实际输出是:
code复制parent
child
多态的考点常出现在方法重写(Override)的场景:
java复制class Animal {
void eat() {
System.out.println("动物进食");
}
}
class Cat extends Animal {
@Override
void eat() {
System.out.println("猫吃鱼");
}
void jump() {
System.out.println("猫跳跃");
}
}
public class Test {
public static void main(String[] args) {
Animal animal = new Cat();
animal.eat(); // 输出?
animal.jump(); // 能否编译?
}
}
这里考察编译时类型和运行时类型的区别,以及方法调用时的动态绑定机制。
2.2 异常处理机制精讲
异常体系是面试必考点,需要清晰区分:
- Error:系统级错误(如OutOfMemoryError),应用程序不应捕获
- RuntimeException:编程错误(NullPointerException等)
- Checked Exception:必须处理的异常(IOException等)
常见陷阱题
