-
线程间通信的核心是协调执行顺序和共享数据,主要通过共享内存与同步机制实现。常用方式包括:使用wait()、notify()在synchronized中实现基础通信,适用于生产者-消费者模型;ReentrantLock配合Condition提供更精准的等待唤醒控制;BlockingQueue封装了线程安全与阻塞操作,简化生产者-消费者场景开发;此外还可选用CountDownLatch、CyclicBarrier等工具满足特定需求。选择依据为:简单场景用wait/notify,复杂控制用ReentrantLo
-
推荐用对象数组存题库,每道题为含id、text、options、answer(选项索引)、score等字段的Object;随机抽题应先shuffle再顺序取;判分时直接比用户答案索引与answer值,统一读score计分,避免硬编码。
-
HttpURLConnection默认未设请求方法,需显式调用setRequestMethod("GET")或setRequestMethod("POST"),否则首次connect()或获取流时抛IllegalStateException;GET须setDoOutput(false),参数拼URL;POST必须setDoOutput(true)并设Content-Type;响应体需按Content-Type中charset手动解码,禁用String.getBytes()无参版;超时需pre-connec
-
Java中所有参数都是值传递,基本类型传递值的副本,引用类型传递地址的副本;修改对象属性生效因操作同一堆对象,重新赋值不生效因仅改变形参指向。
-
静态代码块在类加载时执行一次,用于初始化静态资源;语法为static{},多个按出现顺序执行;在创建对象、调用静态方法等主动使用类时触发,仅执行一次,与每次实例化都执行的实例代码块和构造函数不同。
-
必须用Files.list()配try-with-resources读取文件列表,过滤前校验Files.isReadable();删除前检查isRegularFile()/isDirectory()及目录是否为空;复制大文件需流式缓冲并支持进度;Swing中改用定时轮询+Files.walk()差分监听变更。
-
答案:try-with-resources是Java7引入的自动资源管理机制,要求资源实现AutoCloseable或Closeable接口,通过在try后括号中声明资源,确保其在作用域结束时自动关闭。语法支持单个或多个资源(分号隔开),关闭顺序为逆序。即使try块抛出异常,资源仍会被关闭,且close()方法的异常不会覆盖try块中的主异常,可通过getSuppressed()获取被抑制的异常,提升调试准确性。常见应用场景包括文件流、网络连接和数据库连接的管理,有效避免资源泄漏,使代码更简洁安全。
-
ProjectLoom是Java并发的分水岭,使百万级并发回归同步写法;需用Thread.ofVirtual()或newVirtualThreadPerTaskExecutor()启用虚拟线程,避免newThread;阻塞操作自动卸载,开销仅约23ns;必须用StructuredTaskScope管理任务生命周期。
-
CompletableFuture解决了传统Future无法链式处理、组合任务、非阻塞回调、异常统一处理等硬伤,支持thenApply/thenCompose/anyOf/allOf等编排能力,并提供handle/whenComplete/exceptionally等语义明确的回调机制。
-
捕获异常后可重新抛出,用于告知调用者或转换异常类型;2.可直接throw原异常或包装为新异常;3.通过异常链保留原始堆栈信息,提升调试效率。
-
组合比继承更灵活,因其不受继承层级和final限制,适用于非“is-a”关系、需运行时替换依赖、父类设计不支持继承或需mock测试等场景;推荐privatefinal字段+构造器注入。
-
答案是Java中Queue接口基于FIFO原则,提供add、offer、remove、poll、element、peek等方法处理元素存取,常用实现类有LinkedList、ArrayDeque和PriorityQueue,适用于任务调度、BFS和消息系统等场景。
-
Java中Object类是所有类的父类,提供通用方法。equals用于比较对象逻辑相等,默认比较引用,常需重写以实现自定义逻辑,并与hashCode保持一致。
-
Collectors.summarizingLong用于统计集合中long值的汇总信息,返回LongSummaryStatistics对象,可获取数量、总和、最值及平均值。
-
finalize()自Java9起被弃用、Java18彻底移除,因其调用时机不确定、性能开销大、线程不安全、异常被吞且无法保证执行;应改用AutoCloseable+try-with-resources、Cleaner或显式释放。