-
applyToEither本质是竞速而非并行合并,仅取先完成且正常返回的结果;需隔离IO线程池、手动处理空值/异常、警惕数据不一致风险。
-
getInterfaces()仅返回直接声明的接口,不递归获取父接口;接口调用时返回其直接extends的父接口;需手动递归+去重才能获得完整继承链;泛型信息丢失,须用getGenericInterfaces()获取。
-
需结构化记录关键变量变更,涵盖操作人、时间戳、变量名与作用域、脱敏前后值及调用链标识,通过@AuditVariable注解+AOP实现轻量审计,并接入ELK日志体系与告警。
-
答案:Java中通过Properties类和类加载器读取resources下的配置文件,如config.properties,使用InputStream加载并获取键值对,推荐ClassLoader方式确保JAR包内正常访问,注意处理文件缺失、编码及敏感信息存储问题,外部配置可用FileInputStream指定路径。
-
最常见的幂等失效原因是拦截器未注册或注解未被Spring扫描到;需确保拦截器加@Component、启用CGLIB代理、注解含RUNTIME保留策略和METHOD目标,且避免this调用。
-
函数式接口是仅含一个抽象方法的接口,可含任意默认方法、静态方法及Object类继承方法;@FunctionalInterface注解用于显式标识并触发编译器校验,非必需但推荐。
-
不该用return-1或null表示失败,因错误码混淆控制流、易被忽略且缺乏上下文;应按场景选受检异常或RuntimeException,并设计含上下文、异常链的自定义异常。
-
<p>缓存DOM节点变量可加速从已加载配置中读取值,但不提升文件IO性能;适用于配置已内联或挂载至DOM的场景,如script[type="application/json"]或data-*属性,通过一次查询+持久引用避免重复遍历DOM。</p>
-
IllegalFormatConversionException是Java中String.format()等方法因格式符(如%d)与参数类型不匹配而抛出的运行时异常,例如用%d传String、%f传Integer、%t系列传String等;需严格按Formatter语法匹配类型,优先用%s兜底或启用-Xlint:format编译检查。
-
Integer缓存池可扩容至-128~200000,通过-XX:AutoBoxCacheMax=200000实现;Long等类型缓存不可调,需用ConcurrentHashMap显式代理;验证用JFR或-XX:+PrintClassHistogram,判等必须用equals()。
-
peek()在队列为空时返回null而非抛异常;使用前必须判空,且多线程下无法保证peek()后元素仍存在,LinkedList按FIFO返回首元素,PriorityQueue返回堆顶优先级最高元素,ConcurrentLinkedQueue.peek()不保证实时性。
-
Java中括号默认为捕获组,影响group()索引、性能及替换行为;非捕获组(?:...)不占编号、不存结果、无性能开销;命名捕获组(?<name>...)在Java8+支持,仍占用编号且不可重名。
-
异步日志不能直接降低GC,但能减少GC对业务线程的干扰:剥离日志对象分配、禁用堆栈采集、启用无垃圾模式、优化缓冲区大小、ERROR日志直写磁盘。
-
Field.getType()返回字段声明时的原始类型(如List.class),不包含泛型信息,也不反映运行时实际对象类型;需用getGenericType()获取泛型参数,用value.getClass()获取运行时类型。
-
Java字符编码核心是“内部统一、外部可配”:String在JVM内恒用UTF-16,与外部交互时必须显式指定Charset,否则依赖系统默认值易致乱码;三层结构含字符集、编码方案和Charset类;字符串与字节数组转换须严格配对编码解码;IO流中需显式声明Charset;可通过Charset.defaultCharset()等方法查默认及可用字符集。