登录 立即注册
安币:

如何做一个合格的Android面试官【安卓巴士博文大赛】 [复制链接]

2017-6-6 16:57
东风玖哥 阅读:3276 评论:8 赞:4
Tag:  Android面试

我入坑Android已经三年有余了,期间被别人面试过也面试过别人。在被不合格的面试官面试过也做过不合格的面试官之后,我总结出了作为一个合格的Android面试官应有的套路:


Java基础知识和Android基础知识

对于刚毕业或刚入行的求职者,考察基础知识不仅能出不判断他的工作能力,还能推测出他今后很长一段时间的发展潜力。一个一口咬定ArrayList和都是List的子类,MapHashMap的父类”的求职者基础知识一定不扎实,一个连Fragment生命周期都说不清的求职者一定连懒加载都写不出来,一个一问三不知还嘴硬的求职者不仅不思进取而且自视甚高。

对于Java出身的面试官,需要注意的一点就是不要用HibernateEasyJWeb等和Android无关的Java知识难倒了求职者之后再问一句“Android不是以Java为基础的吗?你怎么连这么简单的问题都答不出来?”


Android进阶知识

对于有两年经验的Android工程师,可以适当提一些进阶问题。最常见的进阶问题就是讲讲常见概念的原理,比如Handler的原理、AsyncTast的原理和BaseAdapter的原理等,讲不清楚可以基本断定此人完全是4个月的经验用了两年,做的都是UI层次的表面文章。很难相信一个不了解CanvasA的程序员如何绘制出的千变万化的自定义控件,也很难相信一个说不清Thread间通信的人如何设计大文件分批次上传的方案。


常见的设计模式和架构

对于有三年及以上经验的Android工程师,就要看他的编程思想是否达到看出天下编程语言殊途同归的高度。询问常见的设计模式和架构就是最好的选择。

最简单的问题就是Android中有哪些单例模式的例子”和“EventBus采用了那种设计模式”;如果想深入一点,可以问问Android中代理模式和建造者模式体现在哪里;如果想进一步深入的话,可以问问单例模式的懒汉式和饿汉式的区别,或者问问三种工厂模式之间的区别。


简单的算法

在求职者疑似是培训生的时候可以穿插几个简单的算法问题,培训班4年本科+2年硕士+2年真实工作经验”的噱头在冒泡排序甚至递归面前都不堪一击。

因为Android应用开发并不特别需要算法(用FFmeng给视频编解码除外),所以经验三年以上的Android工程师忘记了希尔排序等算法很正常。我建议不要用算法问题卡人,毕竟培训生蒙混过关之后也难逃试用期的天网恢恢,好人被冤枉的后果就噬脐莫及了。


技术管理、过程管理和团队乃至部门管理

一个技术人员很可能有除了写代码以外的其他能力,管理能力是其中最常见的。如果求职者曾经带过团队,甚至仅仅带过同一个岗位上的实习生,他的管理能力都值得考察。我甚至面试过可能成为我的领导的人,尽管最终了识破他的30多岁嫌站着工作累去培训班学了4个月Android的厨师或者洗剪吹身份。

考察求职者的技术管理能力主要问他作为老大哥如何提升所在岗位其他人的技术水平;考察过程管理能力主要问他如何进行利用开源框架快速开发和分模块敏捷开发;考察团队乃至部门管理就要考察他组内不同岗位、不同项目组、不同部门乃至与老板和甲方的沟通协调能力,比如怎么解决老员工倚老卖老拖延进度的问题。


方向深度

常言道“术业有专攻”,不同行业对Android人才的知识深度的方向是不同的。如果你在一家生产物联网设备的公司,你要重点考察求职者对BlueTooth的了解;如果你在一家安全领域的公司,就要看他对反逆向和加密的了解;如果你在一家研究输入法的公司,就要考察他对手势的了解。与公司业务无关的冷门问题不是不可以问,对某一领域有深入研究说明这个求职者有钻坚研微、钩深索隐的钻研精神,对技术有持之以恒、锲而不舍的态度,可以很快掌握与公司业务有关的技术。


不该问的

诸如Android怎么搞性能优化”和“Android怎么搞多机型适配”之类大而空泛的问题是外行面试官最喜欢问的,常常把多年经验的老程序员问得一脸懵逼,却被背过标准答案的培训生忽悠得一愣一愣——就好比真正的哲学家回答不出“人生的意义是什么”而传销经理回答这个问题却口若悬河一样。这两个问题可以分别改为“如何从网络、内存、磁盘的角度设计缓存”和“.9图放在drawablemipmap下有什么区别”等具体问题。

互联网时代是一个瞬息万变的时代,与时俱进是开发者最重要的素质之一。过时的问题也不适合用来考察求职者的功底,比如SAX解析XML有哪些优点”和“TabHostActivityGroup相比有哪些优缺点”等,这样会显得面试官是个故步自封的人。

极度偏、怪、冷且非死记硬背不能答的问题更不适合做为面试题,比如写一长串不带括号的运算符问返回结果以考察对运算符优先级的掌握等。用““回”字有哪几种写法”作为面试题只能筛选出迂腐不堪的孔乙己而埋没真正的人才。

最不适合在面试时提的问题就是少数服务端出身的面试官爱问的:“你们Android(也包括iOSHTML5等)除了写写UI还有什么复杂的?”此话一出面试官要面对的风险就不仅限于错失人才了。


让他向自己提问

面试是一个双向的选择,因此面试官也应该具备通过求职者向自己提问的问题来初步判断他技术水平和发展方向的能力。当然,如果他面试过程中对答如流,就不要问他“你有什么问题要问我了”,可能会被问得瞠目结舌而贻笑大方的。

如果他问你“你是如何协调与服务端及其他终端的关系的”说明他今后可以培养为项目经理;如果他问你“你是如何提升整个团队的技术水平的”说明他今后可以培养为技术经理;如果他问你“你是如何选择MVPMVVM的”说明他今后可以培养为架构师。

如果他问你“如何重写ViewGroup以实现LinearLayoutRelativeLayout”说明你的小庙请不起这个大神。

本次比赛主题帖地址为:http://t.cn/RSfgF4c

分享到:
我来说两句
facelist
您需要登录后才可以评论 登录 | 立即注册
所有评论(8)
0号凯迪 2017-6-7 09:19
大神!很给力
回复
权小阳 2017-6-7 11:45
给玖哥一个赞
回复
xlyasdasd 2017-6-7 15:14
三年以上还问设计模式?单例...
一些问题供参考,jvm模型,类加载过程,gc原理,dex文件作用以及如何实现dex差量替换(至少得知道这才是android虚拟机的执行文件吧),简单描述下binder机制(应用层驱动层都可以),还有不要把设计模式看的特别重,毕竟很多基于反射的设计是在损耗性能的代价下换开发速度的,另外最后说的重写Viewgroup,很重要,一个UI实现,不要想着布局嵌套,不知道渲染过度么,根据项目的需求,封装一个单viewgroup的复杂布局,是很重要的
回复
香脆的大鸡排 2017-6-9 09:38
有部分观点过于极端。没有有一定的事。文中提到的进阶知识,我认为是基础知识。并不能说明什么。也不能单纯从工作年龄上带主观色彩的初步判断一个人的能力。
回复
快乐的没有名啊 2017-6-9 17:58
最好还是根据简历的内容,问他曾经做过的相关的东西。
很多人某一个方向研究的很深      但是不相关的基础也说不清楚
回复
yuanmenghao 2017-6-12 16:53
我觉得回复的说的都比这篇文章说的好
回复
ATrust丶 2017-6-21 08:58
香脆的大鸡排: 有部分观点过于极端。没有有一定的事。文中提到的进阶知识,我认为是基础知识。并不能说明什么。也不能单纯从工作年龄上带主观色彩的初步判断一个人的能力。 ...
说的好
回复
365720084 2017-7-4 17:58
看完哈哈一笑  只想说666
回复

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区

广告投放| 下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

返回顶部