iOS面试前的准备计划(2022)

面试前任务计划

目录

part01

  • Runloop经典六问,iOS面试必会!
    • 1、分析RunLoop与线程的关系,理解Source0与Source1的区别
      • 当App出现崩溃问题 -> 首先会在线程中找是否有定义处理函数 -> 如果没有,则直接exit() -> 如果有,则执行该函数
      • 资料:dispatch_source学习宝典.epub
      • source0是非系统事件,source1是系统事件
    • 2、理解主线程RunLoop与子线程RunLoop的区别
    • 3、通过Mach Port理解跨线程通讯和IPC,梳理RunLoop内在运行机制
      • Mach Port如何进行跨线程通讯?
        • Mach IPC:基于Mach内核实现进程间通讯
        • Mach IPC被抽象三种操作:messages、ports and port sets
        • Mach Port:跨线程通讯
      • MachPort是最基础的API,Socket是基于它来实现的
    • 4、RunLoop Timer不准的两个原因
    • 5、RunLoop mode自定义
    • 6、RunLoop常见面试题分析

  • 多线程
    • 多线程原理
    • 线程的生命周期
    • 线程与RunLoop关系
    • iOS八大锁对比探索解析
    • GCD
      • 队列与函数
      • 常见GCD面试分析
      • dispatch_barrier_async/sync栅栏函数应用及底层分析
      • dispatch_group调度组探索
      • dispatch_source解析
      • 单例底层原理
      • Dispatch Semaphore信号量解析

part02

  • 违背架构
    • 1、架构越好,代码越少?(否)
    • 2、便于维护,项目清晰。
    • 3、高类聚,低耦合。
    • 4、谁的事情谁做。

  • 如何降低MVC耦合度
    • 使用MVP或MVVM

  • 轻量化VC
    • VC应该做调度,并且建立View和Model关系(此处可以使用MVP)

MVP是一种面向协议编程的架构模式
从本质出发,cell为何会复用?

  • cell <-> model 通讯 双向绑定


    两种实现MVVM的方式
  • block 反向 + 响应式 KVO
  • block + 响应式编写(ReactiveObjc) 双向绑定
  • Swift、Combine(类似于RxSwift)

  • 架构 - 需求 - 写接口 -> 代理三部曲(编写协议、遵循协议、实现协议)
  • MVP 以需求驱动代码
  • MVP MVC MVVM
    • 嵌套层深的架构推荐使用MVP,而不是MVVM,因为大量的block会影响项目的调试、安全、清晰度

part03

  • OC和Swift关于对象的内存分配情况
    • OC对象分别有isa和所有的存储属性所构成
    • Swift对象是有metadata、引用计数和所有的存储属性所构成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值