iOS秋招面经(百度、腾讯、今日头条、网易等)~

我投的iOS移动端开发,分享下秋招以来的各个公司面试经历吧~

360
一面
(1)自我介绍
(2)实习项目介绍
(3)如何获取到相机采集的画面
(4)知道CMSampleBuffer吗?
(5)怎么把相机采集到的画面显示出来的
(6)介绍一下人脸识别的流程
(7)A是父类,B是子类,在B中输出【self class】和【super class】结果是什么
(8)对runtime有了解吗?有用runtime做了什么
(9)接触iOS多久了
(10)了解静态库吗?
(11)framework是不是可以编译成静态库?framework静态库与.a有什么优点
(12)是不是做过流媒体?
(13)对socket有了解吗?简单说一下两个人聊天,大概的思路是什么?
(14)多线程用的是什么呢?是怎么用的?
(15)串行队列,异步执行会开几个线程?
(16)在异步执行的时候,里面写了多个方法,这些方法是怎么执行的呢?
(17)对runloop的了解
(18)在哪些方面用到过runloop?
(19)了解kvo吗,说下kvo的原理
(20)觉得哪个知识点是最难的,或最有意思的,遇到了什么困难
(21)项目的框架是怎么样的框架、结构
(22)组件化的流程是怎么样的呢、怎么实现组件化的
(23)基础组件、业务组件是怎么划分,怎么通讯的
(24)引入了一个组件,那需要引入这个组件的头文件吗?
(25)你再继续介绍下项目的框架,我看看还有什么可以问你的
(26)在用网络库的时候,有没有用过上传下载功能?
(27)怎么实现上传下载的端点续传
(28)有实现过全屏pop吗

点评:360是我秋招的处女面,由于第一次面是,经验不足,没有把所聊的技术控制在自己熟悉的范围内,挖了好多不太懂坑,把自己埋进去了,例如说流媒体、组件化等内容都是自己根本hold不住的知识点,所以回答的时候支支吾吾。此次面试总结:(1)不要把自己的底完全暴露给面试官,要保持神秘感,让面试官看不出你的深浅,这样面试官也许就会把你往厉害的方向想。(2)回答问题时,讲的东西一定是要100%准备好的,经过深入研究的知识点。不然容易自己挖坑坑道自己


便利蜂
一面
(1)自我介绍
(2)项目相关
(3)在团队里面做了哪些工作
(4)H5时如何调起端上的服务
(5)从什么时候开始学iOS
(6)iOS多线程技术
(7)SDWebImage的缓存策略是什么
(8)SDWebImage是如何保证在UI滑动时不进行解码操作的?
(9)为什么要RunLoop,RunLoop是干嘛的
(10)RunLoop和屏幕刷新是绑定的吗?
(11)KVO实现过程
(12)对象里面的isa指针是用来做什么的?他的内容是什么?isa指针的低4位有什么其他的用处?听说过tagged Pointer吗
(13)iOS的内存管理
(14)arc与mrc有什么区别?
(15)arc如何判断插入retain和release操作的位置?
(16)block如何管理他捕获的变量
(17)__block关键字做了什么事
(18)假如说block里面引用了一些oc对象,block被编译成了c函数,那这个编译成c函数的block是如何对他捕获的变量进行arc的内存管理的呢?
(19)OC里面的Foundation对象和Core Foundation对象是如何进行无缝转换的
(20)下断点调试时,发现程序崩在一个objc_msgSend函数里面,这时候可以看的到当前正在调用哪个对象的哪个selector吗?
可以的,可以查到调用的堆栈信息。还可以将这个堆栈信息dump下来
(21)在一个上架的APP的调私有API是可以做到的吗?
(22)21题的另外一种问法:知道一个私有函数的名字,我能不能调它?(这个名字不能写在我的代码里,不然被苹果扫描出来会被拒绝)
(23)CAlayer和UIView的关系
(24)手势识别器和响应链有关系吗?
(25)屏幕上有一个scoreView,scoreView上有一个UIButton。按住button,button会高亮,这时候拖动,scoreview会滑动吗?
(26)iOS的你用过哪几种
(27)有一组很大的数据,找出前100大的数?
(28)算法题:有一个很大的整数(字符串),判断其能不能被3整除
(29)快排的思路?快排的优化?

二面
(1)自我介绍
(2)介绍项目
(3)(4)(5)(6)(7)围绕项目题问题
(8)简要介绍一下PB?
(9)做iOS过程中遇到过哪些难以解决的问题
(10)内存泄漏有遇到过吗?怎么解决?
(11)有在客户上用过么
(12)对象很小,但是量非常多的循环引用怎么解决?
(13)两个链表中间交于某个节点,求这个结点。
(14)概率题:飞机有100个座位,有100个乘客。第1个乘客没有登机牌,其余99个有。第一个乘客上机时随机选择一个座位。第二个乘客上机时,如果发现自己的座位没有被坐,就会坐到自己的座位上,否则他会在剩下的空座位上随机选择一个座位坐下。问第100个乘客上机时,能坐到自己座位的概率是多大

点评:便利蜂的两面比较常规啦,问的都是iOS的知识,而且深入的问题也不少,不过一面的面试官看着比我年纪还小,估计是刚工作一两年的,感觉完全hold不住面试的气场,很容易就被回答带跑23333,不过问的技术还是挺有深度的。二面面试官主要是围绕实习项目进行提问,问的问题也涉及到了更多的趋向runtime、对象模型、hook方法等OC动态特性。最后出的概率题让人耳目一新,面试的时候我猜到答案是1/2,但是证明不出来,被面试官嘲笑说是不是概率没学好2333,不过这个问题在知乎上能搜到一个挺有意思的思考方法。

饿了么
一面
(1)如何增大UIButton可触控范围
(2)为什么分类不能添加成员变量
(3)两个分类同时实现一个回调方法,哪个先执行?
(4)SDWebImage如何实现下载图片过程中逐渐显示图片?
(5)设置backgroundColor,是在runloop的什么阶段?
(6)以后问怎么用1M的内存对1G的数据排序?
(7)CocoaPods的实现
(8)AFN用什么方式实现多线程?
(9)有什么问题想问我

点评:饿了么的8个问题有6个问题答不上来,我想静静0.0
好未来
一面
(1)自我介绍
(2)什么时候开始接触iOS开发
(3)介绍项目
(4)讲一下类和对象的关系
(5)KVO、Notification、Block、***的区别
(6)UIView和CALayer之间的关系
(7)为什么要这样设计?
(8)UIView和CALayer的父类是什么?
(9)数据持久化有哪几种方法?
(10)SQL语句会写吗?
(11)简要介绍一下事务,在数据库中使用事务能达到什么效果。
(12)用过RunTime做什么?
(13)有个场景,需要做一个统计,比如说界面的进出,需要做一个埋点,通过runtime去做这样一个需求?
(14)对多线程有了解吗?假如说有5个任务,异步执行,如何获取到最后一个任务的完成时机?
(15)5个任务,异步,顺序执行
(16)对socket有了解吗?加入说socket异常断开了,设置一个合理的重连机制
(17)常用的开源框架,看过源码吗?
(18)SDWebImage支持的最大并发线程数是多少?
(19)openGL有了解吗?
(20)尝试封装过哪些开源框架?
(21)有写过自定义控件吗?
(22)技术难点?
(23)有什么问题要问我

二面
(1)iOS开发接触多久
(2)介绍一下iOS里面消息传递机制(touch了界面,这个touch事件是怎么传递的)
(3)消息传递、hitTest内部实现的数据结构是怎样的(设计的)
(4)用伪代码实现下这个hitTest的过程
(5)多线程编程
(6)线程切换的原理(在主线程将某个函数func抛到子线程执行,数据是怎么从主线程传过去的),不懂的话说下设计
(7)一直再问操作系统里线程切换是怎么实现的,怎么把线程调用函数的参数抛到另一个线程(我也不知道怎么回答)
(8)不知道为什么提到了线程池?
(9)同时多个网络请求(例如socket)访问时,通过线程池也没有办法处理这个多访问量时,要怎么做?
(10)反正一直根据我的回答在问讨论线程的设计(扩展性、安全性)
(11)设计一个QQ聊天(查看对方在线情况、发送文本、语音、图片、视频)
(12)只给你一个服务器,但是有非常大量的客户端连接上来,怎么解决这个问题?
(13)给予TCP,如何设计这个聊天协议?
(14)写伪代码实现一下
(15)TCP是基于流式传输的,怎么设计协议,进行协议的解析?
(16)写为代码实现一下
(17)有什么问题要问我

点评:好未来一面挺中规中矩的一次面试,问的内容也挺基础,但我感觉我的回答总是和面试官不在一个频道上=。=  
好未来的二面是我秋招以来经历的最蒙蔽的面试,我面的是移动端,但所问问题和客户端开发感觉关联性不大,更像是服务端需要了解的东西,面试时我一度怀疑是不是投错了岗位了,最后让我提问的时候,我问了他为什么问了我这么多和客户端无关的问题,面试官回答竟然是说考察我是不是有能力拿SP(黑人问号?),后来回去我想了想,估计面试官是做后台的,这只是给这次尴尬的面试一个台阶下吧233333。

今日头条
一面
手撕算法
(1)给定一整数数组,求其中和最大的子数组,并将这个和返回
(2)用单链表来表示一个整数,最高位为最后一个节点。写出两个整数相加的的方法
iOS问题
(1)视频直播怎么实现部分加载
(2)AVFoundation加载部分数据
(3)设计一套协议实现断点续传
(4)怎么实现上传任务的断点续传
(5)进程和线程的区别
(6)结合iOS说一下对进程和线程的理解
(7)iOS实现多线程的方式有哪些
(8)gcd有几种队列
(9)串行队列和并发队列的区别
(10)队列的线程的关系
(11)什么是死锁
(12)gcd有什么情况下会发生死锁
(13)gcd相互分配并发队列执行任务有可能产生死锁吗?

二面
不记得了23333

三面
(1)闲聊
(2)实习学到了什么东西
(3)网络框架用的是什么
(4)设计一个网络框架,会从那哪些方面考虑呢?
(5)发送网络请求,什么时候连IP、什么时候连域名?
(6)有考虑过其中的原因吗?
(7)项目开发遇到的问题和解决方案
(8)讲一下动态下发、动态修复
(9)讲一下参与到了哪些评审
(10)缓存淘汰有哪些策略?怎么实现
(11)面试官介绍团队
(12)工作意向和规划是啥
(13)有什么要问我的

点评:头条是最爱考手撕算法的公司没有之一哈,,头条第一看重的是手撕算法的能力,面客户端要求手撕算法能力没有像面后台的高,不过,面试官会更看重是否考虑到各种异常输入输出。 头条面试官给人的感觉还是非常nice和专业的,首先问的问题由浅到深,会先问一些比较基础的知识,看你回答的不错,就会问一些稍微高逼格的问题,探探你的底,如果回答不出来,面试官也不会表现出压迫力,而会转向让你介绍一下最熟悉、最拿手的项目,好感度MAX!

百度
一面
(1)自我介绍一下
(2)项目介绍一下
(3)有了解过SDK开发吗
(4)有接触过OpenGL吗
(5)从什么时候开始做iOS的
(6)iOS对象间都有哪些通讯方式
(7)详细说下iOS通过***通讯
(8)详细说下用block来进行通讯
(9)使用block时有遇到过循环引用吗?怎么解决?
(10)使用weakself时,如果保证怎么保证不会执行到一半时对象weakself指向的对象不会因为生命周期结束而销毁呢
(11)怎么理解weak关键字
(12)平时有用过NSTimer吗?可以详细讲下吗?
(13)**如何把一个NSTimer从一个runloop中移除出去。(在一个子runloop停止timer用什么方法?invalidate吗,invalidate后,这个runloop能退出吗)(有一个NSOperation,定期的5s检查一个事件,自己继承了一个Operation ,在main 方法里面实现了timer,如何停掉NSOperation里面的timer,好让NSOpertion结束)
(14)平时有使用过CoreFoundation的对象吗?
(15)iOS里面多线程的技术有哪些?
(16)NSOperation与GCD相比还有有哪些优势?
(17)讲一下对GCD的理解
(18)dispatch sync和async指的是什么?
(19)sync和async会创建一个新的线程吗
(20)串行队列和并发队列的区别
(21)所有被分配到一个串行队列的任务都会在同一个线程里面执行吗?
(22)线程同步的方式有哪些?
(23)dispatch相关的加锁方法有哪些?
(24)dispatch_barrier_async 有一个队列,后面又一个任务,这个队列能用global queue吗?
(25)有用过NSOperation里面和线程同步相关的方法吗?
(26)持久化相关的技术有哪些?
(27)NSUserdefault 可以存int,float等数据吗?
(28)NSUserdefault 可以存NSData等数据吗?
(29)NSUserdefault 可以存NSArray、NSDictionary等数据吗?
(30)SQLite有用过吗?SQLite是线程安全的吗?
(31)CoreData是线程安全的吗,FMDB是线程安全的吗?
(32)CLLocation这种对象怎么持久化
(33)介绍一下SSL的握手过程
(34)有用过抓包工具吗?
(35)抓包工具的原理是啥?
(36)怎么抓HTTPS的包?
(37)中间人攻击
(38)https通讯的话,代码怎么实现CA证书校验?
(39)CA证书校验都有哪些类型可以检验
(40)socket编程有了解吗?用在项目的哪里?
(41)客户端编程的时候,客户端send成功了,服务端没收到,有什么可能的原因?
(42)平时写代码的时候有遇到过内存泄漏吗?遇到内存泄漏的时候是怎么追查的呢?C /OC混编时,C 对象的内存泄漏问题怎么追查?
(43)在XCODE运行程序时,左边的指示器显示内存一直在增长,但在instrument的leaks里面检测不出来泄漏怎么追查?
(44)crash了怎么追查?
(45) 客户手上的APP crash了,但是开发这边复现不了,要怎么追查?

二面
(1)自我介绍
(2)闲聊
(3)介绍一下实习的内通
(4)介绍实习项目、难题、如何解决
(5)介绍学校的项目
(6)面试官介绍他们团队技术积累
(7)有什么问题想问

三面
(1)闲聊
(2)对我们部门有什么了解
(3)面试官介绍部门业务
(4)介绍一下实习所做的工作
(5)实习有什么收获
(6)对自己的职业有什么规划
(7)讲下实习过程中或上学过程中做的比较有成就感的项目
(8)希望以后加入团队的氛围是怎样的
(9)作为一个研发,希望和产品的关系是怎样的,如果和产品的关系不太融洽,你应该如何避免这个问题。
(10)自己发现一个bug,这个bug可以掩盖过去、也可以花时间去修复。如果提出花时间可能会使项目delay,让整个team受到批评,但如果只是掩盖过去,可能会使产品性能受影响,你会怎么处理?
(11)在工作过程中可能会遇到许多事情,例如:手上还没完成的代码、新的需求、QA提出的bug、被邀请到别的部门作分享,另外的team请求配合联调,你是怎么判断这些所有事情的优先级的?
(12)怎么做时间管理,例如说手上有一件紧急的任务要做,突然被另一件事打断?怎么处理
(13)怎么判断一件事情的紧急程度,优先级最高的是什么?
(14)对北京户口有要求吗
(15)问我问题吧

点评:百度面试是让我最受宠若惊的面试。一面面试官是个看上去是个不苟言笑的技术大牛,问的问题也挺全面和有深度的。但自从二面开始,气氛就变了,百度的二面是一个T7的高工,三面是总监,除了闲聊实习经历和项目经理之外,两位面试官斗挺热情的主动介绍他们团队的技术氛围、业务方向,甚至还对我的以后人生规划和职业规划做出了比较详细的建议和意见,是在是太让我受宠若惊了,3轮面试下来,我觉得我回答问题的时间还没有几位面试官介绍团队介绍技术介绍自己的时间多(至少面其他公司还没遇到过面试官主动介绍自己的职级的)。一点也没感受到互联网巨头的应该有的气势和压力23333,整个面试聊的挺嗨的。


腾讯
一面
(1)两分钟介绍自己
(2)iOS实现多线程有哪些方法?各有什么好处和坏处?
(3)要控制多线程的并发数,有什么方法可以达到?
(4)有用户抱怨说发消息慢,你要怎么分析和解决这个问题?
(5)介绍自己的项目,遇到什么挑战,有什么困难。
(6)面前有一个格子,m*n,从左上角角走到右下角,每次只能往右或下走,走到最右下角有多少种路线?如果限制最后一行不能走,那要怎么办。

二面
(1)自我介绍
(2)介绍学校项目
(3)围绕着学校的项目聊了大概30分钟
(4)围绕着实习经历聊了大概10多分钟
(5)有什么想问我的

三面
不是很记得了233333

hr面
也不能说是面试,只是简单的和hr聊了一下

气质面
(1)自我介绍
(2)介绍实习
(3)介绍项目:原理、架构、性能、效果、优化等问题
(4)连环问题:
1、怎么看你做的这个模块质量如何?比如说有什么预期效果,有什么指标之类的?
2、怎么去判断你这个产品有出现问题?
3、如果测试阶段没有发现问题怎么办,你要怎么判断这个产品有没有出现问题?
4、如果用户不愿意反馈,怎么办,怎么判断你做的这个产品有出现什么问题?
5、用户看到你的短信就烦,根本不理睬,你要怎么判断你做的产品什么问题?
(5)介绍参加过的比赛,针对一个比赛提问:
1、为什么能拿第二?
2、和第一名比差在哪里?
3、和第三名比又好在哪里?

点评:腾讯的面试和其他公司的面试挺不一样的,基础知识考的非常少,也不难,反倒是对项目还有实习经历挖的比较深。就像二面时,面试官没问我移动端的东西,反倒是从我简历上找出了唯一一段和与iOS无关的经历,聊了一个多小时。三面的面试官也是对实习所做过的项目各种深挖。我觉得这体现出腾讯公司看中面试者不仅仅是对知识掌握的宽度,更加看重面试者的学习能力和思考能力。对没做过的东西可以不懂,但是对做过的项目一定要深入的思考、理解和掌握。而且,作为程序猿不仅仅是能够敲代码,还必须有一点产品的思维方式才行。


携程
投递简历——>能力测评——>能力测评不通过

点评:还有这种操作(黑人问号???)


滴滴
面试过程比较的曲折。。。

点评:真的不想黑,但是今年滴滴校招真的出了很大问题啊,从8月初牛客讨论区被滴滴内推码刷屏,到内推笔试编程题比选择题简单,提前几十分钟交卷也没有面试机会,再到秋招笔试难度忽然加大,到面试各种被放鸽子。每一个环节都有意向不到的惊喜。不过我后来有幸认识了滴滴校招组的人,聊了一下,发现锅全甩在临时工和实习生身上了23333333。


阿里
内推——>已回绝——>转自主投递——>笔试——>已回绝

点评:有过携程和滴滴的面试经历,已经波澜不惊了2333333。



网易有道
一面
(1)自我介绍
(2)聊实习经历
(3)墙和***的原理是什么?
(4)对于数据库来说,如何提高查询的性能
(5)计算机里面,CPU与GPU的区别
(6)进程和线程的区别
(7)OC里面数据的持久化有哪些方式?
(8)手写代码:输入一个字符串和一个整数k,将这个字符串每隔k字符,进行翻转
(9)有什么想问我的

二面
(1)自我介绍
(2)介绍实习
(3)手撕算法:
1、字符串解码:4[c2[abd]]->cabdabdcabdabdcabdabdcabdabd
2、输入一个数字组成的字符串,要求出所有可能的ip地址组合
例如:
输入25525220
则255.252.2.0和255.25.22.0都是可能的输出,求出所有可能的输出
(4)有什么问题想问的

三面
(1)自我介绍
(2)聊实习
(3)短连接系统设计
1、短链接,能够把网址缩短
2、如果用户访问短链接,系统能够跳转到长链接
3、访问量每天几亿
设计一个系统实现以上功能

分享下我的思路吧:短链接的生成用派号器。短链接与长链接的转换映射关系存储在一张表里。过亿的访问量需要设计分布式系统处理(一致性哈希),并采用paxos算法来维持各子系统短/长链接的映射表的一致性。
我做客户端的,对这种系统设计没啥经验,还请各位后台大佬指教一下。
(4)聊实习项目
(5)有什么想问的

点评:网易有道技术岗就只有研发工程师一个岗位,所以无论是前端、后台、还是客户端都是在一起面的,所以问的问题偏向于计算机基础知识以及手撕算法。总体的难度不大,但是需要对计算机的知识面广一点,例如我投的移动端却让我设计一个短链接系统0.0,还好平时吃饭的时候经常听到实验室做同学讨论一些分布式问题,耳濡目染之下也能忽悠一下2333333。




说点感悟:找工作确实很累很苦,要被各个公司各种笔试面试蹂躏,一个人遇到阻碍难免会有灰心丧气的时候,所以我觉得更佳有效的准备方式是小团体作战。有共同目标、共同方向的一群人组成一个小团体,一起面对笔试面试、一起分享面试经验、一起讨论,遇到困难时,相互鼓励和扶持,肯定比一个人瞎复习来的好。俗话说,两个人每人有一个苹果,他们交换后每个人还是只有一个苹果。但是两个人每人面了一次试,那他们分享经验后就相当于有了两份面经了2333333。最后宣传一下我们的小团体吧,524757687,2018校招iOS开发讨论群,上述所有问题群里的大佬都能一一为你解答,每天群里的大佬们也会分享和讨论各自的面经,氛围非常的好。欢迎各位的加入~~
#腾讯#
全部评论
怎么能把面试问题记得那么清楚…我面完就忘了大半
点赞 回复
分享
发布于 2017-09-17 12:56
没有意向书都是空的,我腾讯8.19的时候hr也给我说面试全部通过,还不是拥抱变化了。 不是打击你, 还是恭喜大佬,至少非常接近了!
点赞 回复
分享
发布于 2017-09-17 13:12
联想
校招火热招聘中
官网直投
赞一个,牛!!!
点赞 回复
分享
发布于 2017-09-17 12:49
感谢大佬
点赞 回复
分享
发布于 2017-09-17 12:51
来人!拖。。。等等,这是一个正经的疯子。。。
点赞 回复
分享
发布于 2017-09-17 12:52
那么多面试机会,大佬~
点赞 回复
分享
发布于 2017-09-17 12:56
这次我疯了
点赞 回复
分享
发布于 2017-09-17 12:58
羡慕大佬
点赞 回复
分享
发布于 2017-09-17 13:13
斩获了多少个offer  
点赞 回复
分享
发布于 2017-09-17 13:21
又疯了一个我
点赞 回复
分享
发布于 2017-09-17 13:25
大佬
点赞 回复
分享
发布于 2017-09-17 13:28
看了标题没猜中,给你点睛
点赞 回复
分享
发布于 2017-09-17 13:56
点赞 回复
分享
发布于 2017-09-17 14:02
大佬
点赞 回复
分享
发布于 2017-09-17 14:06
真的赞!👍
点赞 回复
分享
发布于 2017-09-17 14:29
哈哈哈小团体来顶贴啦~~大佬真的厉害~~
点赞 回复
分享
发布于 2017-09-17 14:46
好厉害,羡慕呀。
点赞 回复
分享
发布于 2017-09-17 14:50
大佬!
点赞 回复
分享
发布于 2017-09-17 16:23
大佬不是内推?是做完笔试秋招的面试吗?哪个地区的?
点赞 回复
分享
发布于 2017-09-17 18:07

相关推荐

31 108 评论
分享
牛客网
牛客企业服务