-
不该直接抛出SQLException。应捕获后转为自定义异常或Spring的DataAccessException子类,通过SQLExceptionTranslator统一映射为语义明确的运行时异常,并提取SQLState、errorCode等字段精准判别错误类型。
-
Java多线程调试难源于并发环境的时间不可控性,需通过jstack定位死锁、增强日志可观测性、正确使用原子类及主动构造竞态条件来系统提升调试能力。
-
StringBuilder.reverse()直接在原char[]上双指针原地交换,时间O(n/2)、空间O(1);String不可变故无reverse()方法;手写需注意left<right循环条件及索引不越界。
-
答案是掌握JavaIO流需区分字节流和字符流:字节流以byte为单位,适用于图片、音频等二进制文件,使用FileInputStream和FileOutputStream进行读写;字符流以char为单位,专用于文本处理,通过FileReader和FileWriter自动处理编码,避免乱码;为提升性能,应使用BufferedInputStream、BufferedOutputStream及BufferedReader、BufferedWriter等缓冲流,其中BufferedReader的readLine()
-
Java中List、Set、Map均为接口,需用ArrayList、HashSet、HashMap等实现类实例化;add()、put()语义不同:List追加/插入、Set去重返回boolean、Map覆盖返回旧值;遍历时修改须用Iterator.remove();自定义Mapkey须重写hashCode()和equals()。
-
Java17引入密封类,Java21扩展支持密封接口,通过sealed关键字与permits明确限定实现者,并要求每个实现者用final、sealed或non-sealed修饰,配合switch模式匹配实现编译期穷尽性检查。
-
正确方式是仅添加junit-jupiter依赖,版本推荐5.10.2,配合Surefire3.2.5+插件;需避免JUnit4混用,测试类须public非final,方法publicvoid且加@Test;推荐搭配AssertJ提升断言可读性。
-
线上压测需用CountDownLatch实现齐发式并发、CyclicBarrier支持多轮脉冲爆发、Semaphore控制瞬时并发上限,并须绕开直连生产库、未标识流量、监控缺失及无熔断等风险。
-
一个类可实现多个接口以扩展功能,如Drone实现Flyable和Camera接口,需重写所有抽象方法;若存在同名default方法,则必须显式覆盖解决冲突,从而实现灵活解耦的设计。
-
JavaWeb项目配置模板引擎核心是选型、引入依赖、注册处理器、配置路径和渲染逻辑;推荐Thymeleaf,SpringBoot通过spring-boot-starter-thymeleaf自动配置,默认路径src/main/resources/templates/,返回字符串视图名即映射HTML文件,支持Model传参与URL重写。
-
✅推荐写法是<TextendsComparable<?superT>>,表示T实现了Comparable<?superT>,能与自身或父类实例比较,确保compareTo类型安全;如Collections.sort()所用。
-
弱变量缓存通过WeakReference包装值并配合ReferenceQueue实现自动清理,适用于依附短命对象的场景,避免内存泄漏。
-
最常用方式是使用UUID.randomUUID()生成128位唯一标识,该方法线程安全且基于随机数生成版本4的UUID,适用于大多数业务场景。
-
BitSet.previousSetBit()从指定位置向左查找最近true位,返回最大索引i(i≤fromIndex)使bitSet.get(i)为true;fromIndex<0或无匹配时返回-1,典型用法是配合length()倒序遍历所有set位。
-
ArrayList适合随机访问但插入删除慢,底层为动态数组,get/set为O(1),add/remove中间位置需整体拷贝;LinkedList适合头尾增删但随机访问为O(n);Vector和Stack已过时;CopyOnWriteArrayList适用于读多写少场景,ArrayDeque性能优于LinkedList。