-
选IntelliJIDEA,因其对Java生态深度集成——如javac错误内联标红、Maven自动重载、Lombok零配置识别;SpringBoot原生支持、热更新能力更强、重构更安全;Eclipse仅在特定老项目、Ant构建或定制插件场景下更优。
-
Java数组初始化有三种方式:一是声明并直接初始化(如int[]nums={1,2,3}),须同行完成;二是先声明后用new创建(如int[]arr;arr=newint[5]);三是声明+new+初始化合并(如int[]data=newint[]{1,2,3}),二维数组同理。
-
封装通过private修饰属性并提供public的getter和setter方法实现,如Person类中name和age私有化后,通过getName、setName等方法安全访问,并可在setAge中添加年龄校验逻辑。
-
答案是:==比较值或内存地址,equals()比较逻辑内容,重写equals()需遵守五契约并同步重写hashCode()。
-
DelayQueue是Java中基于优先级队列实现的无界阻塞延时队列,要求元素实现Delayed接口(含getDelay和compareTo方法),仅到期任务可被take()获取,需配合外部线程消费,适用于单次延时场景如订单关单。
-
ABA问题指值从A变为B再变回A,导致CAS误判未变化,从而引发数据不一致;AtomicStampedReference通过引入版本戳,在每次修改时更新戳值,即使引用值恢复为A,戳的变化也能表明实际发生过修改,从而解决该问题。
-
Java中用户操作偏好持久化需按场景选择策略:桌面端用PreferencesAPI,Web端用Session+数据库,结构化存储推荐JSON或Properties,并注意生命周期管理与默认值兜底。
-
Java配置中心核心是动态推配与用配联动,含存储层、服务端和客户端SDK三部分;SpringBoot中可用@ConfigurationProperties+@RefreshScope配合/actuator/refresh实现动态加载,需避坑@Value不刷新、类型转换静默失败等问题。
-
JavaGC采用可达性分析算法判定对象存活,从GCRoots(如栈中局部变量、静态属性、常量、JNI引用等)出发搜索引用链,不可达对象即被回收;循环引用不影响回收,软/弱/虚引用按策略处理。
-
Collections.disjoint方法判断两集合是否无交集,遍历较小集合并用contains检查另一集合,依赖元素的equals和hashCode实现,正确重写方可确保结果准确。
-
答案是通过设计Option类统计票数,使用Map管理选项,List结合Comparator按票数降序排序输出。
-
BigInteger类用于处理超出long范围的整数,通过字符串或valueOf方法创建对象,支持加减乘除、取模、幂运算和比较等操作,所有运算返回新实例,适用于高精度计算场景。
-
Java中通过Serializable接口和ObjectOutputStream/ObjectInputStream实现对象序列化与反序列化。1.类需实现Serializable接口并建议定义serialVersionUID;2.使用ObjectOutputStream将对象写入文件实现持久化;3.使用ObjectInputStream从文件读取对象恢复数据;4.注意静态变量和transient字段不参与序列化,反序列化不调用构造函数,需处理版本兼容性与敏感信息。
-
Java可插拔模块核心是解耦与契约:定义清晰扩展点接口(如PaymentProcessor)、插件元信息(plugin.yml)、隔离类加载、标准生命周期管理、沙箱执行与可观测性保障。
-
LinkedHashMap通过双向链表维护插入顺序,遍历时按插入顺序返回元素。1.内部用哈希表加双向链表实现;2.插入时节点添加到链表尾部;3.默认按插入顺序遍历,若构造函数第三个参数为true则按访问顺序排序,适用于LRU缓存;4.适用场景包括配置项处理、日志记录和有序数据导出。