开头
面试时间:2021.2.9 1~3面、2021.2.13 4~6面、2021.2.26 HR面
面试部门 + 岗位:商业化 - 高级 Android 开发工程师
面试感想:整体面得比较累,基础面、交叉面、Boss面,前前后后对接了 6 个面试官 (离当初给我说的 3面+HR面 貌似差得有点远¬_¬) 。算法到 Boss 面都还在写,不过庆幸的是面试官没有为难我 (老实交代了算法没怎么准备,哎…),算法都不太难。整体项目比基础问得多。
面试建议:算法、基础是敲门砖,项目是试金石,良好的面试形象是加分项。
简历上列举的项目多想想,为什么做这个项目?做这个项目的目标是什么?我的方案是什么?相对其他方案我的方案优势是什么?项目的收益是什么?项目的架构图是否能画出来?项目中使用的主要框架原理是否前前后后都清楚?(我大概就是项目拯救了自己,基础准备有点仓促T^T)。
如果是现场或视频面试,良好的面试形象还是比较有必要的。在部门 TL 面的时候,就提到我相对很多其他面试者比较好的一点就是,整个人的形象状态比较好,没有让人觉得很疲惫。
二、JetPack里的组件
上图就是JetPack中包含的组件列表,每个组件都是相对独立的,可以被单独使用和构建。其中像被介绍的最多,也是最常被使用的LiveData, ViewModel, Room, Navigation, WorkManager之类的都发布了正式版,而CameraX, Compose之类的还处在Alpha版本,未正式发布,官方并不建议在生产环境中使用。
然后说下,JetPack所有的组件都是基于AndroidX构建的,如果想在项目中使用JetPack需要先将项目中对Support Lib的依赖全部换成AndroidX。
Android目前已经发展了11年,可以说是比较成熟的技术了,一开始时框架很少,也没有什么规范,所有的代码都是要自己写,比如网络请求,数据库请求,数据解析等等。后来出现了一些框架来帮助开发者快速进行开发,比如XUtils、Volley、OKHttp、EventBus等,随着框架越来越多,一个应用可以有多种技术选型,直接导致应用开发越来越不规范,导致做出来的应用质量参差不齐,这显然不是谷歌想看到的。谷歌随后推出了MVP和MVVM相关的官方例子,效果很一般,而且覆盖面只是在架构上,Goole I/O 2018大会上推出的Android Jetpack有望解决以上的问题。
三、Android Jetpack简介
Jetpack并不是一个框架或者组件,它是一套库、工具和指南的集合,可帮助开发者更轻松地编写优质应用。这些组件可帮助开发者遵循最佳做法、摆脱编写样板代码的工作并简化复杂任务,以便将精力集中放在所需的代码上。
Android Jetpack中的很多组件并不都是新开发的,而是很早就有了,比如在Goole I/O 2017大会时推出了 Android Architecture Component(AAC),它包括了LifeCycle、LiveData、ViewModel、Room。在Goole I/O 2018大会上,
用AndroidX替代了Android Support Library,并在Android Architecture Component的基础上发布了Android Jetpack,AndroidX也是属于Android Jetpack。
Jetpack主要特性有以下三点:
1.加速开发
组件可单独使用,也可以协同工作,当使用kotlin语言特性时,可以提高效率。
2.消除样板代码
Android Jetpack可管理繁琐的Activity(如后台任务、导航和生命周期管理)。
3.构建高质量的强大应用
Android Jetpack组件围绕现代化设计实践构建而成,具有向后兼容性,可以减少崩溃和内存泄漏。
四、Android Jetpack分类
下图是Jetpack的分类。
谷歌仍旧不断的完善Android Jetpack,截至到2019年8月已经有很多新加的组件并没有显示在上图中,比如CameraX等。Android Jetpack分类有4种,分别是Architecture、Foundationy、Behavior、UI,下面分别介绍下。
1. Architecture(架构组件)
Architecture指的是架构组件,帮助开发者设计稳健、可测试且易维护的应用。架构组件可以说是对应用开发帮助最大的组件,本系列也是围绕着架构组件进行讲解。
DataBinding:以声明方式将可观察数据绑定到界面元素,通常和ViewModel配合使用。
Lifecycle:用于管理Activity和Fragment的生命周期,可帮助开发者生成更易于维护的轻量级代码。
LiveData: 在底层数据库更改时通知视图。它是一个可观察的数据持有者,与常规observable不同,LiveData是生命周期感知的。
Navigation:处理应用内导航。
Paging:可以帮助开发者一次加载和显示小块数据,按需加载部分数据可减少网络带宽和系统资源的使用。
Room:友好、流畅的访问SQLite数据库。它在SQLite的基础上提供了一个抽象层,允许更强大的数据库访问。
ViewModel: 以生命周期的方式管理界面相关的数据,通常和DataBinding配合使用,为开发者实现MVVM架构提供了强有力的支持。
WorkManager: 管理Android的后台的作业,即使应用程序退出或设备重新启动也可以运行可延迟的异步任务。
实战系列
话不多说,Android实战系列集合都已经系统分类好,由于文章篇幅问题没法过多展示,获取学习笔记链接:点击我的腾讯文档免费获取
om/doc/DSkNLaERkbnFoS0ZF)**
[外链图片转存中…(img-yWii2xPj-1619765805547)]