专栏首页陈满iOSiOS面试系列·某安金融科技公司iOS开发面试回忆

iOS面试系列·某安金融科技公司iOS开发面试回忆

面试的时候你可能碰到面试官设的各种坑:不止喜欢问你iOS开发的一些特性和方法,更喜欢喜欢问你这些特性及方法你觉得它是怎么实现的?你觉得苹果公司为什么要这样设计?

也许面试官自己也没自己实现过,毕竟有些东西苹果为什么这样设计,若不是苹果公司的工程师无法知道。

但作为面试者,这个些问题正是拉开差距的最好办法:不一定要你亲手用C去重现苹果的机制,但可以谈谈你的见解和看法。所以,这一块最好有个准备。

1. 用法实践篇

一般,会问你怎么实现某个模块,用过哪些API,介绍下他们的用法。

1.1 你以前的项目架构是怎样的?
  • 我用的MVVM,相对于传统的MVC,主要区别就是把网络请求和业务层放到ViewModel里面了。
  • 相对于普通博客介绍的View<->ViewModel <->Model,其实更靠谱的理解是View <-> C <-> ViewModel <->Model,把Controller加进去,更好的理解。
  • 然后,为了让View和ViewModel之间能够有比较松散的绑定关系,于是我们使用ReactiveCocoa,KVO,Notification,block,delegate和target-action都可以用来做数据通信,从而来实现绑定,但都不如ReactiveCocoa提供的RACSignal来的优雅,如果不用ReactiveCocoa,绑定关系可能就做不到那么松散那么好,但并不影响它还是MVVM。
  • 这里推荐一个MVVM基础框架:https://github.com/foxsofter/LPDMvvmKit
1.2 你是如何数据建模的?
  • 普通的办法就是建一个基类比如BaseModel,里面写好一些初始化的方法,然后新建一个子类比如UserModel,里面写好一些跟后台对应的字段,用它来接收数据或者保存数据。这一块可参考:https://www.jianshu.com/p/923404fcd2f2
  • 还有一种办法,就是封装一个功能,根据网络请求返回来的JSON数据自动生成Model文件,当然也提供特许字段的处理,比如id字段。它的缺点就是如果接口的JSON的数据是动态可变的,还是需要手动调整补充。这个可参考:https://blog.csdn.net/lg767201403/article/details/78675788
  • 当然,还有一种办法,就是有个软件叫JSONExport,可以实现上面封装的那个功能,不过这种方法生成的更慢。
1.3 你怎么实现字典转模型的?

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • iOS-JavaScript交互方案:网页监听APP返回键(goback)+APP监听网页返回键(JS调用OC对象方法)

    新建CMWebViewController,让其继承UIViewController,即:

    陈满iOS
  • iOS报错记录:dyld: could not load inserted library '/usr/lib/libgmalloc.dylib' because image not found

    edit scheme —>run debug —>在Memory Management区域将Eanble Guard Malloc设置为不选中

    陈满iOS
  • iOS小技巧·把子视图控制器的视图添加到父视图控制器

    陈满iOS
  • js写个小时钟

    小小咸鱼YwY
  • vue-如何实现带参数跳转页面

    例如,点击截图中的“查看试卷”,可实现带参跳转到相应的试卷页面,该功能类似查看试卷的详情页面:

    朱季谦
  • 浅谈开发中的MVVM模式及与MVP和MVC的区别

    ? 我记得前段时间分享了一篇文章《 浅谈Andorid开发中的MVP模式》(点击可跳转),反响不错,为了进一步介绍MVVM模式,还提前分享了实现Android...

    非著名程序员
  • 2018 Cell系列相变最强综述,未来已来,你在哪?

    Trends in Cell Biology (Cell系列综述, 2018 IF: 18.564)于2018年6月1日在线发表了Steven Boeynaem...

    生信宝典
  • SwiftUI-MVVM

    最近看了斯坦福大学 2020 春季的 SwiftUI 课程,总结一下 SwiftUI 是如何支持 MVVM 设计模式的。

    YungFan
  • 听说你使用Android Studio遇到了一些小困惑

    这个问题通常出现在Android Studio更新失败的时候,原因是download http://services.gradle.org/distributi...

    代码咖啡
  • Docker Frp 中文文档

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿...

    雪梦科技

扫码关注云+社区

领取腾讯云代金券