常用面试要点
工作中招人时就需要面试,受百度和腾讯文化的影响,我的个人面试风格随性但是严格,我很注重面试者的基础功以及知识的深度和广度,一个人良好的工作能力体现在两方面:硬实力和软实力。硬实力指自己的专业技术水平、学习能力;软实力包括团队协作、沟通、分享、抗压能力等。现在总结一下我个人面试别人的题库及要点。
一、硬实力(专业技术水平面试要点)
1、iOS写UI有三种方式,即storyboard、xib、纯代码,比较一下三种方式的优缺点以及适用场景。
2、UITableView、UICollectionView如何实现点击选中后过一会消失效果。
3、UITableView、UICollectionView的复用机制以及用model给cell UI赋值需要注意什么。
4、UITableView如何实现cell自动算高。
5、pushViewController、presentViewController原理及区别
6、如何查找某一导航栈中是否有某一个特定VC。isKindOfClass和isMemberOfClass区别。
7、发现VC不走dealloc,如何检查原因。
8、block在什么时候会造成循环引用,如何避免循环引用以及weakSelf、strongSelf的区别。
9、通知中心添加事件监听需要注意什么?如果添加监听后忘记移除监听会有什么样的坑?通知中心是什么设计模式的实现,如何实现这种模式?
10、postNotification方法是同步的还是异步的?
11、以方法timerWithTimeInterval创建NSTimer对象时会retain target,如何避免循环引用。
12、strong、weak、assign、copy属性的区别以及原理,retain、release自动引用技术是如何实现的。
13、对一个对象调用copy或者mutableCopy方法,这个对象必须实现什么协议?浅拷贝与深拷贝的区别。
14、类别如何添加属性?OC没有多重继承,那如何实现多重继承呢?
15、OC中实现多线程有哪几种方式,每种方式的优缺点以及使用场景。
16、NSOperationQueue和dispatch队列的实现原理是什么。
17、iOS多线程同步技术。
18、客户端与后台数据传输方式通常有XML,JSON,pb(protocol buffer),从流量和解析效率方面分析一下这三种方式的优缺点。
19、JSON、Model如何互转?用过那些第三方库,如果用过MJExtension,那底层是怎么实现的?
20、如何遍历一个类的属性?
21、OC的消息转发机制。
22、http协议Get和Post的区别,NSUrlConnection和NSUrlSession技术,AFNetworking的实现原理,如果用过YTKNetwork,他是怎么封装AFNetworking的。
23、SDWebImage实现原理,缓存机制、缓存大小、缓存天数、缓存淘汰算法。
24、http请求参数校验实现方式,App网络请求基类一般会带什么公共参数?
25、hash算法(md5,crc,sha,base64),对称加密算法与非对称加密算法。
26、网络优化之就近接入。
27、网络优化之不同网络类型配置调优。
28、网络优化之IP连接策略(tcp、http自动切换)。
28、网络优化之防dns劫持。
29、网络优化之分片、断点续传策略。
30、网络优化之应用层ack。
31、网络优化之超时重传策略。
32、网络优化之数据协议选择、流量控制。
33、网络传输数据加解密、怎么网络传输数据的缓存来优化UI的显示。?
34、数据存储格式有XML、JSON、Archiver、数据库等几种,比较一下各自的优缺点。
35、NSUserDefault、Archiver、plist、SQLite、FMDataBase、Core Data存储方式的优缺点以及应用场景。
36、key-value数据库的应用,比如google level-db。
37、数据存储优化手段。
38、iOS如何加载h5页面。
39、UIWebView、WKWebView如何实现进度条功能。
40、h5与App如何实现互相调用。
41、WebViewJavascriptBridge的实现原理。
42、api hook原理及应用,如何防止按钮重复点击。
43、检测内存泄露方法。
44、安装包瘦身方法。
45、crash收集方法。
46、App打日志方法、CocoaLumberjack实现原理。App埋点实现原理。
47、常用的设计模式。
48、MVC、MVVM模式。
49、ReactiveCocoa使用和原理
50、ReactNative使用和原理
51、操作系统原理。如线程(进程)管理、调度、同步,内存管理等
52、数据结构与算法。如链表、栈、队列、堆、二叉树等实现;排序、查找、hash、递归、二叉树等相关算法。
53、组件解耦方法。
54、动态升级技术。
55、UI层的设计。
56、网络层的设计。
57、数据存储层的设计。
58、性能优化手段。
二、软实力面试要点。
软实力属于比较发散性的面试,一般我会围绕以下方面来问
1、所在团队是怎么进行产品迭代的,项目流程是怎么样的。
2、平常会看什么书、最近在看什么书,是否做过技术分享。
3、自己的职业规划是怎么样的。
4、自己做过的最有成就感的事情是什么。
5、如果你是一个管理者(比如你是leader),你会如何来组建和管理这个团队?