news 2026/10/7 0:26:35

华为OD技术面真题 - JAVA开发 - 5

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
华为OD技术面真题 - JAVA开发 - 5

文章目录

  • 抽象类和普通类的区别
  • 抽象类和接口的区别
  • 注解的作用
  • 注解的分类
  • 说说JAVA中异常类体系结构
  • throw和throws的区别
  • JAVA中创建对象的方式有哪些?
  • 如何实现深拷贝

抽象类和普通类的区别

// 普通类 class Animal { void eat() { System.out.println("Animal eats"); } } // 抽象类 abstract class Bird { abstract void fly(); // 抽象方法,没有实现 void sleep() { System.out.println("Bird sleeps"); } }
特性普通类抽象类
能否实例化可以不可以
是否可包含抽象方法否可以
方法实现必须有实现可以有抽象方法,也可以有实现方法
继承用途可继承,也可直接用用于规范子类,必须被继承实现抽象方法
典型使用场景功能完整的对象框架、模板、规范类

抽象类和接口的区别

特性抽象类接口
是否可以实例化不可以不可以
定义抽象方法可以默认是抽象方法
定义普通方法可以Java 8+ 可以有 default 方法,在JDK9中允许有私有普通方法
定义静态方法可以可以(Java 8+)
成员变量可以有实例变量只能有常量public static final
构造方法可以不可以
继承方式单继承多实现
适用关系is-acan-do
使用场景复用 + 规范统一规范 + 多实现功能

注解的作用

注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。它主要的作用有以下四方面:

  • 生成文档,通过代码里标识的元数据生成javadoc文档。
  • 编译检查,通过代码里标识的元数据让编译器在编译期间进行检查验证。
  • 编译时动态处理,编译时通过代码里标识的元数据动态处理,例如动态生成代码。
  • 运行时动态处理,运行时通过代码里标识的元数据动态处理,例如使用反射注入实例。

注解的分类

  • Java自带的标准注解,包括@Override、@Deprecated和@SuppressWarnings,分别用于标明重写某个方法、标明某个类或方法过时、标明要忽略的警告,用这些注解标明后编译器就会进行检查。
  • 元注解,元注解是用于定义注解的注解,包括@Retention、@Target、@Inherited、@Documented。
    • @Retention用于标明注解被保留的阶段
    • @Target用于标明注解使用的范围
    • @Inherited用于标明注解可继承
    • @Documented用于标明是否生成javadoc文档
  • 自定义注解,可以根据自己的需求定义注解,并可用元注解对自定义注解进行注解。

说说JAVA中异常类体系结构

Throwable是 Java 语言中所有错误与异常的超类

  • Error及其子类:程序中无法处理的错误
  • Exception:程序本身可以捕获并且可以处理的异常
    • 运行时异常:RuntimeException类及其子类异常,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。编译器不会检查
    • 非运行时异常:必须进行处理的异常,如果不处理,程序就不能编译通过。

throw和throws的区别

  • throws: 若方法中存在非运行时异常,如果不对其捕获,那必须在方法头中显式声明该异常,以便于告知方法调用者此方法有异常,需要进行处理。 在方法中声明一个异常,方法头中使用关键字throws,后面接上要声明的异常。若声明多个异常,则使用逗号分割.
public static void method() throws IOException, FileNotFoundException{ //something statements }
  • throw: 如果代码可能会引发某种错误,可以创建一个合适的异常类实例并抛出它,这就是抛出异常。
public static double method(int value) { if (value == 0) { throw new ArithmeticException("参数不能为0"); } return 5.0 / vlaue; }

JAVA中创建对象的方式有哪些?

  • 使用new创建对象。User user = new User()
  • 使用反射创建对象
// 方式1:Class.newInstance()(已废弃,不推荐) Person p1 = Person.class.newInstance(); // 方式2:Constructor.newInstance() Constructor<Person> constructor = Person.class.getConstructor(); Person p2 = constructor.newInstance();
  • 使用克隆创建对象
class Person implements Cloneable { String name; public Object clone() throws CloneNotSupportedException { return super.clone(); } } Person p1 = new Person(); Person p2 = (Person) p1.clone(); // 复制对象
  • 通过序列化/反序列化创建对象
// 假设 person.ser 是序列化文件 ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser")); Person p = (Person) ois.readObject(); ois.close();

如何实现深拷贝

先介绍一下深拷贝和浅拷贝

  • 浅拷贝: 对象的基本类型会被复制,但对象中的引用类型仍指向同一个实例。
  • 深拷贝:对象及其引用类型都被完整复制,互不影响。

实现深拷贝的方式:

  • 手动实现clone()方法:
    • 所有引用对象也要实现Cloneable并重写clone()
    • 逐层调用 clone,实现对象图的深度复制
  • 通过序列化反序列化实现深拷贝:
    • 将对象写入字节流,再读回来,自动生成新的对象
    • 要求对象及其引用对象都实现Serializable
  • 使用第三工具:
    • Gson / Jackson可以先序列化成 JSON 再反序列化
    • Apache Commons Lang提供SerializationUtils.clone()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/6 2:05:54

2017-2024年科技型中小企业名单数据

数据简介 科技型中小企业是依托一定数量的科技人员从事科学技术研究开发活动&#xff0c;取得自主知识产权并将其转化为高新技术产品或服务&#xff0c;从而实现可持续发展的中小企业。 我国科技型中小企业对未来发展的意义重大&#xff0c;主要体现在推动创新驱动发展、促进…

作者头像 李华
网站建设 2026/10/5 3:01:36

基于深度学习YOLOv11的交通标志识别检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

一、项目介绍 随着智能交通系统&#xff08;ITS&#xff09;和自动驾驶技术的快速发展&#xff0c;交通标志的实时、准确识别成为保障道路安全与提升驾驶辅助系统性能的关键技术之一。本项目基于YOLOv11深度学习算法&#xff0c;开发了一套高效、鲁棒的交通标志识别与检测系统…

作者头像 李华
网站建设 2026/10/5 10:58:37

线网指挥中心

线网指挥中心是现代城市轨道交通的“智慧大脑”&#xff0c;其核心功能是实现从单线独立运营到全网协同管理的跃升。主要功能可归纳为以下三个层面&#xff1a; 一、日常运营的“指挥官”&#xff1a;全网监控与综合调度 这是最基础也是最核心的功能&#xff0c;确保每日列车…

作者头像 李华
网站建设 2026/10/6 19:39:09

大数据预处理中的特征工程:方法与案例详解

大数据预处理中的特征工程:方法与案例详解 关键词:特征工程、大数据预处理、特征提取、特征选择、特征转换、机器学习、数据清洗 摘要: 在机器学习和数据分析领域,特征工程是决定模型性能的关键环节。本文系统解析大数据预处理中特征工程的核心方法,涵盖特征提取、转换、选…

作者头像 李华
网站建设 2026/10/5 10:31:57

Hive实战:从零开始搭建大数据分析平台

Hive实战&#xff1a;从零开始搭建大数据分析平台 关键词&#xff1a;Hive、大数据分析平台、Hadoop、数据仓库、SQL查询 摘要&#xff1a;本文旨在为读者提供一个全面且详细的指南&#xff0c;指导读者从零开始搭建基于Hive的大数据分析平台。我们将深入探讨Hive的核心概念、架…

作者头像 李华