2026-10-23 23:47:12
众安保险Java一面面经核心内容总结如下:
笔试部分25道408基础题:涵盖计算机基础(数据结构、操作系统、计算机网络等)。
2道编程题:
字典序字符串计数:给定两个字符串a和b,计算它们之间按字典序排列的字符串数量。
思路:将字符串视为26进制数,通过进制转换计算差值。
最大回文子串数量:给定字符串,通过调整字符顺序,求能组成的回文子串的最大数量。
示例:输入“abca”,可调整为“abac”,回文子串为a、b、a、c、aba,共5种。
堆:线程共享,存储对象实例,由GC管理。
栈:线程私有,存储局部变量与方法调用,生命周期与方法执行同步。
标记-清除:标记无用对象后直接清除,产生碎片。
标记-整理:标记后整理内存,避免碎片。
复制算法:将存活对象复制到另一块内存,适合新生代。
分代收集:根据对象生命周期分代管理(新生代/老年代)。
引用计数法:通过引用计数判断对象是否可回收(无法处理循环引用)。
可达性分析:从GC Roots出发,不可达对象视为垃圾。
第一范式:字段不可再分。
第二范式:非主键字段完全依赖主键。
第三范式:非主键字段互不依赖。
普通索引:加速查询。
唯一索引:确保字段唯一性(通过B+树结构实现,插入时检查重复)。
主键索引:唯一且非空。
悲观锁:假设冲突,先加锁(如行锁、表锁)。
乐观锁:通过版本号或CAS实现,不加锁。
读已提交隔离级别下,可读其他事务已提交的数据。
可重复读隔离级别下,可能读到快照数据(取决于实现,如MySQL InnoDB的MVCC机制)。
String:不可变,线程安全,每次修改生成新对象。
StringBuilder:可变,非线程安全,性能高。
StringBuffer:可变,线程安全(通过synchronized实现)。
抽象类:可包含具体方法与成员变量,单继承。
接口:仅抽象方法与常量,多实现。
变量:默认public static final。
方法:默认public abstract(Java 8后支持默认方法与静态方法)。
浅拷贝:复制对象引用,新旧对象共享子对象。
深拷贝:递归复制所有子对象,新旧对象完全独立。
前端限流(如按钮置灰、验证码)。
队列削峰(如RabbitMQ、Kafka)。
库存预热与原子操作(如Redis原子减库存)。
分布式锁(如Redis或Zookeeper实现)。
降级与熔断(如Hystrix)。
方法:快慢指针法(快指针每次走两步,慢指针走一步,相遇则有环)。
时间复杂度:O(n)。
空间复杂度:O(1)。
自我介绍与项目描述需结构化。
对未答出的问题可后续补充(如发送邮件说明思路)。
反问环节展现主动性与对岗位的兴趣。