最近跟一个朋友聊天,他准备了几个月,刚刚参加完字节跳动面试,第二面结束后,嗯,挂了…
所以啊,不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流
1. Android架构设计模式
- MVC架构设计模式:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。
- MVP架构设计模式:MVC全名是Model View Persenter,MVP由MVC演变而来,是现在主流的开发模式。
- MVVM架构设计模式:MVVM全名是Model-View-ViewModel,它本质上就是MVC的改进版。
1.1 架构设计模式-MVC
(1) 定义:
在android开发过程中,比较流行的开发框架曾经采用的是MVC框架模式。
- M(Model)层:实体模型,处理
业务逻辑
。如:数据库操作,网络操作,I/O操作,复杂操作和耗时任务等。 - V(View)层:处理
数据显示
。在Android开发中,它一般对应着xml布局文件。 - C(Controller)层:处理
用户交互
。在Android开发中,它一般对应着Activity/Feagment。android中主要通过activity处理用户交互和业务逻辑,接受用户的输入并调用Model和View去完成用户的需求。
(2) 特点
- 低耦合
- 可重用易拓展
- 模块职责划分明确
(3) 实例
(4) MVC优缺点
- MVC的优点:MVC模式通过Controller来掌控全局,同时将View展示和Model的变化分离开
- MVC也有局限性:
1.2 架构设计模式-MVP
(1) 定义
- M(Model)层:实体模型,处理
业务逻辑
。如:数据库操作,网络操作,I/O操作,复杂操作和耗时任务等。 - V(View)层:负责
View的绘制以及与用户交互
。在Android开发中,它一般对应着xml布局文件和Activity/Fragment。 - P(Presenter)层:负责完成Model层和View层间的数据
交互
和业务逻辑
。
(2) 实例
(3) MVC和MVP的区别
- MVC和MVP的最大区别:MVC的Model层和View层
能够直接交互
;MVP的Model层和View层不能直接交互
,需通过Presenter层来进行交互。 - Activity职责不同:Activity在MVC中属于Controller层,在MVP中属于View层,这是MVC和MVP很主要的一个区别。可以说Android从MVC转向MVP开发也主要是
优化Activity的代码,避免Activity的代码臃肿庞大
。 - View层不同:MVC的View层指的是XML布局文件(或用Java自定义的View);MVP的View层是Activity(或Fragment)
- 控制层不同:MVC的控制层是Activity(或Fragment);MVP的控制层是Presenter,里面没有很多的实际东西,主要负责Model层和View层的交互。
(4) MVP优缺点
- MVP的优点如下:
- MVP也有不足之处:
1.3 架构设计模式-MVVM
(1) 定义
- M(Model)层:仍然是
实体模型
(但是不同于之前定义的Model层),主要负责数据获取、存储和变化,提供数据接口供 ViewModel 层调用。 - V(View)层:对应
Activity/Feagment
和xml布局
文件 ,负责View的绘制以及与用户交互
说明:View层仅能操作UI(数据绑定来实现 UI 更新);不能做任何和业务逻辑有关的数据操作 - VM(ViewModel)层:负责完成Model层和View层间的数据
交互
和业务逻辑
说明:ViewModel层仅能做和业务逻辑有关的数据操作;不能做UI相关的操作
2. android插件化
2.1 插件化要解决的问题—如何动态加载apk
(1) android类加载器及区别
- PathClassLoader:仅能加载文件目录下的apk。
- DexClassLoader:可以加载apk文件中的字节码(从dex实体jar文件中加载java字节码)。主要用于动态加载和代码热更新等。
(2)反射: java中的反射使我们在运行时获得这个类的属性、方法和class内部的信息机制,最重要的是我们可以在运行时实例化这个对象调用方法,这也是java反射的最大优点。
(3) 实现动态加载apk
实现:需要一个代理activity去执行apk中的activity,主要通过反射去获得它的属性和方法,从而进行apk的调用。
实现原理:类加载器
(加载类)+反射
(获取属性和方法)+动态代理
(执行)
最后
今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。
最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
【算法合集】
【延伸Android必备知识点】
【Android部分高级架构视频学习资源】
**Android精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!