大咖面试
部分题目来自:不懂技术的爱迪生
网易一面
转载:iOS:网易一面
1、你一般学习iOS是如何学习的?
2、app内存你是如何分析的?
3、用过 TableView 吗,平时怎么解决 TableView 滑动卡顿问题的?
4、网络模型了解么?有哪几种?说说你的看法?
5、block本质是什么?
6、KVC机制是如何通过key找到value。
7、说说你最熟悉的第三方,知晓其原理么?
腾讯一面
转载: 腾讯一面
1、使用了第三方库, 有看他们是怎么实现的吗?
2、强连通量算法了解嘛?
3、遇到tableView卡顿嘛?会造成卡顿的原因大致有哪些?
4、M、V、C相互通讯规则你知道的有哪些?
5、NStimer准吗?谈谈你的看法?如果不准该怎样实现一个精确的NSTimer?
阿里P6一面
转载:阿里-p6-一面
1、介绍下内存的几大区域?
2、你是如何组件化解耦的?
3、runtime如何通过selector找到对应的IMP地址
4、runloop内部实现逻辑?
5、你理解的多线程?
6、GCD执行原理?
7、怎么防止别人反编译你的app?
8、YYAsyncLayer如何异步绘制?
9、优化你是从哪几方面着手?
阿里二面
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、有没有自己设计过网络控件?
腾讯二面
转载:腾讯二面
1、编译过程做了哪些事情;
2、字典大致实现原理;
3、block和函数指针的理解;
4、一般开始做一个项目,你的架构是如何思考的?
5、你了解的UIKit结构?
腾讯三面
转载:腾讯三面
1.OC你了解的锁有哪些?在你回答基础上进行二次提问;
追问一:自旋和互斥对比?
追问二:使用以上锁需要注意哪些?
追问三:用C/OC/C++,任选其一,实现自旋或互斥?口述即可!
2.内存泄漏可能会出现的几种原因,聊聊你的看法?
追问一:非OC对象如何处理?
追问二:地图类内存若泄漏,如何处理?
追问三:若常用框架出现内存泄漏如何处理?
3.容错处理你们一般是怎么做的?
4.项目开始容错处理没做?如何防止拦截潜在的崩溃?
2018-iOS面试题
转载:2018-iOS面试题
1.KVO实现原理?
2.说说你理解的埋点?
3.消息转发机制原理?
4.说说你理解weak属性?
5.假如Controller太臃肿,如何优化?
6.项目中网络层如何做安全处理?
7.main()之前的过程有哪些?
阿里初面
转载: 阿里初面:一份“有点难”的面试题!
1.SD原理以及最大支持多少个下载数?
2.yykit如何异步渲染?
3.runtime动态创建一个类,需要注意什么?
4.你理解的runloop和线程之间的关系?
5.技术架构如何搭建?
6.还有一个很长字符串,你用什么算法搜索到abc的位置?
7.字符串如何预处理?
8.https和ssl在握手方向有什么区别?
9.怎么防止反编译
10.代码文件编译生成过程,编译和链接有什么区别,链接做了什么事情
11.用C语言实现一个通知流程,说思路即可!
12.A B 线程执行到一半去执行C线程,用OC和C各自怎么实现!
13.tableview怎么优化,优化后还是感觉卡怎么办!
14.ARC的实现原理,什么情况下用MRC比ARC好!
15.怎么定位到野指针的地方。如果还没定位到,这个对象被提前释放了,怎么知道该对象在什么地方释放的
16.你平时做过什么有技术难点的东西,然后解决难点!
某东面试
转载:面试题-紫洁
1、如何实现一个图片加载控件(包括图片下载、缓存时效、加载)
2、JavaScriptCore是做什么用的,客户端使用它可实现什么功能。
3、程序中添加每3秒响应一次的NSTimer,当拖动tableView的time可能无法响应,为什么。
4、客户端在解析服务器所下发的数据时,例如下面代码的片段。
NSString *sku = dict[@"sku"];
NSMutableArray *array = [NSMutableArray array];
[array addObject:sku];
// 可能@“aku”字段并不存在,sku对象将为nil,执行[array addObject:sku],时将会抛出异常导致Crash.项目中可能在很多模块存在类似这样的问题,请从全局考虑,如何进行异常保护
5、请问,NSLog(@"%@",test);的输入结果是什么?这条语句是在哪个线程中执行?为什么?
typedef void (^TestBlock)(void);
NSString *test = @"test";
TestBlock block = ^(void){
dispatch_sync(dispatch_queue_create("jd.test", DISPATCH_QUEUE_SERIAL), ^{
NSLog(@"%@",test);
});
};
test = @"test1";
block();
2018第一波iOS笔试题
1.什么是函数式编程?
2.什么是ABI?
3.什么是MVC,请结合CocoaTouch说明?
4.什么是MVVM,请设计View moled需要考虑哪些?
5.swift相对于OC有哪些优点?
6.什么是泛型,swift在哪些地方使用了泛型?
7.defer、guard的作用?
8.swift语法糖?!的本质(实现原理)
9.举例swift中模式匹配的作用?
10.swift中private与OC中block的区别?
11.什么是capture list,举例说明用处?
12.swift中private与fileprivate的区别?
13.REST、HTTP、JSON是什么?
14.delegate解决了什么问题,Notification与它有什么不同?
15.描述一个ViewController的生命周期
16.LLVM与Clang的区别?
17.Class、objc的区别是什么?
一个小公司的面试
1、解释一下keywords的区别:assign weak __block, __weak
2、__block在arc和非arc下含义相同么
3、使用atomic一定是线程安全吗
4、描述一个你遇到过的retain cycle
5、+(void)load; +(void)initalize有什么用处.
6、为什么其他语言里叫函数调用,oc里则是给对象发消息(或者谈一下对runtime理解)
7、什么是method swizzling
8、UIView 和 CALayer的关系
9、如何高性能的给UIImageView加圆角
10、讲讲你用Instrument优化动画性能的经历
11、loadView是干什么用的。
2017年iOS高阶面试题
转载自:2017年iOS高阶面试题
1、NSCache类当中是如何解决时间复杂度问题的.请说明其原理.
2、应用启动时是用怎样加载所有依赖的Mach-O文件的?
3、什么是冷启动,什么是热启动?
4、有没有做过项目的优化,请列举你所知道main()函数之前耗时的因素都有哪些,点击应用响应时间多少ms之内不会让用户察觉到
5、属性 可以与set方法和get方法 三者同时存在吗,如果不行,请说明原因?
6、Runtime机制是什么?有没有写过方法欺骗?简述一下
7、GCD和NSoperation的区别之处,请分别说一下特点?
8、Reachability是用来判断网络状态的,请简述一下其原理?
9、layoutSubviews这个方法一般在什么情况下调用的?
10、在一个表内有很多cell,每个cell上有很多个视图,如何解决卡顿问题(提示Runloop)。
11、Objective-C语言中闭包是如何实现的,闭包中有什么需要注意,闭包运行环境是在堆还是在栈。
全英文版
1、What's your common workflow (git commands) to fix a bug or add a new feature?
2、Could NSMutableArray property be declared with copy ownership, why or why not?
3、What will happen after invoking test method in ARC and MRC
@interface ViewController ()
@property (nonatomic, copy) NSString *value;
@end
- (void)test
{
for (int i = 0; i < 10000; i ++)
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
_value = [[NSString alloc] initWithFormat:@"%d", i];
});
}
}
4、How to use @synchronize/ NSRecursiveLock/dispatch_semaphore_t
5、List at least two Observer Design Pattem implementation in Cocoa
6、What is the difference between a struct and a class in swift
7、What is the difference between NSRunLoop / CADisplayLink?
8、Write down the sequences of viewWillApperr/viewDidAppear/viewWillDisppear/viewDidDisappear,when push B view controller to navigation controller with top view controller
9、List at least five causes for application carshes
10、How does JSPatch work?
11、How does HTTPS work?
12、Implement a binary search function?
13、How is react native different from cordova
翻译:
1、你工作中修复bug或添加新功能常用的Git命令
2、可变数组的property是否可用copy修饰,为什么不能?
3、在ARC和MRC下分别调用test方法会发生什么
4、如何使用:@synchronize/ NSRecursiveLock/dispatch_semaphore_t
5、列举Cocoa中至少两种观察者设计模式的实现
6、swift中struct和class的区别
7、说说NSRunLoop / CADisplayLink两者的区别
8、当从栈顶push到B控制器后写出viewWillApperr/viewDidAppear/viewWillDisppear/viewDidDisappear的调用顺序
9、列出五种崩溃情况
10、JSPatch是如何工作的?
11、HTTPS是如何工作的?
12、二分查找的实现过程
13、说一下react native 和 cordova 的不同
iOS招人心得
截取某公司面试官博客:J_Knight_
基础部分
1、为什么说Objective-C是一门动态的语言?
2、讲一下MVC和MVVM,MVP?
3、如何令自己所写的对象具有拷贝功能?
4、为什么代理要用weak?代理的delegate和dataSource有什么区别?block和代理的区别?
5、可变集合类 和 不可变集合类的 copy 和 mutablecopy有什么区别?如果是集合是内容复制的话,集合里面的元素也是内容复制么?
6、nonatomic和atomic的区别?atomic是绝对的线程安全么?为什么?如果不是,那应该如何实现?
7、UICollectionView自定义layout如何实现?
8、用StoryBoard开发界面有什么弊端?如何避免?
9、进程和线程的区别?同步异步的区别?并行和并发的区别?
10、线程间通信?
11、GCD的一些常用的函数?(group,barrier,信号量,线程同步)
12、如何使用队列来避免资源抢夺?
13、数据持久化的几个方案(fmdb用没用过)
14、说一下AppDelegate的几个方法?从后台到前台调用了哪些方法?第一次启动调用了哪些方法?从前台到后台调用了哪些方法?
15、NSCache优于NSDictionary的几点?
16、知不知道Designated Initializer?使用它的时候有什么需要注意的问题?
17、实现description方法能取到什么效果?
18、objc使用什么机制管理对象内存?
中级部分
Block
1、block的实质是什么?一共有几种block?都是什么情况下生成的?
2、为什么在默认情况下无法修改被block捕获的变量? __block都做了什么?
3、模拟一下循环引用的一个情况?block实现界面反向传值如何实现?
Runtime
4、objc在向一个对象发送消息时,发生了什么?
5、什么时候会报unrecognized selector错误?iOS有哪些机制来避免走到这一步?
6、能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?
7、runtime如何实现weak变量的自动置nil?
8、给类添加一个属性后,在类结构体里哪些元素会发生变化?
RunLoop
9、runloop是来做什么的?runloop和线程有什么关系?主线程默认开启了runloop么?子线程呢?
10、runloop的mode是用来做什么的?有几种mode?
11、为什么把NSTimer对象以NSDefaultRunLoopMode(kCFRunLoopDefaultMode)添加到主运行循环以后,滑动scrollview的时候NSTimer却不动了?
12、苹果是如何实现Autorelease Pool的?
类结构
13、isa指针?(对象的isa,类对象的isa,元类的isa都要说)
14、类方法和实例方法有什么区别?
15、介绍一下分类,能用分类做什么?内部是如何实现的?它为什么会覆盖掉原来的方法?
16、运行时能增加成员变量么?能增加属性么?如果能,如何增加?如果不能,为什么?
17、objc中向一个nil对象发送消息将会发生什么?(返回值是对象,是标量,结构体)
高级部分
1、UITableview的优化方法(缓存高度,异步绘制,减少层级,hide,避免离屏渲染)
2、有没有用过运行时,用它都能做什么?(交换方法,创建类,给新创建的类增加方法,改变isa指针)
3、看过哪些第三方框架的源码?都是如何实现的?(如果没有,问一下多图下载的设计)
4、SDWebImage的缓存策略?
5、AFN为什么添加一条常驻线程?
6、KVO的使用?实现原理?(为什么要创建子类来实现)
7、KVC的使用?实现原理?(KVC拿到key以后,是如何赋值的?知不知道集合操作符,能不能访问私有属性,能不能直接访问_ivar)
学习
1、开发过程中遇到过什么困难,是如何解决的?
2、遇到一个问题完全不能理解的时候,是如何帮助自己理解的?举个例子?
3、有看书的习惯么?最近看的一本是什么书?有什么心得?
4、有没有使用一些笔记软件?会在多平台同步以及多渠道采集么?(如果没有,问一下是如何复习知识的)
5、有没有使用清单类,日历类的软件?(如果没有,问一下是如何安排,计划任务的)
6、平常看博客么?有没有自己写过?(如果写,有哪些收获?如果没有写,问一下不写的原因)