一段凄惨Android 面试经历分享,败在了项目架构原理上……

318 篇文章 20 订阅
20 篇文章 0 订阅

大家应该看过很多分享面试成功的经验,但根据幸存者偏差的理论,也许多看看别人面试失败在哪里,对自己才更有帮助。

这是一位网友分享的面试经历,他准备了3个月,刚刚参加完字节跳动的第三面,视频面,嗯,挂了…

网友:你好,大佬

大佬:你好

网友:最近出去面试,很多面试官问了MVVM相关问题

大佬:嗯嗯,回答的怎么样?

网友:上来DataBinding,ViewModel,LiveData一套给我搞晕了,我估计我要挂了

大佬:是的,稍微对MVVM有一点经验的面试官都会请你举例说明,好证明你确实对MVVM有着正确,深入的理解!

网友:大佬觉得我应该如何回答好啊?

大佬:首先,你要分析你为什么使用MVVM,它相对于其他MVP这类架构师如何解决你的项目问题的,另外,还要回答jetpack使用过程中遇到的坑是怎样的。最后,面试官估计会问你对各种架构的选择的对比原则之类的哦

网友:好的,明白了,谢谢哦

网友:对了,请问大佬现在 Android 可开发是不是都是用MVVM+jetpack的方式作为主流框架啊?有没有什么好的项目可以给学习一下吗?

大佬:嗯,是的,现在MVVM + jetpack 使用非常广泛,也确实好用,我给你一个开源项目给你,你学习一下,然后重构一下你自己的项目哦

网友:谢谢大佬

面试题:谈谈Jetpack和MVVM模式,你有在自己的项目中使用过吗?

好吧,这个问题相信很多面试者都遇到过,结果说明Jetpack和MVVM模式并没有到妇孺皆知的境地。不过也好,这么一个简单的问题就可以很容易区分出面试者是否对Android开发有热情。接下来我们谈谈为什么面试过程为什么爱问Jetpack和MVVM模式。

为何使用 Android Jetpack?

快速开发组件可以单独采用(不过这些组件是为协同工作而构建的),同时利用 Kotlin 语言功能帮助您提高工作效率。

消除样板代码

Android Jetpack 可管理繁琐的 Activity(如后台任务、导航和生命周期管理),以便您可以专注于如何让自己的应用出类拔萃。

构建高质量的强大应用

Android Jetpack 组件围绕现代化设计实践构建而成,具有向后兼容性,可以减少崩溃和内存泄漏。

大厂招聘需求

现如今,Jetpack 组件及 MVVM架构配套使用的方案的确立,意味着 Android 开发已步入非常成熟阶段:开发者可以减少许多样板代码的书写,只需要通过模版工具自动生成就可以了,在取缔非常多的耗时的重复工作的同时,减少了很多因为忘记 unRegister带来的各种问题。这十分符合企业的需要,企业可以减少很多开发成本,面试官在招人的时候,也可以更加看重应试者对 架构组件的思维理解 —— 至少是 MVVM 的理解程度。

MVVM 已经被实践证明是一种优秀的设计模式。能很好地将 UI 、交互逻辑、业务逻辑和数据解耦。

但是面试过程中回答像“解耦”等 含糊其辞的说法,面试官并不知道你在说什么,因为纸上谈兵大家都会,稍微对 MVVM 有一点经验的面试官都会请你举例说明,好证明你确实对 MVVM 你确实做过,理解过,并且能够应用,而不是做功能开发,这样可以鉴别开发者是否能够自然而然地写出标准化、范化的代码,能够迅速适应各家公司自制的自动化模版工具。

Jetpack+MVVM=?

Jetpack是一种新的架构方式,从工作到现在,我们经历过了MVC、MVP、MVVM、Clean等,每个项目由于项目特点和需求的不同,都会出现一套基于开发者所设计的架构模式,分层、组件化、模块化,每一种设计都是基于项目所在场景的,很难适合所有项目场景。但是Jetpack,它的定义更像是一套工具或者说指导;是谷歌正式推出的一整套用来构建APP开发的组件。

MVVM 架构模式可以说是Google “钦定”的 Android 开发未来的第一架构。

从Model-View-ViewModel 这个名字来看,它由三个部分组成,其中视图模型(ViewModel)其实就是 PM 模式中的展示模型。除了我们非常熟悉的 Model、View 和 ViewModel 这三个部分,在 MVVM 的实现中,还引入了隐式的一个 Binder 层,我们要完整的采用 MVVM 必须熟练的掌握 DataBinding 等基础组件。大公司App的开发需要基于模块化、层次化、组件化、控件化的思路来设计架构,从而提高App的需求的应变能力和可靠性。Artifactory对模块化和组件化大有帮助;Jetpack可以有效减少Oom和奔溃;Mvvm则可以满足需求的变化,那么这些你都会吗?

为了帮助到大家提升对 Android 项目架构框架方面的理解,耗时一个星期左右的时间,查阅各大技术平台的文章,将一些凌乱的知识点进行了整合,得出了这份《Android Jetpack全家桶》(内含compose)架构知识点手册 ,至于目录内容大家可以参考下面的内容

Jetpack 部分:https://qr18.cn/A0gajp

1.Jetpack之Lifecycle

  • 万物基于 Lifecycle
  • 手动管理生命周期的痛苦你不懂
  • 按照惯例的思考
  • 观察者模式
  • 引入 Lifecycle 后
  • 源码结构
  • 简单的源码分析
  • activity 生命周期处理
  • fragment 生命周期处理
  • Lifecycle State 大小比较

2.Jetpack之ViewModel

  • ViewModel 的职责
  • 作为数据持有者
  • Fragment 间共享数据
  • 代替 Loader
  • 总结
  • ViewModel 源码分析

3.Jetpack之DataBinding

  • 数据驱动魔法师
  • DataBinding 基础
  • DataBinding 引入
  • 感受魔法的魅力
  • 总结

4.Jetpack之Navigation

  • 没有 Navigation 的世界
  • Navigation 简介
  • Navigation 能做什么
  • Navigation 工作逻辑
  • Navigation Graph
  • NavHost
  • NavController
  • 总结
  • ……

5.Jetpack之LiveData

  • 我们都是 Adapter
  • 理想的数据模型
  • LiveData 的错误用法
  • 源码结构
  • 源码分析
  • 总结

Compose 知识点部分:https://qr18.cn/A0gajp

1.Jetpack Compose入门详解

  • 优势与缺点
  • 安卓官方Jetpack Compose 四节课
  • 标准布局组件
  • xml和compose混合使用 + livedata数据绑定
  • compose结合navigation使用
  • Compose 中的 ConstraintLayout
  • Compose 手写一个分享二维码弹窗
  • Compose 设置颜色的三种方式
  • Compose事件与状态简略介绍
  • Compose中的预览@Preview与@PreviewParameter的使用

2.Compose学习笔记

  • 基本控件
  • Composable和MutableState
  • 重组和无状态
  • 状态机制和重组优化
  • derivedStateOf和remember的使用
  • CompositionLocal的应用场景
  • Compose动画之AnimateSpec
  • Compose动画之DecayAnimation
  • Compose动画之中止和入场效果

3.Compose 动画使用详解

  • Compose 中属性动画的使用探索
  • 状态改变动画animateXxxAsState
  • 自定义animateXxxAsState动画

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值