- 0
- 0
- 约6.72千字
- 约 17页
- 2026-03-06 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年求职会Java开发工程师面试题及答案
一、Java基础(共5题,每题10分,总分50分)
1.题目:解释Java中的面向对象编程(OOP)四大特性,并举例说明如何在Java代码中实现它们。
答案:
Java的面向对象编程(OOP)四大特性是封装、继承、多态和抽象。
-封装:通过`private`、`protected`、`public`等访问修饰符隐藏对象内部状态,只暴露必要的接口。
java
classPerson{
privateStringname;
publicStringgetName(){returnname;}
publicvoidsetName(Stringname){=name;}
}
-继承:通过`extends`关键字实现类之间的继承,子类可以复用父类属性和方法。
java
classEmployeeextendsPerson{
privateintsalary;
//继承name属性和getName()方法
}
-多态:通过`override`和`interface`实现,父类引用指向子类对象,调用子类重写方法。
java
interfaceAnimal{
voidsound();
}
classDogimplementsAnimal{
publicvoidsound(){System.out.println(汪汪);}
}
-抽象:通过`abstract`关键字定义抽象类或方法,不提供具体实现。
java
abstractclassShape{
abstractvoiddraw();
}
classCircleextendsShape{
voiddraw(){System.out.println(画圆);}
}
2.题目:解释Java中的`equals()`和`==`的区别,并说明在哪些场景下需要重写`equals()`方法。
答案:
`==`比较的是对象引用是否相同,而`equals()`比较的是对象内容是否相等。
-`==`适用于基本数据类型或已重写`equals()`的类(如`String`)。
java
Stringa=abc,b=abc;
System.out.println(a==b);//true(字符串池)
-`equals()`默认比较引用,需重写实现内容比较。例如:
java
classUser{
Stringname;
@Override
publicbooleanequals(Objectobj){
if(this==obj)returntrue;
if(obj==null||getClass()!=obj.getClass())returnfalse;
Useruser=(User)obj;
returnObjects.equals(name,);
}
}
3.题目:解释Java中的`HashMap`和`HashTable`的区别,并说明在哪些场景下优先选择`HashMap`。
答案:
-`HashMap`允许`null`键和值,线程不安全,性能更高。
-`HashTable`不允许`null`,线程安全(使用`synchronized`),性能较低。
优先选择`HashMap`的场景:
1.非多线程环境(如缓存、配置管理);
2.性能要求高(如高并发读操作);
3.需要动态扩容(`HashMap`扩容逻辑更优)。
4.题目:解释Java中的`volatile`关键字的作用,并说明它与`synchronized`的区别。
答案:
`volatile`确保变量的可见性和有序性,但不保证原子性。
-示例:
java
volatileintflag=0;
newThread(()-{
while(flag==0){}//可见性
}).start();
-与`synchronized`区别:
-`volatile`轻量级(无锁),`synchronized`重量级(线程阻塞);
-`volatile`仅保证可见性,`synchronized`保证原子性和可见性。
5.题目:解释Java中的`String`、`StringBuilder`和`StringBuffer`的区别,并说明在哪些场景下优先选择`StringBuilder`。
答案:
-`String`:不可变,每次修改都会创建新对象;
-`StringBuilder`:可变,线程不安全,适用于单线程场景;
-`
原创力文档

文档评论(0)