中级安卓应用开发
核心28题1.Activity 生命周期 配置变更:切后台再回来走哪些回调?旋转屏幕 ViewModel 为什么不丢数据?切到后天应用生命周期onPause()-onStop()若被系统回收还会onSaveInstanceState()回到应用则会从onRestart()-onStart()-onResume()如果内存不足被杀死恢复时onCreate(savedInstanceState)会带回Bundle因为viewModel存“与界面强相关但跨配置变更要保留的业务数据”比如缓存中已加载的界面商品数据stateFlow状态ViewModel存在ViewModelStoreactivity的onRetainNonConfigurationInstance机制配置变更不销毁所以旋转屏幕后实例保留2.Activity 启动模式:singleTop/singleTask怎么用?启动方式显示Intent同APP中跳转比如从登录界面跳转到购物界面、隐式Intent跨APP比如打开系统相机、PendingIntent通知/Widget点击singleTop栈顶复用适合搜索页面连续搜不同词避免叠一堆相同ActivitysingleTask栈内单例清除上面Activity适合购物车/首页3.ViewModel 与 StateFlow:怎么把商品信息库存收藏聚合成一个 UI State 给 Compose?UIState用data class ProductUiStare(val info: AsyncProduct, val stock: Int, val fav: Boolean)ViewModel内多个stateflow经combine组合成一个uiState: StateFlowProductUiStateCompose collectAsStateWithLifecycle()订阅单一信源避免状态不一致4.协程挂起本质:suspend是什么?Dispatchers.IO/Main分别干嘛?suspend是一个标记告诉 Kotlin 编译器这个函数可能会暂停执行但不会阻塞线程。Dispatchers.Main:Android 主线程UI 线程Dispatchers.IO:共享的 IO 线程池Dispatchers.Default:CPU 密集型线程池5.协程作用域取消:viewModelScope/lifecycleScope为什么不会泄漏?viewModelScope/lifecycleScope绑定生命周期ViewModel clear / Lifecycle destroy 时自动 cancel 所有子协程杜绝泄漏——这是协程比Thread/AsyncTask安全的关键。6.Room 基本用法:Entity/Dao/Database怎么写?为什么用 Room 不用裸 SQLite?7.Retrofit 协程:怎么定义接口?suspend怎么配合?GET(logistics/{no})Path(no)、Query(page)、Body order: OrderReq、POST。协程interface Api { GET suspend fun track(Path(no) no: String): TrackResp }Retrofit 原生支持suspend内部切到 OkHttp 异步并在协程恢复ViewModel 直接api.track(no)在viewModelScope调异常用try/catch或Result包装。8.OkHttp 拦截器:有哪两类?你用来干嘛?Application InterceptoraddInterceptor只走一次、不关心重定向/重试适合统一加 Header注入 SupabaseAuthorization: Bearer JWT/ anon key、打日志、改请求。Network InterceptoraddNetworkInterceptor每次真实网络请求都走含重定向适合观察真实流量、缓存控制。我们用HttpLoggingInterceptor仅 debug 自定义AuthInterceptor注入 TokenToken 失效经401拦截触发刷新后重试原请求。9.内存泄漏:常见场景 怎么定位场景static持 Activity、单例持 View、Handler/Thread匿名内部类隐式持外部类、RxJava/Flow未取消、Context被长生命周期对象持有。排查LeakCanary 抓引用链、Profiler 抓 heap dump 用 MAT 看Retained Size大对象、对比两次 dump 找只增不减的实例。10.集合选型:ArrayListvsLinkedList、HashMapvs ConcurrentHashMap底层结构 读改写复杂度 并发场景选 ConcurrentHashMap11.线程/锁:synchronizedvsReentrantLockvs CAS;协程里用什么三者区别;协程内用Mutex.withLock(挂起非阻塞)12.JVM GC 基础:可达性分析、年轻代/老年代、GC 为什么会卡从 GC Roots 不可达即死;分代回收;大对象频繁创建触发 GC 抖动掉帧----------------------以上是必会的下面是80%会的--------------------13.Repository 模式:为什么要有这一层?本地 Room 云端 Supabase 怎么聚合讲清屏蔽数据源差异、单一可信源;getCartFlow先 emit 本地再合并远端14.MVVM vs MVP:区别?为什么选 MVVMMVPPresenter 解耦但接口爆炸、双向持有易泄漏。MVVMVM 暴露可观察数据View 被动渲染DataBinding/Compose 天然契合。从 MVP 迁 MVVMMVI把散落的多个LiveData字段收敛为单一不可变UiState所有用户操作发Intent如LoadProduct(skuId)、ToggleFavVM 归约出新 StateCompose 纯函数渲染杜绝多个字段各自更新导致的中间不一致。15.DataStore vs SharedPreferencesSP同步 API、主线程读易 ANR、跨进程不可靠、无类型安全。DataStorePreferences/Proto基于协程Flow、异步、事务、类型安全、无 ANR。「鲜购优选」登录 Token、是否首次引导 →DataStore(Preferences)Token 实际敏感值走EncryptedSharedPreferences主题/语言设置 →DataStore购物车/浏览历史 → Room用户隐私配置开关→EncryptedSharedPreferences。16.Compose 重组性能:上千商品卡片怎么不卡LazyColumn 惰性;remember/key/derivedStateOf缩小重组范围;稳定类型17.事件分发三方法:dispatchTouchEvent/onInterceptTouchEvent/onTouchEvent返回值含义三个方法各自返回 true 的意义;能说一个滑动冲突处理思路(外部拦截法)18.WorkManager 场景:离线加购、网络恢复自动同步怎么做Constraints(CONNECTED) enqueueUniqueWork 退避重试;知道它保证可靠后台任务19.图片 OOM 防护:列表大量图怎么不爆内存Coil/Glide 按尺寸解码、BitmapPool复用、RGB_565;配合LazyColumn回收 CDN 缩略图20.导航 Navigation Compose:页面跳转/传参/返回栈navController.navigate(detail/$id)、参数回传用savedStateHandle、popUpTo清栈21.设计模式-单例:object单例的坑别持 Activity Context(用 Application);DCL 需 volatile;项目里SupabaseClient单例22.设计模式-观察者/适配器/工厂:在哪体现Flow 订阅观察者;RetrofitConverter适配器;OkHttpBuilder建造者23.Kotlin 扩展/密封类:怎么用价格格式化/脱敏扩展;sealed建模 MVI 的 Intent/State,when穷举防漏24.Hilt / 依赖注入:为什么用 DI 不用 newDI 本质是控制反转IoC对象不自己new依赖而是由外部容器注入解耦、可测试、单一实例。用 Hilt 而非new① 自动管理作用域Singleton/ViewModelScoped复用实例② 构造变化时只改Inject一处 ③ 测试可TestInstallIn替换 Fake Repository如测试用内存 FakeSupabase④ 避免满屏object/全局单例难测。25.广播 vs 进程内事件:订单推送为什么不用全局广播倾向SharedFlow/StateFlow(类型安全、无序列化开销、易追踪),LocalBroadcastManager已废弃---------------加分项目---------------26.性能优化工具链**:启动/卡顿怎么量化27.安全基础**:混淆不能混淆什么、证书锁定28MVI 单向数据流:和 MVVM 区别

相关新闻

什么是数据库事务机制?MySQL 是如何实现事务的?

什么是数据库事务机制?MySQL 是如何实现事务的?

面试考点分析是否能用一句话说清事务的定义,并理解事务与数据库一致性的关系。是否掌握 ACID 四大特性,并能分别落到 MySQL InnoDB 的实现机制上。是否理解 redo log、undo log、MVCC、锁机制在事务中的分工与协作。是否清楚四种隔离级别分别解决什么问题…

2026/10/25 18:50:50 阅读更多 →
从暴力枚举到回溯算法:全排列问题深度解析与蓝桥杯实战

从暴力枚举到回溯算法:全排列问题深度解析与蓝桥杯实战

1. 从“暴力枚举”到“优雅回溯”:全排列问题的本质看到这个标题,很多刚开始接触算法竞赛的同学可能会心一笑,甚至有点“被戳中”的感觉。蓝桥杯的题目里,排列组合类问题出现的频率相当高,比如经典的“凑算式”、“方格…

2026/11/6 23:04:08 阅读更多 →
C++函数模板实现char与int数组通用排序:从泛型思想到工程实践

C++函数模板实现char与int数组通用排序:从泛型思想到工程实践

1. 项目概述:从排序需求到模板泛化最近在带新人学习C的STL,发现很多朋友在掌握了sort、vector这些基础容器和算法后,一遇到需要为自定义类型或者特定数组(比如char数组和int数组)写排序时,就又退回去写C风格…

2026/11/7 0:11:32 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/6 15:21:35 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/6 9:29:27 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/6 22:01:11 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/6 22:01:11 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/6 8:08:42 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/6 22:01:09 阅读更多 →

日新闻

周新闻

月新闻