面试时,问哪些问题能试出一个 Android 应用开发者真正的水平

如题所述

面试前的准备 1. 简历调查 简历到你手上的时候,你要做好充分的调查分析,不仅仅是对公司负责,也是对自己与候选人时间的尊重,明显不match的简历,就不要抱着“要不喊过来试试看”的想法了,候选人也许很不错,但如果跟你的岗位不match, 也不要浪费大家时间,你要想清楚现在需要的人是有潜力可以培养的,还是亟需帮忙干活的。另外如果简历里附带了博客链接,GitHub地址,相关作品的,可以提前去看看,直接看人家多年积累的文章与代码,比这短短一小时的面试来得靠谱的多。 2. 准备问题 了解清楚候选人背景后,要根据简历,有针对性的准备问题,可以是他作品或做过项目里的某个技术细节的实现方式,也可以是他声称精通的某些领域的相关问题。总之不要等到面试过程中现想问题,特别是刚开始面试别人的同学,往往经验不足稍带紧张导致大脑短路,其实也是很尴尬的,把要问的问题提前写下来,准备充分。 考察哪些点? 1. 简历是否真实 这其实是面试第一要务,面试的过程其实就是看简历是否属实的过程,因为能到面试环节,说明这个人是符合要求的,不满足要求的早就被剔除了,如果他真的如简历描述的那样,100%会招过来,如果人人都如此,那就不需要有面试这种过程了。 需要注意的是这里的真实有三层含义: 一是他如实描述了自身经历,很多人只在一些大项目里做一个很小的螺丝钉,但简历里往往夸张这段经历。 二是不知道自己不知道,常见于简历里各种“精通”开头的描述,因为知识体系与视野的局限,明明只是了解很浅却夸口精通,很多时候他并不认为自己说的有问题,而是真的以为自己已然精通,有点井底之蛙的感觉。 三是简历里的真实要与你的期望相匹配,一门技术了解到怎样的程度才算精通,很难有定论,所以这里的“真实”只能是候选人与面试官标准之间的契合,这种有主观运气成分,也许面试官水平不够错误判断了你,也不用感到不爽,面试何尝不是种双向选择呢。 2. 技术的深度 技术的深度一向是我最看重的部分,当今任何一个技术领域都非常宽广,一个人要同时掌握那么多知识并且都深入几乎不可能,那都需要拼学习效率与工作年限了。而你曾经做过的东西,正在做的东西,是绝对可以了解得更深入的,一个对技术有好奇心,有技术热情的人,都不会仅仅停留在这个东西挺好用,而是会忍不住去探究它背后的技术原理,即便不是亲自去看源码,也会花点时间了解别人整理过的经验,所以单凭考察技术上的深度,就可以考察一个人是否对技术有热情,是否有技术好奇心等等这些很多大牛认为的所谓“优秀程序员的特征”。 之前曾看到过一句话:“一个人对他所做的事情了解得越深,他就能做的越好”。放在这里再合适不过了。 3. 技术的广度 深度是有了,还需要广度吗?我个人的理解是:深度是必要条件,广度是加分项。同样的有技术好奇心的优秀程序员,也不会满足于仅仅局限于自己的一亩三分地,工作之余,也会想要尝试一些其它的领域和方向,因为投入问题也许不够深入,但很多领域知识你知道与不知道,对你个人知识体系的形成关系很大。比如你要实现一个功能,在你当前熟悉的技术领域上很困难或者效果不佳,在你就要放弃时你的同事告诉你,这用一个简单sql语句就可以实现啦,为什么要搞得那么麻烦?这个例子虽然举得很蹩脚,但是我想意思大家应该已经明白了。知识越有广度,头脑里的技术体系就越完备,同样的问题,你就可以想到N个解,思考一下就得出最优解了,如果你听都没听过一些东西,就会经常说出“这个好难搞啊”,“这根本就不可能”,其实有的时候真是知识的局限问题,所谓的从0到1难,也是这个意思。 4. 逻辑思维能力 这也是我比较看重的一点,这里并不是指那些臭名昭彰的脑经急转弯问题,而是通过交流观察,判断一个人表达观点逻辑是否清晰,回答问题是否有章法,这个很难描述,但如果你细心观察,你会发现很容易通过一些简单的交流,就可以看出一个人是否逻辑清晰。有时候你会觉得某个人表达沟通很不错,其实不是沟通的问题,是他说出去的话,经过了他大脑的条理清晰的整理,让你很容易就能明白。这种习惯不是一朝一夕就能养成的,所以面试过程中这点装不出来。 另外一个人如果逻辑清晰,而且反应又敏捷,语速很快,那是大大的加分项,恭喜你,碰到一个聪明人了。 具体问哪些问题? 前面提到的是要重点考察的点,那么具体的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. 怎样才给通过? 通过标准因人而异,每个人都有自己心中的bar, 但还是有些可直观考量的因素的: 一是岗位的要求,不同的岗位标准当然不一样,校招与设招肯定也不一样。 二是岗位的紧急程度,兄弟们天天加班忙死了,赶紧找人过来帮忙吧哈哈。 三是候选人的年龄,大龄程序员莫怪,一把年纪了还跟刚毕业一两年的同事一个水平,说明成长太慢,做技术的潜力有限,这个大家应该能理解。 四是前面提到的做技术的深度,这个是必须的,广度也要有一些,视野不能太窄。 五是要有亮点,大家在面试的过程中要注意发掘亮点,有时候他问题很多但有一个足够的亮点也够了,用心观察也发现不了什么亮点的,就要注意了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-05-12
把你在Android 应用开时遇到的问题, 很棘手的问题记录下来问他, 看他有什么方案可以解决就知道有没有能力了, 水平怎么样,本回答被网友采纳

android工程师面试一般会问哪些问题
一、基本情况 1、请用最简洁的语言描述您从前的工作经历和工作成果。二、专业背景 您认为此工作岗位应当具备哪些素质?三、工作模式 您平时习惯于单独工作还是团队工作?四、价值取向 您对原来的单位和上司的看法如何?五、资质特性 您如何描述自己的个性?六、薪资待遇 是否方便告诉我您目前的待遇是多少?

Android Framework基础面试篇~
1. Android应用生命周期:指的是应用从启动到关闭的全程,分为四个阶段:创建(onCreate)、启动(onStart)、暂停(onPause)、停止(onStop)等。开发者需根据这些阶段执行相应的初始化、操作和状态管理。2. 控制生命周期操作:通过Activity类的生命周期方法,如onCreate()用于初始化,onPause()用来停...

Android Framework基础面试篇~
1. 应用生命周期管理Android应用的生命周期是指从启动到关闭的过程,分为四个阶段:创建(onCreate)、启动(onStart)、暂停(onPause)和停止(onStop)。开发者通过Activity类的生命周期方法(如onCreate、onPause等)来实现特定操作的执行和应用状态的管理。2. Intent与Intent FiltersIntent是Android中的...

字节跳动技术整理:15个经典面试问题及回答思路,值得收藏
HTTP报文结构、HTTPS安全性等的深入理解。Android方面,涉及网络框架对比、证书验证、权限管理系统、签名机制、视频加密传输等实用知识。Kotlin部分,解析延迟初始化、Reified泛型、Extension Functions等高级特性,以及协程的工作原理和优化策略。

android面试题会出现什么内容
1.android dvm 的进程和Linux的进程,应用程序的进程是否为同一个概念:答:dvm是dalivk虚拟机。每一个android应用程序都在自己的进程中运行,都拥有一个dalivk虚拟机实例。而每一个dvm都是在linux的一个进程。所以说可以认为是同一个概念。2.android的动画有哪几种?他们的特点和区别是什么?答:两种...

大厂Android开发高频面试问题:说说你对Zygote的理解
Zygote可以说是Android开发面试很高频的一道问题, 但总有小伙伴在回答这道问题总不能让面试满意, 在这你就要搞清楚面试问你对Zygote的理解时,他最想听到的和其实想问的应该是哪些? 下面我们通过以下几点来剖析这道问题!Zygote的作用分为两点:关于这个问题答出了这两点那就是OK了。可能大...

Android面试中常问的MMAP到底是啥东东?实战解析
首先,理解职业规划的重要性。它是一个持续选择和规划个人职业发展路径的过程,就像对人生和职业生涯进行有计划、系统的布局。良好的职业规划有时能影响一个人的一生。面试准备中,自我介绍和项目经验至关重要。例如,阿里技术面试中,面试者会被问及Android、设计模式、网络等相关内容,而网络问题如HTTP(s...

Android面试:字节飞书5轮面试Android Framework层的源码就问了4轮!
内容概要 :包括 Handler、Activity相关、Fragment、service、布局优化、AsyncTask相关、Android 事件分发机制、 Binder、Android 高级必备 :AMS,WMS,PMS、Glide、 Android 组件化与插件化等面试题和技术栈!内容特点:条理清晰,含图像化表示更加易懂。Android Framework 开发虽然比较偏底层,圈子窄,但是能...

2023年某团出品Android最强面试题整理集锦(附答案)
探索2023年Android面试之王的关键:实战检验你的技术深度 对于Android开发者而言,自我评估并非遥不可及。面试不仅是检验技能水平的试金石,更是日常学习的反馈机制。面试官并不期待你立刻完美无缺,而是通过提问来了解你的理解深度和解决问题的能力,就像课堂上老师提问一样,每个人都有成为面试高手的潜力。为...

你要面试一个程序员,应该问他什么问题
首先面试程序员分有没有经验 面试没有经验的程序员就随便问问点ssm,ssh五大框架问题,多线程什么的,再问问是否会点前端技术 有经验就看看他的简历,问他简历项目上的问题,可以围绕着简历上的项目问,通过他的回答涉及到的技术点之类的,拓展出去问其他的 ...

相似回答