-
Comparable是自然排序,类内部实现compareTo方法定义默认顺序;Comparator是外部比较器,通过compare方法灵活定制多种排序规则。前者适用于单一自然序,后者支持多条件、运行时动态排序,两者可共存,常结合使用。
-
Avro在Java序列化中性能更优,因其紧凑二进制格式和Schema驱动设计。1.Avro避免冗余元数据,减少数据体积;2.使用高效二进制编码(如Varint)降低存储和传输成本;3.通过SpecificRecord机制规避反射开销,提升处理速度;4.支持零拷贝优化,增强大数据场景下的性能表现。
-
Java数值边界处理需提前识别溢出、下溢、精度丢失和非法输入,用Math.addExact()等主动检测整数溢出,关键场景用BigInteger;浮点数比较须用误差范围而非==。
-
ConcurrentLinkedQueue.offer()返回true不保证其他线程立即可见,因依赖CAS和volatile而非全量内存屏障;poll()返回null不表示队列空,可能是竞态导致的临时不一致;size()为O(n)且不可靠,应避免用于流程控制。
-
LinkedHashMap的核心特点是“有序”,通过哈希表加双向链表实现O(1)查找与稳定遍历顺序;默认按插入顺序,设accessOrder=true则变为访问顺序,支持LRU缓存;重写removeEldestEntry可自动淘汰最老元素。
-
分页查询通过数据库LIMIT/OFFSET与Java参数封装实现,MySQL用LIMIToffset,size,PostgreSQL用OFFSETLIMIT,Oracle用ROWNUM,SQLServer用OFFSETFETCH;Java定义PageRequest传参、PageResult返回数据及总数,Service计算offset并调用Mapper分页查询,需建索引优化排序字段,避免深分页性能问题,可采用游标分页或缓存提升效率。
-
add()返回boolean表示元素是否实际加入,addAll()是取差集操作且时间复杂度O(n×m),containsAll()在ArrayList中为O(n×m)需优化。
-
Java中数组长度用arr.length字段而非方法,因JVM为数组内置不可变length字段;字符串用length()、集合用size();多维数组arr.length是第一维长度;使用前需判空防NPE。
-
使用FileChannel的transferTo()方法实现高效大文件复制,可触发零拷贝机制,减少内存占用与I/O开销,适用于GB级以上文件,性能优于传统流式复制。
-
ProcessHandle默认仅返回当前JVM直接启动的存活子进程,受用户权限、Zombie状态、PID命名空间及平台限制;onExit()需强引用保持有效;CPU/内存等指标需原生接口获取;destroy()发SIGTERM,destroyForcibly()发SIGKILL。
-
Java中方法必须属于类或对象,支持封装、多态和隐式this引用,实现“谁对谁做”的统一建模,区别于C语言等独立函数。
-
Java包装异常需封装原始Throwable为cause并补充业务消息,避免暴露敏感信息;日志和API响应中须剥离敏感字段,禁用递归序列化堆栈;ExceptionUtils可简化链式处理但不自动脱敏;异步场景需手动传入cause以保留准确堆栈。
-
异常消息须含可定位上下文,如“timeoutMsmustbepositive,butgot:-1”;禁用模糊词、敏感数据、堆栈拼接及处理逻辑;自定义异常需重写getMessage()并提供带参构造;日志须用log.error(msg,e)格式;消息长度应≤256字符。
-
Java注解本质是继承自Annotation的接口,编译为字节码中的特殊接口,运行时通过动态代理提供属性访问;其生效依赖@Target、@Retention等元注解,仅@Retention(RUNTIME)可被反射读取,且需注意泛型擦除与类型匹配问题。
-
MAVEN_OPTS未生效的主因是设置位置错误或被覆盖:Linux/macOS需在~/.bashrc等配置文件中export,Windows需在IDE中单独配置,CI需在流水线脚本显式传入;参数应仅含JVM启动选项如-Xms1g-Xmx2g-XX:MaxMetaspaceSize=512m,禁用GC策略和Maven属性。