android面试题2
- 格式:rtf
- 大小:83.29 KB
- 文档页数:12
android面试题总结加强版(二)(转自CSDN)转载地址:tachi85/article/details/742645716.Android常用控件的信息单选框(RadioButton与RadioGroup):RadioGroup用于对单选框进行分组,相同组内的单选框只有一个单选框被选中。
事件:setOnCheckedChangeListener(),处理单选框被选择事件。
把RadioGroup.OnCheckedChangeListener实例作为参数传入。
多选框(CheckBox):每个多选框都是独立的,可以通过迭代所有的多选框,然后根据其状态是否被选中在获取其值。
事件:setOnCheckChangeListener()处理多选框被选择事件。
把CompoundButton.OnCheckedChangeListener实例作为参数传入下拉列表框(Spring):Spinner.getItemAtPosition(Spinner.getSelectedItemPosition());获取下拉列表框的值。
事件:setOnItemSelectedListener(),处理下拉列表框被选择事件把AdapterView.OnItemSelectedListener实例作为参数传入;拖动条(SeekBar):SeekBar.getProgress()获取拖动条当前值事件:setOnSeekBarChangeListener(),处理拖动条值变化事件,把SeekBar.OnSeekBarChangeListener实例作为参数传入。
菜单(Menu):重写Activity的onCreatOptionMenu(Menu menu)方法,该方法用于创建选项菜单,咋用户按下手机的"Menu"按钮时就会显示创建好的菜单,在onCreatOptionMenu(Menu Menu)方法内部可以调用Menu.add()方法实现菜单的添加。
Android开发工程师岗位面试题及答案1.请介绍一下您在Android开发方面的经验。
答:我在过去的X年中,一直从事Android应用开发工作。
我曾参与开发了多个项目,涵盖了各种领域,如电子商务、社交媒体以及物联网。
我熟悉AndroidSDK、Java和Kotlin编程语言,能够设计并优化用户界面、处理数据、进行性能调优等。
2.请解释一下MVC(Model View Controller)和MVVM (ModelView View Model)的架构模式。
答:MVC是一种将应用程序分为模型、视图和控制器的架构,用于分离数据、用户界面和应用逻辑。
MVVM是MVC的演变,引入了ViewModel层来处理视图和数据之间的通信,通过数据绑定实现更松散的耦合。
3.在Android中,什么是Content Provider?它的作用是什么?答:Content Provider用于在不同的应用程序之间共享数据。
它提供了一种标准的接口,允许应用访问和修改其他应用的数据,如联系人、媒体文件等。
4.如何在Android应用中处理不同屏幕尺寸和分辨率的适配?答:为了适配不同屏幕,可以使用不同的布局文件、尺寸单位和限定符。
例如,可以创建不同分辨率的资源文件夹,以确保应用在各种屏幕上都能正确显示。
5.请讲解一下Android中的线程和异步任务处理。
答:在Android中,主线程负责处理UI更新,而耗时操作应该在后台线程中执行,以避免阻塞主线程。
可以使用Thread、Handler、Async Task或RxJava等来管理线程和执行异步任务。
6.什么是Depend encyIn jection(依赖注入)?为什么在Android 开发中使用它?答:依赖注入是一种设计模式,用于将依赖关系从代码中分离出来,以提高可维护性和测试性。
在Android开发中,使用依赖注入可以更轻松地管理组件之间的依赖关系,例如使用Dagger框架。
安卓面试题及答案详解版1. 问题:什么是Android操作系统?答案: Android操作系统是一种基于Linux内核的开源操作系统,主要用于触屏移动设备,如智能手机和平板电脑。
它由Google公司开发并发布,允许设备制造商和开发者自由地修改和分发。
2. 问题:请解释Android的架构。
答案: Android架构从下到上分为四个层次:- 应用层:包含用户界面和应用程序。
- 应用框架层:提供应用程序开发接口(API)。
- 运行时环境层:包括Android核心库和Android运行时环境。
- Linux内核层:提供底层的硬件抽象层、内存管理、进程管理等功能。
3. 问题: Android应用是如何打包的?答案: Android应用通常使用APK(Android Package)格式进行打包。
APK文件是一个压缩文件,包含应用的代码、资源、资产、库和AndroidManifest.xml文件。
4. 问题:什么是Activity?答案: Activity是Android应用程序中的基本构建块,用于定义用户界面和用户交互。
每个Activity都是一个独立的屏幕,用户可以与之交互。
5. 问题:请解释Intent的概念。
答案: Intent是Android中用于请求操作的抽象描述符。
它可以用于启动Activity、启动服务或广播信息。
Intent可以显式地指定目标组件,也可以隐式地通过Intent Filter来匹配。
6. 问题:如何在Android中处理网络请求?答案:在Android中处理网络请求通常使用HTTP客户端库,如OkHttp或Retrofit。
这些库提供了简化的API来发送HTTP请求和接收响应。
7. 问题:解释Android中的Context对象。
答案: Context是Android中一个非常关键的类,它允许访问应用程序环境的全局信息。
Context可以用于启动Activity、获取资源、启动服务等。
android 面试题及答案Android面试题及答案Android作为目前全球最主流的移动操作系统之一,为许多开发者提供了广阔的机会。
然而,要在Android开发领域取得成功并不容易。
在面试过程中,面试官常常会提问一些关于Android开发的问题,以考察面试者的技术能力和经验。
本文将介绍一些常见的Android面试题,并提供相应的答案。
一、Java基础1. Java中的面向对象特性是什么?请举例说明。
答案:Java中的面向对象特性包括封装、继承和多态。
封装是将数据和方法封装在一个类中,以提高代码的可维护性和安全性。
继承是通过创建子类来继承父类的属性和方法。
多态允许不同类的对象对同一方法作出不同的响应。
2. 抽象类和接口有什么区别?答案:抽象类是一个类,可以包含具体方法和抽象方法,有时候用于模板设计模式。
接口是一组完全抽象的方法集合,没有具体的实现,用于实现类的多继承。
类可以实现多个接口,但只能继承一个抽象类。
二、Android基础1. 请解释一下Activity的生命周期。
答案:Activity的生命周期主要包括以下几个方法:onCreate()、onStart()、onResume()、onPause()、onStop()、onRestart()和onDestroy()。
onCreate()在Activity被创建时调用,onStart()在Activity可见但无法响应用户输入时调用,onResume()在Activity可见并可以响应用户输入时调用,onPause()在Activity失去焦点但仍可见时调用,onStop()在Activity完全不可见时调用,onRestart()在Activity重新启动时调用,onDestroy()在Activity被销毁时调用。
2. 请解释一下Android中的四大组件。
答案:Android中的四大组件分别是Activity、Service、Content Provider和Broadcast Receiver。
安卓面试问答题(总15页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--二、问答题1.说明使用操作栏为程序开发所带来的便利。
答案:操作栏代替了传统的标题栏功能,右侧用来显示“选项菜单”的菜单项,但所显示的内容,会根据操作栏所具有的空间不同而具有不同的显示方式。
在屏幕尺寸较小的设备上,操作栏会自动隐藏菜单项的文字,而仅现实菜单项的图标;而在屏幕尺寸较大的设备上,操作栏会同时现实菜单项的文字和图标。
操作栏提供多个实用的功能,包括(1)将“选项菜单”的菜单项现实在操作栏的右侧;(2)基于Fragment实现类似于Tab页的导航切换功能;(3)为导航提供可“拖拽—放置”的下拉列表;(4)可在操作栏上实现类似于“搜索框”的功能。
2.写出android中主要的三种数据存储方式。
答案一:数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络。
答案二:常用的数据存储方式:SharePreference存储、File存储(分为手机内存存储和SD卡存储)、SQLite数据库存储和网络存储。
答案三: 2.文件存储数据库方式4.内容提供器(Content provider)5. 网络存储方式3.简述android中的适配器作用,android有哪些适配器区别是什么答案:作用:把一些数据给弄得适当,适合以便于在View上显示。
我们常用的适配器一共有三个,ArrayAdapter,SimpleAdapter,SimpleCursorAdapter ,他们都是继承BaseAdapter其中以ArrayAdapter最为简单,只能展示一行字。
SimpleAdapter有最好的扩充性,可以自定义出各种效果。
SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方面的把数据库的内容以列表的形式展示出来。
4.说明线程的两种实现方式是什么?答案:第一种方式:使用Runnable接口创建线程。
第1篇第一部分:Android基础1. Android开发环境搭建- 请简要描述Android开发环境搭建的步骤,包括安装Android Studio、配置SDK、模拟器等。
2. Android系统架构- 请简述Android系统的架构,包括四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的作用和相互关系。
3. Activity生命周期- 请描述Activity的生命周期方法,包括onCreate、onStart、onResume、onPause、onStop、onDestroy等,并说明它们在何时被调用。
4. Intent- 请解释Intent的概念和作用,并说明如何创建和使用Intent进行组件间的通信。
5. Service- 请描述Service的生命周期方法,并说明如何创建一个前台Service和后台Service。
6. BroadcastReceiver- 请解释BroadcastReceiver的概念,并说明如何注册、发送和接收广播。
7. ContentProvider- 请解释ContentProvider的概念,并说明如何实现数据的共享。
8. AndroidManifest.xml- 请解释AndroidManifest.xml文件的作用,并列举其中需要配置的重要元素。
9. Android布局- 请描述几种常见的布局方式,如线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)等。
10. Android资源- 请解释Android资源的概念,并说明如何管理字符串资源、图片资源等。
第二部分:Java基础1. Java基本语法- 请简述Java的基本语法,包括变量、数据类型、运算符等。
2. 面向对象编程- 请解释面向对象编程的概念,并说明如何实现类的封装、继承和多态。
Android高级技术笔试面试试题及答案(二)- Android高级技术笔试面试试题及答案 -1. 什么是Android中的Binder?Binder是Android中的一种机制,它用于进程间通信。
Binder机制基于C++实现,通过进程间共享内存的方式来实现进程间通信。
2. 什么是Android中的ANR?ANR全称为Application Not Responding,即应用程序无响应。
当应用程序在主线程中执行耗时操作时,如果超过5秒钟没有响应,则会触发ANR。
3. 什么是Android中的AIDL?AIDL全称为Android Interface Definition Language,即Android接口定义语言。
它是一种用于Android进程间通信的IPC机制。
4. 什么是Android中的JNI?JNI全称为Java Native Interface,即Java本地接口。
它是一种用于Java与本地代码(如C、C++)进行交互的机制。
5. 什么是Android中的Dalvik虚拟机?Dalvik虚拟机是Android中的一种虚拟机,用于执行Android应用程序的字节码。
它是基于寄存器的虚拟机,与基于栈的Java虚拟机不同。
6. 什么是Android中的ART虚拟机?ART虚拟机是Android 5.0及以上版本中的一种新的虚拟机,用于执行Android应用程序的字节码。
它是基于AOT(Ahead-Of-Time)编译的,与Dalvik虚拟机不同。
7. 什么是Android中的JNI_OnLoad函数?JNI_OnLoad函数是JNI中的一个回调函数,用于在动态链接库被加载时执行一些初始化操作。
8. 什么是Android中的Binder线程池?Binder线程池是Android中的一种线程池,用于管理Binder线程。
它可以控制Binder线程的数量,避免Binder线程数量过多导致系统资源不足。
android软件测试面试题及答案android软件测试面试题及答案(一)1、 Android的四大组件是哪些,它们的作用?答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的食物,定义好需要接受的Intent提供同步和异步的接口Content Provider:是Android提供的第三方应用数据的访问方案,可以派生ContentProvider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的借口模型,大大简化上层应用,对数据的整合提供了更方便的途径BroadCast Receiver:接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型2、请介绍下Android中常用的五种布局。
常用五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。
一、FrameLayout:所有东西依次都放在左上角,会重叠,这个布局比较简单,也只能放一点比较简单的东西。
二、LinearLayout:线性布局,每一个LinearLayout里面又可分为垂直布局(android:orientation=vertical)和水平布局(android:orientation=horizontal )。
当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。
三、AbsoluteLayout:绝对布局用X,Y坐标来指定元素的位置,这种布局方式也比较简单,但是在屏幕旋转时,往往会出问题,而且多个元素的时候,计算比较麻烦。
android开发工程师面试题在当前移动互联网时代,Android作为全球最主流的移动操作系统之一,成为许多企业招聘的热门职位之一。
如果你想成为一名Android 开发工程师,除了具备扎实的编程基础和相关知识外,面试成为你获得工作机会的重要一环。
在接下来的文章中,我们将探讨一些常见的Android开发工程师面试题。
Android基础知识1. 请解释什么是Android操作系统?Android是一种基于Linux内核的操作系统,用于移动设备如智能手机和平板电脑。
它提供了软件平台,包括操作系统、中间件和应用程序接口(API),使开发人员能够创建移动应用程序。
2. 请解释什么是Android应用程序的四大组件?Android应用程序的四大组件包括Activity、Service、BroadcastReceiver和ContentProvider。
Activity用于用户界面的展示和交互,Service用于在后台执行长时间运行的任务,BroadcastReceiver 用于接收和处理系统广播消息,ContentProvider用于数据的共享。
3. 请解释什么是Android Manifest文件?Android Manifest文件是每个Android应用程序必须具备的一个XML文件,它包含了应用程序的基本信息,如应用程序的包名、权限声明、组件声明等。
4. 请解释什么是Intent?Intent是Android应用程序之间进行通信的一种机制,它可以用于启动Activity、启动Service、传递数据等操作。
Android开发技术1. 请解释什么是Android布局文件?Android布局文件用于定义应用程序界面的布局结构,它可以通过XML代码或者可视化工具进行创建和编辑。
2. 请解释什么是Android资源文件?Android资源文件是用于存储各种非代码资源的文件,如图像、字符串、颜色等。
它们可以在应用程序的各个组件中使用。
android软件测试面试题android软件测试面试题篇一问题一:为什么要在一个团队中开展软件测试工作?任何软件在开发过程中都会留下缺陷,带有缺陷的软件产品如果提交出去,可能会给公司带来不可估量的损失,我们必须在客户之前发现尽可能多的问题,从而保障客户满意。
而发现问题的这个过程称之为测试。
问题二:简述你在以前的工作中做过哪些事情,比较熟悉什么。
此问题每个人都不一样。
我自己的答案如下。
我主要的工作是系统测试和自动化测试,也曾少量涉及性能测试。
在系统测试中,主要是对BOSS系统的业务逻辑功能,以及软交换系统的Class 5特性进行测试。
性能测试中,主要是进行的压力测试,在各个不同数量请求的情况下,获取系统响应时间以及系统资源消耗情况。
自动化测试主要是通过自己写脚本以及一些第三方工具的结合来测试软交换的特性测试。
问题三:你所了解的的软件测试类型都有哪些,简单介绍一下。
1. 基本功能验证。
主要是对发布的版本进行一些最主要功能的测试。
英文常见叫法是Smoking Test, Basic Verification Test或者Sanity Check。
2. 功能测试。
主要是依据需求或者需求分析文档,对所发布的版本进行测试,看看是否满足需求,是否出现了不必要的功能。
3. 单元测试。
是开发人员进行的测试之一,一般是开发人员对很小的模块,比如函数进行测试,一般来说,开发人员还需要开发相应的测试桩来进行此类测试。
4. 集成测试。
在大型的开发过程中,软件是模块化进行开发的,将不同的模块揉合在一起的话,需要进行的测试就是集成测试。
5. 系统测试。
当软件提交给测试组后,是对整个系统的'所有功能进行测试,一般来说,功能测试是系统测试的一个部分。
6. 压力测试。
主要是在很大性能的情况下,这个性能已经接近了系统的极限,看看系统运转的情况。
7. 负载测试。
主要是用各种不同的性能去检测系统,采集各个数据在这些性能情况下的数据。
android面试问题与答案(2)android:theme=”@android:style/Theme.Translucent”就变成半透明的,[友情提示-.-]类似的这种activity的属性可以在android.R.styleable 类的AndroidManifestActivity 方法中看到,AndroidManifest.xml中所有元素的属性的介绍都可以参考这个类android.R.styleable上面说的是属性名称,具体有什么值是在android.R.style中可以看到,比如这个”@android:style/Theme.Dialog”就对应于android.R.style.Theme_Dialog ,(’_ 换成’.’--注意:这个是文章内容不是笑脸)就可以用在描述文件中了,找找类定义和描述文件中的对应关系就都明白了。
三你后台的Activity被系统回收怎么办:onSaveInstanceState当你的程序中某一个Activity A 在运行时中,主动或被动地运行另一个新的Activity B这个时候A会执行Java代码publicvoid onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);outState.putLong( id , 1234567890);}public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putLong( id , 1234567890);}B 完成以后又会来找A, 这个时候就有两种情况,一种是A被回收,一种是没有被回收,被回收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上参数savedInstanceState,没被收回的就还是onResume就好了。
android面试题及答案一、Activity 生命周期相关1. 请简述Activity的生命周期,并解释每个状态的含义。
- Activity生命周期主要包括 onCreate(), onStart(), onResume(), onPause(), onStop(), 和 onDestroy() 方法。
onCreate() 在Activity第一次创建时调用,用于初始化界面和数据。
onStart() 当Activity对用户可见时调用,表示Activity已经部分准备好与用户交互。
onResume() 当Activity准备与用户交互时调用,此时Activity处于前台。
onPause() 当Activity失去焦点,但未完全退出时调用,用于保存数据和清理资源。
onStop() 当Activity完全不再显示在屏幕上时调用,释放资源。
onDestroy() 当Activity被系统销毁时调用,用于做最后的清理工作。
2. Activity A跳转到Activity B,再按返回键,生命周期如何调用? - 当从Activity A跳转到Activity B时,Activity A的onPause()会被调用,然后是onStop(),而Activity B会依次调用onCreate(),onStart(),onResume()。
按返回键从Activity B返回到Activity A时,Activity B会依次调用onPause()和onStop(),Activity A则会依次调用onRestart(), onStart()和onResume()。
二、Intent 相关1. 请解释Intent的基本作用及其使用场景。
- Intent是Android中用于组件间通信的一种机制,它可以用于启动Activity,Service,发送广播等。
常见的使用场景包括从一个Activity启动另一个Activity,或者向Service发送数据。
android面试题及答案怎样修改Android.mk文件,下面就由小编为大家介绍一下的android面试题-简答题文章,欢迎阅读。
android面试题-简答题篇11、在多线程编程这块,我们经常要使用Handler,Thread和Runnable这三个类,那么他们之间的关系你是否弄清楚了呢?答:Android的CPU分配的最小单元是线程,Handler一般是在某个线程里创建的,因而Handler和Thread就是相互绑定的,一一对应。
而Runnable是一个接口,Thread是Runnable的子类。
所以说,他俩都算一个进程。
HandlerThread顾名思义就是可以处理消息循环的线程,他是一个拥有Looper的线程,可以处理消息循环。
与其说Handler和一个线程绑定,不如说Handler是和Looper一一对应的。
最后需要说明的是,在UI线程(主线程)中:mHandler=new Handler;mHandler.post(new Runnable{void run{//执行代码...}});这个线程其实是在UI线程之内运行的,并没有新建线程。
常见的新建线程的方法是:Thread thread = new Thread;thread.start;HandlerThread thread = newHandlerThread("string");thread.start;2、如何设定应用程序为系统级别的应用?答:apk 获取system权限;如何获取如下:第一个方法简单点,不过需要在Android系统源码的环境下用make来编译:1. 在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId="android.uid.system"这个属性。
2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行3. 使用mm命令来编译,生成的apk就有修改系统时间的权限了。
android面试题一、介绍Android操作系统是基于Linux内核的开源移动设备操作系统,已成为全球市场上最流行的移动操作系统之一。
作为一名开发者,熟悉和掌握Android的技术和知识是非常重要的。
本文将介绍一些常见的Android面试题,帮助读者准备Android开发岗位的面试。
二、Java基础1. 什么是Java虚拟机(JVM)?2. Java中的抽象类和接口有什么区别?3. Java中的静态变量和实例变量有什么区别?4. 什么是多态性?如何实现多态性?5. 解释一下Java中的异常处理机制。
三、Android基础1. 什么是Activity?可以通过哪些生命周期方法来控制Activity?2. 什么是Intent?有哪些类型的Intent?3. 什么是Fragment?Fragment的生命周期是怎样的?4. 请简要介绍一下Android中的四种存储方式。
5. 什么是Content Provider?在什么情况下需要使用Content Provider?四、布局和控件1. 什么是RelativeLayout?LinearLayout?FrameLayout?2. 解释一下Android中的ListView和RecyclerView的区别。
3. 什么是ConstraintLayout?它相对于其他布局方式有什么优势?4. 解释一下Android中的ViewPager和TabLayout的使用方法。
五、网络通信1. 什么是HTTP协议?HTTPS协议?它们之间有什么区别?2. Android中如何进行网络请求?3. 解释一下GET请求和POST请求的区别。
六、数据存储和数据库1. 什么是Shared Preferences?它的作用是什么?2. 什么是SQLite数据库?如何在Android应用中使用SQLite数据库?3. 解释一下ORM框架的概念,Android中有哪些常用的ORM框架?七、性能优化1. 在Android中如何进行内存优化?2. Android中有哪些常见的性能优化方法?3. 如何对Android应用进行UI渲染优化?八、安全性和权限管理1. Android中的权限机制如何工作?2. 解释一下Android中的签名机制是怎样的?3. 在Android应用中如何保护用户隐私?九、其他1. 在Android开发中,你遇到过哪些常见的问题?如何解决这些问题?2. 解释一下Android中的ANR是什么,如何避免ANR问题?3. 如何进行Android应用的调试和日志打印?以上是一些常见的Android面试题,希望能够帮助读者更好地准备面试,展示自己的技术和知识。
android工程师面试题及答案Android工程师作为移动应用开发领域的专家,需要具备扎实的编程基础和丰富的实践经验。
为了帮助准备面试的Android工程师们更好地应对面试,本文将提供一些常见的Android工程师面试题及其答案。
以下是几个常见的面试题及答案供您参考:1. 什么是Intent?它的作用是什么?答:Intent是Android应用程序之间进行通信的一种机制。
它可以用于启动一个Activity、启动一个Service、发送广播以及传递数据。
Intent分为显示Intent和隐式Intent,其中显示Intent指明了要启动的组件的类名,而隐式Intent则指明了要启动的组件的功能。
2. 请解释一下Android四大组件。
答:Android四大组件包括Activity、Service、BroadcastReceiver和ContentProvider。
- Activity:它是用户与应用交互的界面,负责展示数据和处理用户的输入。
- Service:它是在后台执行长时间运行操作的组件,没有用户界面。
- BroadcastReceiver:它用于接收系统或应用发出的广播消息,并做出相应的处理。
- ContentProvider:它用于应用之间共享数据,以及对数据进行增删改查的操作。
3. 什么是生命周期(Lifecycle)?请列举一些常见的生命周期方法。
答:生命周期是指Android组件在创建、运行和销毁的过程中所经历的状态变化。
以下是Activity的一些常见的生命周期方法:- onCreate():Activity被创建时调用,用于初始化界面和变量。
- onStart():Activity可见但不可交互时调用。
- onResume():Activity可见且可交互时调用,通常用来注册监听器和启动动画。
- onPause():Activity失去焦点但仍可见时调用,用于保存用户数据和释放资源。
Android笔试总结2015-06-24 06:30:02 阅读( 457 )1271人收藏本页标签:Android面试题1.请谈一下Android系统的架构。
答:Android系统采用了分层架构,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。
2.谈谈android大众常用的五种布局。
答:在Android中,共有五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。
(1)FrameLayout 框架布局,放入其中的所有元素都被放置在最左上的区域,而且无法为这些元素指定一个确切的位置,下一个子元素会重叠覆盖上一个子元素,适合浏览单张图片。
(2)LinearLayout 线性布局,是应用程序中最常用的布局方式,主要提供控件水平或者垂直排列的模型,每个子组件都是以垂直或水平的方式来定位.(默认是垂直)(3)AbsoluteLayout 绝对定位布局,采用坐标轴的方式定位组件,左上角是(0,0)点,往右x轴递增,往下Y轴递增,组件定位属性为android:layout_x 和android:layout_y来确定坐标。
(4)RelativeLayout 相对布局,根据另外一个组件或是顶层父组件来确定下一个组件的位置。
和CSS里面的类似。
(5)TableLayout 表格布局,类似Html里的Table.使用TableRow来布局,其中TableRow代表一行,TableRow的每一个视图组件代表一个单元格。
3.谈谈android数据存储方式。
答:Android提供了5种方式存储数据:(1)使用SharedPreferences存储数据;它是Android提供的用来存储一些简单配置信息的一种机制,采用了XML格式将数据存储到设备中。
只能在同一个包内使用,不能在不同的包之间使用。
(2)文件存储数据;文件存储方式是一种较常用的方法,在Android中读取/写入文件的方法,与Java中实现I/O的程序是完全一样的,提供了openFileInput()和openFileOutput()方法来读取设备上的文件。
(3)SQLite数据库存储数据;SQLite是Android所带的一个标准的数据库,它支持SQL语句,它是一个轻量级的嵌入式数据库。
(4)使用ContentProvider存储数据;主要用于应用程序之间进行数据交换,从而能够让其他的应用保存或读取此Content Provider的各种数据类型。
(5)网络存储数据;通过网络上提供给我们的存储空间来上传(存储)和下载(获取)我们存储在网络空间中的数据信息。
4.Android中Activity, Intent, Content Provider, Service各有什么区别。
答:Activity:活动,是最基本的android应用程序组件。
一个活动就是一个单独的屏幕,每一个活动都被实现为一个独立的类,并且从活动基类继承而来。
Intent:意图,描述应用想干什么。
最重要的部分是动作和动作对应的数据。
Content Provider:内容提供器,android应用程序能够将它们的数据保存到文件、SQLite数据库中,甚至是任何有效的设备中。
当你想将你的应用数据和其他应用共享时,内容提供器就可以发挥作用了。
Service:服务,具有一段较长生命周期且没有用户界面的程序。
5.View, surfaceView, GLSurfaceView有什么区别。
答:view是最基础的,必须在UI主线程内更新画面,速度较慢。
SurfaceView 是view的子类,类似使用双缓机制,在新的线程中更新画面所以刷新界面速度比view快GLSurfaceView 是SurfaceView的子类,opengl 专用的6.Adapter有什么作用?常见的Adapter有哪些?答:Adapter是连接后端数据和前端显示的适配器接口。
常见的Adapter有ArrayAdapter, BaseAdapter, CursorAdapter, HeaderViewListAdapter, ListAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, SpinnerAdapter, WrapperListAdapter等7.Manifest.xml文件中主要包括哪些信息?答:manifest:根节点,描述了package中所有的内容。
uses-permission:请求你的package正常运作所需赋予的安全许可。
permission:声明了安全许可来限制哪些程序能你package中的组件和功能。
instrumentation:声明了用来测试此package或其他package指令组件的代码。
application:包含package中application级别组件声明的根节点。
activity:Activity是用来与用户交互的主要工具。
receiver:IntentReceiver能使的application获得数据的改变或者发生的操作,即使它当前不在运行。
service:Service是能在后台运行任意时间的组件。
provider:ContentProvider是用来管理持久化数据并发布给其他应用程序使用的组件。
8.请写一段代码(SAX, DOM, 或者pull )来解析XML文档。
答:下面是要解析的XML文件:张三22 李四23 定义一个名为Person的javaBean用于存放上面解析出来的xml内容public class Person {private Integer id;private String name;private Short age;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public Short getAge() {return age;}public void setAge(Short age) {this.age = age;}}(1)使用SAX读取XML文件;它采用的是事件驱动,并不需要解析完整个文档,速度快并且占用内存少。
需要为SAX提供实现ContentHandler接口的类。
PersonDefaultHandler.javaimport java.util.ArrayList;import java.util.List;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;import com.sinber.domain.Person;public class PersonDefaultHandler extends DefaultHandler {private List persons;private Person person ; //记录当前personprivate String perTag; //记录前一个标签的名称/*** 重写父类的开始文档方法。
用于初始化*/@Overridepublic void startDocument() throws SAXException {persons = new ArrayList();}@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {if(“person”.equals(localName)){Integer id = new Integer(attributes.getValue(0)); //取idperson = new Person();person.setId(id);}perTag = localName;}/**参数:* ch 整个XML字符串* start 节点值在整个XML字符串中的索引位置* length 节点值的长度*/@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {if(perTag!=null){String data = new String(ch,start,length);if(“name”.equals(perTag)){person.setName(data);}else if(“age”.equals(perTag)){person.setAge(new Short(data));}}}@Overridepublic void endElement(String uri, String localName, String qName) throws SAXException {if(“person”.equals(localName)){persons.add(person);person = null;}perTag = null;}public List getPersons() {return persons;}}SAXPerson.javaimport java.io.InputStream;import java.util.List;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import com.sinber.domain.Person;public class SAXPerson{public static List getPerson() throws Exception{//通过类装载器获取文件InputStream inStream =SAXPersonService.class.getClassLoader().getResourceAsStream(“person.xml”); SAXParserFactory factory = SAXParserFactory.newInstance();SAXParser saxParser = factory.newSAXParser();PersonDefaultHandler handler = new PersonDefaultHandler();saxParser.parse(inStream, handler);inStream.close();return handler.getPersons();}}(2)DOM解析XML文件时,会将XML文件的所有内容读取到内存中,然后允许您使用DOM API遍历XML树、检索所需的数据。