前言
2019 年个人面试已经基本告一段落,由于个人规划的一些问题,整个过程下来还是经历了一些曲折。先从 P2P 暴雷开始,受到母公司挤兑危机的影响,我们公司日子明显十分难熬。迫于无奈,还是要在这个寒冬中继续前行,由于杭州的落户政策更加宽松,后续的发展是优先考虑去杭州,但是由于学历、工作年限、大厂经验等方面没有突出的优势。薪资水平方面杭州整体水平要落后于上海,所以在杭州并没有找到合适的机会。
经过一番思想斗争,还是选择继续留在上海,提升技术的同时,积累一些资本。感觉上今年的四月比三月机会要更多一些,可能是一些企业受去年年底裁员潮的影响,一季度没有开放 HC。
面试中一些问题,在竞争激烈的情况下,经验显得尤为重要,一份漂亮的履历是打开机会的敲门砖。阿里和网易通过内推和猎头渠道都没有能够获得面试机会,面的几家印象比较深刻的应该是 浙江大华、腾展叮咚、哈罗单车、浦发信用卡、杭州有赞、bilibili 等几家公司。这里也总结了一些比较有代表性的问题,和大家共同学习。
纸上学来终觉浅,自知此事要躬行。做软件开发,实践是非常重要的一环,只看一遍博客或者 Google 到解决方案直接 copy 到项目中,后面再遇到大概率还是要查资料,理解+实践才是高效学习的方式。
面试问题
需要注意的是,这里列出来的的每一个问题,可能只是一系列问题的入口,面试官很可能根据面试者的回答即兴进行延伸,所以在准备面试的时候,需要追本溯源,真正的把一个问题研究透彻。
代表性问题
在使用 Hybrid 开发的时候,H5 和原生如何进行交互?
除了使用 UIWebView 和 H5 进行交互,有没有尝试或者研究 WKWebView 与 H5 的交互,使用过程中会遇到什么问题?
在使用 weex 的时候有没有遇到什么问题?
简单介绍一下 Runtime
可以在运行时给类添加成员变量吗?为什么不能?(为什么成员变量列表设计成只读的,出于什么考虑?)
我们都知道在分类里可以添加方法,那么能否在分类中添加成员变量?为什么?
多线程开发时使用 NSOperation 比 GCD 的优势在哪里?
NSOperation 有哪几种状态?
在使用 NSOperationQueue 的时候,如何获取队列中 NSOperation 的状态?
给类添加属性时使用 atomic 有什么作用?它能否保证
在对类簇进行方法交换的时候,需要注意哪些问题
深拷贝和浅拷贝
+load 方法执行在 main 函数之前还是之后?
父类、子类、子类的 Category 中 +load 方法按照什么顺序调用?
说一下 KVO,使用 KVC 的方式赋值会不会触发 KVO?
项目中做了哪些性能方面的优化
MVC 和 MVVM
MVVM 中用到的 RAC 中,热信号和冷信号
组件化的时候同层级模块间如何通信及调用
组件化的时候使用 CTMediator 方案有什么弊端?
有没有了解过使用其他的方式进行模块间通信?比如 URL 这种方式,简单介绍一下
介绍 UIViewController 的生命周期
事件传递链和事件响应链
利用 GCD 实现异步线程任务 A 和 B 执行完成后执行任务 C
- 使用
- performSelector:afterDelay:
方法的时候,需要注意什么问题
一些基本的算法问题
二叉树的遍历
如何从二叉树中快速查找到第二大的数
SDWebImage 中用到的缓存策略,如何做到最少使用的最先被清理出缓存?
- 如何设计一个读写锁
项目中涉及到的问题
除了这些常见的面试问题,面试官有时候会问到一些算法相关的问题,以及根据简历中的项目进行提问,大家除了练好基本功,对经历过的项目也要重温一下,避免面试官问了答不上来就会给面试官留下不好的印象。有些技术点需要实践一下,看看自己是否切实掌握,不能眼高手低,到面试官问的时候卡壳了,尴尬的还是自己😂。
总结
现在的移动端开发市场已经趋于稳定,大家招人都不再局限于做业务,还会去考察求职者的基本功是否扎实,以及对底层开发的钻研深度。平时对自己要求高一些,不能浅尝辄止。