-
并行排序核心是分治任务真正并行化,首选归并排序配合ForkJoinPool:按CPU核数设线程数,小规模回退Arrays.sort(),切片拷贝防冲突,合并用新数组,监控CPU、GC及窃取次数验证效果。
-
IllegalStateException用于对象状态不满足方法执行条件时抛出,如未初始化调用、重复关闭资源、迭代器非法操作等,应提供明确错误信息以提升调试效率,区别于参数错误的IllegalArgumentException和空指针异常,常结合状态检查用于资源管理与状态机设计。
-
数组实现拓扑排序检测依赖环的核心是Kahn算法:用入度数组记录各变量被依赖次数,邻接表数组记录其直接依赖项;通过静态数组模拟队列进行BFS式剥离,最终若处理节点数cnt等于n则无环,否则存在环。
-
JavaIO异常处理需区分检查型异常(如IOException)与运行时异常,优先用try-with-resources自动释放资源,按子类精细化捕获(如FileNotFoundException、SocketTimeoutException),避免空catch或笼统捕获Exception。
-
execute()提交Runnable时异常会直接穿透至线程层面,触发默认UncaughtExceptionHandler打印堆栈并终止工作线程,线程池随后新建线程补位;因Runnable.run()不支持throws,unchecked异常未捕获即导致线程立即终止,这是ThreadPoolExecutor的主动设计而非bug。
-
Comparator.nullsFirst()的核心作用是生成一个能安全处理null的比较器包装器,使所有null值排在非null值之前,而非null元素仍按原比较逻辑排序。
-
flatMap仅用于内存中对已有集合扁平化转换,不支持日志采集、索引构建、倒排查询等实时检索功能;它适合单次批处理中展开嵌套日志结构,如将含多个span的JSON日志拆为多条SpanEvent。
-
new触发类加载(含初始化)后分配内存并写入对象头,再自顶向下执行构造器链;反射、clone、反序列化等绕过构造器,导致字段未按预期初始化。
-
Springfox3.x在SpringBoot2.6+需配置spring.mvc.throw-exception-if-no-handler-found:false且spring.resources.add-mappings:true,访问路径为/swagger-ui/;SpringBoot3.x不兼容Springfox,须迁移到springdoc-openapi。
-
ArrayList随机访问为O(1),LinkedList为O(n),因前者基于数组后者为链表;频繁索引遍历时ArrayList快3–10倍;仅头部/中间高频增删且无随机访问需求时才选LinkedList。
-
不能。GCViewer仅解析JVMGC日志中的暂停事件、频率和堆变化,不接入请求时间序列或业务指标,无法直接计算GC对P99延迟的贡献,需结合业务响应时间与GC暂停数据手动估算。
-
Path.iterator()不解析变量目录,仅遍历路径字符串按分隔符切分后的逻辑段;需先手动展开变量(如${HOME}),再构建Path并调用iterator()。
-
双亲委派被破坏的典型场景有四类:1.线程上下文类加载器(TCCL)用于SPI加载;2.模块化容器如OSGi实现类隔离;3.JDK自身对动态代理、Lambda等的特殊处理;4.用户自定义ClassLoader主动绕过。
-
顺序栈用top跟踪栈顶,top=-1时data[0]为首个入栈位,入栈先++top后赋值,出栈先取data[top]再--top;top=0时入栈先赋值后++top,出栈先--top再取data[top-1];所有操作须严格判空判满防越界。
-
HashMap允许null作为key和value,这是设计选择而非bug;但get()返回null时存在二义性:既可能键不存在,也可能键存在而值为null,易引发逻辑误判和偶发异常。