当前位置:首页 » 安卓系统 » android开发面试题

android开发面试题

发布时间: 2022-02-11 05:21:52

1. 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设计方面的知识当然也有用,但那都是基本知识之外的东西。只要基本知识在那儿了,一切就都有了基础,想扩充知识面也不难。可
是,如果等到正式上班以后,还得从头学习基本技能,那种难度是不可同日而语的。另外,高级前端工程师与一般工程师相比,肯定需要掌握更多的技能。而面试几
乎没有经验大学毕业生,同样也会有一套完全不同的程序。我在这篇文章里列出来的都是一些最基本的东西。

对于那些还没有多少面试经验的人,我总是喜欢告诉他们,面试完了只要问自己一个问题就行:你想以后跟这个人在一起共事吗?如果不管为什么,回答是不,那就是不。

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

3. 安卓开发做哪些性能优化,面试题

了解Aide开发源代码

4. Android开发面试题:Drawable、Bitmap、Canvas和Paint的关系

Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低。我们理解为一种存储对象比较好。
Drawable - 作为Android平下通用的图形对象,它可以装载常用格式的图像,比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高级的可视化对象,比如渐变、图形等。
转换Bitmap to Drawable

Java代码 收藏代码
BitmapDrawable bitmapDrawable = (BitmapDrawable)bitmap;
Drawable drawable = (Drawable)bitmapDrawable;

Bitmap bitmap = new Bitmap (...);
Drawable drawable = new BitmapDrawable(bitmap);

转换Drawable to Bitmap

Java代码
Drawable d = ImagesList.get(0);
Bitmap bitmap = ((BitmapDrawable)d).getBitmap();

5. 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  平台繁荣昌盛的。

6. android 面试,算法题。

final int size = data.length;
for(int i = 0; i< size; i++){
if(data[i] == 0xffffffff)
data[i] = 0x80ffffff;
}

不知道你是不是这个意思。

7. android开发面试题:android 4.0以上版本需要注意哪些问题

不能在主线程进行网络请求

8. Android面试题一道

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

9. 好程序员android面试都面试哪些问题,不知道难不难。

  1. 根据公司的项目需求,比如公司做的是一个涉及到地图定位,支付和聊天的项目,那一般就会找在这方面有开发经验的人。

  2. 根据面试者简历上的项目经验,看看这个人做了哪些项目,根据这些项目问一些相关的技术问题。

  3. 假设一些工作情况和条件,问面试者是如何面对和解决的。

有些公司确实会很刁难人,但这不能怪人家,毕竟他们想找一个能真正胜任工作的人,而你也想这样的工作。所以,面试的时候最重要的还是做你自己。让他们了解你,你自己也去了解他们。遇上自己很喜欢的工作但是人家又不要你,那你就努力提升自己。

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

你要是不懂这块的话,那我建议你还是由相关的技术人员来面试比较好。面试并不一定非得人事hr进行的,技术层面就算是给你一些问题,回答的效果你也不明白。这样子招人,大BOSS要发飙的😂😂😂

热点内容
从ftp下载文件 发布:2024-05-09 00:15:59 浏览:774
javalist转换 发布:2024-05-09 00:15:36 浏览:963
服务器为什么会产生热量 发布:2024-05-08 23:57:44 浏览:208
页面置换算法实验报告 发布:2024-05-08 23:51:08 浏览:984
十秒编程 发布:2024-05-08 23:34:04 浏览:848
输入源程序后如何编译 发布:2024-05-08 23:23:36 浏览:536
我的世界基岩版练习pvp服务器 发布:2024-05-08 23:20:23 浏览:978
phpmanual 发布:2024-05-08 23:19:50 浏览:297
如何登录不知道密码的wifi网 发布:2024-05-08 23:09:42 浏览:994
java速学 发布:2024-05-08 23:08:43 浏览:749