写点什么

Android 应用开发者面试时 HR 是怎样试出你的真实水平!(1)

用户头像
Android架构
关注
发布于: 5 小时前

深度是有了,还需要广度吗?我个人的理解是:深度是必要条件,广度是加分项。同样的有技术好奇心的优秀程序员,也不会满足于仅仅局限于自己的一亩三分地,工作之余,也会想要尝试一些其它的领域和方向,因为投入问题也许不够深入,但很多领域知识你知道与不知道,对你个人知识体系的形成关系很大。比如你要实现一个功能,在你当前熟悉的技术领域上很困难或者效果不佳,在你就要放弃时你的同事告诉你,这用一个简单 sql 语句就可以实现啦,为什么要搞得那么麻烦?这个例子虽然举得很蹩脚,但是我想意思大家应该已经明白了。知识越有广度,头脑里的技术体系就越完备,同样的问题,你就可以想到 N 个解,思考一下就得出最优解了,如果你听都没听过一些东西,就会经常说出“这个好难搞啊”,“这根本就不可能”,其实有的时候真是知识的局限问题,所谓的从 0 到 1 难,也是这个意思。


[](


)4. 逻辑思维能力




这也是我比较看重的一点,这里并不是指那些臭名昭彰的脑经急转弯问题,而是通过交流观察,判断一个人表达观点逻辑是否清晰,回答问题是否有章法,这个很难描述,但如果你细心观察,你会发现很容易通过一些简单的交流,就可以看出一个人是否逻辑清晰。有时候你会觉得某个人表达沟通很不错,其实不是沟通的问题,是他说出去的话,经过了他大脑的条理清晰地整理,让你很容易就能明白。这种习惯不是一朝一夕就能养成的,所以面试过程中这点装不出来。


另外一个人如果逻辑清晰,而且反应又敏捷,语速很快,那是大大的加分项,恭喜你,碰到一个聪明人了。


[](


)具体问哪些问题?


===================


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


==============================================



前面提到的是要重点考察的点,那么具体的 Android 开发,有没有一些通用的问题可以问的呢?我个人一般会从这几个角度考察候选人:


[](


)1. Android 经验




如果不是校招,Android 经验是必须的,我比较喜欢问一些基础概念与技术原理,比如 Activity、View、Window 的理解,各 LaunchMode 的使用场景,View 的绘制流程,Touch 事件机制,Android 动画的原理,Handler, Looper 的理解,Android 跨进程通讯的方式,Binder 的理解,Android Mashup 设计的理解等等。


[](


)2. Java 水平




基本上就是 Effective Java 那本书里提到的东西,如果你背完那本书里的问题,并且对答如流,没问题,就要你这样的。其实也会考察关于 final 用法,反射原理,注解原理,java 编译过程,GC 等一些常见问题。


[](


)3. IT 基础知识




其实就是计算机科班学生学校里学到的一些东西,在校招时这块是重点,社招会放宽,但一些基本的常识是要有的,比如不少人都不知道 http 的 get post 有啥区别,https 的那个 s 是什么意思,讲不清进程与线程的概念,不知道二分算法是个啥东西。这些简单问题的筛选,可以过滤一些所谓野路子的程序员,是不是科班出身不重要,搞这行就得对一些基本常识有概念,不然以后怎么愉快的交流呢?


[](


)4. 代码质量的认识




我们需要的是一个对代码味道有感觉的人,关于这点,看下《Clean Code》就够了,面试中这点其实不好考察,可以让他聊一聊对代码质量的认识,虽然不能排除对方夸夸其谈,至少想法不多,只能提到命名风格这一点的人是不符合要求的,也可以在写 Code 的环节中观察。


[](


)5. 技术视野




比如对 Android 开发新技术的了解与学习,对其它流行技术领域的了解,这其实与我刚才提到的技术广度的考察有关,就我面试过程中,发现很多非互联网行业的从业人员,因为公司各种操蛋规定与公司技术氛围的原因,技术视野相当狭窄。


我个人对这点深有体会,2011 年我还在传统行业从事软件研发,当时的公司因为担心技术信息泄露,不让上网,相当封闭,我个人虽然自认为已在那个行业内做到业内专家的级别,但总感觉哪里不对,有一天我很兴奋地打算跟身边同事聊一聊 Android 的时候,发现他们居然都不知 Android 为何物?2011 年啊同志们,当时的震惊无法言表,深切感觉到需要作出改变了,毅然放弃多年行业积累,转战移动互联网,直到现在。时至今日,多年前的小伙伴也有很多混出了名堂,开始走向人生巅峰,我也从来没有后悔当初做出的选择。


[](


)6. 技术想象力




一个优秀的技术人,如果知识的深度与广度足够,知识已成体系,那么他对于一些从未接触过的领域,也是可以做出足够合理的想象与判断,面试过程中如果问到一些领域候选人没有涉猎,这时候一般不用过多纠缠,但如果你想借这个问题考察下他的技术想象力,可以深入下去,比如问他:“你觉得这个东西应该是什么原理呢?”,“这个酷炫的控件,如果要你来做,你会怎么实现?”。在这方面表现出色的同学无疑是有深厚基础与足够广度的人。


[](


)7. 技术习惯




好的程序员都会有好的习惯,比如各种快捷键的熟练应用,各种命令行的掌握,一些提高开发效率的工具与习惯,碰到问题是 baidu 还是 google,有没有做一些小工具帮助减少重复工作,工作之余有没有继续学习?有没有看什么不错的书等等,这些小细节很大程度上决定了程序员的开发效率,这也是为什么很多人说一个优秀程序员抵得上 100 个普通程序员,这也是重要原因之一。


[](


)面试后的反馈:


================================================================


面试一般不止一轮,你需要给出你的反馈,多轮面试结果一起考量,减少误判的风险,反馈一般怎么写呢?以下是我的建议:



[](


)1. 面试记录




面试过程中的完整纪录,尽量客观评价,让其它面试官知道你问了哪些问题,回答得怎么样,也避免了重复问题的尴尬。


[](


)2. 优点与缺点




你的主观评价,亮点有哪些,你觉得哪些地方不够好?


[](


)3. 综合评价




你对候选人的综合评价,hire 或者 no hire 的根本原因,如果有些地方感觉没考察清楚,期望其它面试官继续加强考察,也可以写上。


[](


)4. 怎样才给通过?




用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Android应用开发者面试时HR是怎样试出你的真实水平!(1)