今天小小面试了一个候选人,整体来说达不到岗位的要求,在整个面试的过程中,给我感受比较深的有以下几点:
候选人优势:
候选人在工作的四年当中,对所在公司的app的各个模块基本都接触过。对于部分模块也有自己的思考。比如一些优化内容,能够划分出重要的步骤并逐一解决。
候选人能够将学到的东西应用到实际项目中,如使用设计模式对项目重构进行了推动和执行。
候选人不足:
候选人对于自己所做的模块的优化结果关注不多,比如某模块做了一些提升容错率的兼容逻辑,但是对于整体提升率有多少,没有指标,只是说优化上线后没有再接到相关的客诉。
iOS的基础不是很扎实,有好几个问题没回答到点子上。
几个流程叙述的问题,都没有能把流程讲解的比较清晰
综上,针对这个候选人暴露出来的问题,我给出的建议是:
对于自己所做的优化类项目,要按照以下条理叙述:背景→调研→方案→实施→难点→结果。 这个逻辑链,不仅仅是面试需要,平时在工作上做中大型项目,按照这种思路,能够让自己有所沉淀有所收获。 这也是这个候选人做的不足够的地方。关注结果太少,很多时候就把手头上的工作做好,至于效果如何关注不够,因此在面试时被问到就回答不上来。
面试要做好基础复习。
面试题分析:
本次列举的面试题,这里主要是从候选人所做的项目的启动优化说起,逐步引申到了Category。
首先考察Category的用途: 把类的不同功能划分、声明私有方法等
其次考察①如果多个Category存在同名方法,哪个先执行;②Category的@property和普通类有什么区别? ①运行时决定,后面参与编译的会覆盖前面的 ②不会实现Getter和Setter以及成员变量。
其次根据2,看候选人是否会主动回答出3:考察Category的原理:结构体包含什么内容,这些内容如何加载。
如果以上3个问题都回答得准确并知道为什么,那Category应该可以认为掌握了,考察这个不仅仅是背题目这么简单。没有1的共识,写的代码没有人看得懂。在大型app中,多人协同时,如果没有良好的编码习惯,会犯2的错误,导致影响别的模块,严重出现Crash。如果不清楚3,就不能进一步地去排查问题和做性能优化。