字节跳动资深Android面经:插件化选型、组件化设计、热修复权衡,面试官考的是决策力
高级那篇讲底层机制,资深岗完全不同——面试官不问你底层怎么实现,问你"两个方案你怎么选,为什么这么选"。说白了资深面的是技术决策能力和架构视野,跟架构师的区别在于资深更偏落地执行,架构师更偏顶层设计。今天5道题都是字节资深Android岗的真实方案设计题,没有标准答案,但每个选择背后都有清晰的trade-off逻辑。Q1:插件化方案怎么选?VirtualAPK、RePlugin、Shadow各有什么优劣?面试官考的不是你能背出几个框架,而是你能不能根据业务场景做选型。VirtualAPK(滴滴开源):核心思路是运行时替换Activity启动流程的关键节点,让插件的Activity能像宿主Activity一样启动。优点是侵入性低、对插件几乎零改造,缺点是跟Android版本强耦合——每次系统大版本更新都可能要适配。RePlugin(360开源):走的是"坑位"方案,在宿主Manifest里预埋一堆占位Activity,运行时把插件Activity映射到坑位上。优点是不依赖Hook,稳定性好,缺点是坑位数量需要提前规划,插件Activity数量受限于坑位。Shadow(腾讯开源):思路最激进——插件Activity继承ShadowActivity而不是系统Activity,完全不需要Hook系统。优点是跟Android版本解耦,未来不管系统怎么变都不影响。缺点是插件改造成本高,所有Activity都要改继承关系。选型建议:追求稳定和低风险选RePlugin,追求长期维护和版本解耦选Shadow。字节内部用得比较
