Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

Java 语言与语法

120 道题目
我的收藏与复习
题干与完整题解免费阅读第 9 / 12 页

答:反射允许程序在运行时取得类、字段、方法和构造器的信息,并在权限允许时读取字段、调用方法或创建实例。Class 是入口之一,Method、Field、Constructor 表示对应成员。反射并不意味着可以无条件越过 private、模块边界或修改任意字段。

专注学习

答:重载应表达同一种操作,参数差异要让调用意图清楚,相关版本最好汇合到共同实现。避免只靠相近数值类型、无继承关系的引用类型或多个可变参数版本区分含义;编译器能选出方法,不等于调用者容易读懂。含义不同的操作,直接使用不同名字通常更清楚。

专注学习

答:构造器注入在创建对象时提供依赖,适合必需依赖,便于用 final 字段保持引用稳定;setter 注入在创建后设置依赖,适合真正可选或需要重新配置的情况。多数必需依赖优先通过构造器表达,但不存在所有场景都只能用一种方式的规则。

专注学习

答:先问是否存在整体与部分,再问部分能否独立存在、被共享,以及谁决定它的生命周期。仅有协作关系通常用关联;整体引用独立部件可用聚合;整体独占并管理部件的业务生命周期时,组合更合适。这些分类来自模型约定,不能从 Java 引用的强弱或变量作用域直接推出。

专注学习

答:Comparable 由类型自身实现,通过 compareTo 定义自然顺序;Comparator 把比较规则独立出来,通过 compare 定义某种外部顺序。一个类型可以提供自然顺序,同时允许调用者按其他字段排序。返回结果看负数、零或正数,不要求只能返回 -1、0、1。

专注学习

答:不能只看 new 的位置。聚合通常保留部件独立存在或共享的可能,组合强调同一时刻的独占归属和整体对部件业务生命周期的管理。整体内部创建部件,可能帮助实现组合,但真正的判断依据仍是模型约束和对外暴露的操作。

专注学习

答:这不是 Java 语言规范中的标准术语,回答前应先确认出题者的定义。若它指某些教材说的“类继承”与“接口实现”,可分别用 extends、implements 表达;但两者都能建立 Java 子类型关系,不能理解成一种真的是该类型、另一种只是勉强算该类型。

专注学习

答:内聚关注一个模块内部的职责是否围绕同一目标,耦合关注模块之间依赖了多少彼此的知识和变化。通常希望职责集中、依赖明确,使修改某个功能时不必牵动大量无关代码。但“高内聚、低耦合”不是类越小越好,也不是模块之间完全没有联系。

专注学习

答:普通类声明了抽象方法,就必须声明为 abstract;抽象类则可以一个抽象方法都没有,用来限制直接实例化并提供共享实现。还要把特殊语法分开:枚举可以声明由各个常量类体实现的抽象方法,但不能据此把普通类规则直接套成“所有类型都必须显式写 abstract”。

专注学习
本页 10 道,共 120 道浏览其他领域