拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Android 面试知识点整理

Android 面试知识点整理一、四大组件必问1.1 Activity1.2 启动模式launchMode1.3 Service1.4 BroadcastReceiver1.5 ContentProvider二、Fragment三、Handler 消息机制必考四、存储五、网络六、异步与线程七、内存优化7.1 内存泄漏常见7.2 OOM 与 Bitmap八、性能优化九、Jetpack官方架构组件十、Kotlin加分/主流十一、适配与权限十二、易踩坑清单十三、高频面试题 25 连击定位Android 开发岗面试速通。配套《Java面试知识点梳理》语言基础复用 本文平台/组件/优化。用法每个模块先看核心结论再看面试题最后对照易踩坑。一、四大组件必问1.1 Activity生命周期onCreate创建→onStart可见→onResume可交互→onPause失去焦点→onStop不可见→onRestart→onDestroy销毁。典型场景启动 AonCreate→onStart→onResumeA 跳 B标准A.onPause → B.onCreate→onStart→onResume → A.onStop按返回B.onPause → A.onRestart→onStart→onResume → B.onStop→onDestroy横竖屏切换onPause→onStop→onDestroy→onCreate→onStart→onResume除非配置configChanges。1.2 启动模式launchMode模式行为standard每次新建实例可多个singleTop栈顶复用不新建onNewIntent接收singleTask栈内唯一清除其上所有 ActivitysingleInstance独占一个任务栈1.3 Service生命周期onCreate→onStartCommand→onDestroystartService独立运行bindService绑定随调用者销毁。前台服务Android 8 必须startForeground带通知否则崩溃。IntentService已废弃内部单线程 HandlerThread任务完成自动停止新项目用WorkManager / 协程。1.4 BroadcastReceiver标准广播并行/ 有序广播setPriority可拦截/ 本地广播LocalBroadcastManager更安全高效。注册静态ManifestAndroid 8 大部分隐式广播受限/ 动态registerReceiver需 unregister 防泄漏。1.5 ContentProvider跨进程数据共享标准组件通讯录、相册底层 Binderquery/insert/update/delete。二、Fragment生命周期onAttach→onCreate→onCreateView→onActivityCreated→onStart→onResume→onPause→onStop→onDestroyView→onDestroy→onDetach。与 Activity 通信接口回调 /ViewModel共享 / 第三方 EventBus谨慎。懒加载ViewPager2 FragmentStateAdapter用onResume 标志位或setMaxLifecycle控制加载时机。add/hide vs replaceaddshow/hide保留实例、replace每次重建事务需commitAllowingStateLoss防状态丢失异常。三、Handler 消息机制必考四件套Handler发/处理、Looper循环、MessageQueue队列、Message消息。主线程Looper由ActivityThread.main()中Looper.prepareMainLooper()初始化子线程需手动prepareloop。流程sendMessage→ 入队 →Looper.loop()取消息 →dispatchMessage→handleMessage。内存泄漏非静态内部类 Handler 持有 Activity 引用 → 消息未处理时 Activity 无法回收。解决静态内部类 弱引用或onDestroy中removeCallbacksAndMessages(null)。四、存储方式适用注意SharedPreferences轻量键值设项/登录态apply异步可能丢、commit同步跨进程不可靠内部文件私有数据openFileOutput外部存储大文件/共享需运行时权限Android 6 分区存储Scoped StorageAndroid 10SQLite结构化数据推荐Room编译期校验、LiveData 支持ContentProvider跨应用标准接口五、网络OkHttp拦截器链应用拦截器 / 网络拦截器、连接池复用、缓存、WebSocket。Retrofit动态代理 注解GET/POST/Query/Body生成请求配合 RxJava/协程suspend。安全HTTPS证书锁定CertificatePinner、敏感数据加密、防抓包。六、异步与线程方案说明AsyncTask已废弃内存泄漏/版本兼容问题HandlerThread自带 Looper 的子线程线程池Executors有风险用ThreadPoolExecutorRxJava响应式流线程切换subscribeOn/observeOnKotlin 协程轻量、结构化并发、suspend 调度器Dispatchers.IO/Main七、内存优化7.1 内存泄漏常见静态变量持有 Activity / Context。非静态内部类Handler、Thread、AsyncTask。未注销监听EventBus、广播、Sensor。资源未关闭Cursor、Stream、Bitmap。工具LeakCanary自动检测。7.2 OOM 与 BitmapBitmap是大头inSampleSize采样压缩、inBitmap复用、放res合适密度、及时recycleAndroid 8 由 GC 管理。图片库Glide / Coil自动内存磁盘缓存、生命周期感知。八、性能优化启动优化冷/温/热启动Application/Activity 中避免耗时I/O、初始化异步初始化启动器/协程、延迟加载、IdleHandler。布局优化减少层级ConstraintLayout、include/merge/ViewStub、避免过度绘制开发者选项检测。卡顿主线程不要做 IO/复杂计算Choreographer / Profiler 定位掉帧StrictMode抓主线程违规。包体积资源混淆AndResGuard、so 按架构分包、无用资源移除R8/ shrinkResources。九、Jetpack官方架构组件组件作用ViewModel配置变更旋屏数据不丢不持有 ViewLiveData生命周期感知的可观察数据Room官方 ORMWorkManager可靠的后台任务替代 JobScheduler/IntentServiceNavigation统一导航、深链ViewBinding/DataBinding空安全视图绑定 / 数据绑定Lifecycle生命周期感知基类MVVM 推荐架构UIActivity/Fragment→ ViewModel → Repository → 数据源网络/DB。十、Kotlin加分/主流空安全?可空、!!强转慎用、?:elvis、?.安全调用。协程suspend挂起、CoroutineScopeJob、Dispatchers切换线程、结构化并发父取消子随之取消。语法糖扩展函数、高阶函数/lambda、数据类data class、密封类sealed class、解构、默认参数。协程 vs RxJava协程更轻、结构化、可读性好RxJava 操作符更全、老项目存量大。十一、适配与权限屏幕dp/sp 自适应ConstraintLayout 百分比刘海/挖孔DisplayCutout折叠屏多窗口。权限Android 6 运行时权限checkSelfPermission/requestPermissionsAndroid 10 分区存储Android 12 精确位置分粗/细。十二、易踩坑清单坑现象解决Handler 内存泄漏Activity 不回收静态类 弱引用 / 移除消息静态 Context/View泄漏用 Application Context主线程网络/IOANR切子线程 / 协程广播未注销泄漏/崩溃onDestroy unregister横竖屏重建丢数据状态丢失ViewModel / onSaveInstanceStateSharedPreferences 跨进程数据不准用 ContentProvider/MMKV图片 OOM崩溃Glide 采样匿名内存卡顿懒加载 / 异步十三、高频面试题 25 连击Activity 完整生命周期A 跳 B 生命周期调用顺序四种启动模式区别onSaveInstanceState 何时调用Service 与 IntentService 区别前台服务为什么必须通知广播静态注册限制Android 8Handler 原理子线程能用吗为什么 Handler 会内存泄漏Looper.loop 为什么不会阻塞主线程简述 MessageQueue 的阻塞epollSharedPreferences 的 apply 与 commit 区别内部存储与外部存储区别分区存储是什么OkHttp 拦截器有几种区别Retrofit 原理为什么 AsyncTask 被废弃协程相比线程优势常见内存泄漏场景LeakCanary 原理Bitmap 如何防止 OOM启动优化手段布局过度绘制如何排查ViewModel 为什么不会被重建销毁Kotlin 空安全怎么实现
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门