做了5年iOS,靠着这份面试题跟答案,我从12K变成了30K-阿里云开发者社区

开发者社区> 原来是泽镜啊> 正文

做了5年iOS,靠着这份面试题跟答案,我从12K变成了30K

简介: 在博主认为,对于iOS面试以及进阶的最佳学习方法莫过于刷题+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现面试并不难,其次就是在刷题的过程中有没有去思考,刷题只是次之,这又是一个层次了,这里暂时不提后面再谈。
+关注继续查看

在博主认为,对于iOS面试以及进阶的最佳学习方法莫过于刷题+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现面试并不难,其次就是在刷题的过程中有没有去思考,刷题只是次之,这又是一个层次了,这里暂时不提后面再谈。

博主总结了一系列大厂面试中常问的面试技术点,深入解析以及答案,将为最近准备面试的各开发者去大厂保驾护航,

何谓面试? 博主所理解的面试,它是一个过程,是不断沉淀、不断总结、善于传达自己的专业领域技术以及解决问题能力的过程。以下是博主总结的一些面试题,文中如有错误,恳请各位大佬指出!

数据结构

  1. 数据结构的存储一般常用的有几种?各有什么特点?
  2. 集合结构 线性结构 树形结构 图形结构
  3. 单向链表 双向链表 循环链表
  4. 数组和链表的区别
  5. 堆、栈和队列 分别是什么?
  6. 输入一棵二叉树的根结点,求该树的深度?
  7. 输入一课二叉树的根结点,判断该树是不是平衡二叉树?

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:413038000,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

以下资料在群文件可自行下载

算法

  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 对象占用多少内存空间?
  2. 属性关键字
  3. 分类、扩展、代理(Delegate)
  4. KVO (Key-value observing)
  5. KVC(Key-value coding)
  6. 什么是架构师及UML建模
  7. 单例模式设计
  8. 设计模式-工厂模式
  9. 设计模式-工厂模式场景

iOS面试大总结

  1. iOS面试之UI视图大全
  2. iOS面试之OC大全
  3. iOS面试之Runtime大全
  4. iOS面试之内存管理大全
  5. iOS面试之Block大全
  6. iOS面试之多线程大全

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

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

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

申请即送:

  • BAT大厂面试题、独家面试工具包,
  • 资料免费领取,包括 数据结构、底层进阶、图形视觉、音视频、架构设计、逆向安防、RxSwift、flutter,

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
安卓平板体验Java开发,还能白嫖一年阿里无影云!真香
阿里无影云早有耳闻,前两天看朋友发体验照片,可能是程序员天生爱折腾的特性又发挥作用了,自己也没能忍住,赶快下载体验了一把,没想到“很香”。我体验了浏览器端、Windows 客户端和安卓平板端,下面就来聊聊使用的过程和使用体验。内含一年免费无影云的白嫖方法,千万别错过哦~
22 0
阿里巴巴数据库分库分表的实践(5)
阿里巴巴数据库分库分表的实践(5)
4 0
程序员真的是吃青春饭吗?如何面对传说中的 35 岁职业焦虑?
  正走在这条路上的你或许也曾想过这些问题。这一次,力扣邀请到了《高效制胜——程序员面试典型题解》作者吴江(迈克老师),分享他 35 岁跳槽,并拿到了技术负责人 Offer,实现收入增长的故事和面试准备经验。   — 01 —   “35 岁危机”真有那么可怕吗?   在 2018 年快过春节的时候,我们部门突然被通知要开一个会,会上通知我们部门要在明年的这个时候被整体裁掉。我在这家五百强外企已经待了五年,当时虽然有这个预感,但是真的听到正式通知时,不免还是感觉有点震惊。
3 0
我的ESC使用体验
利用放寒假的机会,参加了这次活动,好好学习一下提升一下自己
3 0
Android WebSocket即时通信
  HTTP与WebSocket响应方式区别   WebSocket存在的理由   我们已经有了 HTTP 协议,为什么还需要另一个协议?因为只靠Http通信有一个缺陷:通信只能由客户端发起,HTTP 协议做不到服务器主动向客户端推送信息。这种单向请求的特点,注定了如果服务器有连续的状态变化,服务端想主动通知客户端,就难以实现。因此,工程师们一直在思考,有没有更好的方法,而 WebSocket 就是这样诞生的。
7 0
【Elastic Engineering】Kibana:如何在 Linux,MacOS 及 Windows 上安装 Elastic 栈中的 Kibana
Kibana:如何在 Linux,MacOS 及 Windows 上安装 Elastic 栈中的 Kibana
6 0
第一次使用ECS的过程
为方便做毕业设计的过程中向导师展示进度,开始接触云服务器,本篇文章主要记录了一下我的学习过程。
28 0
阿里ECS初体验
谈谈使用阿里ECS的体验感受
13 0
阿里云飞天加速计划
阿里云服务器是一个非常好的学习平台,我们定会用来提升自身的专业能力。
11 0
24
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载