- 0
- 0
- 约1.23万字
- 约 28页
- 2026-03-17 发布于未知
- 举报
2026年华为java笔试题库及答案
一、基础语法与特性
题目1(选择题)
以下关于Java17+特性的描述,错误的是()
A.文本块(TextBlocks)支持使用``定义多行字符串
B.密封类(SealedClasses)通过`sealed`关键字限制类的继承
C.模式匹配(PatternMatching)仅支持`instanceof`表达式中的类型检查
D.`switch`表达式支持使用`-`替代`:`,且不需要`break`语句
答案:C
解析:Java17引入的模式匹配不仅支持`instanceof`,Java21进一步扩展了模式匹配在`switch`表达式中的应用(如记录模式、变量模式),因此C选项描述不完整。文本块(A)、密封类(B)、增强的`switch`(D)均为正确特性。
题目2(编程题)
使用Java17+语法实现以下功能:判断一个字符串是否为合法的JSON对象(仅需判断最外层是否为`{}`包裹,且非空)。要求:
1.使用文本块定义测试用例`{\name\:\华为\,\year\:2026}`
2.使用模式匹配优化`instanceof`判断(若有)
3.输出验证结果(合法/不合法)
答案:
```java
publicclassJsonValidator{
publicstaticvoidmain(String[]args){
//使用文本块定义测试字符串(Java13+支持,Java17为LTS)
StringjsonText=
{name:华为,year:2026}
;
booleanisValid=validateJson(jsonText);
System.out.println(验证结果:+(isValid?合法:不合法));
}
privatestaticbooleanvalidateJson(Stringjson){
if(json==null||json.isBlank()){
returnfalse;
}
//去除首尾空格(避免文本块可能的缩进影响)
Stringtrimmed=json.trim();
//模式匹配暂未直接用于字符串判断,此处展示基础逻辑
returntrimmed.startsWith({)trimmed.endsWith(})
trimmed.length()2;//非空:至少{}
}
}
```
扩展说明:若需更严谨的JSON验证,应使用`com.fasterxml.jackson`等库,但本题仅要求最外层格式校验。文本块在处理多行JSON时可避免转义符冗余,提升代码可读性。
二、面向对象与设计
题目3(简答题)
简述抽象类与接口的核心区别(至少3点),并举例说明各自的使用场景。
答案:
核心区别:
1.成员类型:抽象类可包含普通方法、构造方法、实例变量;接口(Java8+)可包含默认方法、静态方法,但不能有构造方法,成员变量默认`publicstaticfinal`。
2.继承关系:类只能单继承抽象类,但可实现多个接口。
3.设计意图:抽象类用于抽取子类的公共行为(“是不是”关系,如`Animal`抽象类定义`eat()`方法);接口用于定义能力契约(“能不能”关系,如`Flyable`接口定义`fly()`方法)。
示例场景:
-抽象类:定义电子设备基类`ElectronicDevice`,包含`powerOn()`抽象方法,子类`Phone`、`Tablet`实现具体逻辑。
-接口:定义`5GCapable`接口,要求实现`support5G()`方法,由`HuaweiMate70`等支持5G的设备类实现。
题目4(编程题)
设计一个线程安全的单例模式(要求:懒加载、防反射攻击、防序列化攻击)。
答案:
```java
importjava.io.Serializable;
publicclassThreadSafeSingletonimplementsSerializable{
//禁止反射调用构造方法的标记
privatestaticvolatilebooleaniniti
原创力文档

文档评论(0)