导航:首页 > 面试求职 > 安卓基础面试题

安卓基础面试题

发布时间:2021-03-08 22:00:20

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

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

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

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

Ⅱ 安卓系统面试题

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

Ⅲ 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面试

工作经验,如果来从事过自Android,就把具体做的哪些内容全都列出来;如果是应届生,就把自己学的与Android相关专业或课程列出来。
了解公司,了解公司的历史、管理制度、公司主要是从事Android的哪方面。
热爱工作,把自己在Android方面会的东西展现出来,然后喜欢这个行业的地方列出来。以及喜欢这份工作原因。
把性格方面,以及处理人际关系方便的回答准备下。
如果有过解决问题的成功案例等准备好,如果没有,得表现出踏实,有爱心、责任心、诚信等。这样才有利于公司发展。
工作中要有团队精神,平时要与同时多沟通交流,与同事员工互相尊重、互相理解、互相包容。

Ⅳ 面试时,问哪些问题能试出一个 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、显示内加载等容待框
开启线程,在子线程中调用加载数据方法,加载完成后使用Handler通知界面刷新
在Handler中调用刷新界面方法
2、第二个的内容更多了,需要重写ListView,在网上搜一下“ListView分页加载”会有很多的。

Ⅶ 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 的组件方面的知识了,例如Service是一些在一个新的线程中吗,Service的启动方式有几种,回他们答之间的区别是什么,介绍一下Activity的生命周期。Activity的实例化策略,还有使用Intent好处...等等很多的,不能一 一列举,这个需要你有比较不错的基础知识。不过还好我们在android培训的时候李刚老师(疯狂java系列的作者)都有介绍。

Ⅸ java和android的区别 面试题

两者的区别:
1. Android是一个完备的移动装备操纵体系,由linux操纵体系,中间件,C类库和专焦点应属用措施构成。
2. java Me是java的一个微型版本,针对移动装备开拓应用措施的开拓包,它必需有底层操纵体系支持。
两者的接洽:
1. 都是用java说话编写应用措施。
各自的上风:
1. Android的上风在于开拓性和开源,是一个优越的移动装备操纵体系。
2. Java Me 是一个移动装备软件开拓包,跨平台是其首要特点。

Ⅹ Android面试题一道

面介绍一下RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false android:layout_centerHrizontal 水平居中内 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于容父元素完全居中 android:layout_alignPar..

阅读全文

与安卓基础面试题相关的资料

热点内容
晋升考核自我评价 浏览:480
职场新人自我介绍日语 浏览:700
职携求职公寓 浏览:354
醉驾人找工作 浏览:973
百度厦门六中艺术特长报名表 浏览:868
劲霸经编面试 浏览:364
小孩综合素质自我评价 浏览:470
玉环学校洗碗招聘信息 浏览:15
教师教育自我评价 浏览:192
2014合肥168中学特长生音乐录取名单 浏览:478
应届生面试自我介绍范文3分钟 浏览:800
丹阳人才招聘网 浏览:72
生物学科特长怎么写 浏览:250
昌硕面试后多久通知 浏览:925
陕西省铁饼特长生 浏览:751
硕展科技有限公司招聘 浏览:346
2019年南阳卷烟厂招聘信息 浏览:461
时尚招聘信息 浏览:341
安吉洁美电子招聘信息 浏览:106
个人简历问候语 浏览:924