******阅读完此文,大概需要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. Visual C++——《可视化编程技术》实验报告——MFC编程
  2. GDCM:gdcm::ByteBuffer的测试程序
  3. 使用Apache Cassandra设置一个SpringData项目
  4. EXCEL数据汇总-数据透视图
  5. 变位齿轮重合度计算公式_渐开线圆柱齿轮传动的重合度计算.pdf
  6. stomp+websocket 集群问题_手把手搭建WebSocket多人在线聊天室
  7. 多径瑞利信道的一种matlab产生方法
  8. [乐意黎]某音上超酷炫的 Word Clock 文字云时钟屏保配置
  9. 台式计算机ddr3内存条工作电压,DDR3存储空间频率都是有多少的,工作电压是多少?...
  10. MySQL事务隔离及锁机制
  11. 初等变换和阶梯矩阵【】
  12. 8位数字的正则表达式
  13. Linux配置SSH免密码登录(非root账号)
  14. android xlog崩溃日志,Android第三方log库:xlog使用记录
  15. 开源电子商城系统:罗列几个电子商城系统,和一个不错的开源电子商城项目:mall,先做技术调研,主要还是学习代码。
  16. 基于SpringBoot的学生成绩管理系统
  17. java localdate_Java LocalDate now()用法及代码示例
  18. Escape Codec Library: ecl.js Shift_JISエンコードやEUC-JPエンコードなども可能な escape エンコード・デコード関数のライブラリ
  19. 如何高效学习_斯科特扬(读后,整体学习法试用,总结)
  20. 摩托罗拉v3的java游戏_重温经典!全新摩托罗拉V3采用折叠屏幕,街机王者归来!...

热门文章

  1. win7 64位下如何安装配置mysql
  2. 什么是链接,为什么需要链接?
  3. 多个git账号的登录与切换
  4. px4官网调参指南 多旋翼无人机PID调参指南
  5. DOM 树是如何构建的 ?
  6. 个人工作邮箱怎么申请?工作邮箱有哪些?
  7. 前端三剑客入门学习笔记之HTML
  8. 中国计算机艺术的发展趋势,浅谈数字媒体艺术的发展趋势
  9. YYDS《剑指Offer》再续新篇,百万程序员人手一册
  10. STM32驱动开发(二)--USB Device RNDIS虚拟网卡(usb hound抓包完整数据流分析)