- 01.技术基础知识
- 02.项目经验考察
- 03.架构&技术设计
- 04.知识深度和广度
- 05.软素质考察
- 06.社招面试标准
- 07.实习生面试标准
- 08.面试的过程
- 09.定级别关键点
- 10.面试重点介绍
- 11.面试官素质
- 主要包含Android基础知识、网络、算法、数据结构,如果面试者所学专业非计算机相关,需要着重看下基础方面。
- Android基础,举个例子:View的Touch事件分发如何?基础:ViewGroup和View的时间分发;深入:系统如何将事件分发到ViewGroup?View的绘制流程(可与Activity、Window结合)
- JAVA基础,举个例子:为什么会有线程不安全的现象?如何实现线程安全?常见的线程安全数据结构有哪些?锁的分类有哪些?如何避免死锁?
- 网络基础,举个例子:Http中GET和POST区别、DNS解析作用?HTTPS为什么安全?CA证书如何校验?如果想获取通信的内容,该怎么做?
- 包括该工作经历、项目经历、遇到的问题和解决问题的思路。
- 简析一两个开源项目。看面试者因为什么学习开源代码(技术兴趣?解决问题?),学习的深度如何,最终有什么产出(转化为项目应用?做了二次优化?)项目背景?技术选型,如何落地?其中风险如何解决?最终收益
- 与设计模式、所做App架构分层、MVP、MVVM相关。设计模式介绍:比如适配器模式、工厂模式、单例模式等运用。
- 架构方面:MVC、MVP、MVVM介绍,优缺点。架构的试用场合是什么?Model层什么作用?如果有多个数据来源如何设计?
- 关注点:如何实现各业务线解耦和协同,新业务线接入成本,解耦实现的方式,工程结构如何设计,一个SDK 的设计和实现
- 要点:问题分析&拆解、模块拆分、扩展性、易用性、架构设计
- 对专业领域的技术深度探索和对新技术的关注度&深度。
- 举个例子:Android的消息驱动机制中的ThreadLocal作用、高级用法(IdleQueue、BlockCanary)、Native层如何实现的、IO多路复用epoll
- 插件化原理,实现插件化需要解决的技术难点:类加载、四大组件生命周期、资源隔离、构建环境
- 面试者主导的项目重构或者一个完整的性能优化经历(发现问题&解决方案、如何分步执行、推动上线、实现解决问题的闭环)
- 性能优化:主要看面试者是否真有实际解决经验、常用工具、总结的经验和方法论。
- 跨平台方案的理解: RN、Weex、Flutter,加分项
- 主要对沟通能力、性格、学习能力、项目管理能力等方面衡量。你拿什么来证明自己优秀?
- 沟通时比较沉闷、表达思路不清晰、所答非所问、微表情(不专业),沟通是否紧张。沟通强势、对自己的主张很坚持(不一定是坏)。项目里人员数目、面对风险如何解决、项目冲突如何解?关键节点
- 面对一个难题时知道怎么去简化和抽象问题,把问题拨出来分类或者分层讨论,还会试图把问题分解成不同的子问题逐个来讨论。多进行一些思维训练,学会如何系统地区分解和分析一个问题。
- 为了提升技术,做了什么,多久,付出哪些。GitHub,博客,项目等都可以拿出来讨论,关键要有……对技术的热爱,必须要有具体的事实支撑,否则给人看法折扣
- 主要分为 3 个维度,专业能力,业务能力,软素质
- 专业能力:主要考察一下几个方面:基础知识、技术深度、技术广度、架构能力
- 业务能力:主要考察对业务的理解程度,业务指标、业务痛点,利用技术手段提高业务指标的项目,对于业务需求的判断能力,需求合理性
- 软素质:协作沟通,问题解决能力:过往处理过的疑难杂症,思路是否开阔,是否从本质上解决问题,项目管理:项目分工、推进、落地。项目管理方法论。时间管理。
- 学习能力:对新的知识如何学习,所学知识解决了什么问题,中间碰到过哪些坑,平时看的书、公众号、博客等。学习方法和过程要考察,也要重点关注学习的结果。
- 主要分为 3 个维度,基础能力,专业能力(加分项),软素质。
- 基础能力的考察:主要考察候选人所学学科基础知识。网络、数据结构、操作系统、计算机组成原理、数据库;Java 基础、设计模式
- 代码能力:算法题(简单,中等难度),思路、代码质量
- 专业能力的考察:Android 基础,对部分Android 源码有所了解,那么了解多少;python、shell、linux 命令、git、vim、效率工具
- 学习能力:对新的知识如何学习,所学知识解决了什么问题,中间碰到过哪些坑,看过的书、公众号、博客等。学习方法和过程要考察,也要重点关注学习的结果。
- 其他一些软能力:协作沟通:表达清晰、准确,复杂问题可以提炼为简单的话术表达清楚;思维方式:金字塔思维,结构化思维;问题解决能力:过往处理过的疑难杂症,思路是否开阔,是否从本质上解决问题;学校成绩:学校、专业排名、竞赛成绩动机:爱好、成就感、薪酬、性格
- 明确面试的目的:作为公司的面试官,不是为了鄙视和炫耀技术,而是评估候选人能否担任工作。这属于团队建设核心工作,也是公司的一次品牌宣传。
- 为了体现足够的重视和面试的专业性,在开场过程,我们需要注意以下几点:
- 为候选人倒杯温水。有时候在持续多轮面试后,候选人已经嗓子冒烟了。所以,一杯水体现了公司的细节和关怀。
- 简单的寒暄缓和气氛。先简单的问候和寒暄,调整一下面试氛围,让候选人在舒服的气氛中开始。
- 候选人自我介绍。完成上面几项后,就可以从候选人自我介绍进入面试主流程了。告知候选人面试过程需要用电脑做记录。
- Q&A。面试最后问问候选人,是否有什么问题想问,或者可以说说自己擅长而又没有被问到的方面。
- 告知等候时间/送候选人出去。让候选人更好地发挥,也为高效的面试做好铺垫。
- 我们先来看看 STAR 解释:Situation, Task, Action, Result。
- STAR法则是情境(指事情发生的情景)、任务(承担的任务)、行动(采取的行动)、结果(最终的结果)四项的英文单词首字母缩写。
- 示例:举个例子说说你擅长性能优化。
- 要点:当时情况怎么样,需要做什么,采取了什么行动,达到了什么效果。
- 理念:在收集 STAR 的时候不断提出更加深入的问题来判断认知程度及抗压能力。
- 为了考察候选人的综合素质,面试过程我们其实可以从六方面去考察:
- 知识:也就是我们常说的基本功。
- 专业技能:职位相关的技术能力,这决定你是否能胜任工作。
- 能力:个人能力包括:思维能力,学习能力,迁移能力,扩展能力等等。
- 个性特性:正直诚实,责任心,坚韧性。
- 动机:体现在成就导向,主动性。
- 价值观:体现在团队合作。
- 有潜力:能够在一段时间内,通过培养,胜任范围更大,难度更高的项目。
- 能干活:能够胜任当前的工作,但是因某项能力(技术基础 or 某项软素质)较弱,在发展上会受到一些限制。
- 三颗完整 STAR 确定一项事实:优点:尽可能挖掘优点,如果有需要后面可以调整面试方向。不足:基于我们职位要求。
- 预测:通过其过去的行为来预测将来的行为。
- P6(一般3到6年)重点关注面试内容中的1和2,对于内容3需要对常见的设计模式和分层架构有了解。
- P7(一般4到10年)重点关注面试内容中的2、3、4,架构方面有实际的设计经验,对某一方面知识有深度的理解。
- 软素质方面都需要关注,基础满足沟通能力好,团队合作无问题。P7如果负责过独立的项目,需要对项目管理方面有一定的理解。
- 一面二面,主要是技术面试,对面试内容1~5都需要考察,但每轮面试有不同关注重点。一面重点关注1,2,3;二面重点关注3,4,5
- 三面,主要是技术leader面试,主要是3,4,5考察,但不仅仅局限于技术,而是解决技术难题的思路,以及闭环思维。
- 四面,主要是部门leader沟通,主要是5考察,职业方向,过往经历,这个时候就需要吹牛逼呢。
- 五面,主要是人事交叉面试,和四面差不多。一般P6大概是4面,P7以及以上一般是5面甚至更多。
- 面试评价。评价里需要写上问的问题,和简答写回答情况,哪些答的好,哪些不好;如果面试者有些技术 面试官不了解,可以交换面试官交叉面试。
- 能挖掘人的亮点:循序渐进地考察面试者的项目经历,由浅入深的问。能够挖掘开发亮点,解决问题的思路,分析问题的过程等。
- 能综合考察技能:这就要求面试官能够在技能这块,由基础到深入,由整体到具体细节,清晰地理解面试者的技能处于什么层次。分析问题到了第几层!