iOS开发者,进国内大型公司,必经之路

lijiexiaoge 2019-03-27

前言

  • 当您准备进行技术性iOS面试时,了解您可能会询问哪些主题以及经验丰富的iOS开发人员期望什么是非常重要的。 这是许多硅谷公司用来衡量iOS候选人资历水平的一系列问题。
  • 这些问题涉及iOS开发的各个方面,旨在触及对平台的广泛理解。 毕竟,高级开发人员应该能够从头到尾地发布完整的iOS产品。
  • 这绝不是一个详尽的列表,但它可以帮助您为即将到来的技术iOS面试做准备。
  • 你需要放下自己的主观判断和最重要的东西

iOS开发者,进国内大型公司,必经之路

仔细聆听。

  1. 你使用的最新版本的iOS是什么?你喜欢什么,为什么?
  2. 什么是iOS应用程序,您的代码适合哪里?
  3. 你喜欢或不喜欢什么Swift特性?为什么?
  4. 内存管理在iOS上如何处理?
  5. 你对单身人士有什么了解?你会在哪里使用一个,你不在哪里
  6. 你能否解释一下Delegate和KVO有什么不同?
  7. iOS应用中通常使用哪些设计模式?
  8. 你知道除了常见的可可模式外还有哪些设计模式?
  9. 你能否解释并展示SOLID原则的例子?
  10. 你有什么选择在iOS上实现存储和持久性?
  11. 你有什么选择在iOS上实现网络和HTTP?
  12. 如何以及何时需要在iOS上序列化和映射数据?
  13. 在iOS上布置UI有什么选择?
  14. 你将如何优化动态大小的表或集合视图的滚动性能?
  15. 你将如何在iOS上执行异步任务?
  16. 你如何管理依赖关系?
  17. 你如何在iOS上调试和配置文件?
  18. 你有TDD经验吗?你如何在iOS上进行单元和UI测试?
  19. 你编码审查和/或配对计划?
  20. 如何令⾃⼰所写的对象具有拷⻉功能?
  21. 说说你理解weak属性?
  22. Swift mutating关键字的使⽤?
  23. UIView和 CALayer是什么关系?
  24. 下⾯的代码输出什么?
  25. @synthesize 和 @dynamic 分别有什么作⽤?
  26. 动态绑定
  27. Category(类别)、 Extension(扩展)和继承的区别
  28. 为什么代理要⽤weak?代理的delegate和dataSource有什么区别?block和代理的区别?
  29. id和NSObject*的区别
  30. 如何令⾃⼰所写的对象具有拷⻉功能?
  31. 使⽤系统的某些block api(如UIView的block版本写动画时),是否也考虑引⽤循环问题?
  32. ⽤@property声明的NSString(或NSArray,NSDictionary)经常使⽤copy关键字,为什么?如果改⽤strong关键字,可能造成什么问题?
  33. UIView和 CALayer是什么关系?
  34. static有什么作⽤?

底层:

  1. main()之前的过程有哪些?
  2. KVO基本原理?
  3. Swift 下的如何使⽤ KVC?
  4. Swift有哪些模式匹配?
  5. objc在向⼀个对象发送消息时,发⽣了什么?
  6. 静态库的原理是什么?你有没有⾃⼰写过静态编译库,遇到了哪些问题?
  7. runloop是来做什么的?runloop和线程有什么关系?主线程默认开启了runloop么?⼦线程呢?
  8. 不⼿动指定autoreleasepool的前提下,⼀个autorealese对象在什么时刻释放?
  9. ⽐如在⼀个vc的viewDidLoad中创建
  10. 不⼿动指定autoreleasepool的前提下,⼀个autorealese对象在什么时刻释放?
  11. (⽐如在⼀个vc的viewDidLoad中创建)
  12. OC完整的消息转发机制+代码实现【暴击】
  13. 以+ scheduledTimerWithTimeInterval...的⽅式触发的timer,在滑动⻚⾯上的
  14. 列表时,timer会暂定回调,为什么?如何解决?
  15. 如何⼿动触发⼀个value的KVO
  16. 如何对定位和分析项⽬中影响性能的地⽅?以及如何进⾏性能优化?
  17. 串⾏并⾏,异步同步的区别?
  18. 线程是什么?进程是什么?⼆者有什么区别和联系?
  19. RunLoop是什么?
  20. 假设有⼀个字符串aabcad,请写⼀段程序,去掉字符串中不相邻的重复字符
  21. 串,即上述字符串处理之后的输出结果为:aabcd
  22. @autoclosure(⾃动闭包)
  23. iOS app启动如何优化?
  24. swift⾯试题:
  25. 怎样防⽌反编译?
  26. UITableView性能优化,超实⽤

线程:

  1. 不要阻塞主线程
  2. 谈谈你对多线程开发的理解?ios中有⼏种实现多线程的⽅法?
  3. 进程和线程的区别?同步异步的区别?并⾏和并发的区别?
  4. ViewController⽣命周期
  5. iOS 中的多线程
  6. 内存管理的⼏条原则时什么?按照默认法则.那些关键字⽣成的对象需要⼿动释放?在和property结合的时候怎样有效的避免内存泄露?谁申请,谁释放
  7. dispatch_barrier_async的作⽤是什么?
  8. 如何⽤GCD同步若⼲个异步调⽤?(如根据若⼲个url异步加载多张图⽚,然后在都下载完成后合成⼀张整图)

http:

  1. http与https的区别?
  2. 服务器能否知道APNS推送后有没有到达客户端的⽅法?

app:

  1. 什么⽅式可以看到上架App的头⽂件?
  2. 阅读过哪些框架的源码?能说说它的架构⽅式吗
  3. iOS iAP内购审核可能失败的问题
  4. IAP内购中虚拟货币导致审核⽆法通过的问题?

这些全部是题目跟类目,每个题目都会有相对的答案,由于字数太多所以我整理出一个文档,

需要这份面试文档的转发+私信:iOS即可免费获取

iOS开发者,进国内大型公司,必经之路

相关推荐