客户端面试问题

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修饰
全部评论
太强了呜呜呜
点赞 回复 分享
发布于 2023-09-16 16:01 山东

相关推荐

评论
3
12
分享

创作者周榜

更多
牛客网
牛客企业服务