算法
LeetCode easy
和medium
类型的题目刷一遍,一般面试的题目不出意外基本在里面。Leetcode
官方也有类似的一些专题比如练习模式
有精力的可以看一遍《剑指offer》这本电子书。结合Leetcode
,理解其思维逻辑,不容易忘记,这一关问题就不大了
基础
- 大厂最看重的是基础,基础扎实,其他稍微有点瑕疵问题也不大.
iOS基础
-
RunLoop
。 建议RunLoop
源码通读一遍,这块内容经常被考查。结合该篇文章 深入理解RunLoop 肯定会加深你的理解. - 内存。 MRC和ARC的区别。内存管理原理是什么。几个关键字的实现和不同点比如
strong
,weak
,assign
,retain
,copy
,unsafe_unretained
。因为涉及到内存,所以会引申到堆栈这一块. -
Block
。Block
的实质,在MRC
和ARC
中的差别,Copy
关键字,和函数指针的联系。__block
关键字 -
Runtime
相关。 消息转发几个步骤,消息怎么发送? - 多线程.
GCD
,Operation
。一般会给你一个场景,问你怎么处理。还有就是线程安全这一块 - 锁。这块经常和多线程一起进行考察
-
KVO
原理 - 属性,协议,分类,扩展
-
Delegate
,Block
,Notification
网络
-
http1.1
、http2
、https
协议。https
怎么验证的。三次握手四次挥手。 -
Socket
,Websocket
区别,TCP
联系 -
http
缓存 -
404
,500
,200
,30x
状态码(优先级比较低) - 网络性能优化相关。比如
dns
解析,probuf
等
...
数据库
- 一般的
sql
语句,增删改查 - 主键外键索引
升华篇
该篇主要针对的是iOS或者前端的
- 包体积优化步骤
- 启动时长优化(结合
dyld
源码还有一些清晰认知) - 卡顿检测
...
项目
简历中的一些项目进行盘点。这块你必须拿下,如果自己项目都模棱两可,基本也就结束了。
- 1. 简历中自己觉得拿不出手,没含金量的就没必要放进去
- 2. 自己没搞明白的也不建议放入
- 3. 写的项目,在面试前,最好可以先预设一些可能延伸的问题和知识点项目考察一方面是对你在上家公司专业能力的考察,也是对你表达描述能力的一种考察
喜欢问的一些面试题
-
arc
与mrc
的相同点和不同点, 他们都是怎么进行内存管理的 - 内存管理一些关键字的考察
strong
,weak
等 - 简单说下
runloop
,和线程的关系是什么。线程没有runloop
可以吗? - 什么时候会发生野指针?怎么避免野指针?
- 进程线程的关系,线程和队列的关系,
gcd
和operation
,thread
的关系。 - 接着5多线程,多线程编程,死锁,会拿出一些实际的例子让你多线程编程,有可能手写。有些可能需要用到一些锁配合
- 接着6,提到多线程,也用到了锁,就会问题一些常用的锁。
nslock
,信号量,自旋锁,递归锁等。然后会问一些线程安全相关的题目,为什么会不安全?经常拿字符串举例 -
block
中怎么传值,引用循环时怎么处理。哪些情况会引用循环。block
实质。block
在arc
和mrc
的区别等 - 事件响应链
- 属性
-
method swizzling
机制 - 消息转发
- 描述
tcp
三次握手 -
autoreleasepool
对象的声明周期 - 怎么监测到一个对象被释放了
-
appdelegate
声明周期 category
-
+load
,+initialize
- 常用的设计模式
- 介绍以往项目
- 你觉得在这家公司中觉得最有挑战性的一件事情?
-
nsdictionary
本质是什么 -
nsarry
和nsset
的区别 - 对于
rn
,weex
,flutter
有接触过吗? - 算法考核
...
- 还有很多一些衍生的,就不详细阐述了..如果还需要更多的,小编提供一份iOS相关的《BAT面试题分类答案合集》.
- 如何获取?添加小编 iOS交流圈:937194184,可直接免费获取.
后记
iOS开发整个大环境趋于饱和,所以就业形势不太乐观,导致要求往后只会越来越高。但是在高级资深这一块还是有一定份额的。目前高端还是比较吃香点。
再说说面试,一时没得到自己期望公司的offer也没关系,继续找吧。面试有个好处就是在面试过程中你会发现你的补漏点,面试也是一次练兵的机会,中间你会知道自己的能力和薪资水平。