最新iOS 面试心得
很感谢面试官给我们每次的面试机会,因为并不是所有人都会认可你的努力,生活本来就没有任何理所应当。
在这里具体的面了哪些公司,有哪些面试题在这里就不分享了,因为感觉借鉴意义并不是很大。
- 面了哪些公司还是不方便在这里公开的。
- 这几家公司的面试题相差并不大,主要还是需要重视答题质量;而且即便是同一个面试官,在面对不同面试者的时候问的问题也很可能不一样,因为很可能受到答题者的回答影响会问一些计划之外的题,这点我在作面试官的时候有体会。
本篇主要分享的是笔者在这阶段是如何准备面试的。可能每个人都有适合自己的学习方法,笔者的这套方法更谈不上十分高效,但还是希望对大家可以有一定的借鉴意义。
准备面试
准备面试主要从三个点展开:
- 使用的工具
- 面试题的整理
- 时间管理
使用的工具
在准备面试的过程中使用频率最多的工具有两个:
- 有道笔记
- 奇妙清单
1. 有道笔记
- 用途1:用来收集知识源:有道笔记浏览器插件可以一键快速保存网页,也可以收藏公众号的文章。
- 用途2:用来整理面试题:支持多级文件夹,可以清晰看到知识结构;支持MarkDown,可以保存代码。
笔记的整理过程就是理解的过程,反复咀嚼自己的笔记可以帮助理解。
2. 奇妙清单
- 用途1:用来记录突然想到的问题点:有的时候可能在头脑出蹦出一个问题来,但是没办法立刻想出答案。这时候需要在一个自己熟悉的位置保存一下。
- 用途2:罗列现在为止没有攻克的面试题:可以更直观地看到距离复习完成还有多少任务。
清单这种工具是为了解放大脑,因为大脑是用来思考的,不是用来记忆的。把需要惦记的事情先扔进去,让大脑脱离出来~
这两个工具还有一个非常大的优势就是跨平台:都支持(Mac,Windows,Android,iOS)系统,同步的功能做的也都很好。所以使用它们可以在不方便用电脑的时候随时更新,特别是有一个好想法的时候可以马上在手机上记下来。
面试题的整理
面试题分类
笔者尽可能搜罗了网上所有的iOS面试题,难度从低到高,当然也有介绍某个知识点的一些文章。笔者将这些题汇总以后分成了几个主题放在了有道笔记里面:
- iOS 基础题:例如“KVO的实现原理?”等等。
- iOS 应用题:例如“可能导致崩溃的几个原因以及如何避免崩溃?”等等。
- Block:例如:“基本类型的变量和对象被__block修饰与否各有什么区别?”等等。
- RunLoop:例如“利用RunLoop可以实现哪些功能?”等等。
- Runtime:例如“从一个对象收到一个它无法响应的方法到崩溃之间发生了什么?”等等。
- 网络:例如“HTTPS的握手流程?”等等。
- 多线程:例如“线程同步的几个策略?知道哪几种锁及其它们之前区别?”等等。
- 计算机系统:例如“内存的几块区域以及职能?”等等。
- 设计模式:“iOS SDK里面有哪些设计模式的实践?”等等。
- 架构:例如“MVVM和MVP的区别?”等等。
- 数据结构:例如“哈希表的实现原理?如何解决冲突?”等等。
相关书籍
友情提醒:书籍获取加iOS开发群:624212887,即可获取全部
时间管理
好的时间管理策略可以更好地帮助计划的落地。在这里从两个点来介绍笔者的时间管理策略:
- 每天都做哪些事情
- 不做哪些事情
每天都做哪些事情
因为当时在职的关系准备面试的时间比较有限,但是每天对不同类型的知识点都有比较固定比例的时间分配:
-
类型一:全新的知识点。这类知识点是每天都要看的,因为对于新知识需要时间去消化和吸收。所分配的时间大概占一天总学习时间的一半左右。
-
类型二:不熟悉的知识点。这类知识点是指那些刚理解好的全新的知识点或者比较难以理解的,需要反复看和消化的知识点。大概占一天总学习时间的一半以内。
-
类型三:很熟悉的知识点。这部分知识点属于理解的比较透彻的,但也需要抽时间复习,是这部分时间占比不是很重,简单扫一眼即可。
另外还要费分配出整理知识点的时间:对于上面这三种知识点其实都需要反复的整理和吸收,尝试着用自己的话表示出来,需要的时间占比也不是很重,但是却很有用。
不做哪些事情
在时间管理这块,笔者个人比较赞同的一个观点是:比起知道做什么,首先知道不做什么更重要。因为人的精力是有限的,一天就只有24个小时,当某件事很重要的时候,其他的事情就要做个让步。
为了准备面试,笔者在今年上半年放弃了很多事情:
- 健身卡虽然快过期了,但是一次都没有去。
- 同学,家人聚会也婉言谢绝了。
- 没有玩儿“吃鸡”,也没有去过电影院。
坦白说在笔者拿到offer以后才去了健身房,和同学家人聚会,也见了老朋友,算是都补上了。他们也都表示比较理解,所以笔者也感觉也蛮欣慰的。
找一份工作并不难,但是找一份目前最适合自己的工作却非常难,希望大家也能够做一些取舍,列好计划并付诸实践,应该是会有好的结果的。