-
Stream.iterate()的终止条件在Java9+中通过三参数重载(seed,Predicate,UnaryOperator)显式指定,Predicate判断当前值是否继续;Java8中无此重载,只能用limit()预设次数或手动截断。
-
Lambda表达式优化MyBatis动态参数包装器,用LambdaQueryWrapper替代QueryWrapper实现编译期字段校验;封装ifPresent工具方法解耦空值判断;用Predicate集合+流式合并处理复杂条件;LambdaUpdateChainWrapper结合setSql实现类型安全的动态更新。
-
Java有8种基本数据类型:整数型(byte、short、int、long)、浮点型(float、double)、字符型(char)、布尔型(boolean);其与引用类型的核心区别在于存储内容、内存位置、默认值、是否可为null及参数传递方式。
-
是,因readinessProbe未真实反映业务就绪状态:如initialDelaySeconds过小、未检查DB/Redis等依赖,或健康端点响应超时导致误判,使流量过早导入尚未完成初始化的新Pod。
-
标量替换是JIT基于逃逸分析对未逃逸且可拆解对象的优化,将堆上对象拆为栈上标量存储,跳过堆分配。需满足对象不逃逸、字段全为标量或已inline类型,且避免hashCode、synchronized等身份感知操作。
-
LongAdder的cells数组扩容触发条件是:当前数组长度小于CPU核数且在Cell上CAS失败;此时先CAS设置cellsBusy为1加锁,再将数组扩容为原长2倍,并复制原有数据。
-
不能。final修饰的方法在编译期禁止重写,JVM直接报错“Cannotoverridethefinalmethod”,其本质是确立稳定契约而非锁死代码,用于工具类核心逻辑、模板方法固定步骤及安全敏感操作。
-
setAccessible(true)的作用是绕过JVM访问权限检查,通过将AccessibleObject内部override标志置为true,使后续反射调用(如invoke、get)跳过安全管理器校验、修饰符解析及继承关系遍历等耗时流程。
-
快速选择算法可在O(n)平均时间复杂度内找到无序数组中第K小元素;其通过分区操作将数组分为小于、等于、大于基准的三部分,并根据K与各区长度关系递归收缩查找范围,配合随机化基准选择避免最坏O(n²)性能。
-
SecurityException是Java安全模型检测到违规时抛出的异常,需通过启用SecurityManager(Java8–16)并配置policy文件限制PropertyPermission来阻止第三方JAR读取user.home等敏感属性。
-
synchronized修饰静态方法时锁的是当前类的Class对象,等价于synchronized(MyClass.class),所有线程串行执行,与实例无关;而实例方法锁this,二者互不干扰。
-
应使用UnsupportedOperationException明确表示方法暂不支持,因其语义精准、符合JDK惯例,能主动声明契约边界并避免静默失败;需附带清晰消息、配合Javadoc,并区分“永不支持”与“暂时不可用”。
-
CopyOnWriteArraySet不适合保护“配置数组列表”,因其是Set、去重无序,底层依赖CopyOnWriteArrayList导致写操作需全量复制数组;高频读+极少写时可凑合用,但推荐按场景选CopyOnWriteArrayList或不可变List。
-
KafkaProducer.send()不阻塞但日志易丢,因消息仅入缓冲区即返回;需flush()关闭、acks=all、retries最大、linger.ms>0,并监控TimeoutException;Consumer需合理配置poll参数、禁用自动提交、序列化器严格匹配、避免Rebalance。
-
当类属性超过7~10个、方法复杂、频繁因不同原因修改或难以描述核心职责时,表明类已过大;应按业务逻辑将相关属性封装为新类(如Address、OrderItems),通过组合替代冗长字段,降低耦合,提升可维护性与内聚性。