Android开发面试
Ⅰ android 面试作品
关注Android已经很久了,去年Android职位还是寥寥无几,现在已经如雨后春笋一般涌现,去各招聘网站,在职位一栏里输入Android关键字,你将会发现有很多的空缺职位.这无疑给广大程序员带来了新的机遇,你只要有半年或者一年相关Android相验你会很抢手.我相信只要你投简历,我不敢说每投必"应",最起码十有四五的概率还是有的.
那么每个公司招聘Android开发人员,到底看重什么呢,下面我将以个人的观点,讲一下应聘Android开发人员应该具备的条件.
说实话,对于搞过java的程序员来说,转到android是一件很容易的事,两三个月研究研究就足已了,世面上的android书买一本入入门就OK了,做Android应用个人认为比较简单,但是有创意的还是比较难的.如果你只是想做简单的android应用开发人员,你只要准备一下Java知识(多线程,Socket通信等),然后在对Android略知一二(如Android架构,Activity的理解,以及一个应用的生命周期等等).这些我相信可以应付过去了.
但是如果你想做更底层的开发,比如嵌入式开发(Android驱动开发等),那么你就要懂得多一些知识了,毕竟这年头Arm+Android还是很有搞头的.这个你就要懂Linux,Arm,C,C++等知识了,毕竟这方面的要求还是蛮高的.大家可以买个arm开发板,然后自己把android移植进去,做一些驱动开发,和应用开发,这样你去应聘直接把你的东西带过去,还是更有说头的.
Ⅱ 面试安卓开发,简历上写两年的“开发经验”或者两年“项目经验”是否合适
很多单位都要求有工作经验,都是新人哪有什么工作经验。最重要的是让人认可工作能力!诚实固然重要但什么都诚实的话很难混下去。
Ⅲ 跪求一篇android开发工程师面试时的自我介绍范文,那些乱回复的以及告诉我怎么说的请不要回答!我
我刚去面试了。人家经理根本不跟我聊什么经历以及语言能力。他直接给我一个题目,让我完成。我的题目是从他给定的网站上获取数据,并用Jason解析,然后把图片显示出来。
Ⅳ android开发怎么样面试能详到8000
无论大公司还是小公司,之所以在如何招聘到真正有能力的
前端工程师方面会遇到同样的问题,就是因为负责招聘的那些人不知道自己公司需要什么样的人,结果问问题时也问不到点子上。经过这几年在行业里的摸索,我总
结出了自己的一套很有效的面试前端工程的方法。
有的应聘者说我不好对付,但留给他们这样的印象也并非我所愿。我觉得之所以他们说我不好对付,主要是因为我问他们问题时问得太细了。以前我曾专门写过一些
东西,告诉应聘者怎么才能通过我的面试(Surviving an interview with me)以及优秀的前面工程师应该具备什么样的素质(What
makes a good front end
engineer?),而我的面试可以说完全是按照那两篇文章的标准进行的。我不会问一些特别偏门的问题,也不认为出几道逻辑题就能考出人的真实水平。我
唯一的想法就是确定你能否胜任我们要招的这个职位。为此,我需要简单地考察如下几个方面。
基本知识
我们生活在互联网时代,你想知道的任何事情几乎都能在15分钟内找到相关信息。可是,能找到信息并不等于你会使用它。我认为所有前端工程师至少都应
该掌握某些基本的知识,才能有效地完成自己的工作。如果一遇到问题,就停下工作上网四处搜索解决方案,怎么可能保证按期完成工作呢?听听,还有谁在说“我
不知道,但我可以上网搜到。”请这些同学把手举起来,让大家认识一下(immediately raises a flag for
me.)。下面我列出一些基本的知识点,这些都是我认为一名前端工程师(无论工作年头长短)在没有任何外来帮助的情况应该知道的。
DOM结构——两个节点之间可能存在哪些关系以及如何在节点之间任意移动。
DOM操作——怎样添加、移除、移动、复制、创建和查找节点。
事件——怎样使用事件以及IE和DOM事件模型之间存在哪些主要差别。
XMLHttpRequest——这是什么、怎样完整地执行一次GET请求、怎样检测错误。
严格模式与混杂模式——如何触发这两种模式,区分它们有何意义。
盒模型——外边距、内边距和边框之间的关系,IE 8以下版本的浏览器中的盒模型有什么不同。
块级元素与行内元素——怎么用CSS控制它们、它们怎样影响周围的元素以及你觉得应该如何定义它们的样式。
浮动元素——怎么使用它们、它们有什么问题以及怎么解决这些问题。
HTML与XHTML——二者有什么区别,你觉得应该使用哪一个并说出理由。
JSON——它是什么、为什么应该使用它、到底该怎么使用它,说出实现细节来。
重申一下,上述这些知识点都应该是你应该“想都不用想”的东西。我一开始问的所有问题都是想摸清你对所有这些领域知识的掌握程度。虽然上面列出的这些知识点并没有面面俱到,但我觉得你至少应该掌握这些,才有可能跟我坐到一间办公室里来。
少量提问
我非常赞同面试者问的问题越少越好。反复问应聘者各种问题既不公平,也很无聊。我在任何一次面试中,通常只问三个大问题,但每个问题又会涉及我所能想到的多个方面。回答每个大问题一般要经过几个步骤,这样我就可以在每个步骤中穿插着问一些小问题。比如说:
现在有一个正显示着Yahoo!股票价格的页面。页面上有一个按钮,你可以单击它来刷新价格,但不会重新加载页面。请你描述一下实现这个功能的过程,假设服务器会负责准备好正确的股票价格数据。
这个问题牵扯到一组我想要考察的基本知识点:DOM结构、DOM操作、事件处理、XHR和JSON。如果我要求你对换一种处理股票价格的方式,或者
让你在页面中显示其他信息,就可以把更多的知识点包括进来。对于经验比较丰富应聘者,我也可以自如地扩展要考察的知识范围,最简单像JOSN与XML的区
别、安全问题、容量问题,等等。
我还希望应聘者给出的任何解决方案中都不要使用库。我想看到最原生态的代码,你就当页面中没有包含任何库。你说你对哪个库了解多少多少,但我不能把
关于库的知识作为评判能力的因素,因为库是会随时间变化的。我需要的是真正理解库背后的机制,特别是能够徒手写出一个自己的库的人。
解决问题
做为一名前端工程师,最值得高兴的事莫过于解决同一个问题会有很多种不同的方法,而你要做的就是找出最合适的方法来。我在提问的时候,经常会在应聘
者解释完一种方法后问他们还有没有第二种方法。此时我会跟他们说,假设你的这个方法由于种种原因被否决了,那么你还能不能给出另一种方法。这样做可以达到
两个目的。
首先,可以测试出他们是否在毫无意义地复述书本中的东西。不能不承认,某些人确实有过目不忘的天赋,听他们在那里滔滔不绝地讲,你会觉得他们什么都
明白。可是,只要一跟这些人谈到怎么查找方案无效的原因,以及能否拿出一个新方案来,他们往往就傻眼了。这时候,如果我听到“我不明白这个方案为什么不够
好”之类的反问,心里立刻就明白我的问题已经超出了他们的能力范围,而他们只是想拿自己死记硬背的结论来蒙混过关。
其次,可以测试出他们已经掌握的(还是那句话,“想都不用想”)浏览器技术知识。如果他们对浏览器平台的核心知识有较好的理解,想出解决同一问题的不同方案根本没有那么难。
对一名前端工程师来说,这绝对是最重要的能力。前端工程师在工作中遇到本该如此却并未如此的难题(说你啦,IE6),应该说是一件很平常的事。一个方案无效就无计可施的人,做不了前端工程师。
考核应聘者解决问题能力的另一层原因,与我的个人喜好有关。在搞清楚应聘者知道什么不知道什么之后,我就会想着问一个他们知识领域之外的问题。这样
做的目的,就是想看看他们怎样运用已有的知识解决新问题。在解决问题的每一步,我也准备了一些提示,以防有人会卡壳打艮(在我面前15分钟一言不发,对我
评价这个人毫无帮助)。我真正感兴趣的,是他们能够从上一步前进到下一步。我希望看到一个人就在我眼前学到新知识。
注意:所有问题都与浏览器技术相关。我不相信出几道抽象的逻辑题,就能够考出某人解决Web技术问题的能力。在我看来,这无异于让素描大师画肖像(或者让刘翔跟博尔特同场竞技),没有意义,也得不到任何有价值的信息。
有激情
要成为一名优秀的前端工程师,最重要的莫过于对自己做的事要有激情。我们技能都不是从学校中或者从研讨会上学来的,因此前端工程师必须具备自学能
力。浏览器技术的变化可谓日新月异,所以也只有不断提升自己的技能才做得到与时俱进。我虽然不能强迫谁必须多看博客、不断学习,但想应聘前端工程师的人恐
怕还是必须这么做的。
你怎么知道谁对这种工作有没有激情?实际上非常简单。我只问一个简单的问题:“目前你对什么Web技术最感兴趣?”这个问题永远不会过期,而且也几
乎不可能出错……除非你答不上来。就眼下来说,我希望你对这个问题给出的技术中包括WebSocket、HTML、WebGL、客户端数据库,等等。只有
对Web开发充满激情的人,才会坚持不懈地学习新知识、掌握新技能;这些人才是我真正想要的。当然,我会让他们详细解释自己提到的技术,以保证他们不是随
口说了几个时髦的新词汇。
最后一点
计算机科学或者Web设计方面的知识当然也有用,但那都是基本知识之外的东西。只要基本知识在那儿了,一切就都有了基础,想扩充知识面也不难。可
是,如果等到正式上班以后,还得从头学习基本技能,那种难度是不可同日而语的。另外,高级前端工程师与一般工程师相比,肯定需要掌握更多的技能。而面试几
乎没有经验大学毕业生,同样也会有一套完全不同的程序。我在这篇文章里列出来的都是一些最基本的东西。
对于那些还没有多少面试经验的人,我总是喜欢告诉他们,面试完了只要问自己一个问题就行:你想以后跟这个人在一起共事吗?如果不管为什么,回答是不,那就是不。
Ⅳ 我要去面试android开发,但是没有什么大点的项目,不知道做个什么样的软件才拿得出手
基本的内容你不是都会么,只要你以前做过项目(不用是android的,JAVA 啊什么的可以),就没问题啦,又不是请大拿,基本的都会是没问题的。android的开发都是自己学的,网上全是免费教材。软件的话,做的好看点就行了,像天气预报啊,地图啊,几乎都有例子,弄个好看点的。
Ⅵ 我今天android去面试。先是笔试然后是技术部门过来给我面试然后是人事过来给我面试。
笔试测试技术
技术的面试应该是就笔试答案来询问一些答题的思路
人事的面试应该是问一些团队协作 过往经历的事情 待遇要求
最后还有复试只有两种可能1.最后剩下几个同等优秀的人,需要通过这次复试淘汰掉其他人
2.你已经被录取了,只是走个形式,放轻松。
当然还有一种可能就是我所说的以上任何一点内容如果没有问过,那么就可能是对这个内容进行提问。
如果是上面第一种情况的话 现在的面试官很喜欢问的一些问题就是 你对于其他应聘者的看法;你觉得自己与其他人相比在那里更优秀缺点在哪里;如果让你选择你会淘汰谁。
当然也可能会问一些曾经网络上出现过的经典奇葩招聘题目:比如说请说出北京有多少汽车站台,并给出理由之类的,这类问题只要能自圆其说,基本就是通过了。
总之明天这场不用过于去准备什么,既然他能阻止第四场测试,那么必然有着你无法事先遇料到的内容,总之早点睡,就看你明天的应变能力了。
祝你好运!
Ⅶ 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. 技术想象力
一个优秀的技术人,如果知识的深度与广度足够,知识已成体系,那么他对于一些从未接触过的领域,也是可以做出足够合理的想象与判断,面试过程中如果问到一些领域候选人没有涉猎,这时候一般不用过多纠缠,但如果你想借这个问题考察下他的技术想象力,可以深入下去,比如问他:“你觉得这个东西应该是什么原理呢?”,“这个酷炫的控件,如果要你来做,你会怎么实现?”。在这方面表现出色的同学无疑是有深厚基础与足够广度的人。
Ⅷ 面试时,问哪些问题能试出一个 Android 应用开发者真正的水平
最新的,和最底层的。
比如JVM如何处理异常。
Java和Android中各种异常出现的原因及解决的办法。
jdk10 里面的最新的Java语法和lmbda表达式。
资深优秀的开发者,不仅体现的开发水平上,也体现在他遇到问题的处理能力上。
Ⅸ 面试时,问哪些问题能试出一个Android应用开发者真正的水平
首先,面试官们一定要知道,每个人由于经历不同,擅长的方向是千差万别的,所以一定不要抓住自己擅长的某个方面去问的很深,觉得“如果连这个都不会还算毛程序员啊”。
所以我问问题的时候,往往是“两步走”的循环:
1. 问他做过什么,如果有成品的话,我能看看更好。
2. 从他做过的东西里面,找到问题进行提问。具体的问题要看情况,可以是界面或效果的实现方式、相关bug的排除、该部分原理的分析。
举一次面试时的对话作为例子吧:
我先开始:
“这份简历和网上投过来的那份是一样的吧?”
“嗯,应该是一样的。”
“嗯好。你在之前的团队的位置是什么?”
“中高级吧。”
“具体的工作呢?”
“写框架,让新人比较容易上手,能够轻松工作。”
“你说的框架具体包括什么呢?”
“一些会共用的东西,写出来可以让新人就算是刚来也能很好的完成工作。”
“联网是你封装的吗?”
“是。”
“你们联网用的是什么?”
“就是……安卓自带的……HttpClient。”
“直接用的?”
“嗯。”
“那你们的网络请求是怎么做的异步呢?”
“嗯……用Handler嘛,还有AsyncTask。”
“能具体一点吗?”
“嗯……就是……额……”
“例如什么情况下用Handler,什么情况下用AsyncTask,你是怎么决定的呢?”
“嗯……”
“或者说,他们有什么区别呢?谷歌为什么要造他们两个出来,而不是只造一个呢?”
“区别……区别……他们肯定是有区别的,不然谷歌不可能造两个。嗯……”(到这里,这个问题就可以结束了。评级减一。)
“这样吧,你的简历上提到‘熟悉大图片的加载’,能说一下大图片加载有什么需要注意的吗?”
“缓存嘛。”
“缓存?”
“嗯,大图片的加载不就是ListView里面的大图片加载吗?要防止内存溢出。”
“ListView里面一定是大图?”
“嗯……”(不了解的东西却说自己熟悉,评级减一。继续顺着问。)
“那么ListView中图片的缓存你是怎么做的呢?”
“三级缓存嘛。”
“哪三级?”
“如果内存里面有,就用内存里面的;如果没有就用本地的;如果本地也没有就从网络上取。三级。”
“网络上的也叫缓存?”
“啊。你可以把他看作缓存,也可以不看作缓存嘛。”(这个……)
“内存缓存你是怎么实现的?”
“用的一个HashMap。”
“直接用的HashMap吗?”
“嗯……嗯。”
“直接用HashMap的话,怎么防止你刚才提到的内存溢出呢?”
“你可以用软引用嘛。”(首先答案有问题,另外当听到关键词“你可以”,多数情况下这个问题也可以结束了——八成是不会,仅仅听说过。不过出于谨慎还是继续问了)
“软引用就能防止内存溢出吗?”
“还有……还有谷歌出的一个叫LRUCache的。”(回避正面回答,确认他是不会。这个问题结束。评级减一。到此就再没必要聊下去了。)
然后简单过渡一下,就结束了面试。
Ⅹ 好程序员android面试都面试哪些问题,不知道难不难。
根据公司的项目需求,比如公司做的是一个涉及到地图定位,支付和聊天的项目,那一般就会找在这方面有开发经验的人。
根据面试者简历上的项目经验,看看这个人做了哪些项目,根据这些项目问一些相关的技术问题。
假设一些工作情况和条件,问面试者是如何面对和解决的。
有些公司确实会很刁难人,但这不能怪人家,毕竟他们想找一个能真正胜任工作的人,而你也想这样的工作。所以,面试的时候最重要的还是做你自己。让他们了解你,你自己也去了解他们。遇上自己很喜欢的工作但是人家又不要你,那你就努力提升自己。