当前位置: 网学 > 编程文档 > Android > 正文

android面试

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: myeducs.cn 发布时间: 13/03/17

【网学网提醒】:网学会员编辑为广大网友搜集整理了:android面试绩等信息,祝愿广大网友取得需要的信息,参考学习


    Android面试题
    1.请描述下Activity的生命周期。
    2.如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
    3.如何将一个Activity设置成窗口的样式。(EditedbySodino)
    4.如何退出Activity?如何安全退出已调用多个Activity的Application?
    5.请介绍下Android中常用的五种布局。
    6.请介绍下Android的数据存储方式。(EditedbySodino)
    7.请介绍下ContentProvider是如何实现数据共享的。(EditedbySodino)
    8.如何启用Service,如何停用Service。(EditedbySodino)
    9.注册广播有几种方式,这些方式有何优缺点?请谈谈Android引入广播机制的用意。
    10.请解释下在单线程模型中Message、Handler、MessageQueue、Looper之间的关系。
    11.AIDL的全称是什么?如何工作?能处理哪些类型的数据?
    12.请解释下Android程序运行时权限与文件系统权限的区别。(EditedbySodino)
    13.系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由。
    14.有一个一维整型数组int[]data保存的是一张宽为width,高为height的图片像素值信息。请写一个算法,将该图片所有的白色不透明(0xffffffff)像素点的透明度调整为50%。
    15.你如何评价Android系统?优缺点。
    说一下你眼中的Android的优点和不足之处(面试华为的人有被问过)'Z5W9u.~9s&;V
    随着Android的越来越红火,不少应聘Android开发的人,难免会被问到这样的问题,就是这个平台的优点,当然有优点也会有缺点的,
    .b9Ou/d3L:}9p-j&;k4J/W#N
    下面是我从网上总结出来的,希望对大家应聘Android开发有所帮助:4j$z&;l4l+U$N)]/E
    .K"[:t4{2sX
    Android平台手机5大优势:
    "G)\&;t*V+u-l+]1i8E-C)~1[
    一、开放性:V*g(b.f+et1Z*F/c
    2j$B(D2`!M5p3k1V&;@
    在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟
    2h/K#O6n1Y$S9\:k#A)}x;i$H*{%u
    开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,随大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。8n3p9l3a)S
    -p.S'd]8BC3_
    二、挣脱运营商的束缚8f-S%v7G-O#t2])i
    6^$n*d$R"V:y7?
    在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。从去年iPhone上市,用户可以更加方便地
    连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈,当你可以通过手机IM软件方便地进行即时聊天时,再回想不久前天价的彩信和图铃下载业务,是不是像噩梦一样?
    4I#N;i,W+b$B.F3N3K*U7S5Y:P5_!f,?.c$W'A}
    互联网巨头Google推动的Android终端天生就有网络特色,将让用户离互联网更近。._.^/V"m#D)P#U0q,d
    +u&;^3q*s-K+}&;g%g三、丰富的硬件选择
    #V/v+U7@"y)}.{5|0A8Y!w:U'N,V/@$R
    这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容,好比你从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移,是不是非常方便呢?
    :\&;r;V,[2s4E:T8P#B"F3E
    -e)E7V$W6]&;N8n四、不受任何限制的开发商
    8R'](|;g$~:S1I&;I4B:_.x"Z$Y&;AZ0C&;M9g
    Android平台提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏如可控制正是留给Android难题之一。
    /S+w6@;Z*z"~*u4i/Z#]7F'@,Y.P)U
    五、无缝结合的Google应用3_0{)x"[-~(g*|%O
    v't2w"Q4{-L.wO如今叱诧互联网的Google已经走过10年度历史,从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。7A0d2S+|,x-o
    9G2M-?"^(Y2_3I1C+A#F
    再说Android的5大不足:
    9T+|3U(}7X(H$C7[(E2T+Ts3H'Lu;Q)o
    一、安全和隐私5a4|%v8y1X1d#^2e
    %@;i6|!a2o&;o!o*h0c由于手机与互联网的紧密联系,个人隐私很难得到保守。除了上网过程中经意或不经意留下的个人足迹,Google这个巨人也时时站在你的身后,洞穿一切,因此,互联网的深入将会带来新一轮的隐私危机。0\2D;S#t%W.k
    1n*S.Z7c#]*p:h*q2U2O
    二、首先开卖Android手机的不是最大运营商
    !N9X;[#g4R!L
    1G9s(R3a.V*n*E)d#W5X众所周知,T-Mobile在23日,于美国纽约发布了Android首款手机G1。但是在北美市场,最大的两家运营商乃AT&;T和Verizon,而目前所知取得Android手机销售权的仅有T-Mobile和Sprint,其中T-Mobile的3G网络相对于其他三家也要逊色不少,因此,用户可以买账购买G1,能否体验到最佳的3G网络服务则要另当
    别论了!
    %il7I.I!A android面试_网学
当前位置: 网学 > 编程文档 > Android > 正文

android面试

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: myeducs.cn 发布时间: 13/03/17
$r,R/C,p1s1Q8r5Q*j:I6V
    三、运营商仍然能够影响到Android手机
    2}-~2t0W\.J
    ;g#V+M*`1\"W在国内市场,不少用户对购得移动定制机不满,感觉所购的手机被人涂画了广告一般。这样的情况在国外市场同样出现。Android手机的另一发售运营商Sprint就将在其机型中内置其手机商店程序。2q)[-K:p2f'^%w8s
    ;o1v7Z6s7V&;w9s;K%S
    四、同类机型用户减少
    W*d3z6M:k3R*E9[
    0S&;U.W"g(t"`%}8Y.@4T在不少手机论坛都会有针对某一型号的子论坛,对一款手机的使用心得交流,并分享软件资源。而对于Android平台手机,由于厂商丰富,产品类型多样,这样使用同一款机型的用户越来越少,缺少统一机型的程序强化。举个稍显不当的例子,现在山寨机泛滥,品种各异,就很少有专门针对某个型号山寨机的讨论和群组,除了哪些功能异常抢眼、颇受追捧的机型以外。1_6I7U'R9l#f
    5S*[f*hw#Z9yB.D*d
    五、过分依赖开发商缺少标准配置
    /z8e+H.B'K$~:w
    8r8Q5G5f"P9A3q.D%Y在使用PC端的WindowsXp系统的时候,都会内置微软WindowsMediaPlayer这样一个浏览器程序,用户可以选择更多样的播放器,如Realplay或暴风影音等。但入手开始使用默认的程序同样可以应付多样的需要。在Android平台中,由于其开放性,软件更多依赖第三方厂商,比如Android系统的SDK中就没有内置音乐播放器,全部依赖第三方开发,缺少了产品的统一性。
    什么是ANR如何避免它?
    ANR:ApplicationNotResponding,五秒
    在Android中,活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应。当出现下列情况时,Android就会显示ANR对话框了:
    对输入事件(如按键、触摸屏事件)的响应超过5秒
    意向接受器(intentReceiver)超过10秒钟仍未执行完毕
    Android应用程序完全运行在一个独立的线程中(例如main)。这就意味着,任何在主线程中运行的,需要消耗大量时间的操作都会引发ANR。因为此时,你的应用程序已经没有机会去响应输入事件和意向广播(Intentbroadcast)。
    因此,任何运行在主线程中的方法,都要尽可能的只做少量的工作。特别是活动生命周期中的重要方法如onCreate()和onResume()等更应如此。潜在的比较耗时的操作,如访问网络和数据库;或者是开销很大的计算,比如改变位图的大小,需要在一个单独的子线程中完成(或者是使用异步请求,如数据库操作)。但这并不意味着你的主线程需要进入阻塞状态已等待子线程结束--也不需要调用Therad.wait()或者Thread.sleep()方法。取而代之的是,主线程为子线程提供一个句柄(Handler),
    让子线程在即将结束的时候调用它(xing:可以参看Snake的例子,这种方法与以前我们所接触的有所不同)。使用这种方法涉及你的应用程序,能够保证你的程序对输入保持良好的响应,从而避免因为输入事件超过5秒钟不被处理而产生的ANR。这种实践需要应用到所有显示用户界面的线程,因为他们都面临着同样的超时问题。
    什么情况会导致ForceClose?如何避免?能否捕获导致其的异常?
    一般像空指针啊,可以看起logcat,然后对应到程序中来解决错误
    简要解释一下activity、intent、intentfilter、service、Broadcase、BroadcaseReceiver
    一个activity呈现了一个用户可以操作的可视化用户界面
    一个service不包含可见的用户界面,而是在后台无限地运行
    可以连接到一个正在运行的服务中,连接后,可以通过服务中暴露出来的借口与其进行通信
    一个broadcastreceiver是一个接收广播消息并作出回应的component,broadcastreceiver没有界面
    intent:contentprovider在接收到ContentResolver的请求时被激活。
    activity,service和broadcastreceiver是被称为intents的异步消息激活的。
    一个intent是一个Intent对象,它保存了消息的内容。对于activity和service来说,它指定了请求的操作名称和待操作数据的URI
    Intent对象可以显式的指定一个目标component。如果这样的话,android会找到这个component(基于manifest文件中的声明)并激活它。但如果一个目标不是显式指定的,android必须找到响应intent的最佳component。
    它是通过将Intent对象和目标的intentfilter相比较来完成这一工作的。一个component的intentfilter告诉android该component能处理的intent。intentfilter也是在manifest文件中声明的。
    IntentService有何优点?
    其实它也是避免ANR的方法:
    IntentService的好处
    *Acitivity的进程,当处理Intent的时候,会产生一个对应的Service
    *Android的进程处理器现在会尽可能的不kill掉你
    *非常容易使用
    Androiddvm的进程和Linux的进程,应用程序的进程是否为同一个概念
    DVM执行时,在linux看来就是一应用程序进程,所以说是同一概念
    sim卡的EF文件有何作用
    sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本身可以有自己的操作系统,EF就是作存储并和手机通讯用的
    嵌入式操作系统内存管理有哪几种,各有何特性
    页式,段式,段页,用到了MMU,虚拟空间等技术
    什么是嵌入式实时操作系统,Android操作系统属于实时操作系统吗?
    分硬实时和软实时,android属于linux内核,linux在用户空间可抢占,内核空间在2.4以后可局部抢占,严格来讲Android属于软实时系统
    一条最长的短信息约占多少byte?
    一条短信可以输入
    中文70(包括标点)
    英文160
    160个字节
    View如何刷新?
    View可以调用invalidate()和postInvalidate()这两个方法刷新
    DDMS与TraceView的区别?
    DDMS是一个程序执行查看器,在里面你可以看见线程和堆栈等信息,TraceView是程序性能分析器
    activity被回收了怎么办?
    activity回收了,那就只有另起了
    在Java中如何引入C语言?
    java调用C语言程序,可以用JNI接口来实现
    Android的基本组件都有什么?
    Activity,Service,Intent,contentProvider,BrodecastReceiver
    IPC通信机制
    
    IPC机制
    有了Intent这种基于消息的进程内或进程间通信模型,我们就可以通过Intent去开启一个Service,可以通过Intent跳转到另一个Activity,不论上面的Service或Activity是在当前进程还是其它进程内即不论是当前应用还是其它应用的Service或Activity,通过消息机制都可以进行通信!
    但是通过消息机制实现的进程间通信,有一个弊端就是,如果我们的Activity与Service之间的交往不是简单的Activity开启Service操作,而是要随时发一些控制请求,那么必须就要保证Activity在Service的运行过程中随时可以连接到Service。
    eg:音乐播放程序
    后台的播放服务往往独立运行,以方便在使用其他程序界面时也能听到音乐。同时这个后台播放服务也会定义一个控制接口,比如播放,暂停,快进等方法,任何时候播放程序的界面都可以连接到播放服务,然后通过这组控制接口方法对其控制。
    
    如上的需求仅仅通过Intent去开启Service就无法满足了!从而Android的显得稍微笨重的IPC机制就出现了,然而它的出现只适用于Activity与Service之间的通信,类似于远程方法调用,就像是C/S模式的访问,通过定义AIDL接口文件来定义一个IPC接口,Server端实现IPC接口,Client端调用IPC接口的本地代理。
    由于IPC调用是同步的,如果一个IPC服务需要超过几毫秒的时间才能完成的话,你应该避免在Activity的主线程中调用,否则IPC调用会挂起应用程序导致界面失去响应。在这种情况下,应该考虑单起一个线程来处理IPC访问。
    两个进程间IPC看起来就象是一个进程进入另一个进程执行代码然后带着执行的结果返回。
    IPC机制鼓励我们“尽量利用已有功能,利用IPC和包含已有功能的程序协作完成一个完整的项目
    谈谈你对AndroidNDK的理解
    1、前言
    6月26日,GoogleAndroid发布了NDK,引起了很多发人员的兴趣。NDK全称:NativeDevelopmentKit。下载地址为:developer.android/sdk/ndk/1.5_r1/index.html。
    2、误解
    新出生的事物,除了惊喜外,也会给我们带来一定的迷惑、误解。
    2.1、误解一:NDK发布之前,Android不支持进行C开发
    在Google中
    搜索“NDK”,很多“Android终于可以使用C++开发”之类的标题,这是一种对Android平台编程方式的误解。其实,Android平台从诞生起,就已经支持C、C++开发。众所周知,Android的SDK基于Java实现,这意味着基于AndroidSDK进行开发的第三方应用都必须使用Java语言。但这并不等同于“第三方应用只能使用Java”。在AndroidSDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台上,“Java+C”的编程方式是一直都可以实现的。
    当然这种误解的产生是有根源的:在AndroidSDK文档里,找不到任何JNI方面的帮助。即使第三方应用开发者使用JNI完成了自己的C动态链接库(so)开发,但是so如何和应用程序一起打包成apk并发布?这里面也存在技术障碍。我曾经花了不少时间,安装交叉编译器创建so,并通过asset(资源)方式,实现捆绑so发布。但这种方式只能属于取巧的方式,并非官方支持。所以,在NDK出来之前,我们将“Java+C”的开发模式称之为灰色模式,即官方既不声明“支持这种方式”,也不声明“不支持这种方式”。
    2.2、误解二:有了NDK,我们可以使用纯C开发Android应用
    AndroidSDK采用Java语言发布,把众多的C开发人员排除在第三方应用开发外(注意:我们所有讨论都是基于“第三方应用开发”,Android系统基于Linux,系统级别的开发肯定是支持C语言的。)。NDK的发布,许多人会误以为,类似于Symbian、WM,在Android平台上终于可以使用纯C、C++开发第三方应用了!其实不然,NDK文档明确说明:itisnotagoodway。因为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头文
    件声明。
    Google明确声明该API是稳定的,在后续所有版本中都稳定支持当前发布的API。从该版本的NDK中看出,这些API支持的功能非常有限,包含有:C标准库(libc)、标准数学库(libm)、压缩库(libz)、Log库(liblog)。
    
    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组件支持”只是GoogleAndroid平台上C开发的开端。毕竟,C程序员仍然是码农阵营中的绝对主力,将这部分人排除在Android应用开发之外,显然是不利于Android平台繁荣昌盛的。
    如何优化LISTVIEW
    一﹑Android手机操作系统的四层架构?
    
    架构框架以此从上到下:
    
    1.Applications(应用程序(应用层));
    Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。
    
    2.ApplicationFrameWork(应用程序扩展层(框架));
    由于Android的手机操作系统是,基于Liunx2.6系统之上封装而成。所以开发人员可也以直接访问核心程序所使用的API框架,该核心应用程序的API框架设计简化了组件的重用,任何一个核心应用程序(模块)都暴露出它的功能作用,并且其他应用程序也都可以使用该核心应用程序(模块)的功能(不过的遵守该核心应用程序框架的安全性限制)。同样,该应用程序的重用机制也使用户方便使用应程序的相关组件。
    API框架隐藏的核心应用程序是一系列的应用程序的服务和系统应用,其中包括如下:
    (Android手机中的View是最基本的一个UI类)
    丰富而又可扩展的视图(手机界面所显示的组件(Activity上所显示的))组件,可以用来构建应用程序如:(视图)Views,网格(grids),文本框(textboxes),按钮(button),放置图片区(imageview),文本编辑区(edittext),文本显示区(text
    view),
    
    3.AndroidRunTimeLibraries(Android系统运行库);
    
    4.LiunxKernel(Android系统最底层核心系统Liunx)
    Android的核心系统服务依赖于Liunx2.6内核,如系统安全,内存管理,进程管理,网络协议栈和驱动模型。Liunx内核也同时作为硬件和软件栈之间的抽象层。
    Basic:
    1.基本的UI控件和布局文件
    2.UI配套的Adapter的使用
    3.ActivityIntentServicebroadCastReceiver他们的生命周期管理熟悉一下
    4.操作手机上的数据库SQLite应用
    Advanced_1(这是某位成功通过Android面试的兄的棠面经):
    1.为什么看好Android
    2.现在在公司做哪些工作(关于Android)
    3.Android的框架以及一些基础知识
    4.Android一些方面的领悟(如Android框寄棠IoC个性,ViewSystem的状态机机制等)
    Advanced_2(这是某位成功通过Android面试的兄的棠面经):
    1.对多线程的运用和理解,及多线程之间handle的传值。
    2.对android虚拟机的理解,包括内存管理机制垃圾回收机制。
    3.framework工作方式及原理,Activity是如何生成一个view的,机制是什么。
    4.android本身的一些限制,不如apk包大小限制,读取大文件时的时间限制。
    5.Linux中跨进程通信的集中方式
    Android_4:
    1.dvm的进程和Linux的进程应用程忻ツ进程是否为同一个概念
    2.sim卡的EF文件有何作用
    3.AT命令的Usercase的概念
    4.嵌入式操作系统内存管理有哪几种,各有何个性
    5.什么是嵌入式实时操作系统Android操作系统属于实时操作系统吗?
    6.一条最长的短信息约占多少byte?
    联想android面试题
    1.activity的生命周期。
    2.横竖屏切换时候activity的生命周期
    3.android中的动画有哪几类,它们的特点和区别是什么
    4.handler机制的原理5.说说activity,intent,service是什么关系
    6.android中线程与线程,进程与进程之间如何通信
    7.widget相对位置的完成在antivity的哪个生命周期阶段实现
    8.说说mvc模式的原理,它在android中的运用
    9.说说在android中有哪几种数据存储方式
    10.android中有哪几种解析xml的类,官方推荐哪种?以及它们的原理和区别
    
  • 下一篇资讯: android闹钟
  • 浏览:
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号