-
应先检查list!=null&&!list.isEmpty()再用get(size()-1),或改用ArrayDeque.getLast()等更安全高效的方式,避免空指针、越界及性能问题。
-
SpringAOP日志切面需满足代理条件才能生效:目标类必须由Spring容器管理、切面类需被扫描且非final、调用必须走代理路径;@Before无法获取返回值,@AfterReturning为null多因切点不匹配或方法抛异常;@Around是唯一能控制流程并获取参数、返回值、异常的通知类型。
-
Java多线程共享数据无标准解,需依读写关系与一致性要求选volatile(仅单写多读简单状态)、AtomicXXX(无锁原子操作)、synchronized/ReentrantLock(复杂临界区)或避免共享(ThreadLocal、不可变对象)。
-
继承通过extends实现,子类复用并重写父类方法;多态使父类引用调用子类实际对象的方法,运行时动态绑定。例如Animal父类被Dog、Cat、Bird继承,各自重写makeSound(),通过Animal数组遍历调用,自动执行对应子类方法,符合开闭原则,提升扩展性与维护性。
-
JavaScript的%是求余而非取模,导致负数索引错误;应使用((i%n)+n)%n映射到[0,n)区间,注意防御n=0和浮点索引。
-
定义受检异常类必须继承Exception且不继承RuntimeException,类名不含“Runtime”,并提供String和String+Throwable两个构造函数;编译器仅在方法声明throws且被调用时强制处理。
-
要实现自定义Collector,必须正确实现supplier、accumulator、combiner,可选finisher和characteristics;例如统计字符串长度分布可用HashMap::new、merge计数、forEach合并,并设IDENTITY_FINISH特征。
-
动词+名词命名能直接暴露行为意图,如deriveUserStatus、validateEmailFormat;应避免get、process等宽泛动词,选用fetchOrderFromDatabase等具体表达;动词须与时态和返回值一致;业务层优先使用领域动词如assessCompatibilityScore。
-
高内聚低耦合指类职责单一且内部协作紧密、类间依赖弱;Java中一眼可判:new具体实现类或import大量非本模块实现类即耦合高,应改用接口+构造器注入,并将行为封装进对应数据类。
-
UpdateRS耗时异常的判定标准是Avg>10ms或Max>30ms,结合ExtRootScanning同步上升可确认RSet更新构成扫描瓶颈;根本原因在于DirtyCardQueue消费滞后,需通过调参与写模式治理协同优化。
-
能,但需满足三前提:接口编译版本≥JDK8、调用方运行时JDK≥接口编译版本、实现类未定义同签名方法;否则抛NoSuchMethodError或编译失败。
-
在不引入SpringData依赖的前提下,可通过自定义轻量级分页容器类(如MyOwnPage)对接返回Page的REST接口,配合RestTemplate完成反序列化与分页逻辑处理。在不引入SpringData依赖的前提下,可通过自定义轻量级分页容器类(如MyOwnPage)对接返回Page的REST接口,配合RestTemplate完成反序列化与分页逻辑处理。在微服务架构中,常需跨服务调用分页接口(如GET/api
-
Arrays.deepToString是Java中用于递归打印多维数组的专用方法,能正确展开嵌套结构输出如[[1,2],[3,4]],而普通toString()仅返回不可读的哈希值如[[I@xxxxxx。
-
静态变量先于实例变量加载,因JVM要求类初始化完成才能创建对象;静态内容按源码顺序在类加载时执行一次,实例内容则每次new时按父类到子类顺序重新执行。
-
必须在任何I/O操作前设置Header与超时:先setConnectTimeout/setReadTimeout(单位毫秒),再setRequestProperty/addRequestProperty(中文值需URLEncoder编码),最后调用getInputStream等;顺序错乱将导致配置失效或抛异常。