iOS面试题(一) 技能要求及目录

最近记录一下iOS面试题,只做笔记,方便随时查看,如有不当之处感谢大牛指点。目录如下,持续更新。

  1. 技能要求
  2. UI视图
  3. OC语言
  4. Runtime
  5. 内存管理
  6. Block
  7. 多线程
  8. RunLoop
  9. 网络
  10. 设计模式
  11. 架构/框架
  12. 算法
  13. 第三方
  14. 面试总结

1.技能要求

     初级:

  • 精通Objective-C语言基础
  • 精通UIKit等Cocoa Framework
  • 熟悉网络通信机制以及常用数据传输协议
  • 具备主流开源框架的使用经验

     中级:

  • 扎实的编程基础、能够设计出良好的数据结构、能用一些算法解决一些实际的问题
  • 能够深入的理解一些OC语言的机制(比如Runtime实际是OC语言的一个基石)、内存管理、网络、多线程、GUI
  • 精通常用设计模式、框架、架构
  • 良好的分析、解决问题的能力(源码的学习可以深入的了解一些解决问题的思路和逻辑,包括学习系统的设计方案和思想)

     高级:

  • 解决研发过程中的关键问题和技术难题(创造性的提出一些解决方案)
  • 调优设备流量、性能、电量等
  • 较强的软件设计能力
  • 对iOS内部原理有深刻理解

      资深:

  • 精通高性能编程以及性能调优(ps: 对象的创建--前期就考虑用多线程处理这些问题  、大量字符串的遍历--选择一个较优的算法,在前期解决掉)
  • 灵活运用数据结构、算法解决复杂程序设计问题
  • 提供性能优化、日志搜集、统计分析等方案
  • 架构、模块设计

 
2.UI视图

  • UITableView相关(重用机制的理解和运用方面,包括我们在UITableView的使用过程中,会涉及到对数据源的一个多线程的操作,这里面就涉及到了一个数据源同步的问题)
  • 事件响应&视图响应
  • 图像显示原理(UI视图的图像显示原理是怎样的?我们创建了一个控件,最后是如何转化到屏幕上的每一个像素点的呢?)
  • UI卡顿、掉帧
  • UI绘制原理/异步绘制原理
  • 离屏渲染
     

3.OC语言

  • 分类(分类的实现机制、原理是怎样的?我们应该怎样为一个分类提供实例变量呢?涉及到关联对象的考察)
  • 关联对象
  • 扩展、代理怎么使用
  • KVO、KVC( 系统的实现机制、原理、包括涉及到了哪些设计思想)
  • NSNotification
  • 属性关键字
     

4.Runtime

  • 对象、类对象、元类对象是怎么理解的?以及他们之间的关系是怎样的?
  • 消息的传递机制是怎样的?
  • 消息转发流程是怎样的?
  • 方法缓存  (我们进行方法查找的过程当中,会使用到系统或者说Runtime中一个方法缓存的机制,这个机制又是怎样运行的呢?)
  • Methood-Swizzling是Runtime的一种运用,可能会结合实际的场景,比如说通过时长统计框架这样的考察来了解对于Runtime的Methood-Swizzling技术的一个实际的运用
  • 动态添加方法

5.内存管理

  • ARC
  • MRC
  • 引用计数机制
  • 弱引用表
  • AutoReleasePool的实现机制和原理是怎样的
  • 循环引用

6.Block

  • Block的本质(什么是block,你对block的理解)
  • 截获变量特性
  • __block修饰符的本质(在什么情况下使用)
  • Block的内存管理
  • 循环引用(Block经常会产生的循环引用)

7.多线程

  • GCD(讲述多线程的各种技术方案GCD、NSOperation/NSOperationQueue、NSThread)
  • NSOperation/NSOperationQueue
  • NSThread
  • 线程同步、资源共享(在我们实际运用多线程运用技术过程中,所产生或者引发的线程同步、资源共享问题)
  • 互斥锁、自旋锁、递归锁等相关锁的一些技术内容
     

8.RunLoop

  • 什么是RunLoop?(剖析RunLoop的源码)
  • Mode/Source/Timer/Observer
  • 事件循环机制(RunLoop有事做事,没事休息是由事件循环机制来维护的)
  • RunLoop与NSTimer之间的关系是怎样的?(我们在使用NSTimer的时候,应该怎样考虑和RunLoop的关系,包括RunLoop所带来的影响)
  • RunLoop与线程之间有什么关系?
  • 如何通过RunLoop来实现常驻线程?
     

9.网络

  • HTTP协议(什么是HTTP,HTTP当中的get和post有什么区别)
  • HTTPS与网络安全(HTTPS连接建立流程是什么,它与安全又有怎么的关系呢)
  • TCP/UDP(TCP连接建立的三次握手,四次挥手以及UDP和长链接之间都有怎样的关系和含义呢)
  • DNS解析
  • Session/Cookie

10.设计模式

  • 六大设计原则(设计模式所遵从的六大设计原则)
  • 责任链
  • 桥接
  • 适配器
  • 单例
  • 命令
     

11.架构/框架

  • 图片缓存框架
  • 时长统计框架
  • 复杂页面架构设计
  • 客户端整体架构
     

12.算法

  • 字符串反转
  • 链表反转
  • 有序数组合并
  • Hash算法
  • 查找两个子视图的共同父视图
  • 求无序数组当中的中位数
     

13.第三方库

  • AFNetworking
  • SDWebImageView
  • Reactive Cocoa
  • AsyncDisplayKit
     

14.章节结构

   真题入手-->技术原理-->企业级实践

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值