第026篇 集合框架总览:Collection 与 Map 两大家族
Java集合框架核心是Collection与Map两大主线:前者管“元素组”(List/Set/Queue),后者管“键值对”。选型关键看读写特征、排序/去重需求及并发场景——如读多用ArrayList,去重用HashSet,高并发用ConcurrentHashMap。讲清“为什么选它”,而非罗列类名,才能展现扎实功底。
第030篇 HashMap 扩容与 rehash:为什么容量是 2 的幂
Android面试高频考点:HashMap扩容与rehash。容量恒为2的幂,触发条件为size > capacity×0.75;扩容翻倍,JDK8通过`(e.hash & oldCap)`按高位比特拆分链表,保持顺序、避免成环。预设合理初始容量可规避频繁rehash与内存抖动。
第023篇 自定义异常与异常链:生产代码怎么设计错误
本文深入剖析自定义异常与异常链的实战要点,提炼出“动机—上下文—链路—反例”四步公式,直击面试高频追问(如“为何不用RuntimeException?”)。通过典型踩坑案例(丢cause、泛化捕获、序列化失败)和可运行代码,讲清如何科学分类错误、精准携带订单号等上下文、完整保留根因链。强调:异常是可观测性的第一现场,设计不当反增维护成本。
第024篇 泛型基础:类型擦除到底擦了什么
本文深入剖析Java泛型本质:以“问题—擦除—运行时残留—错误表现”四步公式讲清原理;透彻解析类型擦除机制、桥接方法及常见坑(raw type、new T[]、instanceof泛型);结合可运行代码与Android实战场景,助你面试答出“为什么”,而非仅“怎么写”。
第020篇 == 与 equals 的区别:从栈堆内存说起
面试官问“== 与 equals 区别”,真正考察的是完整心智模型:基本类型==比值,引用类型==比地址;equals默认等价==,重写后比逻辑内容,且**必须同步重写hashCode**。常见坑包括Integer缓存、字符串常量池、HashMap去重失效、枚举误用equals等。工程建议:值对象一律用Objects.equals,包装类/字符串禁用==,枚举用==更安全。
第018篇 包装类与自动装箱:Integer 缓存池的坑
包装类与自动装箱看似简单,实则暗藏三大雷区:`Integer`等缓存边界(-128~127)、`null`拆箱直接NPE、三元表达式隐式拆箱引发空指针。`==`比引用,`equals`比值;热点路径慎用包装类,集合/可空场景才需装箱。原理+踩坑+实战,一文讲透面试高频考点。
第017篇 枚举 enum:不止是常量集合
Android面试中,枚举不仅是“带名字的常量”,更是类型安全的状态管理、轻量策略模式与线程安全单例的统一载体。本文从原理、场景、坑点三层面讲透:如何用`code`字段替代`ordinal`持久化、为何避免可变状态、何时选用`@IntDef`权衡内存与安全,并附可运行代码与EnumSet/EnumMap高效用法。