iOS开发——BAT面试题合集(持续更新中)

  • 这个栏目将持续更新--请iOS的小伙伴关注!
  • 做这个的初心是希望能巩固自己的基础知识,当然也希望能帮助更多的开发者,

  • 抢先扫码入群,跑赢同龄人!(入群无任何费用)

  • (直接搜索群号: 638302184,快速入群)

(文末有惊喜,请继续往下拉)
数据结构
  1. 数据结构的存储一般常用的有几种?各有什么特点?

  2. 集合结构 线性结构 树形结构 图形结构

  3. 单向链表 双向链表 循环链表

  4. 数组和链表的区别

  5. 堆、栈和队列 分别是什么?

  6. 输入一棵二叉树的根结点,求该树的深度?

  7. 输入一课二叉树的根结点,判断该树是不是平衡二叉树?

算法
  1. 时间复杂度 / 空间复杂度

  2. 常用的排序算法有哪些?

  3. 字符串反转

  4. 链表反转(头差法)

  5. 如何查找第一个只出现一次的字符(Hash查找)

  6. 如何查找两个子视图的共同父视图?

  7. 无序数组中的中位数(快排思想)

  8. 如何给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

内存管理
  1. 什么情况使用weak关键字,相比assign有什么不同?

  2. 链如何让自己的类用copy修饰符?如何重写带copy关键字的setter?

  3. 深拷贝与浅拷贝分别是什么?

  4. @property的本质是什么?ivar、getter、setter是如何生成并添加到这个类中的?

  5. @protocol和category中如何使用@property

  6. 使用CADisplayLink、NSTimer有什么注意点?BAD_ACCESS在什么情况下出现?

  7. iOS内存分区情况

  8. iOS内存管理方式

  9. 循环引用

  10. ARC 的 retainCount 怎么存储的?

  11. ARC 在编译时做了哪些工作?

消息传递的方式
  1. KVC的实现原理

  2. KVO的实现原理

  3. 如何手动触发KVO方法?

  4. 通知和代理跟有什么区别?

  5. block和delegate的区别有哪些?

  6. 为什么Block用copy关键字?

网络
  1. 网络七层协议有哪些?

  2. Http 和 Https 的区别?Https为什么更加安全?

  3. HTTPS的连接建立流程

  4. 解释一下 三次握手 和 四次挥手

  5. TCP 和 UDP的区别

  6. Cookie和Session

  7. DNS是什么?

  8. DNS解析过程

多线程
  1. 进程与线程分别是什么意思?

  2. 什么是多线程?

  3. 多线程的优点和缺点有哪些?

  4. 多线程的 并行 和 并发 有什么区别?

  5. iOS中实现多线程的几种方案,各自有什么特点?

  6. 多个网络请求完成后如何执行下一步?

  7. 多个网络请求顺序执行后如何执行下一步?

  8. 如何理解多线程中的死锁?

  9. 如何去理解GCD执行原理?

动画
  1. UIView动画与核心动画的区别?

  2. 当我们要做一些基于 CALayer 的动画时,有时需要设置 layer 的锚点来配合动画,这时候我们需要注意什么?

图像处理
  1. 图像的压缩方式有哪些?

  2. 如何计算图片加载内存中所占的大小

数据安全及加密
  1. 对称加密和非对称加密的区别?

  2. 简述 SSL 加密的过程用了哪些加密方法,为何这么作?

  3. iOS的签名机制是怎么样的

Runtime
  1. Category 的实现原理?

  2. isa指针的理解,对象的isa指针指向哪里?isa指针有哪两种类型?

  3. Objective-C 如何实现多重继承?

  4. runtime 如何实现 weak 属性?

  5. 讲一下 OC 的消息机制

  6. runtime具体应用

  7. runtime如何通过selector找到对应的IMP地址?

  8. 简述下Objective-C中调用方法的过程

  9. load和initialize的区别

  10. 怎么理解Objective-C是动态运行时语言。

Runloop
  1. Runloop 和线程的关系?

  2. RunLoop的运行模式

  3. runloop内部逻辑?

  4. autoreleasePool 在何时被释放?

  5. GCD 在Runloop中的使用?

  6. AFNetworking 中如何运用 Runloop?

  7. PerformSelector 的实现原理?

  8. PerformSelector:afterDelay:这个方法在子线程中是否起作用?

  9. 事件响应的过程?

  10. 手势识别的过程?

  11. CADispalyTimer和Timer哪个更精确

项目架构
  1. MVC、MVP、MVVM模式

  2. 关于RAC你有怎样运用到解决不同API依赖关系

  3. @weakify和我们宏定义的WeakSelf有什么区别?

  4. 微服务架构设想。

设计模式
  1. iOS有哪些常见的设计模式?

  2. 单例会有什么弊端?

  3. 编程中的六大设计原则?

  4. 如何设计一个图片缓存框架?

  5. 如何设计一个时长统计框架?

组件化
  1. 组件化有什么好处?

  2. 你是如何组件化解耦的?

  3. 为什么CTMediator方案优于基于Router的方案?

  4. 基于CTMediator的组件化方案,有哪些核心组成?

调试技巧
  1. LLDB常用的调试命令有哪些?

  2. 断点调试

  3. iOS 常见的崩溃类型有哪些?

性能优化
  1. 造成tableView卡顿的原因有哪些?

  2. 如何提升 tableview 的流畅度?

  3. APP启动时间应从哪些方面优化?

  4. 如何降低APP包的大小

  5. 如何检测离屏渲染与优化

  6. 怎么检测图层混合

  7. 日常如何检查内存泄漏?

  8. 如何优化 APP 的电量?

源码理解
  1. 如何理解YYKit?

  2. SDWebImage加载图片过程

  3. AFNetworking 底层原理分析

代码管理
  1. SVN与Git优缺点比较

  2. Git与SVN的区别

持续集成
  1. 你在项目中使用过什么持续集成方式?

  2. jenkins怎么备份恢复

  3. jenkins你都用了哪些插件?

Foundation
  1. nil、NIL、NSNULL 有什么区别?

  2. 如何实现一个线程安全的 NSMutableArray?

  3. atomic 修饰的属性是绝对安全的吗?为什么?

  4. 实现 isEqual 和 hash 方法时要注意什么?

  5. id 和 instanceType 有什么区别?

  6. self和super的区别

  7. @synthesize和@dynamic分别有什么作用?

  8. typeof 和 __typeof,typeof 的区别?

  9. 类族

  10. struct和class的区别

底层面试题

1.一个 NSObject 对象占用多少内存空间?

面试题还在更新中,记得关注该简书哦~

2019 联盟持续更新,精品小圈子每日都有新内容,干货浓度极高。

结实人脉、讨论技术 你想要的这里都有!

抢先入群,跑赢同龄人!(入群无需任何费用)

申请即送:

  • BAT大厂面试题、独家面试工具包,

  • 资料免费领取,包括 数据结构、底层进阶、图形视觉、音视频、架构设计、逆向安防、RxSwift、flutter,

推荐阅读更多精彩内容

  • 高级钳工培训试题及答案 一、填空题。 1...
    开源时代阅读 10,146评论 0 7
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 3,253评论 0 12
  • 买了板子,忍不住画了个情头,不过不好看…… 以后加油加油!
    盒子兔阅读 19评论 0 1
  • 问题背景 随着Flutter这一框架的快速发展,有越来越多的业务开始使用Flutter来重构或新建其产品。但在我们...
    独角的犀牛阅读 17评论 0 0
  • 其实我挺害怕看到你的信的 因为我猜 你是不是会在信中 一字不差地又把我猜对 因为我想你要是说我的好我又要不知所云说...
    一块瘦司阅读 29评论 0 0