面试题总结

网络

  • AFNetwork实现
  • https证书的验证,为什么证书是安全的
  • https中ssl协议的过程
  • https证书的校验以及其中对称加密和非对称加密分别在哪个步骤
  • Charles抓包是怎么做到的 https://www.jianshu.com/p/5ca12a0188ed?utm_campaign=
  • 说一下HTTP协议以及经常使用的code码的含义
  • 说一下TCP和UDP
  • 说一下HTTP和HTTPs的请求过程?

多线程

  • 多线程资源抢夺的原因
  • 说一下多线程,你平常是怎么用的?
  • 说几个你在工作中使用到的线程安全的例子。
  • 用过哪些锁?哪些锁的性能比较高?
  • NSNotificationCenter是在哪个线程发送的通知?
  • 为什么一定要在主线程里面更新UI?

block

  • __weak、__strong原理
  • __block原理
  • 全局、堆、栈block
  • 一句话描述block

runtime&runloop

  • 说一下runloop和线程的关系
  • 说一下runtime,工作是如何使用的?看过runtime源码吗?

swift

  • swift中@objc
  • 理解optional
  • swift语言和oc语言对比
  • oc中nil和swift中nil有什么区别

其他

  • 类与对象区别
  • assign、copy、strong、weak修饰词
  • 深浅copy
  • nonatomic、atomic
  • +load、+initiallize
  • 扩展和分类的区别
  • category原理
  • UI中点击响应链
  • 自动释放池原理
  • 野指针什么时候会出现
  • isKindOfClass和isMemmerOfClass
  • [self class]和 [super class]
  • OC的反射机制 https://www.jianshu.com/p/3ed2c7bc6653
  • UIView和CALayer的区别
  • 野指针和悬垂指针
  • dealloc时系统做了什么
  • 遇到过BAD_ACCESS的错误吗?你是怎样调试的?
  • 什么是指针常量和常量指针?
  • 不借用第三个变量,如何交换两个变量的值?要求手动写出交换过程。
  • category为什么不能添加属性?
  • 说一下静态库和动态库之间的区别
  • NStimer使用注意事项及除了invalide方法解决循环引用问题的原理

算法

  • 链表逆序
  • 判断链表是否是循环链表
  • 前、中、后、层序遍历二叉树
  • NSArray内部实现
  • 数组和链表的区别
  • 平衡二叉树及遍历
  • hash算法
  • NSDictionary的实现原理
  • APP如何处理本地数据安全
  • 用递归算法求1到n的和

设计模式

  • 若你去设计一个通知中心,你会怎样设计?
  • 如何去设计一个方案去应对后端频繁更改的字段接口?
  • KVO、KVC的实现原理
  • 说一下简单工厂模式,工厂模式以及抽象工厂模式
  • 如何设计一个网络请求库?
  • 看过哪些三方库?说一下实现原理以及好在哪里?
  • 设计一套缓存策略
  • 设计一个检测主线和卡顿的方案
  • 说一下你对架构的理解?

优化

  • 说一下UITableViewCell的卡顿你是怎么优化的?

你可能感兴趣的:(面试题总结)