-
需穿透多层异常封装定位根本原因:逐层调用getCause()或getRootCause(),识别InvocationTargetException、UndeclaredThrowableException等反射包装异常,结合堆栈中的Method.invoke等反射入口及字节码验证,辅以日志配置%ex{full}和框架配置优化。
-
for循环适用于已知循环次数的场景,其语法为for(初始化;条件;更新){执行语句},如打印1到5:for(inti=1;i<=5;i++)System.out.println(i);
-
静态内部类只能访问外部类的static成员,不能访问非静态成员;其实例化无需外部类实例,适用于无需隐式引用外部类实例的工具类等场景。
-
Java集合交集用retainAll会修改原集合,需先复制;并集需根据类型选择addAll或HashSet/Stream;差集a.removeAll(b)对应A−B;三操作均依赖正确实现的equals/hashCode。
-
安装OpenJDK需根据操作系统选择对应方式:Windows下载.exe安装,macOS可用.pkg或Homebrew,Linux用apt命令安装;随后配置JAVA_HOME及PATH环境变量,通过java-version验证;编写HelloWorld.java并编译运行测试环境;可选使用Maven等工具管理项目。
-
可使用正则表达式删除中文字符:基础场景用/\u4e00-\u9fa5/g,扩展需求加CJK扩展区,推荐/\p{Script=Han}/gu(需u标志),并可叠加标点类匹配。
-
任务不返回结果是因为用了execute()而非submit(),或任务未正确返回值;Future.get()阻塞或抛ExecutionException需检查异常原因并统一收集后调用。
-
代理模式通过代理对象控制对真实对象的访问,分为静态代理和动态代理。静态代理在编译期生成,需为每个被代理类编写对应代理类,代码冗余;动态代理在运行时生成,包括JDK动态代理(基于接口)和CGLIB动态代理(基于继承),具有更高灵活性,适用于AOP、事务管理等场景。两者主要区别在于生成时机、灵活性、依赖条件和性能。
-
Eclipse启动提示“NoJavavirtualmachinewasfound”或JRESystemLibrary显示unbound,说明未正确配置外部JDK;需先验证java-version和javac-version可用,再在Preferences→Java→InstalledJREs中手动添加JDK根目录,最后为项目指定JRE。
-
抽象类必须用abstract修饰且不能被实例化,本质是“不完整的类”,用于被继承而非创建对象;含抽象方法的类必须声明为abstract,抽象方法无方法体、不可用private/static/final修饰;子类非abstract则须实现全部抽象方法。
-
ByteBuffer.wrap()不等于入池,它仅创建共享原数组的非池化HeapByteBuffer;真正入池需用Netty等框架的PooledByteBufAllocator分配并拷贝数据。
-
最常用方式是使用HashMap和StreamAPI。1.手动遍历集合,利用HashMap的getOrDefault方法统计元素频次;2.使用Java8StreamAPI的Collectors.groupingBy和Collectors.counting()进行简洁统计;3.小规模场景可用Collections.frequency()结合去重集合遍历统计,但效率较低;4.第三方库Guava的Multiset适合频次统计,提供更专业的API。推荐使用StreamAPI方法,代码简洁、可读性强且效率高。
-
LongAdder比AtomicLong快,是因为采用分段计数(base+cells数组)减少线程争抢,而非更强原子性;低并发用base,高并发自动扩容cells,配合@Contended防伪共享提升多核性能。
-
GET请求需用URLEncoder.encode()对每个参数键值UTF-8编码后拼接,避免中文/特殊字符丢失;POST须设setDoOutput(true)、Content-Type及超时;HTTPS需校验证书与系统时间;响应读取应显式指定charset。
-
选Jackson适合高性能、复杂处理和Spring集成;选Gson适合小型项目和快速开发。若需高性能与扩展性,Jackson使用流式解析,速度快且内存低,适合大文件处理;而Gson基于对象模型,简单易用但效率较低。Jackson功能丰富,支持自定义序列化、泛型处理、Java8时间API等;Gson则API简洁,无需配置即可使用。Spring框架默认集成Jackson,便于配置与维护;而Gson在Android开发中兼容性更好。根据项目规模、性能需求及生态依赖选择合适库。