转载Marked ArticlesiOS开发

常用面试要点

2017-02-07  本文已影响935人  52xpz

工作中招人时就需要面试,受百度和腾讯文化的影响,我的个人面试风格随性但是严格,我很注重面试者的基础功以及知识的深度和广度,一个人良好的工作能力体现在两方面:硬实力和软实力。硬实力指自己的专业技术水平、学习能力;软实力包括团队协作、沟通、分享、抗压能力等。现在总结一下我个人面试别人的题库及要点。

一、硬实力(专业技术水平面试要点)

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),你会如何来组建和管理这个团队?

上一篇下一篇

猜你喜欢

热点阅读