-
答案:Java多线程中异常处理需主动捕获并记录,避免静默失败。通过设置UncaughtExceptionHandler处理未捕获异常,在run方法中使用try-catch捕获Runnable异常,Callable异常通过Future.get()获取并处理ExecutionException,结合MDC记录线程上下文信息便于追踪,线程池可通过重写afterExecute统一处理异常,确保异常可见、可追踪、可恢复。
-
replace()按字面值匹配且仅替换首次出现的子串;replace("a","b")非全局替换,全量字面替换需用replaceAll(Pattern.quote("a"),"b")或循环replace()。
-
不能准确获取对象大小,仅返回浅层大小(对象头、字段引用、对齐填充),不递归计算引用对象;依赖-javaagent启动代理,受JVM实现和参数(如UseCompressedOops)影响显著。
-
Java中用Map实现简单缓存的核心是使用ConcurrentHashMap存储键值对,并添加过期控制(如TTL时间戳校验)和容量限制(如LinkedHashMap+LRU),适用于低并发、非关键业务场景。
-
多数情况下不指定初始容量也能正常工作,但预估数据量时建议指定,如newArrayList(300);默认容量10,扩容为1.5倍并复制数组,频繁add会降低性能。
-
Java方法由访问修饰符、返回类型、方法名、参数列表和方法体构成;无参方法执行固定行为,带参方法提升复用性;void方法可省略return,非void方法每条路径须有return;实例方法通过对象调用,静态方法通过类名调用。
-
StringBuilder是单线程大量字符串拼接的首选,因其基于可扩容char[]避免频繁GC;应避免误用StringBuffer、简单拼接或需格式化/正则的场景。
-
答案:Java中异步回调可通过接口回调、Future、CompletableFuture和线程池实现;定义AsyncCallback接口并在异步线程中调用onSuccess/onError完成通知;使用CompletableFuture可实现链式调用与异常处理;结合ExecutorService提升资源利用率;CompletableFuture支持任务编排,适用于复杂流程。
-
IoC的本质是“谁决定对象怎么创建”,即对象的创建时机和依赖来源是否由自身决定;若A类构造函数接收B实例而非直接newB(),则控制权移交,实现反转。
-
ResourceBundle加载失败主因是类路径、命名或默认Locale配置错误,它不抛ClassNotFoundException而静默回退或抛MissingResourceException;实际按baseName作包路径在classpath中查找i18n/messages.properties等文件,命名需匹配locale.toString规则,且默认Locale可能被运行时覆盖,应显式指定Locale并校验关键key。
-
怎么用二维数组表示五子棋盘和落子状态棋盘本质就是个char[][]或int[][],每个位置存空、黑子、白子——别用String[][],内存和比较都慢;也别用boolean[][],两种状态不够,得区分“空”“黑”“白”。推荐用int:0表示空,1表示黑子,2表示白子,后续判定逻辑更直白。常见错误是初始化时写成newint[15][15]却忘了边界检查,用户输15,15就直接ArrayIndexOutOfBoundsException。实际下标范围是0–14,输入要先
-
module-info.java文件必须放在模块根目录Java模块系统不会自动发现或扫描子包里的module-info.java,它只认顶层源码根目录(即src/main/java或src下直接放的)下的那个文件。放错位置会导致编译器完全无视模块声明,还可能报error:modulenotfound或静默退化为非模块化运行。正确路径:src/main/java/module-info.java错误路径:src/main/java/com/example/module-inf
-
Micrometer依赖需同时引入spring-boot-starter-actuator和对应registry(如micrometer-registry-prometheus),并配置management.endpoints.web.exposure.include显式暴露端点;Prometheus的scrape_config中metrics_path必须设为/actuator/prometheus;@Timed依赖SpringAOP代理,须确保方法由容器注入且为public;自定义指标应规范使用Tag
-
异常转译是将底层技术异常(如SQLException)包装为语义明确的业务异常(如UserNotFoundException),保留cause链、暴露业务上下文、避免泄露技术细节。
-
POJO是不继承父类、不实现框架接口、不依赖注解的纯Java对象;Entity耦合JPA生命周期管理,PO仅作SQL映射;推荐统一用UserDO命名数据库类,DTO用于服务间传输,VO用于前端展示,且均需实现Serializable。