影石客户端面经
一面:
1. 简单介绍一下自己呗。
2. 你们客户端从 MVC 迁到 MVI,具体是怎么做的?
3. 聊聊 MVC、MVVM 和 MVI 这几种架构模式,它们各自有啥特点和区别?
4. MVVM 的双向绑定,在代码层面是怎么实现的?
5. 你是怎么理解 MVVM 里 View 和 ViewModel 之间的双向绑定和状态更新的?
6. MVI 和 MVP 比起来,有啥不一样的地方?
7. 用 DataBinding 的时候碰到过什么坑吗?特别是在 UI 复杂、数据更新频繁的时候,效果怎么样?
8. DataBinding 更新个文本挺方便,但处理复杂数据流的时候会不会让代码变得更复杂?
9. 用了 MVVM 之后,你们是怎么解决 DataBinding 在复杂业务逻辑里可能出现的问题的?
10. 你们团队在 MVI 架构里用 StateFlow 了吗?
11. 为啥实现 MVI 的时候更喜欢用 LiveData,而不是更适合单向数据流的 Flow?
12. 从架构演进的角度,聊聊 MVP、MVVM、MVI 这些模式是怎么一步步发展过来的?
13. 平时开发,MVVM 的双向绑定用得多吗?
14. Android Jetpack 里的 ViewModel 和 MVVM 架构里的 ViewModel,这俩是一回事吗?
15. 详细讲讲 ViewModel 的生命周期,特别是它和 Activity 的生命周期有啥关系?
16. Vivo 手机上,Activity 配置变了(比如转屏),数据是怎么保存和恢复的?
17. 你觉得客户端和后端开发,最根本的区别是啥?
18. 在多线程里,ACID 能在多大程度上保证线程安全?
19. 操作系统里,线程之间共享数据有哪几种主要方式?
20. 除了 `synchronized`,还有啥别的方法能实现线程同步?
21. 进程用共享内存通信,数据要拷贝几次?
22. 内存映射的底层原理是啥?
23. 共享内存通信,具体是用什么系统机制实现的?
24. 一个进程读文件,数据是怎么流动的?操作系统都干了些啥?
25. 为啥零拷贝这么好,但在实际系统里用得不多?
26. 简单说说 HTTP 和 HTTPS 的关键区别?
27. 抓过包分析 HTTP 请求吗?
28. 详细讲讲用户和服务器建连的完整过程?
29. TCP 四次挥手,要是最后一个 ACK 丢了会怎么样?
30. TCP 挥手为啥非得是四次?能简化成三次吗?
31. 你当项目组长的时候,是怎么带团队的?碰到冲突怎么解决?
核心代码模式算法题:连续子数组的最大和