客户端面试问题
1、MVC、MVP、MVVM的区别
MVC 模式将程序分为三个部分:模型 、视图(xml文件)、控制器(activity)。目的:将业务逻辑放在控制器里,把业务逻辑和视图层分离;缺点:Activity变得臃肿,Model 将新的数据发送到 View。
MVP 模式将程序分为三个部分:模型、视图(activity)、管理层(Presenter)。MVC模式的View 层和 Model 层存在耦合,MVP 模式将 View 层和 Model 层解耦,之间的交互只能通过 Presenter 层。缺点:Presenter手动更新View麻烦
MVVM模式中,View界面的更新从由Presenter驱动,变成了自动监听数据,随着数据变化而自动更新。
2、抽象类与接口的区别
接口主要用于对类的行为进行约束,你实现了某个接口就具有了对应的行为。抽象类主要用于代码复用,强调的是所属关系。
3、kotlin的扩展函数“let、run、also、apply”的作用和区别
1、执行目的
let:用于对一个可空对象进行操作,
run:用于执行一个lambda表达式并返回结果
also:用于执行一个lambda表达式并返回对象本身
apply:用于对一个对象进行初始化和配置操作
2、传参类型
let会将对象作为lambda表达式的参数传递
run不会将对象作为参数传递给lambda表达式
also将对象作为参数传递给lambda表达式
apply使用this关键字引用当前对象,而不是将对象作为参数传递给lambda表达式
3、返回值
let返回lambda表达式的结果
run返回lambda表达式的结果
also返回值是对象本身
apply返回值是对象本身
4、by lazy 与 lateinit 的异同
lateinit 是延迟初始化, by lazy 是懒加载即初始化方式已确定,只是在使用的时候执行。
lateinit用var修饰,by lazy 使用val修饰
MVC 模式将程序分为三个部分:模型 、视图(xml文件)、控制器(activity)。目的:将业务逻辑放在控制器里,把业务逻辑和视图层分离;缺点:Activity变得臃肿,Model 将新的数据发送到 View。
MVP 模式将程序分为三个部分:模型、视图(activity)、管理层(Presenter)。MVC模式的View 层和 Model 层存在耦合,MVP 模式将 View 层和 Model 层解耦,之间的交互只能通过 Presenter 层。缺点:Presenter手动更新View麻烦
MVVM模式中,View界面的更新从由Presenter驱动,变成了自动监听数据,随着数据变化而自动更新。
2、抽象类与接口的区别
接口主要用于对类的行为进行约束,你实现了某个接口就具有了对应的行为。抽象类主要用于代码复用,强调的是所属关系。
3、kotlin的扩展函数“let、run、also、apply”的作用和区别
1、执行目的
let:用于对一个可空对象进行操作,
run:用于执行一个lambda表达式并返回结果
also:用于执行一个lambda表达式并返回对象本身
apply:用于对一个对象进行初始化和配置操作
2、传参类型
let会将对象作为lambda表达式的参数传递
run不会将对象作为参数传递给lambda表达式
also将对象作为参数传递给lambda表达式
apply使用this关键字引用当前对象,而不是将对象作为参数传递给lambda表达式
3、返回值
let返回lambda表达式的结果
run返回lambda表达式的结果
also返回值是对象本身
apply返回值是对象本身
4、by lazy 与 lateinit 的异同
lateinit 是延迟初始化, by lazy 是懒加载即初始化方式已确定,只是在使用的时候执行。
lateinit用var修饰,by lazy 使用val修饰
全部评论
太强了呜呜呜
相关推荐
点赞 评论 收藏
分享