******阅读完此文,大概需要5分钟******

这是我毕业之后第三次开始找工作了,适逢2019年底,我清楚地知道,iOS开发已经不是很景气了,尽管自己有名校以及大厂背景,但是自己一点都没有把握,自己上一份工作是小厂,每天都很焦虑,知道后面形势不好,不想自己陷入被动的局面,所以自己裸辞全面投入了面试准备,目标也很明确,进稳定的大厂。现在目标已经达成,我想分两篇文章来描述这个过程,留给还在路上的朋友。这一篇文章,我主要把面试的一些题目,整理了一下发了出来,都是自己亲身经历的,由于时间有点久了,所以有些信息记得不全面了;在下一篇文章中,我会详细地把这个过程描述出来,包括面试如何准备,该如何安排各个公司的面试先后,要不要找猎头等,加上自己之前在前两家公司一直负责iOS招聘工作,自己有一些心得,我会针对这些问题一一进行介绍。

面试公司一:(阿里某子公司)

1、如何设计一个线程池;
2、组件化过程,如何实现业务解耦;
3、如果让你实现一个篮球落地的动画,该如何实现,动画是怎么刷新的?
4、给你一个文件夹,如何便利并计算它的容量(树的遍历)?
5、都做了哪些内存优化,如何防护Crash等;
6、业务需求优先级和技术优先级如何平衡;
7、TableView的优化;
8、一个由大量图加载的TableView,如何管理它的任务,任务的调度等;

面试公司二:(某大厂)

1、Category中的方法插入以及load/Initialize方法执行顺序
2、递归调用函数可能会带来什么问题;(尾递归)
3、NSString的copy与strong修饰词;
3、Runloop处理的事件都有哪些;
4、UIView的frame以及bounds原理;
5、WKWebview实现OC与JS通讯;
6、手写递归(求1~100的和)

面试公司三:(某大厂)

一面:
1、super关键字
2、Runtime(SEL到IMP的查找过程)
3、KVO实现原理(扩展);
4、UIView的绘制(drawRect);
5、weak实现;
6、block原理;
7、HTTPS/HTTP协议相关;
8、CATransition;
9、GCD同步与异步概念,线程与queue之间的关系,主线程的block执行时机;
10、nonatonic与atonic的区别?属性变量,10个线程去+1、同时另外10个线程去-1操作,最终结果;
11、简历上的一些项目技术点;
二面:
1、App瘦身做过哪些?
2、做过的App性能优化?
3、最近处理过哪些线上Crash
4、网络DNS安全问题
5、H5 Hybrid相关
6、github开源项目的代码讨论;
7、自己感兴趣去做哪一块?未来的职业规划?技术规划等
8、WKWebview相关;

面试公司四:(阿里某部门)

1、笔试(多线程并发问题,UIView的点击扩展block)
2、10亿个数据的处理问题;
3、如何判断内存中的两个对象相等;

面试公司五:(某大厂音乐部门)

1、runtime
2、blockblock内部结构block如何捕获外部变量Block为啥不能修改变量
3、autorealsepool实现原理
4、Weak实现weak如何实现弱信用
5、野指针,没有有效信息
6、runloop
7、线程与runloop
8、线程与进程
9、https握手
10、内存结构
11、第三方库冲突
12、分类方法重名
13、runtime 原理
14、异常断点如何捕获
15、Category为啥不能加属性
16、项目中技术上的亮点
17、用的第三方库原理
18、事件传递及响应链
19、对象内部结构什么样
20、何时会报bad_access错误,如何排查
21、KVO原理

面试公司六(阿里某部门):

1、手写单例以及网络请求;
2、响应链原理相关?
3、categry为什么不能添加属性?
4、GCD控制并发数?该怎么控制?OperationQueue该如何实现?
5、各种线程锁的使用?@syncronize关键字的熟悉?
6、iOS图片加载速度极限优化—FastImageCache解析?
7、线程、runloop与autoreleasepool之间的关系?怎么判断作用域?
8、组件化路由,CTMedia,阿里BeeHive组件之间详细对比?
9、数据库存储与性能分析?sqlite相关特性?
10、卡顿检测?检测runloop时间差?具体该如何实现?
11、网络http协议?实现?如何构造一个长链接?

面试公司七、八、九、十(含猎头提供题目):

1、内存管理ARC 和 MRC 的区别浅拷贝和深拷贝的区别weak 的底层实现assgin 和 weak,unsafe_unretained 具体有什么区别,assgin是否可以用来修饰对象。Autorelease pool的底层实现原理,与 Runloop 的关系, autoreleasing 关键字。2、Block本质,基础概念block的实现,如何截获自动变量的,如何修改自动变量的值的,block的几种形式__block的本质forwarding 指针block怎么避免循环引用。是不是所有的block都会产生循环引用,block里面怎么避免被提前释放3、多线程iOS 中多线程的几种方式,区别,使用场景,基本概念,同步异步,串行并行的区别。GCD,写一个死锁,并行和串行队列,同步和异步的区别,GCD怎么控制最大并发数怎么让子线程定时执行一个方法,具体的实现方法如何控制线程的最大并发数为10,然后加载十个图片最后展示出来,具体方法子线程的runloop是怎么执行的,它里面的 autoreleasepool 是怎么执行的。NSMutableArray 怎么保证线程安全的。GCD怎么避免block中的变量被提前释放4、Runtime消息的动态转发给 Category 添加属性,关联对象都有几种形式method swizzling说一说类的结构,运行时中的class都有什么属性,property都有什么属性说一说isa指到NSObject的那个过程Category的本质,load方法什么时候加载,Category重写了父类的方法会怎样,底层源码 ,如果两个 Category和一个基类,都有同名方法,先执行哪个property会自动生成什么,如果此时已经有下划线_name的实例变量了那会生成什么load 和 initialize5、Runlooprunloop实现原理source 类型线程保活的方式runloop和多线程的关系,以及timer的关系6、第三方库的源码AFNetWorking, SDWebImage,YYModel 都是非常常见,基本面试必问举例:SDWebImage源码,实现原理,如果正在请求一个地址的图片,这个时候又同时另一个请求,这个时 候会再发送一个请求吗?如何优化图片内存等7、生命周期app的生命周期控制器的生命周期视图的生命周期8、UI:UICollectionView 瀑布流UITableView 相关的优化,底层原理等9、页面布局:layoutSubViews 和 drawInRect 等的区别自己实现一个 UIScrollView事件的传递链和响应链界面非常卡顿怎么定位到具体的类和方法UIView和CALayer区别10、数据存储:数据持久化都有什么,用过什么,归档,偏好设置都可以存储什么样的类型11、架构:MVC,MVVM等,他们的区别和联系,优缺点从 0 到 1 实现一个 app 的思路对于项目从 main 函数执行之前到之后启动优化,卡顿优化和界面优化。12、其他:KVO 的底层原理,自己实现KVC 的底层原理,自己实现NSNotificationCenter 的底层原理,是同步还是异步,如何实现一个,如果在子线程接收一个通知能不 能接收到
13、OC语言OC语言的class与Struct区别OC消息传递,对应在Swift中是怎么实现的14、几种页面传值方式的区别;
15、界面非常卡顿怎么定位到具体的类和方法
16、一个 int 类型的值,被@包装成 NSNumber 类型,传递到一个接受 id 类型的方法参数中,这个值能不能 保持正确
17、在 iPad 上面,分屏功能,拖拽 wps 的文件到qq的这个过程是怎么实现的(进程间通信的方法)18、如何实现dispatch_once
19、Instrument的使用
20、热修复用过么,平时版本是怎么迭代的,线上bug是怎么修复的

好了,暂时更新这么多,后续会继续更新,敬请期待...

iOS开发笔记之八十一——2020 iOS面试总结《一》之干货篇相关推荐

  1. iOS开发笔记--超全!iOS 面试题汇总

    作者:Job_Yang 之前看了很多面试题,感觉要不是不够就是过于冗余,于是我将网上的一些面试题进行了删减和重排,现在分享给大家.(题目来源于网络,侵删) Object-c的类可以多重继承么?可以实现 ...

  2. iOS开发笔记:大小写敏感的iOS文件系统,而iOS模拟器对大小写不敏感

    一个程序在模拟器上运行正常,但在真机上运行就是出错,排除了下列多种可能性: (1)用5.0的SDK开发,部署在4.3的真机系统上 (2)越狱的iPhone机器 (3)文件的汉字编码不正确 (4)ZIP ...

  3. iOS开发笔记之二十二——归档Archiver(二)

    1.前言 曾学习过关于归档的基本知识,详见前期的<IOS学习笔记之十一>.本次重点介绍利用NSKeyedArchiver进行归档,设计一个可以对tableView的cell数据元素进行缓存 ...

  4. iOS开发笔记-两种单例模式的写法

    iOS开发笔记-两种单例模式的写法 单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h"st ...

  5. iOS RTMP 视频直播开发笔记(5)- iOS H.264 实时硬编码实现原理

    iOS RTMP 视频直播开发笔记(5)- iOS H.264 实时硬编码实现原理 网上有两个实现,GDCL – AVEncoder 和 IFVideoPicker. IFVideoPicker 使用 ...

  6. IOS开发笔记之推广安装(用网页判断是否安装App)

    IOS开发笔记之推广安装(用网页判断是否安装App) 在做App推广的时候,我们经常会用到网页链接下载,亦或是一张二维码,最常见的做法就是将App在iTunes中的下载链接嵌入,当用户扫描或者点击网页 ...

  7. ATECC508A芯片开发笔记(十一):NXP 平台移植ATECCx08 CryptoAuthLib库(I2C)

    目录 ATECC508A芯片开发笔记(十一):NXP 平台移植x08库(I2C) 一.CryptoAuthLib 二.Nxp RT10xx平台上移植CryptoAuthLib 2.1.在官网下载最新的 ...

  8. SAP UI5 应用开发教程之八十一 - 采用 OPA5 进行 SAP UI5 集成测试(Integration Test)的一个例子试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  9. IOS开发笔记2-C语言基础复习

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53439812 本文出自:[顾林海的博客] 前言 在正式进入ios开发前 ...

最新文章

  1. 深入浅出理解Paxos算法
  2. 前百度主任架构师创业,两年融资千万美元,他说AI新药研发将迎来黄金十年...
  3. 信息批量提取工具bulk-extractor
  4. 用MapReduce实现矩阵乘法
  5. html 如何判断文本溢出,判断文本是否溢出
  6. SpringCloud常见组件有哪些?
  7. 如何制作出让女朋友满意的大片
  8. jq 鼠标指向隐藏显示区域
  9. ctfshow-WEB-web12( 利用代码执行漏洞读取敏感文件)
  10. MIT“食人花”机器人,能抓起120倍重的物体,软硬皆可,不问形状
  11. 旧的非flash版Metalink的入口
  12. kis 2009 key/卡巴斯基2009 key/kis 8.0 0.454 key/卡巴斯基 8.0 0.454 key
  13. python 传输视频_如何用python实现网络实时视频传输
  14. 实现自定义背景色、前景色、显示进度的进度条
  15. 永凯APS生产排程软件同时考虑物料及产能
  16. UTC和GMT时间区别
  17. 野火指南者(STM32F103)移植LVGL
  18. 第三阶段应用层——1.1 数码相册—软件框架
  19. 苹果MFI认证步骤汇总
  20. Oracle并集union和union all

热门文章

  1. 适用于2019的6个最佳WordPress社区插件
  2. Excel中将人民币金额小写转成大写(转)
  3. 【互联网寒冬】经历裁员,拿20W被迫去大厂
  4. 偏安一隅的SaaS客服机会在哪,难点又在哪?
  5. 论文分享 | Yann LeCun 联合发布、工程师都在读的自监督学习论文
  6. 在字节跳动工作是一种怎样的体验?
  7. 同一主机下进程间的通信方式
  8. 注册谷歌广告联盟提示“此电话号码无法用于进行验证”解决办法
  9. 计算某日新增用户,及其次日、3日、3日内的留存率
  10. ubuntu下查看电脑硬件的基本信息