-
Java统一异常处理核心是@ControllerAdvice配合@ExceptionHandler,结合统一响应格式Result<T>和分级日志记录,实现异常拦截、分类处理与友好返回。
-
Map与Collection是Java集合框架中并列的顶层接口,无继承关系;Map存储键值对且key唯一,不实现Iterable,故不能直接用增强for循环遍历;其keySet()返回Set,values()返回Collection(因value可重复),entrySet()返回Set<Map.Entry>;Collections工具类方法不适用于Map,需用ConcurrentHashMap或Collections.synchronizedMap()等专用方式实现线程安全。
-
Condition是Java中用于线程协作的接口,需与Lock配合使用,支持多条件等待和精确唤醒;示例中通过notFull和notEmpty两个Condition实现生产者-消费者模型,相比synchronized+wait/notify,具备可中断、超时等待及更灵活的锁控制优势。
-
final的核心作用是“禁止修改”,用于明确设计意图、提升安全性与可维护性:修饰类则禁止继承,修饰方法则禁止重写,修饰变量则禁止重新赋值。
-
观察者模式通过被观察者状态变化时自动通知所有依赖的观察者实现一对多更新,常用于事件处理、GUI交互与数据同步;核心为Subject维护Observer列表并触发update方法,Java中可通过自定义接口或过时的Observable类实现,适用于解耦事件源与处理逻辑,需注意性能与内存泄漏问题。
-
Java类初始化仅在五种主动引用场景下触发:new实例、访问/修改非final静态字段、调用静态方法、反射Class.forName()、初始化子类时;主类启动时也必初始化;被动引用如子类引用父类静态字段、定义数组、引用编译期常量则不触发。
-
捕获Exception本身不是坏习惯,但不加区分地捕获会掩盖编程错误、干扰异常语义、误吞关键异常并导致日志失真;应优先捕获具体异常,仅在顶层兜底或特殊场景下谨慎使用。
-
Java字节码是JVM可执行的二进制指令集,存于.class文件中,以魔数0xCAFEBABE开头,含版本号、常量池、字段方法表等严格结构;由javac编译生成,可用javap或jclasslib查看;JVM通过解释器或JIT执行,基于栈设计,兼顾跨平台与效率。
-
Java8允许接口定义默认和静态方法。1.默认方法用default修饰,可提供实现且不强制子类重写,支持接口演进与多继承行为;2.静态方法用static修饰,通过接口名调用,用于工具函数;3.类实现多个含相同默认方法的接口时需显式重写以解决冲突;4.默认方法可被重写并能访问抽象方法,静态方法不可重写也不能访问实例成员。这一改进使接口更具扩展性,便于集合框架等大型API升级,同时促进函数式编程支持,提升代码复用与维护性。
-
CLASSPATH不必须配置,但不配易出NoClassDefFoundError;JVM默认加载当前目录,外部JAR、多模块等场景需显式指定,且-cp优先级最高、覆盖CLASSPATH和默认.。
-
双引号创建的字符串自动入池,new创建的对象不入池;通过intern()可手动入池,提升重复字符串处理性能,但需注意内存管理。
-
Optional.ifPresent用于在值存在时执行操作,避免null检查,接收Consumer接口,值存在时执行对应逻辑,否则不处理;示例包括打印字符串、方法引用及链式调用中结合filter使用;注意其返回void,不可用于获取结果或继续构造Optional,无值时需额外处理应使用ifPresentOrElse。
-
Java字段初始化顺序严格按JVM规范执行:先静态(父类→子类,自上而下)、再实例(父类字段/块→父构造→子字段/块→子构造),最后构造器;混合调用易致空指针或默认值问题。
-
正确打印Java异常栈信息需根据场景选择方法:开发阶段可直接使用printStackTrace()快速定位问题,生产环境应通过日志框架如logger.error("描述",e)记录以便集中管理,必要时可用StringWriter将栈信息转为字符串自定义处理,结合IDE调试器可深入分析异常链和传播路径。
-
Java集合框架核心包括Collection和Map两大体系,其中List如ArrayList适合有序可重复数据,LinkedList适用于频繁增删场景;Set如HashSet保证唯一性,TreeSet实现排序;Map中HashMap高效存取键值对,TreeMap支持按键排序。接口定义规范,实现类提供具体逻辑,选择依据是数据是否有序、是否允许重复及性能需求。遍历推荐使用增强for循环或Iterator,避免并发修改异常,同时可通过Collections工具类进行排序、同步等操作,提升开发效率。