序
我是一名普通本科的大四学生(软件工程专业),应聘方向是iOS开发,我在招聘中一共面试了30家左右的公司,每次面试后,都及时进行面经整理和解答扩展,现在筛选出优质面经,将它们汇总,分享给大家。
百度
今日头条
饿了么
SAP
阿里巴巴
百度
腾讯
美团点评
今日头条
京东
小米
迅雷
深信服
商汤科技
顺丰科技
招银网络
iOS中有哪些设计模式,举出两个例子
property有什么作用
事件传递和响应链
ARC下,有哪些对象被加入了自动释放池中
子线程中如何管理对象的生命周期
如果使用Category添加了和基类一样的方法名的方法后,调用该方法,执行的是Category中的代码而不是基类的代码
HTTP报文格式
https的加密过程
响应码有哪些
TCP和UDP的区别
TCP如何保证可靠传输,分别有哪些机制
简要说明下用于交换网络的设备,从物理层往上进行叙述
在数组中寻找第k大的数,要求时间复杂度为O(n)
属性修饰符
有哪些属性修饰符
assign和weak区别
assign在MRC和ARC
copy的用法
autoReleasePool
autoReleasePool在什么情况下使用
什么对象会加入autoReleasePool
autoReleasePool在什么情况下释放
RunLoop
RunLoop三种模式的区别
在什么情况下使用RunLoop
Delegate、Block、Notification的区别
如何判断一个链表是否有环
如何判断一个环的入口
如何用两个栈模拟一个队列
TCP和UDP的区别
TCP三次握手的过程和为什么要三次握手
验证一个字符串是否为合法的ipv4地址
一个被放入到@autuReleasePool的对象,当自动释放池调用drain方法时,一定会释放吗
@aotuReleasePool的嵌套使用,对象内存是如何被释放的
关于block的
在Masonry的block中,使用self,会造成循环引用吗
那如果是在普通的block中呢
那在普通的block中只使用下划线属性去访问,会造成循环引用吗
状态码
给出两个有序数组,其中A数组的长度为另外B数组的两倍,并且有效数字个数都是B数组大小,合并两个数组,要求:时间复杂度为O(n),空间复杂度为O(1)
如何检查循环引用
在delloc方法执行的时候,该对象已经会回收了吗
http和https的区别
https的加密过程
有了解过中间人攻击吗
https能防止中间人攻击吗
横向比较C++、andriod和iOS的内存管理机制
iOS接触时间
收获最多的地方
看简历上写了sqlite,能简要说明下sqlite的实现原理吗
ORM如果要你来设计的话,你觉得有什么瓶颈问题
描述一下主键和索引的作用
有了解数据库引擎吗
描述一下普通的存储过程和事务性存储过程
描述一下第三范式和BCNF范式
session和cookie
https的加密过程
如何防止https的证书被篡改
有了解过对称加密和非对称加密吗
你了解哪些iOS底层知识
AFNetworking2.0和3.0的区别
automic一定是线程安全的吗
iOS中的消息传递是怎么一步一步实现的
category和extension有什么区别
iOS中的私有属性如何设置
串行队列和同步锁两者在保护线程安全上的性能对比
并行队列是同时执行的吗
iOS中有哪些锁,你了解多少
iOS中UIKit框架的架构
UIView和CALayer之间的关系
UIView、CoreAnimation和CoreGraphics的关系
应该知道SegmentFault,这个在iOS中是什么错误,那StackOverFlow呢
GCD、NSThread、NSOperation性能上有何区别
说说你觉得在学习过程遇到最难理解的东西
网络缓存中涉及到什么算法思想有研究过吗
CSS全称和HTML全称是什么
面向对象和面向过程的区别
关于参加过项目的一些问题
享问是个创业项目,如何和大家一起协作的
...
在大学里成绩如何(我会说我成绩不好吗,严肃脸)
例如有这样一个场景,一个APP,有很多的横栏,每个横栏中都有很多标签,这些标签都能够被拖动
如何去设计
如果一个横栏中的标签能够被拖到另一个横栏呢
是选择采用重写拖动方法还是选择使用UICollectionView呢
是将整体作为UICollectionView,还是整体使用UITableView,每个横栏中使用UICollectionView呢
数据链路层的帧的概念和作用
ARP路由协议
传输层有哪些协议
UIView是如何设计的
CALayer和UIView的区别
一个链表,如何进行每两个交换一次的操作
简述计算机网络的五层,从底层说起
ARP协议如何工作
TCP和UDP区别
状态码
给一个int类型数字,判断这个数字是否是回文的
...
提高增删改查的效率手段
数据库同步
进程之间通信步骤
http和https有什么区别
传输层的优化协议
了解哪些设计模式(我:所有设计模式,面:哦?)
讲一下工厂模式
工厂模式和抽象工厂的区别
如何理解运行时
运行时可以做什么
UIViewController的生命周期
loadView在什么时候执行,一定会执行吗
如何解决死锁问题
多个线程同时访问一个资源应该注意什么
锁的原理是什么
函数参数传入的一般是什么
如果传入一个对象,函数中做一些改变操作,如果不想改变原对象,该如何
iOS有几种复制
什么行为能够产生深复制
复制的应用
java中如何实现值传递和引用传递
java的内存管理和OC区别
my name is Z X变成Z X is name my
并分析时间复杂度和空间复杂度
用两个队列模仿一个栈
面:哈哈,看你很多地方都是这个名字,nineteen,你是很喜欢这个吗?
我:.......
面:那我们就直接进入正题吧
简单聊了几个项目的内容
要求共享桌面看项目代码
讲述项目的架构过程和细节
如何进行项目瘦身
写冒泡排序(写了三个版本)
面:稍微等一下,这边安排一个加面
面:你赶紧吃个饭吧
我:哦好的......
...
封装一个字符串逆序的API
A、B、C、D四个线程,A、B、C执行完毕之后,D执行,且A、B、C同时进行
A、B、C、D分别添加执行时间
A、B、C中都修改一个资源
线程之间的通信步骤
讲一下开源框架的源码
问:既然说到AF,那么说下基本的NSURLConnection和NSURLSession的区别
用一件事说明你对iOS的热情
iphoneX推出,我们应该在哪些方法做改变
WWDC11上面说了什么改变
面:这是我今天听过的最简单的自我介绍
我:严肃脸
晚上7点一个电话响起,铃铃铃~
面:现在又把你叫过来面试,你今天应该面了5轮吧
我:恩......
享问作为一个创业项目的细节
背景
成员管理
如何运营
技术难点
未来发展
实习的具体经历
为什么没有选择去大企业实习
如何理解iOS系统
iOS和andriod在性能上又和区别,具体到实现呢
设计模式是如何在iOS中体现的
如何去优化项目
用三个关键标签定位自己,并说出充分的依据
分享一下之前做的项目,难点是什么
刚刚说到你平时会研究的一些技术点,那么分享一两个
如何利用Runtime进行字典转模型
有没有研究过开源框架,有哪些收获
如何设计保证三方库变动对项目本身影响最小
有什么辅助工具去检测内存泄露
内存泄露有哪些方式
block如何导致引用计数增加的
确认下是否有Offer了,已经签了三方了吗
在美团的实习主要做了什么
怎么理解JSBridge工作的
对这种工作原理有觉得有什么缺点吗
有了解哪些开源项目
为什么大家要用AFNetworking
AFNetworking做了什么性能方面的优化
Masonry有什么亮点
Block循环引用如何解决
Runloop和线程的关系
MVC有什么不好的地方
有了解过MVP吗
如果让你设计dispatch_once,你会如何设计
从浏览器查询一个关键字,从计算机原理到计算机网络,展示整个过程
最后的响应报文如何解析到浏览器上有了解吗
一个算法:A和B两个序列,经历最小次数的操作,使得序列从A变成B
有参与过开源项目吗
之前做的项目或者实习有比较具有挑战性的事情吗
......
打印100到200之间的素数
UITableView如何调优
iOS内存管理模式
ARC全称
TCP和UDP的区别
三次握手
一个场景,手写SQL查询
面试官好像认识我的样子,并没有自我介绍环节
反转链表
三种方式遍历二叉树
介绍iOS内存管理
TCP和UDP的区别
手写TCP三次握手
手写代理模式
花10分钟讲述一个技术点
JSPatch的原理以及苹果如何检测
项目细节(享问)
如何带团队
如何协调工作
项目背景和目标
成果
对自己的规划
有没有目标榜样
来北京会不会压力过大
对大公司和初创公司的选择
同级别大公司如何选择
答:提高技术
具体怎么个提高法:
答:三个方面......
面试官介绍了百度如何能提高技术(大概10分钟)
......
我看你面的是iOS岗位,目前成都是没有iOS的
东北大学的为什么来成都呢
计算机网络一共有多少层
HTTP和HTTPS的区别
TCP三次握手
介绍一个比较典型的项目
MVC模式和MVVM模式区别
iOS内存管理方式
如何解决iOS的内存管理出现的问题
iOS内存管理和andriod内存管理的区别
我觉得你作为本科生是很优秀的
介绍了成都这边的情况,目前andriod居多,没有iOS岗位
你介意进入的话转岗到andriod开发或者weex开发吗
你等下,我把你引荐到二面
介绍一个比较好的项目
MVC模式C的臃肿和单薄如何控制,自己是如何写的
M不应该和V交互吗,M不是要显示到V上嘛(钓鱼执法)
Unicode和UTF-8的区别
数据库事务是什么
JS可以用来做什么
JS能用来开发服务器吗,开发服务器用的引擎是什么
......
C++和OC有什么区别
利用OC的动态特性能做什么
UITableView如何调优
事件传递和事件响应
MVC和MVVM有什么区别
iOS的内存布局
介绍ARC
消息机制具体的步骤
瀑布流如何布局
有多个样式的Cell,你会怎么设计
两个有序数组,求第K大的数
TCP和UDP的区别
面:这边没有找到你的简历
我:啊?那会不会没有优势啊
面:不会的,讲的好就行
iOS内存管理
进程之间如何通信
TCP三次握手具体流程(画出来)
TCP三次握手只允许用一个标志传递,如何控制
为何要进行三次握手
TCP的拥塞控制
坐标系中存在一个不规则多边形,判断一个点是否在其中
求二叉树中最大的距离
面:没有我的简历
我:我用手机传一份吧
于是加了微信
享问
背景
团队协作
如何设计产品
运营成果
有了解过认证的协议吗
SSL的详细通信过程(纸画)
JSPatch原理
如何模拟热更新的过程
如何设计一个首页
产品经理应该具备哪些素质
产品经理应该向程序猿交付哪些东西
一般情况下,产品和程序猿配合出现问题,细节体现在哪里
你觉得自己最大的优点是什么
是完美主义者吗
在团队协作中会有觉得很垃圾的人吗
团队协作中会觉得别人写的代码很垃圾吗
听面试官说特别想让你留在成都
你是绵阳的吧,我是德阳的,大学在上海,就一直在上海工作了
介绍了美团的餐饮事业群的详细信息(我并没有问...)
对一个薪资的要求
意愿城市
将来的规划
主要问了享问的细节
请问下我的评分sp机会大吗
请问sp的一个标准是top几大概
后续的通知会什么时候发出
手里有你的简历,但是还是想听听你来自我介绍下
合并两个有序数组
二叉树的反转
线程和进程的区别
堆和栈的区别
load和initialize区别以及它们有哪些应用
代码写在load和initialize中会影响启动吗
介绍下iOS中的多线程
GCD手动创建的线程和GCD提供的API线程有啥关系
有读过GCD的源码吗
实现一个LUR Cache,包含读、写两个操作
block相关
发送网络请求
MVVM
KVO
消息机制
查找两个节点的最近公共父节点
相比上次来面试提高了什么
来段英文介绍
拿过哪些offer
为什么选择去天天狼人杀
AFNetworking的源码架构
自己如何设计网络库
Masonry源码架构
TCP的三次握手
TCP的四次挥手
......
挑一个比较典型的项目进行分享
iOS中开发有哪些调优策略
KVO和KVC是什么
工厂模式是什么
工厂模式和抽象工厂的区别
单例模式如何设计
多线程有哪些
GCD中信号量怎么使用
一个队列负责插入数据操作,一个队列负责读取操作,同时操作一个存储的队列,如何保证顺利进行
原型模式
......
问:面试官您是从事什么岗位的呢
面:我是后台开发的
我:......
实现reHash方法细节
在浏览器中输入一个域名会执行哪些操作
问: 面试官您是从事什么岗位的呢
面:Andriod系统层开发
我:......
多个任务,具有起始时间和结束时间,任务是串行执行,规则如下:前一个任务结束时间和后一个任务开始时间不能相交,则计算最多的执行个数的路径为
在一个方法中有一个内部类,声明一个内部类类型的临时对象,然后开辟一个子线程去访问这个临时对象,最后在main中调用这个方法,问程序能正常运行吗,会出现野指针异常吗?
弱引用和强引用的区别
......
MVC和MVVM的区别
MVVM哪些东西是可以重用的
如何进行自动布局
storyboard和纯代码布局的优劣
SDWebImage的缓存策略
享问细节
LRU算法
......
面前摆放着一台联想笔记本
我:面试官是做什么开发的
面:我是做Linux开发的
我:......
拿着一份像是公司出的题,好几页,整个过程来回翻阅题,然后看到合适的就问
模式串匹配(用牛客的某个后台付费平台出的题)
具体内容:普通字符+(通配符)?+(通配符)*
二叉树的几种遍历方式
iOS数据持久化的几种方式
如果是自定义文件如何持久化
写出相应代码
如何判断一个C语言结构体相等
那如果是在Java中如何判断一个对象相等呢
C语言中static修饰符的作用
数据库事务的特点
......
我:面试官您是做什么的岗位的呢
面:哦,我不是iOS的,可能没法面iOS方面的,我们就问一些算法吧
我:......
同样是不断翻面试题考
基本是算法,以算法能力评估一个人的能力
设计一个算法求圆周率
只能遍历一次文本,需要找出多个关键字的次数,位置
找出一个32位数二进制表示法中1的个数(需要达到最优解)
面:不好意思,我这边好像找不到你的简历了,所以你得比较详细地介绍一下你自己
我:......
数羊,给定一个初始数N,第一次数的数为N,第二次为2N,依次类推,直到kN,那么求当0-9的数全部都出现的时候的k值
介绍property的修饰符
bounds和frame的区别
在MRC中如何解决循环引用
介绍多线程的实现方式
介绍iOS中数据库,描述一下sqlite的表结构
KVO是什么,使用KVO需要注意哪些问题
GCD中的循环引用
我:接触iOS开发三年,上架的项目有5个...
面:哇,你比我开发还久,我上架项目也没有你多(见笑了大佬),不过我是做底层SDK开发的
面试官没说清楚题
然后边讨论题应该怎么设计,边聊思路
拿到一个项目,应该如何设计架构
MVC模式是怎么交互的
UITableViewCell如何实现代理模式的
谈谈KVO模式如何实现
三次握手的细节
状态码
如何设计缓存策略
谈谈多线程的底层原理
内存管理修饰符的区别
介绍一下深复制和浅复制
描述一下runtime
runtime可以做什么事情
描述一下runLoop
runLoop又可以做什么事情
介绍一下iOS中的多线程
GCD有哪些常用的API
使用GCD应该注意什么问题
iOS内存管理方式
iOS的沙盒
我:开发过五个上架APP
面:哇,这么多
动机
过程
扮演角色
收获
有哪些不足
具体每个项目还聊了可行性(其中有创业项目)
git相关操作
多线程底层原理
职业规划
iOS工作想要从事前端UI还是高性能
想要从事前端移动端还是愿意从事后台的工作
有了解过相关工作内容吗,是否和预期一致
对公司了解吗
我给你介绍下吧
工作城市选择
目前有offer吗
实习时间
目标公司的特点
......
享问的细节
三次握手过程
Java的引用和对象的区别
解释单例设计模式
应用场景
和静态方法的区别
快速排序的原理
线段树
MVC模式
MVVM和MVC的区别
......
讲一个最好的项目
有面过其他哪些公司
对于深圳压力大如何看待
东北大学的学生为什么来成都面试
介绍一下家庭情况
家里人对于工作地点的建议
自己对工作城市的选择
优点和缺点
iOS岗位主要做什么
薪资如何
加班严重吗
公司有食堂吗
......
享问细节
有做过日志管理吗
更新版本的内容是通过什么方式获得的
iOS内存管理方式
项目架构图
iOS推送是什么
浏览器可以分享东西到具体APP,这样是如何实现的
有做分享吗
面:你面试这么多了,自我介绍太累了,就省去吧
我:(中国好面试官!)
享问细节
如果保证团队顺利运行
未来目标
.....
享问细节
成绩排名
有奖学金吗
有挂科吗
意向城市是哪里,成都这边不确定有iOS岗位,我得问问
优点和缺点
看到这里,预祝你校招成功~
点个赞吧!
转自https://zhuanlan.zhihu.com/p/36504657 作者nineteen授权转载