Android面试题之三(...)

写到面试题三,才发觉,本就不应该给他分初,中,高,这样的等级的。

这不,这会后面括号里不知道该怎么分类了。

有了一和二,就不能说初中级了。

说高级吧。现在也算不上高级别面试题了。

就好比去年i9100还是三星的机皇,今年呢。。


时代永远在前行,没有最好,只有更好。


言归正传:

先copy一份2-3月前还算比较难点的Android面试题。

其实准确的不能说是难,而是太冷门,以及太细节。

传说是阿里巴巴的一份面试题。

/********************************************************copy

刚刚看帖子 发现几道android面试题 感觉有点小难

1.为了降低android程序的内存使用峰值和APK文件的大小,我们一般使用_____________工具对资源图进行额外处理。

2.Android系统会自动派发各种事件,事件从触发到相应的程序相应的派发顺序是_________。

3.发布Android程序时,APK文件要先签名,再用Zipalign做4字节对齐。( )

4.实现多个进程共享数据的时候,只要设置AndroidManifest文件的shareUserId属性即可,签名可以不一致( )。


5.在JNI的实现代码中,如果要实现跨线程调用JNI接口,我们需要先调用jni.h中的_________函数,跨线程调用JNI接口完毕后,再调用jni.h中的____________________函数来善后。


6.如果一个Activity被设置为“singleTop”模式并且还驻留在后台,此时再通过startActivity启动这个Activity时,Activity的_______________成员函数会被最先回调到,我们一般在这个回调函数中来处理相关逻辑。


PS:3、4题是判断题,其它是填空题

********************************************************/

个人稍微回答下。可能有很多不足之处,仅作借鉴

问题1

.为了降低android程序的内存使用峰值和APK文件的大小,我们一般使用_____________工具对资源图进行额外处理。

答:这个估计一般人都知道了,就是9图工具。而且这个工具真的很好用,就我几个阶段反编译一些apk文件来看。

比如一年前的时候的应用,基本没有用到这块,除了几个大型公司做的app,用到了工具。2011年末的几个应用,9妹就来势汹汹了。

而且发现9图后图片除了能更好的适配防拉伸效果等,还微微减小了图片大小。同时因为能做多适配和大小缩放不失真的调整,间接的就减少了做多套适配图片而增减

资源包的臃肿。


问题2:

Android系统会自动派发各种事件,事件从触发到相应的程序相应的派发顺序是_________。

答:这个涉及到Framework层了。本人没怎么接触。看关于这个帖子的这个题有人给出过两种答案:

1.EventHub->KeyInputQueue->WindowManagerService->ViewRoot->...

2.WindowsManager->phoneWiondw->Activity

其实两个想表达的意思是差不多的。就是一个服务队列,接受到事件。从队列中将该事件分发给WindowManagerService也就是窗口管理类服务,然后分发个对应的窗口Window,窗口中有个主View,主View又分由上而下子View。

这里就要提到两个函数,也是刚开始我搞晕了的两个函数:

第一个是dispatchXXXXEvent和onXXXX(onTouchEvent,onKeyDown);

以前对这个onxxxx的重写时很多的,这个dispatchXXX基本是没用过。然后我一直也没明白这个派发机制的干嘛的。

后来看下了源代码会发现,dispatch分发传递到最后一层时,就执行了onxx事件。

说白了就是dispatch是发送事件,onxx是处理事件。

  public boolean dispatchTouchEvent(MotionEvent event) {
        if (mOnTouchListener != null && (mViewFlags & ENABLED_MASK) == ENABLED &&
                mOnTouchListener.onTouch(this, event)) {
            return true;
        }
        return onTouchEvent(event);
    }

这是View中的一段代码。

具体关于分发事件的可以查考该博文:Android FrameWork——Touch事件派发过程详解

不太明白的也没事。可以看个大致流程,呵呵。


问题3:

.发布Android程序时,APK文件要先签名,再用Zipalign做4字节对齐。( )

答:这个是判断题,无论你知不知道,好歹还能蒙一个。先说下答案,对的。以我的了解。

这题出的其实比较偏门,偏门的意思是大部分人都不会关心这个。

我也是在最近弄Ant自动打包时,才是熟悉了下这个问题。

因为ant脚本这玩意我也是第一次玩,看了下资料,以及基本语法和书写方式。

一般我们打包可能直接用adt工具了,说白了它就是集成了一个打包工具。

ant只不过就是我们自己来写而已,里面涉及到很多javac,zipalign和proguard什么的,就是把一些工具的命令行操作语句窜起来。

然后接触到要使用一个zipalign优化工具

简答了解下:这是一个归档对其工具,对资源做了优化,对未压缩的数据做了某种意义上的4字节对其。

具体为什么这个顺序是对的呢。不知道这图算不算一种说明方式:




这是我打完一个未签名包后,工具的提示。

对于为什么出这样的题,估计是是想看应聘者是否去接触过一些细节和工具,或是对于ant打包的接触?


问题4:

实现多个进程共享数据的时候,只要设置AndroidManifest文件的shareUserId属性即可,签名可以不一致( )。

答:/**

*是。具体原因就不知了。

**/

这里先谢谢下面评论中那个哥们,确实对于我可能测试过的几个问题我都做了详细回答。这个因为没有测试,就完全是copy了那会论坛下的几个答案,以为做个

总体答案的记录就行了。

这是刚测试后的答案。

答;不能。

因为设置了shareUserId后,在你应用安装的时候系统在对读取配置文件安装信息时就会检测这个问题,既你的A应用和B应用实现了shareUserId一样。

但是在安装时签名不一样的话,安装过程就是失败的。



问题5:

在JNI的实现代码中,如果要实现跨线程调用JNI接口,我们需要先调用jni.h中的_________函数,跨线程调用JNI接口完毕后,再调用jni.h中的_____函数来善后。

答案:/***

*   网上查了一下,第五题应该是GetJavaVM, DestroyJavaVM() .copy来的答案。。也不是很懂。

*

***/

答:这个问题原来只是copy过来的一份答案。谢谢 Innost 前辈对错误指出。涉及到底层的,有很多不足,首先也说下做这块总结只要是想把这几个问题有个还算靠谱的答案,因为现在google或是百度下这几个问题,都只是给出了题目,下面有回答和讨论的。我这边只是想做个简单归档,可能有很多不足,希望指正或是给下更好的答案。

上班抽闲大致花了1-2小时看了下这方面的资料。因为本人对C这块不熟,看的其实有点吃力。

JavaVM和JavaEnv的概念。(因为答案基本围绕了这两个在讨论, Innost 也提到说看下这个概念)。

JavaVM即java虚拟机,主要是一个进程(也就是多个线程来访问),简单说就是在一个应用进程启动后背创建。

JavaEnv,虚拟机环境,这个是只能被他创建的线程来访问,里面持有该线程访问的数据。

利用jvm可以获取当前线程的env。然后通过两个函数,来实现环境依附跨线程的访问和访问完后的释放。

 jint AttachCurrentThread(void **penv, void *args) {
        return functions->AttachCurrentThread(this, penv, args);
    }

 jint DetachCurrentThread() {
        return functions->DetachCurrentThread(this);
    }

这两个函数定义可以在jni.h中找到。

这边其实有考虑到两个参数 _jvm和_env.因为看下上面的代码是通过jvm调用 AttachCurrentThread来获取_env,

那_jvm这个参数又是何时获取,怎么获取的。

这个是网上copy的一份解说:

/----------------------------------------------------

JavaVM接口
第一种方式,在加载动态链接库的时候,JVM会调用JNI_OnLoad(JavaVM* jvm, void* reserved)(如果定义了该函数)。第一个参数会传入JavaVM指针。
第二种方式,在native code中调用JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args)可以得到JavaVM指针。
两种情况下,都可以用全局变量,比如JavaVM* g_jvm来保存获得的指针以便在任意上下文中使用。
Android系统是利用第二种方式Invocation interface来创建JVM的。

JNIEnv接口
JNI开发最常见的错误就是滥用了JNIEnv接口。需要强调的是JNIEnv是跟线程相关的。
在native method中,JNIEnv作为第一个参数传入。那么在JNIEnv不作为参数传入的时候,该如何获得它?JNI提供了两个函数:(*jvm)->AttachCurrentThread(jvm, (void**)&env, NULL)和(*jvm)->GetEnv(jvm, (void**)&env, JNI_VERSION_1_2)。两个函数都利用JavaVM接口获得JNIEnv接口。

------------------------------------------/

其实这块挺晕的:

看jni.h中对于jvm好env获取是这样的定义。

env->GetJavaVM(&g_vm); 

 jvm->AttachCurrentThread(&e, &thread_args);

就是通过env获取虚拟机,通过虚拟机获取env。。。。有点先有蛋还是鸡的味道。

对于Android调用了jni几块,比如mediaPlayer模块。我看下了,发现env这个都是自己传进去。

其实还是很不懂。

只是先把这个错误答案改过来。

其实对于上面这个先调用获取jvm理论上也是对的,获取jvm后在获取env。对于后面这个空说销毁jvm可能就不对了。

本题的中心可能主要还是围绕env这个来说事。

更多详情可以看下下面老兄的建议。


问题6:.如果一个Activity被设置为“singleTop”模式并且还驻留在后台,此时再通过startActivity启动这个Activity时,Activity的_______________成员函数会被最先回调到,

我们 一般在这个回调函数中来处理相关逻辑。

答案:onNewIntent().singTask模式的亦是如此。这个因为刚接触过。想singleTop和singleTask除了一般说的防止产生大量的相同的Activity对象,产生内存中的冗余,

同时也可以很巧妙的解决一些问题。我有一个固定的Activity,比如简单的某个购物应用的购物栏界面。即,用户在每个购物界面点击添加购买后都会跳转到这个界面然后添加相应的购买商品条目。如果是一般的启动模式,我每次点击添加购买,就重新启动了一个购物车界面,并且在这个界面中也没有前面几次已经购买的商品条目,于我们的思路相违背。因此这个购物栏界面,理论上我就可以设计成一个单例。这样也就同样很容易的解释了这个题目的初衷了吧。因为一般面试官不可能只是看下你的答案,更多的会问下你几种启动模式的运用场景。这里也顺便提及下4种启动模式。这个不算冷门也很实用的知识,可以注意下,同时也可以大致的了解Android中关于Task的知识。


以上即是整理的一部分面试题,做了下记录和如果是我的话来做的一些看法

*********************************************************************************************/

以下是我最近觉得自己想到的几个问题。

因为最近说招人的时候,可能部分有2年左右工作经验,1年以上Android开发经验的应聘者,基本薪资都要求在1w上了。

于是对于面试的问题也不能仅仅只局限于笔试题这些做烂了的题目或是对方说下某个项目产品的流程框架模块实现什么的。

可能更多会要问一下,对于应用界面功能,交互设计的看法,以及如何编码实现一个不失优雅的和功能性的首页面。

然后是对于应用常见异常和错误的分析以及解决方式,再简单和细分点就是对于资源代码的优化,自动打包和测试,应用的防篡改和反编译。


题目一;

功能性界面的实现,比如记住用户名这个功能。

答:当然,对于初级可能会问按钮按下非按下的效果的实现,也就是选择器的应用。(但是真的,还有人会回答你,监听按钮事件然后代码来实现setbackground。。。)

言归正传,这个其实应该是很常见功能性界面。一般都是知道大致的思路的,用个偏好设置,保存一下就ok了。那么再细点呢。这个偏好设置要保存的基友几个参数,用户名,密码,然后呢?对了,那就是是否选折记住用户名密码的这个checkbox。因为我一开始做的时候忘记保存这个了。每次无论是否是checkbox是何种状态,我都保存和读取用户名和密码去了。。。

因此简单的:


图画的比较搓。。因为不太会用。

当你能把大致思路理清后,那么面试的就知道,这事你能解决,而不是笼统的说,用偏好设置啊。这就好比,在论坛中常看到这样的帖子和问答。

这个界面布局怎么实现。回答:相对布局。

好忧郁的回答。。

当然,最后也要看出题人出的题目,对提问人的要求,首先,该功能性代码量和思路要竟可能的能在短时间完成,并且不是模糊性的。


问题二:

代码混淆和压缩优化打包输出。

答;说白了,就是想问下你对progurad是否熟悉以及接触过。问这个问题其实是我自己也不懂,只会最简单的一句话傻瓜配置。但是又想做自定义的配置。

然后老大说了:对于面试时,你可以问下你自己遇到的,不能解决的问题。呵呵。

对于第三方jar包加入报错的处理,混淆后应用运行的异常。

当然,这块问题其实也是渐渐的必须要了解的东西,因为现在的大部分应用基本都重视被反编译的问题了。

问这个,第一点看面试者是否接触过,如果很熟悉,在原来的项目运用过,自定义配置过,那最好了。

第二点,如果没有,那么没事,可能却是没用到,那么就看对方是不是自己主动去了解过,简单说,是否有所谓热爱追求新技术,知识的汲取不仅仅局限于当前,有善于发现和进取的心。


问题三:

代码测试以及优化的了解?

答:这个可能就觉得这面试官比较傻逼和笼统了。确实,这问题闻到有点蛋疼。

其实稍微转化下可以问面试者对于原来项目完成后,是否做过测试框架和代码优化调试。

当然,这个是比较高层次了,因为对于自动化测试什么的,我知道的国内可能就一些大型公司会刻意去定制一套测试机制和框架。

问这个问题,其实也是自己的私心,因为我也想了解下一般,功能性测试框架或是界面交互性测试框架,个位大牛是如何实现。

对于代码优化,是否有一套自己成熟的方案。让我也入入门呗。

对于这个问题,其实你只要能说出自己的想法就可以了,如果你切好做过,那就更棒了。以及碰巧说你简单的用过sdktools下的monkey(测试工具)或是TraceViewer(性能追踪工具),那也不错,说明你知道自己去接触。而不是纯粹在那一味写代码。


问题四:

自定义的UI设计。

答:问这个问题其实每个公司可以参考自己产品的用户体验和视觉体验来问。

当然,既然问的是高手,你就不能傻乎乎的问,比如一个半透明或是dialog风格的的Activity的实现。

简单点的可以问下如何自定一个界面的加载动画,自定义的dialog。。

然后如果联系到自身的产品:第一点,由于目前我们的产品的某一个Activity的界面要展示的内容比较多,又不想简单的说用一个scrollView拖拉来实现,如何最有效的的利用有限的界面空间 1>.使用折叠效果的textView,这个也是一个朋友提到的,具体可以产考目前各大app商店,点击某个应用后,产品简介的那个空间。 2>.抽屉效果,这个其实是个不错的效果,具体代码其实网上大把的有,只要你能说出个思路就差不多,因为其实面试人也不是太懂,或者也只是借鉴网上而实现过。

第二点:自定义的首界面元素。因为我们应用可能下个版本要实现用户自定义的首界面。这个可以参考手机桌面图标拖拉,添加删除效果。这个效果其实有点难度,长按后的界面浮动效果,用户自定义后的配置保存。活着还带点什么特效,自动排序。对于这个涉及到的知识可能就多了,首先可能要对Window和windowmanager这几个对象有很好的了解,配置保存格式或是表单的处理。


问题五:

Http和Socket协议,xml/json

答:网络模块这个基本是每个公司都会问的一个问题。因为一个互联网应用,不可能不处理这块内容。

然后这个问题也是很笼统的,http可能会问下常用的头参数。这个其实没多大意义,但是也是很必要。按意义来说,正的写过很多次网络处理的人,其实也很少去真正了解下各个参数 的含义,可能就字符集,内容类型。其实深入点的可以这么问,是否在原来公司或是项目中f封装过自己的网络处理jar。因为很多公司的网络处理都不是说每个项目重新写起来的。然后对于传输格式的解析。xml就不说了,json这个对于普通对象的处理,对于数组对象的处理,以及是否自己修改过或是简单搞过自己的json解析器。因为Android自带的json解析,就那么九个类,还不带直接解析对象。用起来比较局限。

问这个问题,主要也不过是看看面试者是否真正接触和书写过网络模块。对于简历中的一句熟悉http xxxx,现在互联网应用基本没几个应用不使用网络模块吧,你的项目中是有这块内容,但是真正的你了解或是做过处理过的,那又有多少呢。


问题六:

3D动画特效或是游戏方面的

答:3D动画。首先我觉得会做游戏的人脑子都是比较清晰的,那么多x,y坐标,中心点,旋转点,长,宽,高,角度。参数多的晕人。

对于简单的2D特效,可能都会,3D能?需要那几个辅助类,Camera 吧。游戏的话View和surfaceView框架的选择。通用的游戏模块分类(这里纯粹是私心哈哈)。

我目前也真在学习接触。


好吧,问的有点偏题了。

其实总结下:

1.如果你可能刚毕业,接触Android大半年或是培训过,有几个好不错的demo项目并且能理清里面的思路,要的4-6千水平的薪资,你是个踏实的人。对于面试,能知道大部分的基础知识,了解一个项目的流程,并且有上进心,那就很不错了。你知道自己能干什么,也会知道你还要干什么。因为你不可能把薪水局限在这么点吧。

2.如果你有1年上未满两年Android开发经验。至少你跟团队完成1-2款成熟的商业项目,熟悉这个项目流程,至少参与30%以上编码。完全熟悉网络协议和处理。实现多种自定义的控件等,那么你要个8-10k上下的薪资,过年过节发个奖金,也算是个性情中人。对于面试时,你基本可以直接和面试官交流你的项目的过程和成果,你自己对项目的改进优化的看法,用的觉得自己比较出彩的技术,以及那些难点或是顽固性bug的解决。

3.这第三条其实不太好总结了。因为没见过,或是没法定位。熟悉多平台开发。3年以上工作经验,1年ios,2以上年的Android。基本开的要求都在1.5-2w了。仅是开工资的这其实也不算太高,因为如果你真有这方面多平台开发经验,我想,你不仅仅只是个开发工程师的角色了。走技术还是产品,也是个人爱好了。参与过几个平台至少1款商业项目的整体开发,当然如果是独立开发过,那就更加出色了。因为这比纯粹的拿到一个半成品的项目增加或是修改来的难度高多了。然后或是有线上的app应用,无论下载量如何,至少你开始有自己的想法了。

并且这样水品的人除了工资要求,可能还会考虑其他的福利问题。那面试中问到的问题就多了。


4.这边突然发现中间断了一层。一般市场开1-1.5w的开发人员。那么这部分可能已经可以担任一个中小级项目的项目经理了,至少他应该独立完成过一款产品(不包含视觉,交互,美工设计)。那么就可以问下对于应用优化,有利于团队协作管理的方面的问题。版本控制,自动打包测试。也就是上面我简单总结的几方面的问题。

本人其实也不懂,只不过有这方面的人来面试,我觉得吧,总的问几个别太二逼的问题吧。并且意义性比较大。顺便也能提高下自己。


本阶段的面试题个人总结完。

其实也是发现最近网络上也没什么太多新鲜感的面试题,说白了还是老一套的。

真的比较难得那就都是些framework层和C层的知识,但这对于大多数做应用的互联网公司来说,用其实并不多,除非那些搞流媒体,游戏引擎,语音,地图导航。

-end


### 回答1: Android Framework面试题是关于Android操作系统框架的一些问题,主要涉及Android应用程序的开发、调试和优化等方面。常见的面试题包括: 1. 什么是Android FrameworkAndroid FrameworkAndroid操作系统的核心组件之一,它提供了一系列API和工具,用于开发、调试和优化Android应用程序。 2. Android Framework的组成部分有哪些? Android Framework由四个主要组成部分组成:应用程序框架、系统服务、库和运行时环境。 3. 什么是Android应用程序框架? Android应用程序框架是Android Framework的核心组成部分,它提供了一系列API和工具,用于开发Android应用程序。应用程序框架包括四个主要组件:活动、服务、广播接收器和内容提供者。 4. 什么是Android系统服务? Android系统服务是Android Framework的一个重要组成部分,它提供了一系列系统级别的服务,如通知服务、位置服务、传感器服务等。 5. 什么是Android库? Android库是Android Framework的一个重要组成部分,它提供了一系列常用的功能和工具,如图形界面库、网络库、数据库库等。 6. 什么是Android运行时环境? Android运行时环境是Android Framework的一个重要组成部分,它提供了一系列核心库和虚拟机,用于执行Android应用程序。 7. 什么是Android应用程序的生命周期? Android应用程序的生命周期指的是应用程序从启动到关闭的整个过程,包括应用程序的创建、启动、暂停、恢复和销毁等阶段。 8. 什么是Android应用程序的四大组件? Android应用程序的四大组件包括:活动、服务、广播接收器和内容提供者。活动用于展示用户界面,服务用于在后台执行任务,广播接收器用于接收系统广播,内容提供者用于管理应用程序的数据。 9. 什么是Android应用程序的UI线程? Android应用程序的UI线程是指用于更新用户界面的线程,它负责处理用户界面的事件和更新UI组件。 10. 什么是Android应用程序的异步任务? Android应用程序的异步任务是指用于在后台执行任务的线程,它负责处理耗时的操作,如网络请求、数据库操作等。 ### 回答2: Android FrameworkAndroid 应用开发的核心部分,它是一组软件模块,为 Android 应用提供基本的服务和功能,包括视图系统、资源管理器、通知中心、系统 API 等等。以下是 Android Framework 面试题的回答: 1. 什么是 Android Framework?它有哪些组成部分? Android FrameworkAndroid 应用开发的核心部分,它提供了一个标准化的架构,包括了一系列底模块和服务,帮助开发者快速构建优质的应用程序。Android Framework 包括四个主要的组成部分: - Activity Manager:管理应用程序的生命周期、任务管理和应用程序调度。 - Content Provider:提供应用程序之间数据共享的机制。 - View System:提供视图组件的绘制和交互功能,包括 UI 组件、菜单、通知等。 - System API:提供开发者使用的系统级别 API,包括网络、存储、多媒体、传感器等各种功能。 2. 什么是 Intent? Intent 是在 Android 开发中用于启动组件、传递数据和执行操作的一种消息机制。Intent 由两个主要的部分组成,第一个是传递的动作行为(Action),用于指定所要执行的操作;第二个是传递的数据(Data),可包含要传递的信息、参数或操作。Intent 在 Android 应用中经常用于启动 Activity、Service、Broadcast Receiver,以及在应用程序之间传递数据。 3. 什么是 Content Provider? Content Provider 是 Android Framework 中的一项核心服务,用于提供跨应用程序数据共享的机制。Content Provider 可以通过 URI 的方式访问数据,并将一些特定的操作和查询暴露给外部应用程序。Content Provider 在 Android 应用中广泛应用于共享数据、存储和检索数据等功能。Content Provider 可以使用 SQLite 数据库存储数据,也可以使用其他数据源。 4. 什么是 Binder? Binder 是 Android Framework 中的一种进程间通信机制。它使用了一种名为跨进程通信 (IPC) 的技术,允许不同进程之间共享数据和资源,并可让应用程序在另一个进程执行功能。在 Android Framework 中,Activity 管理器、Service 和 Content Provider 等都是通过 Binder 与其他应用程序进行通信。Binder 还提供了一些高级功能,如安全性和线程管理。 5. 什么是 View System? View System 是 Android 应用程序中的 UI 组件,它提供了视图绑定、事件处理、资源管理和窗口布局等功能。在 Android Framework 中,View System 通过命名布局文件、使用 XML 描述视图和样式等机制,管理和绘制 UI 布局、界面组件和控件。View System 还提供了与其他系统服务的集成,如通知中心、扩展菜单、对话框等。 6. 什么是 Android Manifest? Android Manifest 是 Android 应用开发中必不可少的部分,它是应用程序清单文件,用于定义应用程序的基本信息和结构。Manifest 文件包含了应用程序使用的 Activity、Service、Broadcast Receiver 等组件,以及应用程序所需的权限和组件信息、应用程序元信息等。Manifest 文件还包括运行时动态创建的 Activity、Service 和 Receiver 的声明和权限标签,以及与应用程序的组件交互的 Intent 过滤器。 总结: Android FrameworkAndroid 应用开发的核心,它提供了一组标准化的软件模块,为 Android 应用程序提供基本的服务和功能。通过对 Android Framework 的学习和理解,开发者可以更好地把握 Android 应用开发的核心技术,快速构建高质量的应用程序。 ### 回答3: Android framework在移动端操作系统中扮演了至关重要的角色,关系到整个Android系统的顺利运行和用户体验。以下是一些相关的面试题及其答案。 1. 什么是Android frameworkAndroid framework主要指的是整个Android操作系统中的框架架构,包括组件、服务、库等等。它提供了一系列的API和开发者工具,使得应用程序设计者可以轻松地在上面开发、部署和调试应用程序。 2. Android framework中的四大组件是什么? Android framework中的四大组件包括Activity、Service、Content Provider和Broadcast Receiver。这些组件大都是基于事件驱动模型来设计的,通过系统的内部通信协议来实现各个组件之间的交互,以使得应用程序能够运行得更加高效、稳定和流畅。 3. Android framework中的应用程序包含哪些基本结构? Android framework中的应用程序包含了Activity、Manifest、布局文件、资源文件等等。其中,Activity是应用程序的基本单元,Manifest是整个应用程序的配置文件,而布局文件和资源文件则用于定义应用程序的用户界面和各种资源。 4. 什么是Android Intent? Android Intent是从一个组件(如Activity、Service、Broadcast Receiver等)向另一个组件传递消息的一种机制。Intent本身就是一个数据结构,其包含了一些元数据(如操作名称、数据URI、类别、组件名称、附加的Extras等),以及一些标志(如FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVITY_SINGLE_TOP等)等。通过使用Intent,不同组件之间可以实现相互通信和交互。 5. Android中的View和ViewGroup有何区别? 在Android中,View代表着一个基本的GUI控件,如Button、TextView等,而ViewGroup代表着一个包含了多个View的容器,如LinearLayout、RelativeLayout等。简单来说,View是最基本、最简单的GUI控件,而ViewGroup则是一个可以包含多个View的容器。通过使用View和ViewGroup,应用程序可以创建出丰富、多样化的用户界面。 总之,掌握了以上的面试题及其答案,相信大家对Android framework的基础知识已经有了较为全面的认识。当然,Android framework作为一个十分庞大和复杂的系统,还有许多其他的知识点和技术需要我们进一步了解和掌握。
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值