iOS面试宝典

注意事项

1.面试官并不喜欢你长篇大论的去回答,只需要回答到关键知识点即可

2.简历上的知识点一定要掌握好,特别是最有可能问到的问题

一.关于 OC 最常见的面试题

1.分类和扩展有什么区别?

2.有哪些属性修饰关键字?atomic是绝对的线程安全吗?

3.KVO 实现的原理?

4.内存管理机制、自动释放池和循环引用

5.Block? weakSelf ,StrongSelf

6.说一下事件响应传递链 hitTest

7.Runloop 的运行原理和使用

8.说一下Runtime,消息机制是如何实现?

9.进程、线程、多线程、多进程、任务、队列?如何实现线程安全(@synchronized 互斥锁(死锁问题),dispatch_semaphore_t 信号量,dispatch_barrier_async 栅栏函数,NSLock、NSConditionLock条件锁)搞明白这几种锁性能对比,使用条件就好,其他的不用管

Swift 相关的面试

1.Struct 和 类 的区别?

2.Swift,什么是泛型?

3.关键字:Strong,Weak,Unowned 区别?

4.为什么将 String,Array,Dictionary设计为值类型?

5.比较 Swift和OC中的 protocol 有什么不同

6.尾随闭包、逃逸闭包、自动闭包?

7.swift中, 存储属性和计算属性的区别?

8.Swift 初始化器?

网络相关

1.网络ISO网络七层架构,TCP/IP四层架构?

2.Socket、HTTP 三次握手、四次挥手、为什么?HTTPS 链接流程

3.Cookie和Session

4.Res 非对称加密、Aes 对称加密

网络参考文章

设计模式

1.MVC(非重点)、MVVM、MVP

2.设计模式原则:单一职责原则、开闭原则、接口隔离原则、依赖倒置原则、里式替换原则、迪米尔法则

总体来说,设计模式分为三大类:(重要的标记起来了,其他的了解就行)

创建型模式(五种):工厂方法模式、抽象工厂模式单例模式、建造者模式、原型模式

结构型模式(七种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式

行为型模式(十一种):策略模式模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

设计参考文章

第三方库源码

  1. AFNetwork
    • 考察点主要是线程管理,如 同时100个并发请求,里面是怎么处理?
    • Alamofire 和 AFN 的对比

2.SDWebImage

  • 考察的点主要是缓存机制,其他的不要太多废话

数据结构和算法-- 没别的好办法,多去看算法题,Leecode 中简单的就好,难的就不要看

iOS相关的主要考察链表的比较多,提到链表就要想到 指针,重点掌握链表的 **查询 ** 或 搜索 操作

1.100万个数据如何找到最小的100个?,时间复杂度?

2.长度为 n 的链表查找倒数第k个元素?

3.链表的反转?

附加:非重要,但可能遇到的问题,不做重点(持续更新...)

1.对项目有做过哪些性能优化?(非重点,可以尽情发挥)

  • 1.UI层面:离屏渲染、Cell复用、高度不重复计算、避免锯齿

  • 2.代码层面:遵循设计模式原则(下面有提),去除重复和多余代码

  • 3.启动速度优化、CPU消耗优化、内存占用优化

  • 4.数据安全优化:对频繁读取和修改的数据设计多线程需要加锁处理,添加NSSafe利用Runtime 方法替换在Release下实现常见崩溃拦截等。

  • 5.包体积缩小优化

  • 6.Log日志上报和打捞,奔溃分析,如Bugly

  1. 画一下 代理模式的 类图
  1. 原生和Web怎么交互?

  2. 推送Apns

参考文档

objective-c 语言特性

网络

你可能感兴趣的:(iOS面试宝典)