-
Java泛型采用类型擦除是为了兼容旧JVM和代码,编译时将泛型参数替换为Object或上界类型,运行时无法获取具体类型参数,但编译器通过类型检查和自动转型保障类型安全。
-
Java不支持真正的嵌套包,声明时只需一个package语句,且必须写全路径(如packagecom.example.util;),而非分段或多次声明。
-
IntelliJIDEA中OptimizeImports不生效,需启用“Optimizeimportsonsave”或“Removeunusedimportsonthefly”;Lombok/MapStruct等注解可能导致误判,可用//noinspectionUnnecessaryImport抑制;VSCode需RedHatJava扩展并配置java.import.order;Gradle/Maven多模块项目需同步依赖与SDK版本。
-
Safepoint是JVM暂停线程执行全局操作(如GC)前必须等待所有线程到达的安全检查点;线程仅在JIT插入的safepointpoll位置(如方法返回、循环末尾)主动检查并暂停,而非任意指令处中断。
-
IDE运行Java报错多因配置错误:主类未识别、类路径错、编码不一致、JDK版本不匹配或编译未生效,需依次检查源根标记、UTF-8编码设置、ProjectSDK与编译版本一致性及清理输出目录。
-
IntelliJIDEA中Lombok插件不生效需确认三件事:安装启用插件、开启AnnotationProcessing、构建工具中正确声明compile范围依赖;新版Lombok1.18.32与Jackson兼容问题需显式配置lombok.config;@Builder与@AllArgsConstructor同用易冲突,推荐@RequiredArgsConstructor+@Builder;单元测试中失效多因testclasspath缺失Lombok依赖或IDE缓存未更新。
-
浅拷贝复制对象时,基本类型值独立复制,引用类型仅复制地址引用,导致原对象与副本共享引用对象;深拷贝则递归复制所有引用对象,实现完全独立。选择依据包括对象可变性、嵌套复杂度及性能要求。
-
增强for循环底层调用迭代器,是编译期语法糖,等价于显式使用Iterator的hasNext()和next()方法;遍历时直接修改集合会抛ConcurrentModificationException。
-
在RESTAPI设计中,应严格区分资源标识(由@PathVariable承担)与资源状态数据(由@RequestBody承担);将路径参数“注入”到请求体对象中违背了关注点分离原则,不仅破坏语义一致性,也增加序列化/反序列化风险和维护成本。
-
Java中不能直接newLogger,因其构造方法为protected,须通过Logger.getLogger()获取实例;JUL配置繁琐性能一般,推荐SLF4J+Logback组合,解耦API与实现,支持灵活配置和高性能日志输出。
-
优先使用StandardCharsets.UTF_8等静态常量,因其零开销、线程安全、编译期校验;Charset.forName()需运行时解析且可能抛异常,仅在动态编码名场景下配合try-catch使用。
-
设计课程与用户进度数据模型,包括Course、Chapter、User和UserProgress实体;2.使用SpringBoot实现后端API,支持进度上报与查询,定时更新观看时长并判断完成状态;3.通过已完成章节数与总章节数之比计算课程完成率;4.前端监听播放事件,定期提交进度并优化用户体验,采用节流或WebSocket减少请求压力;5.系统需保证数据一致性,高频操作可异步处理或批量入库以提升性能。
-
最直接的方法是用get(),但需注意null既可能表示键不存在,也可能表示键存在且值为null;若业务允许null值,应配合containsKey()判断,或优先使用getOrDefault()避免判空。
-
IntelliJIDEA中Lombok插件不生效需确认三件事:安装启用插件、开启AnnotationProcessing、构建工具中正确声明compile范围依赖;新版Lombok1.18.32与Jackson兼容问题需显式配置lombok.config;@Builder与@AllArgsConstructor同用易冲突,推荐@RequiredArgsConstructor+@Builder;单元测试中失效多因testclasspath缺失Lombok依赖或IDE缓存未更新。
-
super用于子类中安全精准访问直接父类的字段、方法或构造器,不创建对象、不跨级查找、遵守访问控制,且仅限实例上下文使用。