收录:zhangferry
都说往年互联网行情很差,iOS 行情更差。但到底怎么样呢,不能光听他人说,而要本人走进来看一看。我的面试的阶段根本都在 3 月份,筹备的阶段则要再往前推个半个月吧。期间约到了不少一二线互联网公司面试机会,后期因为筹备有余也错失了一些机会,在之后的面试中一直总结经验,越来越有信念了,最终抉择了爱奇艺。整体来看求职状况还算能够,不是很好但也不是很差,其中会带有肯定运气成分,所以要换工作的话肯定不要裸辞。
这里总结下这段时间的面试经验和一些心得,前面会附上期间遇到的面试题,大家能够尝试作答一下。
你关注 我送礼:感激各位的观看,别忘了点个赞,同时我在这里还给各位筹备了你们专属材料,关注我,取得私信进裙理解,不要遗记看私信音讯啊。或者间接进群有管理员被动找你,回复 [7] 之后,你就能拿到各自想要的材料。别忘了去支付啊
求职筹备
如果确定了想要换工作就应该为求职做筹备了。
常识筹备
在确定了换工作的想法之后,咱们就应该为面试做筹备了。在回顾知识点的时候我倡议分类去梳理:OC 语法,Runtime,Runloop,多线程,性能优化等,这些是优先级高的内容,其次是网络常识,数据结构与算法等计算机通识常识。
有一本书十分举荐:《Objective- C 高级编程》,倡议精读。
开源库的话看 Runtime(最新为可编译 799.1 版本)吧,把类的定义,Runloop,weak,Autoreleasepool 相干的代码都看下。
数据结构与算法,依照类别刷个几十题应该能应酬大多数状况了,iOS 面试个别不会有太难的算法题。
简历
简历是求职的第一步,也是你是否取得面试机会的敲门砖,咱们肯定要好好打磨下。上面是我在脉脉上看到的 HR 在筛选简历时次要关注的点:
我在往年 1 月份的时候尝试投过几次简历,并没有太好的后果,起初进行了一些调整优化。3 月份再投的时候绝对好了些,陆续收到了些回应。自己之前并没有大厂经验,不是一流本科,但也能收到不少大厂的面试机会,所以我感觉本人的简历内容还是起到了肯定的作用的。
下面有提到“高光时刻”,能够了解成亮点。怎么让本人的简历跟同能力程度的求职者不同,那就是找到属于咱们的亮点。有一个倡议,咱们在写简历时,能够刻意夸张本人的能力,或者写咱们想成为的样子,再之后咱们就对着简历让这些内容一一实现,让它们变成本人的亮点。肯定要留神不能只吹牛,不落实,因为被发现“造假”可是很重大的。
简历投递
以我的经验来说,绝对靠谱的简历投递形式有:Boss 直聘、脉脉、内推。
须要留神的是,Boss 直聘和脉脉只有他人分割你,你再投递,反馈率才会高一些。如果是你被动分割的招聘方,那大概率是不会收到回应的。揣测很多企业并没有很多的招聘岗位也会把招聘信息挂在下面,这种时候 HR 是不会关注投递的简历的。这也是为什么能看到很多人晒出投递上百个简历确一个回应的都没有的状况,不要泄气,这不肯定代表你能力不行。
等招聘者分割是绝对被动的,主动出击会更无效。那就是寻找内推,个别公司内推都有处分的,所以公司内部人员都乐意去公布职位获取内推人选。脉脉,掘金,V2EX,一些出名公众号都能发现不少内推岗位,咱们能够本人去开掘。
面试流程
目前互联网公司大部分是 2 轮技术面 + 1 轮 HR,或三轮技术面 + 1 轮 HR。目前的面试模式多为视频面试,也有些是电话面试。视频面试的话,如果是通过 Zoom,企业微信,钉钉等个别是不考查手写代码的。如果是通过牛客网,个别是会考查手写代码的。对于手写代码,仅有算法题会要求准确性,可运行,对于设计类题目,咱们写出伪代码即可。
如果到了 HR 轮根本阐明咱们曾经通过了面试,如果确定入职,接下来就是背调,薪资证实,学历证明,入职体检等一系列操作。
面试题
作为一个开发者,有一个学习的气氛跟一个交换圈子特地重要,这是一个我的 iOS 交换群:891 488 181,不论你是小白还是大牛欢送入驻,分享 BAT, 阿里面试题、面试教训,探讨技术,大家一起交流学习成长!
以下是我面试过程中遇到的面试题,其中网络和多线程问题曾经分成两篇独自解说了,这里就去除了这两局部。
Swift
因为我最近两年多始终在用 Swift,面试开始的自我介绍环节,我也会着重提这一点。然而很可怜,我失去的答案根本都是:面试次要考查 OC。这也阐明了大部分公司对 Swift 态度还是十分激进的,所以除非招聘信息里写了要求 Swift 技能,否则咱们是没有必要专门筹备 Swift 相干面试的。
当然面试过程中也遇到了几个 Swift 问题:
1、Swift 中 struct 和 class 有什么区别?
2、Swift 中的办法调用有哪些模式?
3、Swift 和 OC 有什么区别?
4、从 OC 向 Swift 迁徙的时候遇到过什么问题?
5、怎么了解面向协定编程?
OC 语法
1、Block 是如何实现的?Block 对应的数据结构是什么样子的?__block 的作用是什么?它对应的数据结构又是什么样子的?
2、GCD 中的 Block 是在堆上还是栈上?
3、NSCoding 协定是干什么用的?
4、KVO 的实现原理
5、NSOperation 有哪些个性比着 GCD 有哪些长处,它有哪些 API?
6、NSNotificaiton 是同步还是异步的,如果发告诉时在子线程,接管在哪个线程?
UI
1、事件响应链是如何传递的?
2、什么是异步渲染?
3、layoutsubviews 是在什么机会调用的?
4、一张图片的展现经验了哪些步骤?
5、什么是离屏渲染,什么状况会导致离屏渲染?
6、CoreAnimation 这个框架的作用什么,它跟 UIKit 的关系是什么?
援用计数
1、ARC 计划的原理是什么?它是在什么时候做的隐式增加 release 操作?
2、循环援用有哪些场景,如何防止?
3、为什么当咱们在应用 block 时里面是 weak 申明一个 weakSelf,还要在 block 外部应用 strong 再持有一下?
4、Autoreleasepool 是实现机制是什么?它是什么时候开释外部的对象的?它外部的数据结构是什么样的?当我提到哨兵对象时,会持续问哨兵对象的作用是什么,为什么要设计它?
5、哪些对象会放入到 Autoreleasepool 中?
6、weak 的实现原理是什么?当援用对象销毁是它是如何治理外部的 Hash 表的?(这里要参阅 weak 源码)
Runtime
1、音讯发送的流程是怎么的?
2、关联对象时什么状况下会导致内存泄露?
3、音讯转发的流程是什么?
4、category 是否增加属性,为什么?是否增加实例变量,为什么?
5、元类的作用是什么?
6、类办法是存储到什么中央的?类属性呢?
7、讲几个 runtime 的利用场景
Runloop
1、讲一下对 Runloop 的了解?
2、能够用 Runloop 实现什么性能?
性能优化
1、对 TableView 进行性能优化有哪些形式?
2、Xcode 的 Instruments 都有哪些调试的工具?
3、讲一下你做过的性能优化的事件。
4、如何检测卡顿,都有哪些办法?
5、放大包体积有哪些计划?
计算机相关
1、我的项目编译的流程是什么?手机上的应用程序自点击图标开始到首屏内容展现都经验了哪些步骤?
2、对于根本数据类型,个别是存储到栈中的,它有没有可能存在堆上,什么状况下会存储到堆上?
3、数据库中的事务是什么意思?
4、应用过什么数据库(我答复的 Sqlite,Realm),Realm 在应用时有哪些注意事项,如何实现批量操作?
5、LRU 算法是否理解,如何实现一套 LRU 算法?
6、晓得哪些设计模式,怎么了解设计模式的作用?
7、如果有 1000 万个 Int 类型的数字,如何对他们排序?
8、设计一套数据库计划,实现相似微信的搜寻关键词能疾速检索出蕴含该字符串的聊天信息,并展现对应数量(聊天记录的数据量较大)。
简历相干问题
1、Lottie 实现动画成果的原理是什么?
2、OClint 实现动态剖析的原理是什么,它是如何做到的?
3、MVVM 和 MVC 有什么区别?
4、动态库和动静库的区别是什么?
5、理解 Flutter 吗?它有没有应用 UIKit?它是如何渲染 UI 的?
6、二进制重排的外围根据是什么?
7、如何设计一套切换主题的计划?
8、AVPlayer 和 IJKPlayer 有什么区别?用 IJKPlayer 如何实现一个缓存视频列表每条视频前 1s 的内容?
9、相似微博的短视频列表,滑动停留播放,如何实现?
10、应用 python 做过哪些事?如何了解脚本语言?
数据结构与算法
1、什么是 Hash 表,什么是 Hash 碰撞,解决 Hash 碰撞有什么办法?
2、如何遍历二叉树?
3、简述下疾速排序的过程,工夫复杂度是多少?
4、有一个整数数组,如何只遍历一遍就实现让该数组奇数都在后面,偶数都在前面?
5、假如你正在爬楼梯。须要 n 阶你能力达到楼顶。每次你能够爬 1 或 2 个台阶。你有多少种不同的办法能够爬到楼顶呢?
6、给出一个 32 位的有符号整数,你须要将这个整数中每位上的数字进行反转。leetcode 7
7、有红、黄、蓝三种色彩的气球。在牛客王国,1 个红气球 + 1 个黄气球 + 1 个蓝气球能够兑换一张彩票。
2 个红气球 + 1 个黄气球能够兑换 1 个蓝气球。
2 个黄气球 + 1 个蓝气球能够兑换 1 个红气球。
2 个蓝气球 + 1 个红气球能够兑换 1 个黄气球。
当初牛牛有 a 个红气球,b 个黄气球,c 个蓝气球,牛牛想晓得本人最多能够兑换多少张彩票。
软技能
1、做过哪些工作职责之外的事件?
2、经验过最难的一次业务开发是什么样的,最终怎么解决的?
3、最近有学习什么新技术吗?有何播种?
4、你最善于 iOS 哪方面的常识?怎么体现进去的?
5、罕用哪些开源库,有没有钻研过他们的原理?
6、如何放弃个人成长?
流程型问题
流程性问题根本都会蕴含上面四个,最好提前准备好
1、请做下自我介绍。
2、你有什么问题要问我的吗?
3、为什么到职?
4、对下份工作的冀望是什么样的?
这些问题看似不起眼,但其实还挺重要的,很有可能面试官就是通过这几个问题决定了要不要你通过面试。
自我介绍就不说了,简明扼要介绍本人近几年的经验和问题就行,管制在一分钟以内。
第二个,最好不要间接说没有问题了,发问面试官是咱们整个面试过程中少有的把握主动权的时刻,它能够体现咱们自主思考的能力。最好提前理解下公司和招聘需要,筹备几个问题,或者面试过程中提出咱们产生的一些疑难。
到职起因,这个如实答复即可,只有不说是因为钱或者跟领导共事不和根本都没有问题。
下份工作的冀望,这个就看各自的需要吧。
总结
通过这些面试题,咱们能够看出一些端倪。
1、面试官更喜爱“刨根问底”,对着一个概念一直的往深处延展,不断深入的问。这类问题会有很大的区分度,第一问第二问第三问难度逐次进步,用于筛选不同的面试者。这也揭示咱们某些知识点不光要晓得原理,还要晓得为什么这么设计,这么设计的益处是什么。
2、问题范畴更全面化,特地是二面时,问题不再局限于 iOS 端,而是更通用的计算机方向问题,这个须要咱们平时多积攒;还有就是开始器重集体软技能,学习能力和上进心。
3、围绕简历,还记得下面说过写简历时要吹牛逼吗。在面试的时候肯定要把他们成为本人真正把握的常识。
4、重视软技能,这个比后面几条作用略微小些,然而如果被问到了,而咱们也有很好的贴合点,那相对就是加分项。我的一次经验是,当我向面试官说本人有写博客的习惯,他问我是否晓得 medium,我说晓得,还翻译过几篇外面的文章,接着说了些我了解的国内外博客平台的现状剖析。这种状况就属于加分项了。
另外面试是一次考查本人常识把握水平的考核,考的好能晋升本人自信心,考的不好能够帮忙咱们定位本身问题,不管怎么说都是不亏的。面试还能够帮忙咱们理解市场行情,薪资待遇,本身竞争力,风行技术栈等一系列状况。所以真的倡议即便不思考换工作,每年固定工夫也能够进来面试几次。
文章到这里就完结了,你也能够私信我及时获取最新材料以及面试相干材料。如果你有什么意见和倡议欢送给我留言。