iOS:面试精集持续更新

阿里P5校招(一面)

  1. MVC具有什么样的优势,各个模块之间怎么通信,比如点击 Button 后 怎么通知 Model?
  2. 两个无限长度链表(也就是可能有环) 判断有没有交点
  3. UITableView的相关优化
  4. KVO、Notification、delegate各自的优缺点,效率还有使用场景
  5. 如何手动通知KVO
  6. Objective-C 中的copy方法
  7. runtime 中,SEL和IMP的区别
  8. autoreleasepool的使用场景和原理
  9. RunLoop的实现原理和数据结构,什么时候会用到
  10. block为什么会有循环引用
  11. 使用GCD如何实现这个需求:A、B、C 三个任务并发,完成后执行任务 D。
  12. NSOperation和GCD的区别
  13. CoreData的使用,如何处理多线程问题
  14. 如何设计图片缓存?
  15. 有没有自己设计过网络控件?

阿里P5校招(二面)

  1. 怎么判断某个 cell 是否显示在屏幕上
  2. 进程和线程的区别
  3. TCP 与 UDP 区别
  4. TCP 流量控制
  5. 数组和链表的区别
  6. UIView 生命周期
  7. 如果页面 A 跳转到 页面 B,A 的 viewDidDisappear 方法和 B 的 viewDidAppear 方法哪个先调用?
  8. block 循环引用问题
  9. ARC 的本质
  10. RunLoop 的基本概念,它是怎么休眠的?
  11. Autoreleasepool 什么时候释放,在什么场景下使用?
  12. 如何找到字符串中第一个不重复的字符
  13. 哈希表如何处理冲突

百度校招

  1. 不用临时变量怎么实现 swap(a, b)。
  2. 二维有序数组查找数字。
  3. 亿级日志中,查找登陆次数最多的十个用户。
  4. 简述排序算法——快排, partion 函数的原理,堆排(不稳定),归并排序,基数排序。
  5. 说说你对 OC 中 load 方法和 initialize 方法的异同。
  6. 说说你对 block 的理解。
  7. 说说你对 MVC 和 MVVM 的理解。
  8. 说说 UITableView 的调优。
  9. 谈谈你对 ARC 的理解。
  10. 野指针是什么,iOS 开发中什么情况下会有野指针?

北京 onsite

  1. 给一个字符串,如何判断它是否是合法的 IP 地址,比如 "192.168.1.1" 就是合法的。
  2. 说说大数相加的思路,动手写代码实现。
  3. 简述 TCP 建立和关闭连接时,握手的过程。为什么是三次,后者需要四次?
  4. 假设有 10W 条电话号码,如何通过输入电话号码的某一段内容,快速搜索出来。比如输入 234 ,以下两个号码都会显示在搜索结果中:

123456789000
188888823400
请根据此场景设计你的解决方案。

  1. OC 的数组中,添加 nil 对象会有什么问题?

网易

  1. 把 "www.zhidao.baidu.com" 这样的字符串改成 "com/baidu/zhidao/www"。
  2. 求数组中和为某个值的所有子数组,比如数组是 [5,5,10,2,3] 一共有四个子数组的和是 15,比如 [5,10] , [5,10] , [10,2,3] , [5,5,2,3] 。
  3. 介绍 block。
  4. ARC 会对代码做什么优化?
  5. 谈下SDWebImage实现原理以及下载了图片后为什么要解码?
  6. 下面这段代码的输出结果是:
int main() {
     int a[5]={1,2,3,4,5};
     int *ptr=(int *)(&a+1);  
     printf(“%d,%d”,*(a+1),*(ptr-1));
  }
  1. 某个地方天气有如下规律:如果第一天和第二天都不下雨,则第三天下雨的概率为30%;如果第一天和第二天中有任 意一天下雨,则第三天下雨的概率为60%。问如果周一周二都没下雨,那么周四下雨的概率为?

阿里P6 --更新

1.介绍下内存的几大区域?
2.你是如何组件化解耦的?
3.runtime如何通过selector找到对应的IMP地址
4.runloop内部实现逻辑?
5.你理解的多线程?
6.GCD执行原理?
7.怎么防止别人动态在你程序生成代码
8.YYAsyncLayer如何异步绘制?
9.优化你是从哪几方面着手?

欢迎留言你的答案

你可能感兴趣的:(iOS:面试精集持续更新)