Administrator
发布于 2024-04-10 / 14 阅读
0
0

安卓面试复盘.2

1.Aroute 的原理

2.ViewModel

ViewModel 类是一种业务逻辑或屏幕级状态容器。它用于将状态公开给界面,以及封装相关的业务逻辑。

优点是可缓存状态,可在配置更改响应状态

3.flow的操作符

3.1 flow 和 rxjava的区别

RxJava的Observable是热流,即不论是否有观察者,一旦数据产生就会推送给所有观察者。

而Flow的冷流特性使其更加灵活,可以根据需要按需产生数据,避免了不必要的计算和资源浪费。

Flow是冷流,即只有在收集端(collect)开始监听时,生产端(emit)才开始执行。

5.StateFlow和SharedFlow的区别

StateFlow是一种具有单一值状态的Flow,主要用于处理单一状态的场景,例如ViewModel中的UI状态。

而SharedFlow允许有多个订阅者,并能缓存一定数量的最新元素,适用于多个订阅者需要获取历史元素的场景。

4.密封类和枚举的区别

枚举只能有一个实例,而密封类的子类可以有多个实例。

5.协程和线程的区别

1.协程更适合i/o密集型任务

2.协程涉及函数切换,线程涉及线程切换。线程的切换设计多核态进行上下文切换,开销更大

3.都可以并发

4.协程是程序分配控制权,线程是操作系统控制的

6.安卓不同版本有什么特性

1.通知渠道 notification channels

2.一旦用户向应用授予某项权限,后续对该权限组中权限的所有后续请求都会自动授予。

不同版本的android 的区别

android10.0http 请求,需要manifest配置网络

外部存储访问权限限定应用文件和媒体,应用的外部文件地址和应用自己媒体文件,不需要访问权限

后台访问外部存储空间,需要ACCESS_BACKGROUND_LOCATION 权限

android12.0需要引入BLUETOOTH_SCAN、BLUETOOTH_ADVERTISE 和 BLUETOOTH_CONNECT 权限,尤其是不需要访问设备位置信息的应用。

Android 13 支持用于从应用发送非豁免(包括前台服务 [FGS])通知的运行时权限:POST_NOTIFICATIONS。

完成wifi用力,额外需要NEARBY_DEVICES

需要访问其他应用已经创建的媒体文件,您必须请求以下一项或多项细化的媒体权限,比如READ_MEDIA_IMAGES

android14指定前台服务类型

在 BluetoothAdapter 中强制执行 BLUETOOTH_CONNECT 权限

7.kotlin 和 java 的接口区别

java的接口,只有抽象方法和static final 属性

kotlin接口,可以定义具体方法,抽象属性,提供访问器属性。可被继承,额外定义open关键字

8.mvp 和 mvvm 的区别

mvvm将数据表现逻辑(视图或用户界面)与应用程序的核心业务逻辑部分分开

mvvm没有view层的引用

mvvm适合大规模的项目

mvvm容易单元测试


评论