其他分享
首页 > 其他分享> > 2021年安卓开发者跳槽指南,带你全面解析Android框架体系架构view篇,大厂直通车!

2021年安卓开发者跳槽指南,带你全面解析Android框架体系架构view篇,大厂直通车!

作者:互联网

开头

让我们一起来看看,字节跳动的第三面,面试官都问了什么?(第一二面的题目及答案已整理,需要的可以在文末领取)

从七月中旬开始,我前前后后差不多一共投递了八十份简历,到目前为止,我参加面试的面试有十二家(收到的面试通知)

字节跳动的面试我准备了一个多星期吧,因为比较重视。

从字节跳动面试官这些问题,可以看出,第三面他们考察的一个很重要的方向就是项目架构和性能优化。

“懒洋洋”甚至跟我吐槽:“我靠,现在大厂面试java后端都这么难的吗?”

大厂面试就是难,但是大厂的待遇是真的香!最近不是都在讨论华为的工资到底有多高么?应届生毕业6年,年薪百万不是梦。

1. Kotlin ?

2. Jetpack

谷歌的 AndroidX/Jetpack 库是一组实用工具,旨在简化常见的应用需求。例如用于设备上数据库的 Room[5],或用来在底层数据更改时更新显示内容的 LiveData[6]。

有了 Jetpack 库,新项目就省掉了重新发明轮子的麻烦,也不必等待其他开发人员来开源他们的实现方式,现在每位开发者都能获取到那些基础要素了。这些库更新非常频繁,新功能不断推出,错误修复也会及时发布。由于这些库是为了协同工作而构建的,因此多使用 AndroidX 库有助于最大程度地减少应用中出现意外。

从开发工作起步开始就使用 Jetpack 库可以节省数百小时的时间,但我们也可以将已有的应用迁移到 Jetpack 库上面。虽然看起来很麻烦,但由于这些库非常流行,针对迁移工作的指南也很容易找到。至少,底层 Android 元素(视图、片段等)可以自动转换 [7]。

在 Candyspace,我们使用了 Data Binding 和 ViewModel,并可能很快加入 Room 和 Navigation。

3. 模块化设计

模块化应用架构的一个示例

虽然设计一个模块化架构可能是很复杂的任务,但我之前已经写过一些指导性原则 [8],这些原则受到了 Nikits Kozlov 关于模块化和构建时间的文章 [9] 的启发。Plaid 也写了一篇介绍他们向模块化设计迁移经验的文章 [10]。

在 Candyspace,我们的应用设计都是完全模块化的,以尽量减少构建时间对开发工作的中断影响。

4. App Bundle

使用传统的 APK 将应用分发到用户的设备时,必须安装针对所有设备准备的所有资源。这意味着每张位图图像可能会有 5 个副本(用于不同的屏幕精度),还要安装针对不同设备架构的多个库版本,甚至还得安装多组边距和填充值。

使用 App Bundle 分发一款应用时,用户下载的 APK 只包含他们实际所需要的资源。这样一来,平均的应用大小就会减少 20%,而未经优化的应用改换格式后应用大小将会得到更显著的缩减。

image

缩减应用大小的示例(资料来源于Google I/O 2018)

App Bundles 是 18 个月前刚刚诞生的,但已经有超过 25%的应用安装时使用了这种格式!这是谷歌推荐使用的格式 [11],并且大多数应用几乎无需改动就能使用这种格式,只需在 Play 商店上处理一下 App Bundle 的签名即可。

在 Candyspace,我们正在迁移到 App Bundles 上,同时尽量避免破坏我们现有的工作流程(Slack、QAing 构建、非 Google Play 安装)。Alistair Sykes 的文章是一份很棒的迁移参考资料 [12],文章考虑到了 CI 服务器、Slack 和 Google Play 内部应用共享等事项。

结尾

我还总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料,免费分享给大家。
(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。

领取方式:关注+点赞+点击我的Gitee 免费获取

image

标签:Java,Kotlin,年安卓,面试,应用,模块化,Android,view
来源: https://www.cnblogs.com/xiaomojava/p/15178928.html