-
List是Java中有序、可重复的集合接口,主要实现类有ArrayList和LinkedList;ArrayList基于数组实现,适合读取和遍历,LinkedList基于链表实现,适合插入和删除;选择依据操作场景,声明推荐使用List接口类型,常见方法包括add、get、set、remove等,掌握其特性可高效处理有序数据。
-
Arrays.asList返回的List不可增删,因底层是未重写add/remove的Arrays.ArrayList;基本类型数组会变为单元素列表;推荐Java9+用List.of()替代,更安全且编译期报错。
-
try-with-resources仅适用于AutoCloseable资源;关闭顺序为声明的逆序,异常会被压制;不可复用已有变量;不替代手动清理逻辑,需注意资源语义与副作用。
-
Timer适合轻量单次闹钟但不健壮;ScheduledExecutorService更稳定,支持并发与异常隔离;需动态重算触发时间应对系统时间跳变,并用SwingUtilities.invokeLater确保UI线程安全。
-
NEW状态指线程对象已创建但start()未调用,此时未被JVM调度;RUNNABLE包含运行中和就绪等待CPU两种情况;BLOCKED、WAITING、TIMED_WAITING触发条件与恢复机制各异;TERMINATED后线程不可重用。
-
答案是掌握JavaI/O异常处理需正确使用try-catch和try-with-resources;具体包括识别FileNotFoundException、EOFException等常见异常,按具体到通用顺序捕获,利用try-with-resources自动关闭资源,并通过日志记录、用户提示或抛出异常等方式合理处理问题,避免资源泄漏和掩盖错误。
-
应使用Callable接口结合Future和线程池实现带返回值的多线程任务。1.Callable接口的call()方法可返回结果并抛出异常,与无返回值的Runnable不同;2.通过ExecutorService提交Callable任务,返回Future对象用于获取结果;3.Future的get()方法阻塞等待结果,支持超时机制,异常被封装为ExecutionException;4.可批量提交任务,invokeAll()获取所有结果,invokeAny()获取任一完成结果;5.必须正确管理线程池生命周期,
-
字符串拼接方式需根据场景选择:1.+号适用于常量或少量变量拼接,语法简洁但循环中性能差;2.StringBuilder单线程下性能高,适合大量拼接;3.StringBuffer线程安全,多线程可用但性能略低;4.String.join()适合带分隔符的集合拼接,代码清晰;5.String.format()适用于格式化文本,可读性强但性能较低;6.Collectors.joining()结合Stream使用,支持前缀、后缀和分隔符,适合流式处理。合理选择可提升性能与可维护性。
-
BlockingQueue是Java并发编程中用于生产者-消费者模型的线程安全队列,其核心特性是在队列为空时阻塞获取元素的线程,队列满时阻塞添加元素的线程。它提供四组方法应对操作失败:抛出异常、返回特殊值、阻塞等待、超时退出。主要实现类包括:1.ArrayBlockingQueue:基于数组的有界阻塞队列,使用单锁控制入队出队,支持公平性;2.LinkedBlockingQueue:基于链表的可选有界队列,默认容量极大,采用两把锁分离读写,提升并发性能;3.PriorityBlockingQueue:无界
-
答案:基于SpringBoot实现文件上传下载平台,采用MySQL存储元数据,本地或云存储文件,通过SpringSecurity控制权限。1.用户登录后可上传学习资源,系统记录标题、路径、大小、分类等信息至数据库;2.上传时重命名文件防止冲突,限制大小保护服务器;3.资源列表按分类展示,支持安全下载——通过ID查库验证权限,再以流形式返回文件,避免路径暴露;4.数据表对上传者和分类建索引,提升查询效率。技术栈涵盖SpringMVC、Thymeleaf/Vue.js、阿里云OSS可选,结构清晰适合教学与小型
-
Collectors.toMap用于将流转换为Map,需指定键值映射函数,重复键时可提供合并策略,如Collectors.toMap(User::getId,u->u)或处理冲突的三参数版本。
-
答案:通过设计Task、TaskGroup和TaskManager三个类,使用Map和List存储数据,实现任务分组的增删改查及任务状态标记,构建了一个基于控制台的简易任务管理系统。
-
MyBatis插件开发的核心是拦截器机制,它允许在不修改源码的情况下增强MyBatis行为。1.插件通过实现Interceptor接口,并重写intercept、plugin和setProperties方法;2.使用@Intercepts与@Signature注解定义拦截目标;3.在mybatis-config.xml中配置插件类;其原理基于JDK动态代理,在调用核心对象时插入自定义逻辑。可拦截的四大核心对象包括:Executor(控制SQL执行与事务)、ParameterHandler(处理参数设置)、
-
Java格式化输出主要用String.format()、System.out.printf()和Formatter类,共用printf语法;printf适合直接打印,String.format用于生成字符串,Formatter支持自定义输出目标和Locale。
-
implements是Java中声明类实现接口的关键字,要求类必须提供接口中所有抽象方法的具体实现;一个类可实现多个接口,语法上需位于extends之后;default和static方法无需强制实现。