基础语法

基础语法是Java面试中常考的一部分,主要考察对Java语法的熟悉程度。

1. 数据类型
Java中的数据类型分为基本数据类型和引用数据类型。基本数据类型包括整型、浮点型、字符型和布尔型。
示例代码:


int num = 10;
double d = 3.14;
char c = 'a';
boolean flag = true;

2. 类和对象
Java是面向对象的编程语言,面试中常会涉及类和对象的相关问题。类是对象的模板,对象是类的实例。
示例代码:


class Person {
    String name;
    int age;
    
    void sayHello() {
        System.out.println("Hello, my name is " + name);
    }
}

Person p = new Person();
p.name = "Alice";
p.age = 20;
p.sayHello();

3. 控制语句
控制语句用于控制程序的流程,包括条件语句和循环语句。
示例代码:


int num = 5;
if (num > 0) {
    System.out.println("num is positive");
} else if (num < 0) {
    System.out.println("num is negative");
} else {
    System.out.println("num is zero");
}

for (int i = 0; i < 5; i++) {
    System.out.println(i);
}

while (num > 0) {
    System.out.println(num);
    num--;
}

面向对象

面向对象是Java的核心思想,面试中经常会涉及与面向对象相关的问题。

1. 继承和多态
继承是指一个类可以继承另一个类的属性和方法,多态是指同一个方法可以在不同的对象上产生不同的行为。
示例代码:


class Animal {
    void move() {
        System.out.println("Animal can move");
    }
}

class Dog extends Animal {
    void move() {
        System.out.println("Dog can walk and run");
    }
}

Animal animal1 = new Animal();
Animal animal2 = new Dog();
animal1.move();
animal2.move();

2. 封装和访问控制
封装是指将数据和方法封装在类中,通过访问控制来限制对类的访问。
示例代码:


class Person {
    private String name;
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
}

Person p = new Person();
p.setName("Alice");
System.out.println(p.getName());

3. 接口和抽象类
接口是一种规范,定义了一组方法的签名,由实现类来实现具体的功能。抽象类是用于被继承的类,可以包含抽象方法。
示例代码:


interface Animal {
    void move();
}

class Dog implements Animal {
    public void move() {
        System.out.println("Dog can walk and run");
    }
}

Animal animal = new Dog();
animal.move();

常见问题

在Java面试中,常常会涉及一些常见的问题。

1. String和StringBuilder的区别
String是不可变的,每次修改都会返回一个新的字符串对象,效率较低。StringBuilder是可变的,不会产生新的对象,效率较高。
示例代码:


String s = "Hello";
s = s + " World";

StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" World");
String result = sb.toString();

2. 异常处理
Java中的异常可以通过try-catch语句来处理,并可以定义自定义的异常类来处理特定的异常情况。
示例代码:


try {
    // 可能会抛出异常的代码
} catch (Exception e) {
    // 异常处理逻辑
} finally {
    // 不管是否发生异常,都会执行的代码
}

3. 线程和线程同步
Java中的线程可以通过继承Thread类或实现Runnable接口创建。线程同步可以通过synchronized关键字或Lock对象来实现。
示例代码:


class MyThread extends Thread {
    public void run() {
        // 线程执行的代码
    }
}

Runnable myRunnable = new Runnable() {
    public void run() {
        // 线程执行的代码
    }
};

Thread thread1 = new MyThread();
Thread thread2 = new Thread(myRunnable);
thread1.start();
thread2.start();