iOS:面试精集持续更新
2017-09-24 本文已影响56人
风与鸾
阿里P5校招(一面)
- MVC具有什么样的优势,各个模块之间怎么通信,比如点击 Button 后 怎么通知 Model?
- 两个无限长度链表(也就是可能有环) 判断有没有交点
- UITableView的相关优化
- KVO、Notification、delegate各自的优缺点,效率还有使用场景
- 如何手动通知KVO
- Objective-C 中的copy方法
- runtime 中,SEL和IMP的区别
- autoreleasepool的使用场景和原理
- RunLoop的实现原理和数据结构,什么时候会用到
- block为什么会有循环引用
- 使用GCD如何实现这个需求:A、B、C 三个任务并发,完成后执行任务 D。
- NSOperation和GCD的区别
- CoreData的使用,如何处理多线程问题
- 如何设计图片缓存?
- 有没有自己设计过网络控件?
阿里P5校招(二面)
- 怎么判断某个 cell 是否显示在屏幕上
- 进程和线程的区别
- TCP 与 UDP 区别
- TCP 流量控制
- 数组和链表的区别
- UIView 生命周期
- 如果页面 A 跳转到 页面 B,A 的 viewDidDisappear 方法和 B 的 viewDidAppear 方法哪个先调用?
- block 循环引用问题
- ARC 的本质
- RunLoop 的基本概念,它是怎么休眠的?
- Autoreleasepool 什么时候释放,在什么场景下使用?
- 如何找到字符串中第一个不重复的字符
- 哈希表如何处理冲突
百度校招
- 不用临时变量怎么实现 swap(a, b)。
- 二维有序数组查找数字。
- 亿级日志中,查找登陆次数最多的十个用户。
- 简述排序算法——快排, partion 函数的原理,堆排(不稳定),归并排序,基数排序。
- 说说你对 OC 中 load 方法和 initialize 方法的异同。
- 说说你对 block 的理解。
- 说说你对 MVC 和 MVVM 的理解。
- 说说 UITableView 的调优。
- 谈谈你对 ARC 的理解。
- 野指针是什么,iOS 开发中什么情况下会有野指针?
北京 onsite
- 给一个字符串,如何判断它是否是合法的 IP 地址,比如 "192.168.1.1" 就是合法的。
- 说说大数相加的思路,动手写代码实现。
- 简述 TCP 建立和关闭连接时,握手的过程。为什么是三次,后者需要四次?
- 假设有 10W 条电话号码,如何通过输入电话号码的某一段内容,快速搜索出来。比如输入 234 ,以下两个号码都会显示在搜索结果中:
123456789000
188888823400
请根据此场景设计你的解决方案。
- OC 的数组中,添加 nil 对象会有什么问题?
网易
- 把 "www.zhidao.baidu.com" 这样的字符串改成 "com/baidu/zhidao/www"。
- 求数组中和为某个值的所有子数组,比如数组是 [5,5,10,2,3] 一共有四个子数组的和是 15,比如 [5,10] , [5,10] , [10,2,3] , [5,5,2,3] 。
- 介绍 block。
- ARC 会对代码做什么优化?
- 谈下SDWebImage实现原理以及下载了图片后为什么要解码?
- 下面这段代码的输出结果是:
int main() {
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf(“%d,%d”,*(a+1),*(ptr-1));
}
- 某个地方天气有如下规律:如果第一天和第二天都不下雨,则第三天下雨的概率为30%;如果第一天和第二天中有任 意一天下雨,则第三天下雨的概率为60%。问如果周一周二都没下雨,那么周四下雨的概率为?
阿里P6 --更新
1.介绍下内存的几大区域?
2.你是如何组件化解耦的?
3.runtime如何通过selector找到对应的IMP地址
4.runloop内部实现逻辑?
5.你理解的多线程?
6.GCD执行原理?
7.怎么防止别人动态在你程序生成代码
8.YYAsyncLayer如何异步绘制?
9.优化你是从哪几方面着手?