21xrx.com
2025-07-16 18:21:23 Wednesday
登录
文章检索 我的文章 写文章
Java常见面试题及解答
2023-06-18 18:28:31 深夜i     21     0
Java 面试题 常见问题

在Java面试中,经常会涉及一些常见的问题,这些问题包括语法基础、面向对象、集合类、多线程等。本文将针对这些问题进行介绍与解答。

1. 语法基础

Java的语法基础包括数据类型、控制语句、运算符等。在面试中,常见的问题如:基本数据类型有哪些?自动拆箱和装箱是什么?==和equals的区别是什么?等等。

下面是部分代码案例:

//基本数据类型
byte a = 1;
short b = 2;
int c = 3;
long d = 4L;
float e = 5.0f;
double f = 6.0;
char g = 'a';
boolean h = true;
//自动拆箱和装箱
Integer i = 1//装箱
int j = i;   //拆箱
//==和equals的区别
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1 == str2);//false
System.out.println(str1.equals(str2));//true

2. 面向对象

面向对象是Java语言的核心。在面试中,常见的问题如:什么是封装?什么是继承和多态?如何实现单例?等等。

下面是部分代码案例:

//封装
public class Person{
  private String name;
  private int age;
  public String getName()
    return name;
  
  public void setName(String name)
    this.name = name;
  
  public int getAge()
    return age;
  
  public void setAge(int age)
    this.age = age;
  
}
//继承和多态
public class Animal{
  public void run(){
    System.out.println("run");
  }
}
public class Cat extends Animal{
  @Override
  public void run(){
    System.out.println("cat run");
  }
}
//单例
public class Singleton{
  private static Singleton instance;
  private Singleton(){}
  public static Singleton getInstance(){
    if(instance == null){
      instance = new Singleton();
    }
    return instance;
  }
}

3. 集合类

Java的集合类是经常被面试官问到的内容。常见的问题如:ArrayList和LinkedList有什么区别?HashMap和HashTable有什么区别?等等。

下面是部分代码案例:

//ArrayList和LinkedList的区别
List
  list1 = new ArrayList<>();
 
List
  list2 = new LinkedList<>();
 
//ArrayList适合随机访问,LinkedList适合插入和删除
//HashMap和HashTable的区别
Map
  map1 = new HashMap<>();
 
Map
  map2 = new Hashtable<>();
 
//HashMap非线程安全,性能更好;HashTable线程安全,性能更差

4. 多线程

多线程是面试中难度较高的问题之一。常见的问题如:什么是线程?线程有哪些状态?如何创建线程?等等。

下面是部分代码案例:

//创建线程
class MyThread extends Thread{
  @Override
  public void run(){
    System.out.println("MyThread is running");
  }
}
public class Test{
  public static void main(String[] args){
    MyThread thread = new MyThread();
    thread.start();
  }
}

  
  

评论区