Android 之 面试八股文

  1. ​1.Activity生命周期​

    • ​问题​​:描述Activity从启动到销毁的完整生命周期方法,并说明onSaveInstanceState()的调用时机。

    • ​参考答案​​:

      • onCreate()→ onStart()→ onResume()(活跃状态) → onPause()(失去焦点) → onStop()(完全不可见) → onDestroy()

      • onSaveInstanceState():在Activity可能被销毁前调用(如屏幕旋转),用于保存临时数据到Bundle。

    • ​考察点​​:生命周期顺序、状态恢复、资源释放时机。

  2. ​2.Fragment通信方式​

    • ​问题​​:列举3种Fragment间通信方式,并对比优缺点。

    • ​参考答案​​:

      • ​ViewModel共享​​:通过同一Activity作用域的ViewModel共享数据(推荐,解耦性强)。

      • ​Fragment Result API​​:使用setFragmentResult()传递Bundle(无需直接引用)。

      • ​接口回调​​:Fragment定义接口,Activity实现并转发(代码冗余,适合简单场景)。

​3.View绘制流程​

    • ​问题​​:解释View的onMeasure()onLayout()onDraw()的作用,并说明如何优化自定义View的性能。

    • ​参考答案​​:

      • onMeasure():计算View尺寸(需处理MeasureSpec模式)。

      • onLayout():确定子View位置。

      • onDraw():绘制内容(避免在此创建对象或耗时操作)。

      • ​优化​​:使用ViewStub延迟加载、减少布局层级、启用硬件加速。

4.​​事件分发机制​

5.​​Handler机制​

6.解释下多线程编程

6.​​内存泄漏场景与解决​

    • ​问题​​:列举3个常见内存泄漏场景(如静态Context),并提供解决方案。

    • ​参考答案​​:

      • 静态Context → 改用ApplicationContext或弱引用。

      • 未注销广播 → 在onDestroy()中调用unregisterReceiver()

      • 匿名内部类持有外部引用 → 静态内部类 + 弱引用。

  1. ​7冷启动优化​

    • ​问题​​:应用冷启动耗时超过1秒,如何定位和优化?

    • ​参考答案​​:

      • ​定位工具​​:Android Studio Profiler的启动时间分析。

      • ​优化方案​​:

        • 延迟初始化第三方库(使用App Startup)。

        • 减少主线程任务(用线程池处理IO操作)。

        • 使用SplashScreen API避免白屏。

  1. 8.​​MVVM与MVI对比​

    • ​问题​​:解释MVVM和MVI架构的区别,并说明MVI如何解决状态管理问题。

    • ​参考答案​​:

      • ​MVVM​​:数据驱动UI(LiveData + ViewModel),但状态分散。

      • ​MVI​​:单向数据流(ViewState → 事件 → 更新状态),状态集中管理(如用Kotlin Flow实现)。

  2. ​模块化方案​

    • ​问题​​:如何将单模块App拆分为模块化架构?需考虑哪些问题?

    • ​参考答案​​:

      • ​步骤​​:按功能划分模块(登录、支付等),基础库抽离

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值