Skip to content

Latest commit

 

History

History
1075 lines (1068 loc) · 28.4 KB

12校招攻略43份优质面经汇总iOS开发2018年.md

File metadata and controls

1075 lines (1068 loc) · 28.4 KB

校招攻略43份优质面经汇总iOS开发2018年

我是一名普通本科的大四学生(软件工程专业),应聘方向是iOS开发,我在招聘中一共面试了30家左右的公司,每次面试后,都及时进行面经整理和解答扩展,现在筛选出优质面经,将它们汇总,分享给大家

目录

实习面试

  1. 百度
  2. 今日头条
  3. 饿了么
  4. SAP
  5. 360健康

校招面试

  1. 阿里巴巴
  2. 百度
  3. 腾讯
  4. 美团点评
  5. 今日头条
  6. 京东
  7. 小米
  8. 迅雷
  9. 深信服
  10. 商汤科技
  11. 顺丰科技
  12. 招银网络

实习面试

百度

百度一面

iOS

  • iOS中有哪些设计模式,举出两个例子
  • property有什么作用
  • 事件传递和响应链
  • ARC下,有哪些对象被加入了自动释放池中
  • 子线程中如何管理对象的生命周期
  • 如果使用Category添加了和基类一样的方法名的方法后,调用该方法,执行的是Category中的代码而不是基类的代码

计算机网络

  • HTTP报文格式
  • https的加密过程
  • 响应码有哪些
  • TCP和UDP的区别
  • TCP如何保证可靠传输,分别有哪些机制
  • 简要说明下用于交换网络的设备,从物理层往上进行叙述

算法

  • 在数组中寻找第k大的数,要求时间复杂度为O(n)

百度二面

iOS

  • 属性修饰符
    • 有哪些属性修饰符
    • assign和weak区别
    • assign在MRC和ARC
    • copy的用法
  • autoReleasePool
    • autoReleasePool在什么情况下使用
    • 什么对象会加入autoReleasePool
    • autoReleasePool在什么情况下释放
  • RunLoop
    • RunLoop三种模式的区别
    • 在什么情况下使用RunLoop
  • Delegate、Block、Notification的区别

算法

  • 如何判断一个链表是否有环
  • 如何判断一个环的入口
  • 如何用两个栈模拟一个队列

计算机网络

  • TCP和UDP的区别
  • TCP三次握手的过程和为什么要三次握手

今日头条

今日头条一面

算法

  • 验证一个字符串是否为合法的ipv4地址

iOS

  • 一个被放入到@autureleasepool的对象,当自动释放池调用drain方法时,一定会释放吗
  • @aotureleasepool的嵌套使用,对象内存是如何被释放的
  • 关于block的
    • 在Masonry的block中,使用self,会造成循环引用吗
    • 那如果是在普通的block中呢
    • 那在普通的block中只使用下划线属性去访问,会造成循环引用吗

计算机网路

  • 状态码

今日头条二面

算法

  • 给出两个有序数组,其中A数组的长度为另外B数组的两倍,并且有效数字个数都是B数组大小,合并两个数组,要求:时间复杂度为O(n),空间复杂度为O(1)

iOS

  • 如何检查循环引用
  • 在delloc方法执行的时候,该对象已经会回收了吗

今日头条三面

计算机网络

  • http和https的区别
  • https的加密过程
  • 有了解过中间人攻击吗
  • https能防止中间人攻击吗

iOS

  • 横向比较C++、andriod和iOS的内存管理机制

饿了么

饿了么一面

热身

  • iOS接触时间
  • 收获最多的地方
  • 看简历上写了sqlite,能简要说明下sqlite的实现原理吗
  • ORM如果要你来设计的话,你觉得有什么瓶颈问题

数据库

  • 描述一下主键和索引的作用
  • 有了解数据库引擎吗
  • 描述一下普通的存储过程和事务性存储过程
  • 描述一下第三范式和BCNF范式

计算机网络

  • session和cookie
  • https的加密过程
  • 如何防止https的证书被篡改
  • 有了解过对称加密和非对称加密吗

iOS

  • 你了解哪些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呢

SAP

SAP一面

计算机网络

  • 数据链路层的帧的概念和作用
  • ARP路由协议
  • 传输层有哪些协议

iOS

  • UIView是如何设计的
  • CALayer和UIView的区别

算法

  • 一个链表,如何进行每两个交换一次的操作

SAP二面

计算机网络

  • 简述计算机网络的五层,从底层说起
  • ARP协议如何工作
  • TCP和UDP区别
  • 状态码

算法

  • 给一个int类型数字,判断这个数字是否是回文的

校招面试

阿里巴巴

阿里巴巴一面

自我介绍

...

数据库

  • 提高增删改查的效率手段
  • 数据库同步

操作系统

  • 进程之间通信步骤

计算机网络

  • http和https有什么区别
  • 传输层的优化协议

设计模式

  • 了解哪些设计模式(我:所有设计模式,面:哦?)
  • 讲一下工厂模式
  • 工厂模式和抽象工厂的区别

iOS

  • 如何理解运行时
  • 运行时可以做什么
  • UIViewController的生命周期
  • loadView在什么时候执行,一定会执行吗
  • 如何解决死锁问题
  • 多个线程同时访问一个资源应该注意什么
  • 锁的原理是什么
  • 函数参数传入的一般是什么
  • 如果传入一个对象,函数中做一些改变操作,如果不想改变原对象,该如何
  • iOS有几种复制
  • 什么行为能够产生深复制
  • 复制的应用

java

  • 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上面说了什么改变

阿里HR面

自我介绍

面:这是我今天听过的最简单的自我介绍

我:严肃脸

项目相关

公司实习相关

对自己的认识

阿里加面二

闲聊

晚上7点一个电话响起,铃铃铃~

面:现在又把你叫过来面试,你今天应该面了5轮吧

我:恩......

项目

  • 享问作为一个创业项目的细节
    • 背景
    • 成员管理
    • 如何运营
    • 技术难点
    • 未来发展

实习

  • 实习的具体经历
  • 为什么没有选择去大企业实习

技术

  • 如何理解iOS系统
  • iOS和andriod在性能上又和区别,具体到实现呢
  • 设计模式是如何在iOS中体现的
  • 如何去优化项目

自我认知

  • 用三个关键标签定位自己,并说出充分的依据

阿里补招一面

项目

  • 分享一下之前做的项目,难点是什么
  • 刚刚说到你平时会研究的一些技术点,那么分享一两个

iOS

  • 如何利用Runtime进行字典转模型
  • 有没有研究过开源框架,有哪些收获
  • 如何设计保证三方库变动对项目本身影响最小
  • 有什么辅助工具去检测内存泄露
  • 内存泄露有哪些方式
  • block如何导致引用计数增加的

阿里补招二面

热身

  • 确认下是否有Offer了,已经签了三方了吗
  • 在美团的实习主要做了什么

iOS

  • 怎么理解JSBridge工作的
  • 对这种工作原理有觉得有什么缺点吗
  • 有了解哪些开源项目
  • 为什么大家要用AFNetworking
  • AFNetworking做了什么性能方面的优化
  • Masonry有什么亮点
  • Block循环引用如何解决
  • Runloop和线程的关系
  • MVC有什么不好的地方
  • 有了解过MVP吗
  • 如果让你设计dispatch_once,你会如何设计

计算机基础

  • 从浏览器查询一个关键字,从计算机原理到计算机网络,展示整个过程
  • 最后的响应报文如何解析到浏览器上有了解吗

算法

  • 一个算法:A和B两个序列,经历最小次数的操作,使得序列从A变成B

项目

  • 有参与过开源项目吗
  • 之前做的项目或者实习有比较具有挑战性的事情吗

百度

百度一面

自我介绍

......

算法

  • 打印100到200之间的素数

项目

iOS

  • UITableView如何调优
  • iOS内存管理模式
    • ARC全称

计算机网络

  • TCP和UDP的区别
  • 三次握手

数据库

  • 一个场景,手写SQL查询

百度二面

自我介绍

面试官好像认识我的样子,并没有自我介绍环节

算法

  • 反转链表
  • 三种方式遍历二叉树

iOS

  • 介绍iOS内存管理

计算机网络

  • TCP和UDP的区别
  • 手写TCP三次握手

设计模式

  • 手写代理模式

百度三面

技术相关

  • 花10分钟讲述一个技术点
  • JSPatch的原理以及苹果如何检测

其他

  • 项目细节(享问)
    • 如何带团队
    • 如何协调工作
    • 项目背景和目标
    • 成果
  • 对自己的规划
  • 有没有目标榜样
  • 来北京会不会压力过大
  • 对大公司和初创公司的选择
  • 同级别大公司如何选择
    • 答:提高技术
  • 具体怎么个提高法:
    • 答:三个方面......
  • 面试官介绍了百度如何能提高技术(大概10分钟)

腾讯

腾讯一面

自我介绍

......

闲聊

  • 我看你面的是iOS岗位,目前成都是没有iOS的
  • 东北大学的为什么来成都呢

计算机网络

  • 计算机网络一共有多少层
  • HTTP和HTTPS的区别
  • TCP三次握手

项目

  • 介绍一个比较典型的项目

iOS

  • MVC模式和MVVM模式区别
  • iOS内存管理方式
  • 如何解决iOS的内存管理出现的问题
  • iOS内存管理和andriod内存管理的区别

结尾

  • 我觉得你作为本科生是很优秀的
  • 介绍了成都这边的情况,目前andriod居多,没有iOS岗位
  • 你介意进入的话转岗到andriod开发或者weex开发吗
  • 你等下,我把你引荐到二面

腾讯二面

自我介绍

项目

  • 介绍一个比较好的项目

按照简历问

  • MVC模式C的臃肿和单薄如何控制,自己是如何写的
  • M不应该和V交互吗,M不是要显示到V上嘛(钓鱼执法)
  • Unicode和UTF-8的区别
  • 数据库事务是什么
  • JS可以用来做什么
  • JS能用来开发服务器吗,开发服务器用的引擎是什么

美团点评

美团点评一面

自我介绍

......

iOS基础

  • C++和OC有什么区别
  • 利用OC的动态特性能做什么
  • UITableView如何调优
  • 事件传递和事件响应
  • MVC和MVVM有什么区别
  • iOS的内存布局
  • 介绍ARC
  • 消息机制具体的步骤

iOS项目

  • 瀑布流如何布局
  • 有多个样式的Cell,你会怎么设计

算法

  • 两个有序数组,求第K大的数

计算机网络

  • TCP和UDP的区别

美团点评二面

自我介绍

面:这边没有找到你的简历

我:啊?那会不会没有优势啊

面:不会的,讲的好就行

iOS

  • iOS内存管理

操作系统

  • 进程之间如何通信

计算机网络

  • TCP三次握手具体流程(画出来)
  • TCP三次握手只允许用一个标志传递,如何控制
  • 为何要进行三次握手
  • TCP的拥塞控制

智力题

  • 坐标系中存在一个不规则多边形,判断一个点是否在其中

算法

  • 求二叉树中最大的距离

美团点评三面

自我介绍

面:没有我的简历

我:我用手机传一份吧

于是加了微信

项目

  • 享问
    • 背景
    • 团队协作
    • 如何设计产品
    • 运营成果

技术相关

  • 有了解过认证的协议吗
  • SSL的详细通信过程(纸画)
  • JSPatch原理
  • 如何模拟热更新的过程

产品经理

  • 如何设计一个首页
  • 产品经理应该具备哪些素质
  • 产品经理应该向程序猿交付哪些东西
  • 一般情况下,产品和程序猿配合出现问题,细节体现在哪里

个人

  • 你觉得自己最大的优点是什么
  • 是完美主义者吗
  • 在团队协作中会有觉得很垃圾的人吗
  • 团队协作中会觉得别人写的代码很垃圾吗

美团点评HR面

闲聊

  • 听面试官说特别想让你留在成都
  • 你是绵阳的吧,我是德阳的,大学在上海,就一直在上海工作了
  • 介绍了美团的餐饮事业群的详细信息(我并没有问...)

问题

  • 对一个薪资的要求
  • 意愿城市
  • 将来的规划

项目

  • 主要问了享问的细节
提问
  • 请问下我的评分sp机会大吗
  • 请问sp的一个标准是top几大概
  • 后续的通知会什么时候发出

今日头条

今日头条一面

自我介绍

  • 手里有你的简历,但是还是想听听你来自我介绍下

算法

  • 合并两个有序数组
  • 二叉树的反转

操作系统

  • 线程和进程的区别
  • 堆和栈的区别

iOS

  • load和initialize区别以及它们有哪些应用
  • 代码写在load和initialize中会影响启动吗
  • 介绍下iOS中的多线程
  • GCD手动创建的线程和GCD提供的API线程有啥关系
  • 有读过GCD的源码吗

今日头条二面

算法

  • 实现一个LUR Cache,包含读、写两个操作

iOS

  • block相关
  • 发送网络请求
  • MVVM
  • KVO
  • 消息机制

今日头条三面

算法

  • 查找两个节点的最近公共父节点

闲聊

  • 相比上次来面试提高了什么
  • 来段英文介绍
  • 拿过哪些offer
  • 为什么选择去天天狼人杀

iOS

  • AFNetworking的源码架构
  • 自己如何设计网络库
  • Masonry源码架构

计算机网络

  • TCP的三次握手
  • TCP的四次挥手

京东

京东一面

自我介绍

......

项目

  • 挑一个比较典型的项目进行分享

iOS

  • iOS中开发有哪些调优策略
  • KVO和KVC是什么
  • 工厂模式是什么
  • 工厂模式和抽象工厂的区别
  • 单例模式如何设计
  • 多线程有哪些
  • GCD中信号量怎么使用
  • 一个队列负责插入数据操作,一个队列负责读取操作,同时操作一个存储的队列,如何保证顺利进行
  • 原型模式

小米

小米一面

自我介绍

......

问:面试官您是从事什么岗位的呢

面:我是后台开发的

我:......

算法

  • 实现reHash方法细节

计算机网络

  • 在浏览器中输入一个域名会执行哪些操作

项目

小米二面

闲聊

问: 面试官您是从事什么岗位的呢

面:Andriod系统层开发

我:......

算法

  • 多个任务,具有起始时间和结束时间,任务是串行执行,规则如下:前一个任务结束时间和后一个任务开始时间不能相交,则计算最多的执行个数的路径为

java多线程

  • 在一个方法中有一个内部类,声明一个内部类类型的临时对象,然后开辟一个子线程去访问这个临时对象,最后在main中调用这个方法,问程序能正常运行吗,会出现野指针异常吗?

java基础

  • 弱引用和强引用的区别

项目

迅雷

迅雷一面

自我介绍

......

iOS

  • MVC和MVVM的区别
  • MVVM哪些东西是可以重用的
  • 如何进行自动布局
  • storyboard和纯代码布局的优劣
  • SDWebImage的缓存策略

项目

  • 享问细节

算法

  • LRU算法

深信服

深信服一面

自我介绍

......

面前摆放着一台联想笔记本

我:面试官是做什么开发的

面:我是做Linux开发的

我:......

面试体验

  • 拿着一份像是公司出的题,好几页,整个过程来回翻阅题,然后看到合适的就问

算法

  • 模式串匹配(用牛客的某个后台付费平台出的题)
    • 具体内容:普通字符+(通配符)?+(通配符)*
  • 二叉树的几种遍历方式

笔试题(可能测试是否作弊)

  • iOS数据持久化的几种方式
  • 如果是自定义文件如何持久化
  • 写出相应代码

C语言

  • 如何判断一个C语言结构体相等
  • 那如果是在Java中如何判断一个对象相等呢
  • C语言中static修饰符的作用

数据库

  • 数据库事务的特点

深信服二面

自我介绍

......

我:面试官您是做什么的岗位的呢

面:哦,我不是iOS的,可能没法面iOS方面的,我们就问一些算法吧

我:......

面试体验

  • 同样是不断翻面试题考
  • 基本是算法,以算法能力评估一个人的能力

算法

  • 设计一个算法求圆周率
  • 只能遍历一次文本,需要找出多个关键字的次数,位置
  • 找出一个32位数二进制表示法中1的个数(需要达到最优解)

商汤科技

商汤科技一面

自我介绍

面:不好意思,我这边好像找不到你的简历了,所以你得比较详细地介绍一下你自己

我:......

算法

数羊,给定一个初始数N,第一次数的数为N,第二次为2N,依次类推,直到kN,那么求当0-9的数全部都出现的时候的k值

iOS

  • 介绍property的修饰符
  • bounds和frame的区别
  • 在MRC中如何解决循环引用
  • 介绍多线程的实现方式
  • 介绍iOS中数据库,描述一下sqlite的表结构
  • KVO是什么,使用KVO需要注意哪些问题
  • GCD中的循环引用

商汤科技二面

自我介绍

我:接触iOS开发三年,上架的项目有5个...
面:哇,你比我开发还久,我上架项目也没有你多(见笑了大佬),不过我是做底层SDK开发的

算法

  • 面试官没说清楚题
    • 然后边讨论题应该怎么设计,边聊思路

设计模式

  • 拿到一个项目,应该如何设计架构
  • MVC模式是怎么交互的
  • UITableViewCell如何实现代理模式的
  • 谈谈KVO模式如何实现

计算机网络

  • 三次握手的细节
  • 状态码
  • 如何设计缓存策略

操作系统

  • 谈谈多线程的底层原理

iOS

  • 内存管理修饰符的区别
  • 介绍一下深复制和浅复制
  • 描述一下runtime
  • runtime可以做什么事情
  • 描述一下runLoop
  • runLoop又可以做什么事情
  • 介绍一下iOS中的多线程
  • GCD有哪些常用的API
  • 使用GCD应该注意什么问题
  • iOS内存管理方式
  • iOS的沙盒

商汤科技三面

自我介绍

我:开发过五个上架APP

面:哇,这么多

项目

  • 动机
  • 过程
  • 扮演角色
  • 收获
  • 有哪些不足
  • 具体每个项目还聊了可行性(其中有创业项目)

技术

  • git相关操作
  • 多线程底层原理

人生

  • 职业规划
  • iOS工作想要从事前端UI还是高性能
  • 想要从事前端移动端还是愿意从事后台的工作

商汤科技HR面

  • 有了解过相关工作内容吗,是否和预期一致
  • 对公司了解吗
  • 我给你介绍下吧
  • 工作城市选择
  • 目前有offer吗
  • 实习时间
  • 目标公司的特点

顺丰科技

顺丰科技一面

自我介绍

......

项目

  • 享问的细节

计算机网络

  • 三次握手过程

Java

  • Java的引用和对象的区别

设计模式

  • 解释单例设计模式
    • 应用场景
    • 和静态方法的区别

算法

  • 快速排序的原理
  • 线段树

iOS

  • MVC模式
  • MVVM和MVC的区别

顺丰科技HR面

自我介绍

......

项目

  • 讲一个最好的项目

闲聊

  • 有面过其他哪些公司
  • 对于深圳压力大如何看待
  • 东北大学的学生为什么来成都面试
  • 介绍一下家庭情况
  • 家里人对于工作地点的建议
  • 自己对工作城市的选择
  • 优点和缺点

我的提问

  • iOS岗位主要做什么
  • 薪资如何
  • 加班严重吗
  • 公司有食堂吗

招银网络

招银网络一面

自我介绍

......

项目

  • 享问细节
  • 有做过日志管理吗
  • 更新版本的内容是通过什么方式获得的

iOS

  • iOS内存管理方式
  • 项目架构图
  • iOS推送是什么
  • 浏览器可以分享东西到具体APP,这样是如何实现的
  • 有做分享吗

招银网络二面

自我介绍

面:你面试这么多了,自我介绍太累了,就省去吧

我:(中国好面试官!)

项目

  • 享问细节
  • 如果保证团队顺利运行
  • 未来目标

招银网络HR面

自我介绍

.....

项目

  • 享问细节

闲聊

  • 成绩排名
  • 有奖学金吗
  • 有挂科吗
  • 意向城市是哪里,成都这边不确定有iOS岗位,我得问问
  • 优点和缺点

结尾

看到这里的童鞋们,预祝你们秋招成功,成为Offer收割机!
点个赞吧~

觉得整理的蛮不错,可以赞赏一下旺仔(收集整理不易,且赞且珍惜)

链接