当前位置:首页 » 技能特长 » 安卓三年工作经验面试题

安卓三年工作经验面试题

发布时间: 2021-01-26 04:59:08

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

首先,面试官们一定要知道,每个人由于经历不同,擅长的方向是千差万别的,所以一定不要抓住自己擅长的某个方面去问的很深,觉得“如果连这个都不会还算毛程序员啊”。

所以我问问题的时候,往往是“两步走”的循环:
1. 问他做过什么,如果有成品的话,我能看看更好。
2. 从他做过的东西里面,找到问题进行提问。具体的问题要看情况,可以是界面或效果的实现方式、相关bug的排除、该部分原理的分析。

举一次面试时的对话作为例子吧:
我先开始:
“这份简历和网上投过来的那份是一样的吧?”
“嗯,应该是一样的。”
“嗯好。你在之前的团队的位置是什么?”
“中高级吧。”
“具体的工作呢?”
“写框架,让新人比较容易上手,能够轻松工作。”
“你说的框架具体包括什么呢?”
“一些会共用的东西,写出来可以让新人就算是刚来也能很好的完成工作。”
“联网是你封装的吗?”
“是。”
“你们联网用的是什么?”
“就是……安卓自带的……HttpClient。”
“直接用的?”
“嗯。”
“那你们的网络请求是怎么做的异步呢?”
“嗯……用Handler嘛,还有AsyncTask。”
“能具体一点吗?”
“嗯……就是……额……”
“例如什么情况下用Handler,什么情况下用AsyncTask,你是怎么决定的呢?”
“嗯……”
“或者说,他们有什么区别呢?谷歌为什么要造他们两个出来,而不是只造一个呢?”
“区别……区别……他们肯定是有区别的,不然谷歌不可能造两个。嗯……”(到这里,这个问题就可以结束了。评级减一。)
“这样吧,你的简历上提到‘熟悉大图片的加载’,能说一下大图片加载有什么需要注意的吗?”
“缓存嘛。”
“缓存?”
“嗯,大图片的加载不就是ListView里面的大图片加载吗?要防止内存溢出。”
“ListView里面一定是大图?”
“嗯……”(不了解的东西却说自己熟悉,评级减一。继续顺着问。)
“那么ListView中图片的缓存你是怎么做的呢?”
“三级缓存嘛。”
“哪三级?”
“如果内存里面有,就用内存里面的;如果没有就用本地的;如果本地也没有就从网络上取。三级。”
“网络上的也叫缓存?”
“啊。你可以把他看作缓存,也可以不看作缓存嘛。”(这个……)
“内存缓存你是怎么实现的?”
“用的一个HashMap。”
“直接用的HashMap吗?”
“嗯……嗯。”
“直接用HashMap的话,怎么防止你刚才提到的内存溢出呢?”
“你可以用软引用嘛。”(首先答案有问题,另外当听到关键词“你可以”,多数情况下这个问题也可以结束了——八成是不会,仅仅听说过。不过出于谨慎还是继续问了)
“软引用就能防止内存溢出吗?”
“还有……还有谷歌出的一个叫LRUCache的。”(回避正面回答,确认他是不会。这个问题结束。评级减一。到此就再没必要聊下去了。)
然后简单过渡一下,就结束了面试。

⑵ Android工程师面试会问哪些问题

1、请用最简洁的语言描述您之前的工作经历和工作成果。
2、您认为此工作岗回位应当具备哪些素答质和特质?
3、您平时习惯于单独工作还是团队工作?
4、您对原来的单位和上司的看法如何?
5、您如何描述自己的个性?
6、是否方便告诉我您目前的薪资待遇是多少?
7、您是否介意我们通过您原来的单位进行一些调查?
95%的面试基本上都离不开这些问题,当然还会提问一些专业问题,慕课网听听关于安卓面试的课程,老师会教你一些回答的技巧。

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

首先,面试官们一定要知道,每个人由于经历不同,擅长的方向是千差万别的,所以一定不要抓住自己擅长的某个方面去问的很深,觉得“如果连这个都不会还算毛程序员啊”。

所以我问问题的时候,往往是“两步走”的循环:
1. 问他做过什么,如果有成品的话,我能看看更好。
2. 从他做过的东西里面,找到问题进行提问。具体的问题要看情况,可以是界面或效果的实现方式、相关bug的排除、该部分原理的分析。

举一次面试时的对话作为例子吧:
我先开始:
“这份简历和网上投过来的那份是一样的吧?”
“嗯,应该是一样的。”
“嗯好。你在之前的团队的位置是什么?”
“中高级吧。”
“具体的工作呢?”
“写框架,让新人比较容易上手,能够轻松工作。”
“你说的框架具体包括什么呢?”
“一些会共用的东西,写出来可以让新人就算是刚来也能很好的完成工作。”
“联网是你封装的吗?”
“是。”
“你们联网用的是什么?”
“就是……安卓自带的……HttpClient。”
“直接用的?”
“嗯。”
“那你们的网络请求是怎么做的异步呢?”
“嗯……用Handler嘛,还有AsyncTask。”
“能具体一点吗?”
“嗯……就是……额……”
“例如什么情况下用Handler,什么情况下用AsyncTask,你是怎么决定的呢?”
“嗯……”
“或者说,他们有什么区别呢?谷歌为什么要造他们两个出来,而不是只造一个呢?”
“区别……区别……他们肯定是有区别的,不然谷歌不可能造两个。嗯……”(到这里,这个问题就可以结束了。评级减一。)
“这样吧,你的简历上提到‘熟悉大图片的加载’,能说一下大图片加载有什么需要注意的吗?”
“缓存嘛。”
“缓存?”
“嗯,大图片的加载不就是ListView里面的大图片加载吗?要防止内存溢出。”
“ListView里面一定是大图?”
“嗯……”(不了解的东西却说自己熟悉,评级减一。继续顺着问。)
“那么ListView中图片的缓存你是怎么做的呢?”
“三级缓存嘛。”
“哪三级?”
“如果内存里面有,就用内存里面的;如果没有就用本地的;如果本地也没有就从网络上取。三级。”
“网络上的也叫缓存?”
“啊。你可以把他看作缓存,也可以不看作缓存嘛。”(这个……)
“内存缓存你是怎么实现的?”
“用的一个HashMap。”
“直接用的HashMap吗?”
“嗯……嗯。”
“直接用HashMap的话,怎么防止你刚才提到的内存溢出呢?”
“你可以用软引用嘛。”(首先答案有问题,另外当听到关键词“你可以”,多数情况下这个问题也可以结束了——八成是不会,仅仅听说过。不过出于谨慎还是继续问了)
“软引用就能防止内存溢出吗?”
“还有……还有谷歌出的一个叫LRUCache的。”(回避正面回答,确认他是不会。这个问题结束。评级减一。到此就再没必要聊下去了。)
然后简单过渡一下,就结束了面试。

所以你看,只需要简单提问,然后接着对方的回答继续往深了问,就什么都问出来了。

--------------------------------------------------------------------------------

评论中有人问到这次面试中我没有问完的问题的答案,那简单就说一下,想了解更多还请自行谷歌。

Handler和AsyncTask:这俩类都是用来实现异步的,其中AsyncTask的集成度较高,使用简单,Handler则需要手动写Runnable或者Thread的代码;另外,由于AsyncTask内部实现了一个非常简单的线程池,实际上是只适用于轻量级的异步操作的,一般不应该用于网络操作。我问他Handler和AsyncTask的区别,一方面是因为他说用AsyncTask联网,因此我认为他对AsyncTask并不熟悉;但更重要的是在我问他实现异步的具体手段的时候,他同时提到了Handler和AsyncTask——用这种“混搭”的使用方式来写联网框架,就算不考虑AsyncTask的可用性,也显得非常怪异,这听起来更像是在“列举Android实现异步操作最常用的类”,而非“讲述实现网络异步操作的具体方式”。也就是说,我听了这句话后开始怀疑他封装过联网框架这件事的真实性。但我只是怀疑,并不确定,因此接着问了我想问的。

图片缓存:大多数情况下,内存中使用LRUCache是最合适的。如果用HashMap来实现,不是不可以,但完全没必要嘛!需要注意在合适的时候释放缓存。至于具体怎么释放,我没考虑过,但用软引用的问题在于,你很难控制缓存的大小,也就是说,只有等到你的内存快要撑爆,你的图片缓存才会被回收。是不是感觉傻傻的?

对于初级和中级工程师,我更倾向于考虑对方的学习能力,也就是你对于自己所做过的东西是否足够了解,而非要求你那里都强,因为就像我开头说的,每个人由于经历不同,擅长的方向是千差万别的,我不喜欢挑别人的软肋问。只要你学习能力强,我就安全感满满哒!

⑷ 面试时,问哪些问题能试出一个 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. 技术习惯

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

⑸ android 面试题

1、前言 
  6 月  26  日,  Google Android  发布了  NDK  ,引起了很多发人员的兴趣。  NDK  全
称:   Native  Development  Kit  。下载地址为: 
http://developer.android.com/sdk/ndk/1.5_r1/index.html  。 
2、误解 
  新出生的事物,除了惊喜外,也会给我们带来一定的迷惑、误解。 
2.1、误解一:  NDK  发布之前,  Android  不支持进行  C  开发 
  在 Google  中搜索  “NDK”  ,很多  “Android  终于可以使用  C++  开发  ”  之类
的标题,这是一种对  Android  平台编程方式的误解。其实,  Android  平台从诞生起,就已
经支持  C  、   C++  开发。众所周知,   Android  的  SDK  基于  Java  实现, 这意味着基于  Android 
SDK  进行开发的第三方应用都必须使用  Java  语言。但这并不等同于 “  第三方应用只能使
用  Java”  。在  Android  SDK  首次发布时,  Google  就宣称其虚拟机  Dalvik  支持  JNI  编程
方式,也就是第三方应用完全可以通过  JNI  调用自己的  C  动态库,即在  Android  平台上,  
“Java+C”  的编程方式是一直都可以实现的。 
  当然这种误解的产生是有根源的:在 Android SDK  文档里,找不到任何  JNI  方面的
帮助。即使第三方应用开发者使用  JNI  完成了自己的  C  动态链接库(  so  )开发,但是  so 
如何和应用程序一起打包成  apk  并发布?这里面也存在技术障碍。我曾经花了不少时间,
安装交叉编译器创建  so  ,并通过  asset (资源)方式,实现捆绑  so  发布。但这种方式只
能属于取巧的方式,并非官方支持。所以,在  NDK  出来之前,我们将  “Java+C”  的开发
模式称之为灰色模式,即官方既不声明 “  支持这种方式  ”  ,也不声明 “  不支持这种方
式  ”  。 
2.2、误解二:有了  NDK  ,我们可以使用纯  C  开发  Android  应用 
  Android SDK 采用  Java  语言发布,把众多的  C  开发人员排除在第三方应用开发外
(  注意:我们所有讨论都是基于“  第三方应用开发  ”  ,  Android  系统基于  Linux  ,系
统级别的开发肯定是支持  C  语言的。   )。 NDK  的发布,许多人会误以为,类似于  Symbian  、 
WM  ,在  Android  平台上终于可以使用纯  C  、  C++  开发第三方应用了!其实不然,  NDK 
文档明确说明:  it is not a good way  。因为  NDK  并没有提供各种系统事件处理支持,也没
有提供应用程序生命周期维护。此外,在本次发布的  NDK  中,应用程序  UI  方面的  API  也
没有提供。至少目前来说,使用纯  C  、  C++  开发一个完整应用的条件还不完备。 
 
3、NDK  是什么 
 
对 NDK  进行了粗略的研究后,我对  “NDK  是什么  ”  的理解如下: 
 
1、NDK  是一系列工具的集合。 
 
NDK 提供了一系列的工具,帮助开发者快速开发  C  (或  C++  )的动态库,并能自动
将  so  和  java  应用一起打包成  apk  。这些工具对开发者的帮助是巨大的。 
NDK 集成了交叉编译器,并提供了相应的  mk  文件隔离  CPU  、平台、  ABI  等差异,
开发人员只需要简单修改  mk  文件(指出 “  哪些文件需要编译  ”  、 “  编译特性要求  ” 
等),就可以创建出  so  。 
NDK 可以自动地将  so  和  Java  应用一起打包,极大地减轻了开发人员的打包工作。 
2、NDK  提供了一份稳定、功能有限的  API  头文件声明。
 
  oogle 明确声明该  API  是稳定的,在后续所有版本中都稳定支持当前发布的  API  。
从该版本的  NDK  中看出,这些  API  支持的功能非常有限,包含有:  C  标准库(  libc  )、
标准数学库(  libm  )、压缩库(  libz  )、  Log  库(  liblog  )。 
G
 
4、NDK  带来什么 
 
1、NDK  的发布,使  “Java+C”  的开发方式终于转正,成为官方支持的开发方式。 
使用 NDK  ,我们可以将要求高性能的应用逻辑使用  C  开发,从而提高应用程序的执
行效率。 
使用 NDK  ,我们可以将需要保密的应用逻辑使用  C  开发。毕竟,  Java  包都是可以反
编译的。 
NDK 促使专业  so  组件商的出现。(乐观猜想,要视乎  Android  用户的数量) 
2、NDK  将是  Android  平台支持  C  开发的开端。 
  NDK 提供了的开发工具集合,使开发人员可以便捷地开发、发布  C  组件。同时,  
Google 承诺在  NDK  后续版本中提高  “  可调式  ”  能力,即提供远程的  gdb  工具,使我
们可以便捷地调试  C  源码。在支持  Android  平台  C  开发,我们能感觉到  Google  花费了
很大精力,我们有理由憧憬 “C  组件支持  ”  只是  Google Android  平台上 C  开发的开端。
毕竟,   C  程序员仍然是码农阵营中的绝对主力,将这部分人排除在  Android  应用开发之外,
显然是不利于  Android  平台繁荣昌盛的。

⑹ Android一小面试题求解

4.onStop() 只是使来activity处于停止状态,比如从activityA 跳到源activityB,这时候A处于 onStop()

  1. 正常的结束activity的方法

  2. 特殊情况时退出方法,可使用重写application的方式屏蔽掉错误提示对话框,实现退出效果

  3. java的结束进程的方法,也可以用来结束当前activity

⑺ 面试题:android手机有哪些缺点

一.短消息[SMS]的基本功能测试 1、短消息的基本功能:是指短消息的编辑,删除,保存,收发,显示,以及各种按钮等功能的正常实现。 2、测试要求和执行:一般根据测试案例或软件本身的流程就可以完成短消息的基本功能测试。 二.短消息的交叉事件测试 1、交叉测试:又叫事件或冲突测试,是指一个功能正在执行过程中,同时另外一个事件或操作对该过程进行干扰的测试。例如通话过程中接收到短信或来响闹。应该以执行干扰的冲突事件不会导致手机死机或花屏等严重的问题出现为Pass的标准。 2、测试要求和执行:干扰要恰到好处,准确,否则很难发掘出深层次的软件缺陷。 三.短消息的压力性能测试 1、压力测试:又叫边界值容错测试或极限负载测试,即测试过程中,已经达到某一软件功能的最大容量,边界值或最大的承载极限,仍然对其进行相关操作。例如连续进行短信的接收和发送,超过收件箱和PIM卡所能存储的最大的条数,仍然进行短消息的接收或发送,以检测软件在超常态条件下的表现,来评估用户能否接受。 2、测试要求和执行:可以考虑进行自动化测试 四.短消息的容量性能测试 1、容量测试:又叫满记忆体测试,包括手机的用户可用内存和SIM/PIM卡的所有空间被完全使用的测试。此时再对可编辑的模块进行和存储空间有关的任何操作测试,如果软件的极限容量状态下处理不好,有可能导致死机或严重的花屏等问题的出现。 2、测试要求和执行:可以考虑进行自动充满记忆体测试,要对不同品牌和不同容量大小的SIM/PIM卡进行测试 五. 短消息的兼容性能测试 兼容性测试:也就是不同品牌手机,不同网络,不同品牌和不同容量大小的SIM/PIM卡之间的互相兼容的测试,以短消息为例:中国电信的小灵通接收到从中国移动或中国联通GSM发来的短消息,接收,显示和回复功能是否正常等;

⑻ 请教有经验者,一般android面试会问些什么问题

其实,不管是什么样的面试形,问的问题都差不多,万变不离其宗,都有规专律可寻。其实属对所有的面试官而言,只有一个目的:在最短的时间里了解到你最多的信息。想高效率的准备面试,先从这七个大方面着手吧!
一、基本情况
1、请用最简洁的语言描述您从前的工作经历和工作成果。
二、专业背景
您认为此工作岗位应当具备哪些素质?
三、工作模式
您平时习惯于单独工作还是团队工作?
四、价值取向
您对原来的单位和上司的看法如何?
五、资质特性
您如何描述自己的个性?
六、薪资待遇
是否方便告诉我您目前的待遇是多少?
七、背景调查
您是否介意我们通过您原来的单位迚行一些调查?
95%的面试基本上都离不开这些问题,当然还有可能问一些专业问题,我想如果你做过的话应该都不是什么难事,一般面试官都不会过多的问专业方面的问题的。

⑼ 三年的安卓开发面试会问什么问题

现在的安卓行业,一年当三年用,两年当五年用。一般不会问太高深的问题,主要在我看来就是一些优化的流程和开发的流程。比如如何搭建框架等等之类内容的东西,如果你对某个知识点知道的比较清楚的话,可以重点突出一下。千万不要搬起石头砸自己的脚。

⑽ 安卓系统面试题

一、面试程序 不同的单位对面试过程的设计会有所不同,有的单位会非常正式,有回的单位则相对比较随意,但一般答来说,面试可以分为以下五个阶段: 第一阶段:准备阶段。准备阶段主要是以一般性的社交话题进行交谈,例如主考会问类似“从宿舍到这里远不远”、“今天天气很好,是吗?”这样的问题,目的是使应聘人员能比较自然地进入面试情景之中,以便消除毕业生紧张的心情,建立一种和谐、友善的面试气氛。毕业生这时就不需要详细地对所问问题进行一一解答,可利用这个机会熟悉面试环境和考官。 第二阶段:引入阶段。社交性的话题结束后,毕业生的情绪逐渐稳定下来,开始进入第二阶段,这阶段主要围绕其履历情况提出问题,给应聘者一次真正发言的机会。例如主考会问类似“请用简短的语言介绍一下你自己”、“在大学期间所学的主要课程有哪些”、“谈谈你在学期间最大的收获是什么”等问题。毕业生在面试前就应对类似的问题进行准备,回答时要有针对性。 第三阶段:正题阶段。进入面谈的实质性正题,主要是从广泛的话题来了解应聘人员不同侧面的心理特点、行为特征、能力素质等,因此,提问的范围也较广,主要是为了针对应聘者的特点获取评价信息,提问的方式也各...

热点内容
鬼片高清画质。电影。 发布:2024-08-19 09:14:10 浏览:650
一家看电影网 发布:2024-08-19 08:57:54 浏览:155
韩国大尸度电影推荐 发布:2024-08-19 08:55:58 浏览:719
接吻电影的名字美国 发布:2024-08-19 08:41:41 浏览:758
韩剧女主高中就怀孕了剧名 发布:2024-08-19 08:00:29 浏览:692
蓝色头发电影女主角 发布:2024-08-19 07:51:59 浏览:849
台湾电影老师上了学生 发布:2024-08-19 07:36:20 浏览:964
两人吃屎的电影 发布:2024-08-19 07:25:07 浏览:450
有裸露下体的大尺度电影吗 发布:2024-08-19 07:20:50 浏览:790
好看的电影在线观看免费 发布:2024-08-19 06:55:37 浏览:912