跳动,京东,小米,腾讯面经&求职简历模板:iOS程序员只能帮你到这了!

以下文章是我去年拿到 Offer 以后的总结,最近可能是招聘开始了,我发现文章的阅读数量又大幅度提高,所以复制过来希望帮助到有需要的同学。

BAT复习资料+内推 (点这里腾讯文档

作为一名 iOS 开发者,我所理解的基础是 操作系统、网络和算法这三大块

关于简历的书写,推荐这篇文章:如何写面向互联网公司的求职简历程序猿简历模板。你也可以参考‘跳槽季’ iOS开发者,写一份成功的简历?,如果你没有亮点,就当是抛砖引玉。

注意文末有提供复习资料!

百度面试

一面:约 1.5 小时

首先是四个算法题:

不用临时变量怎么实现 swap(a, b)——用加法或者异或都可以

二维有序数组查找数字——剑指 offer 第 3题

亿级日志中,查找登陆次数最多的十个用户——(不确定对不对,我的思路是)先用哈希表保存登陆次数和ID,然后用红黑树保存最大的十个数。剑指 offer 第 30题

简述排序算法——快排,partion函数的原理,堆排(不稳定),归并排序,基数排序。

然后有一个,没完整的答出来,好像影响不是很大。

最后是 iOS 相关,面试官问的很开放,都是谈谈自己的理解:

说说你对 OC 中load方法和initialize方法的异同。——主要说一下执行时间,各自用途,没实现子类的方法会不会调用父类的?

说说你对 block 的理解。—— 三种 block,栈上的自动复制到堆上,block 的属性修饰符是 copy,循环引用的原理和解决方案。

说说你对 runtime 的理解。——主要是方法调用时如何查找缓存,如何找到方法,找不到方法时怎么转发,对象的内存布局。

说说你对 MVC 和 MVVM 的理解。—— MVC 的 C 太臃肿,可以和 V 合并,变成 MVVM 中的 V,而 VM 用来将 M 转化成 V 能用的数据。

说说 UITableView 的调优。——一方面是通过 instruments 检查影响性能的地方,另一方面是估算高度并在 runloop 空闲时缓存。

谈谈你对 ARC 的理解。ARC 是编译器完成的,依靠引用计数,谈谈几个属性修饰符的内存管理策略,什么情况下会内存泄露。

一面的问题非常基础,主要是算法和 Objective-C,因为准备比较充分,基本上答出来 80% 吧。大约一周后突然二面。

二面:约 0.5 小时

二面比较突然,显示简单的自我介绍,然后问了三个问题:

野指针是什么,iOS 开发中什么情况下会有野指针?——野指针是不为 nil,但是指向已经被释放的内存的指针,不知道什么时候会有,如果有知道的读者还望提醒。

介绍 block。—— (接第一问) 我让面试官提示我一下什么时候会有野指针,他说用 block 时,我表示还是不知道,只知道 block 会有循环引用。于是就扯回了一面的问题。

说说你是怎么优化 UITableView 的。——还是一面的问题。。。。。。。。。。。

虽然通过了,但是几乎又问了一遍一面的问题让我感觉对方不太认真。

三面:北京 onsite,约 2.5 小时

首先是给一个小时,手写算法:

首先是给一个小时,手写算法两个算法题。接下来问了 TCP 握手相关的。最后问了 OC 的一些细节问题。

网易 笔试

主要是计算机方面的大杂烩,涉及操作系统,网络,移动开发,算法等。难度不大,目测是为了淘汰浑水摸鱼的人,就不列出题目了,算法有三题,直接在线写(木有 IDE 表示很忧伤):

很长一道题,读了很久才读懂,目测是 DFS,但是最后没时间了,写了个思路。

把 "www.zhidao.baidu.com" 这样的字符串改成 "com/baidu/zhidao/www"。——老题目了,剑指 offer 的,两次逆序排列即可。

求数组中和为某个值的所有子数组,比如数组是[5,5,10,2,3]一共有四个子数组的和是 15,比如[5,10],[5,10],[10,2,3],[5,5,2,3]。这个就是简单的递归了,分两种情况,当前位置的数字在子数组中,以及不在子数组中。

网易一面

全部是 iOS 题,可能是觉得算法已经面过了:

介绍 block。——我提到栈上的 block 在 ARC 下会自动复制到堆上,面试官问我从 iOS 4 还是 5 开始支持这一特性,表示不知道,我又不是学 OC 历史的,后来想想可能是公司内部老项目有这个坑。

ARC 会对代码做什么优化?——比如NSString *s2 = s1; s2 = nil这样的语句,可能就不会有retain和release方法了。

介绍一下 MVVM 和 RAC。——可能是我简历的某个角落写了用过 RAC,被挖出来了,大概谈了一下,结果面试官问我数据的双向绑定怎么做,bind函数了解过么,果断说已经忘了😂😂😂

介绍自己用过哪些开源库。——Masonry 和 SnapKit,AFNetWorking,MKNetworkKit,Alamofire,Mantle,SDWebImage

如果让你写,你能实现么?——当然不能,不然还要实习?

读过某个库的源码么?——扯了一点 SDWebImage,后来被告知这个库用了 runloop 来保证滑动是加载数据的流畅性,自己看了源码后表示没有发现,唯一用到 runloop 地方是保证后台线程一直跑,也有可能是我理解错了,如果错误欢迎指正。

SDWebImage 下载了图片后为什么要解码?——当时蒙住了,面试官很 nice 的解释了一下,说是要把 png 文件建立一个什么内存映射,目前还不太懂,有空研究一下。

本来以为面的这么差肯定是挂了,没想到还是过了一面。过了不到一个小时,HR 电话打过来,约了两天后二面。

网易二面

纯数学和算法:

下面这段代码的输出结果是:

int main() {

int a[5]={1,2,3,4,5};

int *ptr=(int *)(&a+1); 

printf(“%d,%d”,*(a+1),*(ptr-1));

}

答案是 2 和 5。a是指向数组开头元素的指针,a + 1就是指向下一个元素的指针,所以星号求值以后是 2。&a相当于是数组的指针,&a + 1是数组后面一个数组的指针,然后转换成int *类型是 5 这个数字后面的一个数字的指针。再减一就是指向 5 的指针,所以星号求值以后是 5。

某个地方天气有如下规律:如果第一天和第二天都不下雨,则第三天下雨的概率为30%;如果第一天和第二天中有任 意一天下雨,则第三天下雨的概率为60%。问如果周一周二都没下雨,那么周四下雨的概率为_。

简单的概率题,答案是:30% * 60% + 70% * 30% = 39%

某痴迷扑克的小团体喜欢用23456789TJQKA来计数,A后面是22,23,...,2A,32,...,AA,222,... 依次类推。 请用C/C++或Java写个程序,将用字符串表示这种计数法转换成字符串表示的10进制整数。其中,该计数法的2就对应于十进制的2,之后依次递增。C/C++函数接口: charpokToDec(char )

我的解决思路是进制转换,类似于 16 进制转换 10 进制这种,最后再把数字转成char *类型。

然后好像没结果了,可能是编程实现太渣了?

其他我知道的面试题

阿里一面:

MVC具有什么样的优势,各个模块之间怎么通信,比如点击 Button 后 怎么通知 Model?

两个无限长度链表(也就是可能有环) 判断有没有交点

UITableView的相关优化

KVO、Notification、delegate各自的优缺点,效率还有使用场景

如何手动通知KVO

Objective-C 中的copy方法

runtime 中,SEL和IMP的区别

autoreleasepool的使用场景和原理

RunLoop的实现原理和数据结构,什么时候会用到

block为什么会有循环引用

使用GCD如何实现这个需求:A、B、C 三个任务并发,完成后执行任务 D。

NSOperation和GCD的区别

CoreData的使用,如何处理多线程问题

如何设计图片缓存?

有没有自己设计过网络控件?

阿里二面:

怎么判断某个cell是否显示在屏幕上

进程和线程的区别

TCP与UDP区别

TCP流量控制

数组和链表的区别

UIView生命周期

如果页面 A 跳转到 页面 B,A 的viewDidDisappear方法和 B 的viewDidAppear方法哪个先调用?

block循环引用问题

ARC的本质

RunLoop的基本概念,它是怎么休眠的?

Autoreleasepool什么时候释放,在什么场景下使用?

如何找到字符串中第一个不重复的字符

哈希表如何处理冲突

面试收获
  1. 算法题怎么答

面试官可能会问到你闻所未闻的算法,这时候你不应该自己瞎想,而是先和面试官把问题讨论清楚。要知道,通过沟通弄明白复杂的问题也是一种能力,在和面试官交流的过程中,不仅仅可以搞清楚题目真正的意思是什么,还可以展现自己良好的交流沟通能力。所以千万不要因为紧张或者害羞而浪费这次大好的机会。

有些题目似曾相识,但是暂时没有思路。这时候不妨告诉面试官,给我一些时间思考这个题。然后不要急,不要慌,就当他不存在,拿出纸和笔慢慢算(这充分说明了面试戴耳机的重要性)。你一定要坚定一个信念:“任何一道稍微有难度的算法题,除非做过,否则一定是需要时间想的”。所以,合理的安排思考时间吧。如果十几分钟都想不出来,可以直接放弃

有时候面试官会要求在线编程,相信我,他不会无聊到盯着你的代码看的,面试官一般都很忙,他也有自己的工作要完成,所以你就当是用自己的 IDE 就好。在线编程往往是一个中等难度的问题,所以不要自己吓唬自己。同时要注意代码格式的规范,适当的注释,提前编写好测试用例等,即使没有解决问题,也至少要把自己良好的编程习惯展示给面试官

2. 遇到不会的问题怎么处理

这个问题有可能是面试官故意说得含糊不清,考察你的交流能力,也有可能是无意的,或者是你的理解方式出现了偏差。不管是以上哪种问题,你都应该先和面试官交流,直到你搞懂了面试官要问你什么,而不是按照自己的理解说了一堆无用的东西。

举个例子,面试官可能会问了一道算法题:“如何判断两个无限长度的链表是否有交点?”。对于“无限长度”可以有不同的理解,如果真的是有无穷多个节点,那显然这个问题是无法解决的。但如果链表仅仅是有环,那么还是可以解决的。如果面试官的本意是链表有环,但你错误的理解成了无穷多个节点,那么必然会导致无法回答这个问题。而且这并非能力不足,而是属于交流沟通方面的失误,这也正是我想分享的“技巧”。

还有一些问题,虽然你没有接触过,但是由于对类似的问题或者情况有过思考,所以可以合理假设。比如面试官问 “ARC 会对代码做什么样的优化?”。我们知道 ARC 的本质就是在合适的地方插入retain和release等方法,那么就应该从这个角度出发去思考问题。

复习资料 (资料点这里腾讯文档

对于读到这一段的读者,为了感谢你耐心的听我废话了这么久,送上一波精心整理的干货和资料。不敢说完全没有错,但是应该比自己去查要靠谱得多。主要涉及算法、网络、操作系统、Objective-C 和 iOS 五个方面。如果你不是 iOS 开发者,相信前三部分的资料也或多或少能够帮上你。

面试推荐阅读
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容