这里小编给大家分享一些Android 面试题经典(上),本文共9篇,方便大家学习。本文原稿由网友“南天新桥”提供。
篇1:android面试宝典
1、 Android的四大组件是哪些,它们的作用?
答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑
service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事物,定义好需要接受的Intent提供同步和异步的接口
Content Provider:是Android提供的第三方应用数据的访问方案,可以派生Content Provider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的接口模型,大大简化上层应用,对数据的整合提供了更方便的途径
Broadcast Receiver:接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型
2、 请介绍下Android中常用的五种布局。
常用五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。
一、FrameLayout:所有东西依次都放在左上角,会重叠,这个布局比较简单,也只能放一点比较简单的东西。二、LinearLayout:线性布局,每一个LinearLayout里面又可分为垂直布局(android:orientation=“vertical”)和水平布局(android:orientation=“horizontal” )。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。三、AbsoluteLayout:绝对布局用X,Y坐标来指定元素的位置,这种布局方式也比较简单,但是在屏幕旋转时,往往会出问题,而且多个元素的时候,计算比较麻烦。四、RelativeLayout:相对布局可以理解为某一个元素为参照物,来定位的布局方式。主要属性有:相对于某一个元素android:layout_below、 android:layout_toLeftOf相对于父元素的地方android:layout_alignParentLeft、android:layout_alignParentRigh;五、TableLayout:表格布局,每一个TableLayout里面有表格行TableRow,TableRow里面可以具体定义每一个元素。每一个布局都有自己适合的方式,这五个布局元素可以相互嵌套应用,做出美观的界面。
3、 android中的动画有哪几类,它们的特点和区别是什么
答:两种,一种是Tween动画、还有一种是Frame动画。Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。
4、 android 中有哪几种解析xml的类?官方推荐哪种?以及它们的原理和区别。
答:XML解析主要有三种方式,SAX、DOM、PULL。常规在PC上开发我们使用Dom相对轻松些,但一些性能敏感的数据库或手机上还是主要采用SAX方式,SAX读取是单向的,优点:不占内存空间、解析属性方便,但缺点就是对于套嵌多个分支来说处理不是很方便。而DOM方式会把整个XML文件加载到内存中去,该方法在查找方面可以和XPath很好的结合如果数据量不是很大推荐使用,而PULL常常用在J2ME对于节点处理比较好,类似SAX方式,同样很节省内存,在J2ME中我们经常使用的KXML库来解析。
5、 ListView的优化方案
答:1、如果自定义适配器,那么在getView方法中要考虑方法传进来的参数contentView是否为null,如果为null就创建contentView并返回,如果不为null则直接使用。在这个方法中尽可能少创建view。
2、给contentView设置tag(setTag),传入一个viewHolder对象,用于缓存要显示的数据,可以达到图像数据异步加载的效果。
3、如果listview需要显示的item很多,就要考虑分页加载。比如一共要显示100条或者更多的时候,我们可以考虑先加载20条,等用户拉到列表底部的时候再去加载接下来的20条。
6、 请介绍下Android的数据存储方式。
答:使用SharedPreferences存储数据;文件存储数据;SQLite数据库存储数据;使用ContentProvider存储数据;网络存储数据;
Preference,File, DataBase这三种方式分别对应的目录是/data/data/Package Name/Shared_Pref, /data/data/Package Name/files, /data/data/Package Name/database 。
一:使用SharedPreferences存储数据
首先说明SharedPreferences存储方式,它是 Android提供的用来存储一些简单配置信息的一种机制,例如:登录用户的用户名与密码。其采用了Map数据结构来存储数据,以键值的方式存储,可以简单的读取与写入,具体实例如下:
void ReadSharedPreferences(){
String strName,strPassword;
SharedPreferences user = getSharedPreferences(“user_info”,0);
strName = user.getString(“NAME”,””);
strPassword = user getString(“PASSWORD”,””);
}
void WriteSharedPreferences(String strName,String strPassword){
SharedPreferences user = getSharedPreferences(“user_info”,0);
uer.edit();
user.putString(“NAME”, strName);
user.putString(“PASSWORD” ,strPassword);
user.commit();
}
数据读取与写入的方法都非常简单,只是在写入的时候有些区别:先调用edit()使其处于编辑状态,然后才能修改数据,最后使用commit()提交修改的数据。实际上SharedPreferences是采用了XML格式将数据存储到设备中,在DDMS中的File Explorer中的/data/data//shares_prefs下。使用SharedPreferences是有些限制的:只能在同一个包内使用,不能在不同的包之间使用。
二:文件存储数据
文件存储方式是一种较常用的方法,在Android中读取/写入文件的方法,与 Java中实现I/O的程序是完全一样的,提供了openFileInput()和openFileOutput()方法来读取设备上的文件。具体实例如下:
String fn = “moandroid.log”;
FileInputStream fis = openFileInput(fn);
FileOutputStream fos = openFileOutput(fn,Context.MODE_PRIVATE);
三:网络存储数据
网络存储方式,需要与Android 网络数据包打交道,关于Android 网络数据包的详细说明,请阅读Android SDK引用了Java SDK的哪些package?。
四:ContentProvider
1、ContentProvider简介
当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据。虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同,如:采用文件方式对外共享数据,需要进行文件操作读写数据;采用sharedpreferences共享数据,需要使用sharedpreferences API读写数据。而使用ContentProvider共享数据的好处是统一了数据访问方式。
2、Uri类简介
Uri代表了要操作的数据,Uri主要包含了两部分信息:1.需要操作的ContentProvider ,2.对ContentProvider中的什么数据进行操作,一个Uri由以下几部分组成:
1.scheme:ContentProvider(内容提供者)的scheme已经由Android所规定为:content://…
2.主机名(或Authority):用于唯一标识这个ContentProvider,外部调用者可以根据这个标识来找到它。
3.路径(path):可以用来表示我们要操作的数据,路径的构建应根据业务而定,如下:
要操作contact表中id为10的记录,可以构建这样的路径:/contact/10
要操作contact表中id为10的记录的name字段, contact/10/name
要操作contact表中的所有记录,可以构建这样的路径:/contact?
要操作的数据不一定来自数据库,也可以是文件等他存储方式,如下:
要操作xml文件中contact节点下的name节点,可以构建这样的路径:/contact/name
如果要把一个字符串转换成Uri,可以使用Uri类中的parse()方法,如下:
Uri uri = Uri.parse(“content://com.changcheng.provider.contactprovider/contact”)
3、UriMatcher、ContentUrist和ContentResolver简介
因为Uri代表了要操作的数据,所以我们很经常需要解析Uri,并从 Uri中获取数据。Android系统提供了两个用于操作Uri的工具类,分别为UriMatcher 和ContentUris 。掌握它们的使用,会便于我们的开发工作。
UriMatcher:用于匹配Uri,它的用法如下:
1.首先把你需要匹配Uri路径全部给注册上,如下:
//常量UriMatcher.NO_MATCH表示不匹配任何路径的返回码(-1)。
UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
//如果match()方法匹配content://com.changcheng.sqlite.provider.contactprovider /contact路径,返回匹配码为1
uriMatcher.addURI(“com.changcheng.sqlite.provider.contactprovider”, “contact”, 1);//添加需要匹配uri,如果匹配就会返回匹配码
//如果match()方法匹配 content://com.changcheng.sqlite.provider.contactprovider/contact/230路径,返回匹配码为2
uriMatcher.addURI(“com.changcheng.sqlite.provider.contactprovider”, “contact/#”, 2);//#号为通配符
2.注册完需要匹配的Uri后,就可以使用uriMatcher.match(uri)方法对输入的Uri进行匹配,如果匹配就返回匹配码,匹配码是调用 addURI()方法传入的第三个参数,假设匹配 content://com.changcheng.sqlite.provider.contactprovider/contact路径,返回的匹配码为1。
ContentUris:用于获取Uri路径后面的ID部分,它有两个比较
[android面试宝典]
篇2:腾讯android面试
如何画出一个印章的图案;
如何实现一个字体的描边与阴影效果;
同一个应用程序的不同Activity可以运行在不同的进程中么?如果可以,举例说明;
Java中的线程同步有哪几种方式,举例说明;
说说对Handler, Looper, 以及HandlerThread的理解;
dp, dip, dpi, px, sp是什么意思以及他们的换算公式?layout-sw600dp, layout-h600dp分别代表什么意思;
写出Activity的几中启动方式,并简单说说自己的理解或者使用场景;
如何设计一个文件的断点续传系统;
一个关于xml的布局问题,大概意思就是如何让两个TextView在一个RelativeLayout水平居中显示;
设计一个从网络请求数据,图片,并加载到列表的系统,画出客户端架构并简单的分析下;
[腾讯android面试]
篇3:android面试题目
1、 Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念
DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。
2、sim卡的EF 文件有何作用
sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本 身可以有自己的操作系统,EF就是作存储并和手机通讯用的
3、嵌入式操作系统内存管理有哪几种, 各有何特性
页式,段式,段页,用到了MMU,虚拟空间等技术
4、 什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?
嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、 军事设备、 航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和硬实时两种,而android是基于linux内核的,因此属于软实时。
5、一条最长的短信息约占多少byte?
中文70(包括标点),英文160,160个字节。
6、 android中的动画有哪几类,它们的特点和区别是什么?
两种,一种是Tween动画、还有一种是Frame动画。Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。
7、handler机制的原理
andriod提供了 Handler 和 Looper 来满足线程间的通信。Handler 先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(Message Exchange)。
1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。
2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper从Message Queue取出)所送来的消息。
3) Message Queue(消息队列):用来存放线程放入的消息。
4)线程:UI thread 通常就是main thread,而Android启动程序时会替它建立一个Message Queue。
8、说说mvc模式的原理,它在android中的运用
android的官方建议应用程序的开发采用mvc模式。何谓mvc?
mvc是model,view,controller的缩写,mvc包含三个部分:
l模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。
l视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。
l控制器(control)对象:是根据用户的输入,控制用户界面数据显示及更新model对象状态的部分,控制器更重要的一种导航功能,想用用户出发的相关事件,交给m哦得了处理。
android鼓励弱耦合和组件的重用,在android中mvc的具体体现如下:
1)视图层(view):一般采用xml文件进行界面的描述,使用的时候可以非常方便的引入,当然,如何你对android了解的比较的多了话,就一定 可以想到在android中也可以使用javascript+html等的方式作为view层,当然这里需要进行java和javascript之间的通 信,幸运的是,android提供了它们之间非常方便的通信实现。
2)控制层(controller):android的控制层的重 任通常落在了众多的acitvity的肩上,这句话也就暗含了不要在acitivity中写代码,要通过activity交割model业务逻辑层处理, 这样做的另外一个原因是android中的acitivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。
3)模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,当然对业务计算等操作也是必须放在的该层的。
9、Activity的生命周期
和其他手机 平台 的应用 程序 一样,Android的应用程序 的生命周期是被统一掌控 的,也就是说我们写的应用程序命运掌握在别人(系统)的手里,我们不能改变它,只能学习 并适应它。
简单地说一下为什么是这样:我们手机在运行 一个应用程序的时候,有可能打进来电话发进来短信 ,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能 ,另外系统也不允许你占用太多资源 ,至少要保证电话功能吧,所以资源不足的时候也就有可能被干掉。言归正传,Activity的基本生命周期如下代码 所示:
Java代码
public
class MyActivity extends Activity {
protected
void onCreate(Bundle savedInstanceState);
protected
void onStart;
protected
void onResume();
protected
void onPause();
protected
void onStop();
protected
void onDestroy();
}
public class MyActivity extends Activity { protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); }
你自己写的Activity会按需要 重载这些方法,onCreate是免不了的,在一个Activity正常启动的过程中,他们被调用的顺序是 onCreate -> onStart -> onResume, 在Activity被干掉的时候顺序是onPause -> onStop -> onDestroy ,这样就是一个完整的生命周期,但是有人问了 ,程序正运行着呢来电话了,这个程序咋办?中止了呗,如果中止的时候新出的一个Activity是全屏的那么:onPause->onStop ,恢复的时候onStart->onResume ,如果打断 这个应用程序的是一个Theme为Translucent 或者Dialog 的Activity那么只是onPause ,恢复 的时候onResume 。
详细介绍一下这几个方法中系统在做什么以及我们应该做什么:
onCreate: 在这里创建界面 ,做一些数据 的初始化工作
onStart: 到这一步变成用户可见不可交互的onResume: 变成和用户可交互 的,(在activity 栈系统通过栈的方式管理这些个Activity的最上面,运行完弹出栈,则回到上一个Activity)
onPause: 到这一步是可见但不可交互 的,系统会停止动画 等消耗CPU 的事情从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在
onResume里读出来,注意:这个方法里做的事情时间要短,因为下一个activity不会等到这个方法完成才启动
onstop: 变得不可见 ,被下一个activity覆盖了
onDestroy: 这是activity被干掉前最后一个被调用方法了,可能是外面类调用finish方法或者是系统为了节省空间将它暂时性的干掉,可以用isFinishing()来判断它,如果你有一个Progress Dialog在线程中转动,请在onDestroy里把他cancel掉,不然等线程结束的时候,调用Dialog的cancel方法会抛异常的。
onPause,onstop, onDestroy,三种状态 下 activity都有可能被系统干掉为了保证程序的正确性,你要在onPause()里写上持久层操作的代码,将用户编辑的内容都保存到存储介质上(一般都是数据库 )。实际工作中因为生命周期的变化而带来的问题也很多,比如你的应用程序起了新的线程在跑,这时候中断了,你还要去维护那个线程,是暂停还是杀掉还是数据 回滚,是吧?因为Activity可能被杀掉,所以线程中使用的变量和一些界面元素就千万要注意了,一般都是采用Android的消息机制 [Handler,Message]来处理多线程和界面交互的问题。
10、让Activity变成一个窗口:Activity属性设定
篇4:android面试经历
虽然现在离那时面试的经历有一段时间了,但是我还是要说出来,希望能给想要找工作和换工作的同学们一些帮助。
先说投简历,其时我没投简历,有经验的同学们可以把简历挂到网上(最好是智联)等着公司和猎头给你电话就行,简历要尽量简洁,当然你会的技能最好写的详细些,最好一篇纸搞定。
先说小公司,小公司面了10多家,总结来说小公司远没有想象中那样要求低,很多小公司要求还是很高的,但基本问的都是些皮毛,大家只要把网上的面试题搞定就好了,不少小公司都问道了布局,因为面试官以前可能是做j2ee的,他们要转android应用层开发,界面布局还是稍微另他们头痛的事,小公司不愿花从大多成本招程序员,一个客户端往往就2,3个人开发,比较变态的是有的公司让你一个人搞定。另外小公司大多做apk,布局和界面的美化对他们来说十分重要。小公司一般都会有笔试题,都是些基础知识还有工作中常见的问题,比如手机适配方面的知识。有两家中小企业有些印象:一家忘记名字了,项目经理很牛的样子,说出他们公司为了性能整个客户端就用一个activity,这个固然可以,但是也得考虑可维护性吧,再说写成一个activity也没什么牛的,不用那么吹嘘。还有一家是中科金财,问了些布局和socket和手机地图的问题就ok了,结果我吃了大亏,报道时说第二天就派我去飞机场(客户那边),让我一个人负责客户端的开发,我说周期多长,答曰:两三个月。立马闪人,工作地点又远又偏僻,还我一个人搞开发,待遇也不高,典型的节约成本拿技术人员当驴使的公司。
轮到些大一点的公司,先说搜狐,搜狐要求还是很高的,问题是该项目经理对我这种从小公司出来的人很不感冒,他很随意但显然坐不住凳子,他说他们做了一个新浪视频客户端正在维护,让我看着他们的界面,让我简单分析他们的布局。这个问题看似简单其实很难,要全部说清楚几乎不可能。
还有千橡互动(人人网),这个公司也勉强算大吧= =,前台很牛的样子,进来让我做智力题,我说我来面试程序员,他说每个来面试的必须写,一个填图题跟智力无关,反而感觉自己被轻视了。面试官穿这脱鞋,蓬头垢面,很“牛”的样子。拿了张纸考我闰年的算法和listview的优化,期间他一直手直哆嗦,看来派了个小兵考我,再次被轻视,果断闪人(罢面)。
联想面了3次+ +,第一个项目经理还是很随和的,问了些Task的问题,activity加载模式以及一些我项目中的问题,可能我经验尚浅没进去。第二次有些变态,四个人面我,其中一个之总经理级别,面我一个小程序员不用这样吧,一人问一个问题,静态的问题啊,我项目中的问题啊,不过居然问我代码是怎写的,让我说出来,我当时无语了,早忘了啊。第三次没印象了。
土豆网很偏僻啊,我看了看他们的环境(不太好)人员也很闲散,大下午的都不在工作。项目经理有会,找可俩手下面我,感觉更像是技术PK,聊些asyncTask了,消息处理了,当我说道framework层时,显然他们就不知道了。Pk了一小时,还让我教他们关于surfaceview的知识,说他们不清楚,我刚想讲项目经理来了,可能是离职原因说的不太好吧。只差一步了啊= =,所以离职原因非常重要,想好了再说出来。
京东商城好像包了三层大楼,环境不错,来了个开发人员考我问题,问的都是项目中的问题,一些关于多线程下载的问题,问道我代码,我记错了,所以就惨了,其实我认为不应考一些代码的问题,虽然是自己写的,但过一阵都忘了,我要问面试官代码,估计他也说不出来。不过感觉不错。
阿里云,刚去时不知道是什么公司,是阿里巴巴的子公司,环境还ok,主要是项目经理不错,我们聊了一个半小时,技术问题没问太多,就是关于布局一些问题,消息处理,数据存储等一些基本题,他更关注的是你的思想,很可惜这个岗位招的是管理人员,我经验尚浅条件不符。
金山去了一趟,楼里还不错,不过我没见面试官,人事给我一张笔试题,我其实很差异大公司一般不笔试啊+ +,我看了看,三道题都拿不准,一道链表的算法题,晕菜啊没看啊。最郁闷的是,最后一道问金山快盘的原理和设计什么的,我也没用过啊,狂晕,果断闪人。
中科软,这个比较郁闷,项目经理显然很喜欢我,遗憾的是他们这没有做android开发,所以面试时最好先了解面试的公司招什么职位,具体做哪些事,变被动为主动。
中软国际,这个是做外包项目,面试题很多,主要还是基础,什么如何观看手机的内存cpu信息等等。
文思创新,临时有事直接罢面,面试题很多也很恶心,算法题考的很多,还是客观题。
还有一家大公司忘了名字了,这回彻底被鄙视,意思是我在小公司没有做过内存优化和性能方面的工作,不过面试期间我接了四个面试电话,把俩面试官凉在那也算解了气。
期间还有新浪,百度,360,创新工厂找我面试因为各种原因没去,最后去了华为,在华为可以让你的层次更高一些,因为我参与的是整机开发,如果去搜狐和千橡或者是土豆做客户端维护的,技术就容易停留到应用层了。
[android面试经历]
篇5:android个人面试简历
基本信息
姓 名:
国籍: 中国
目前所在地: 番禺区
民族: 汉族
户口所在地: 湖南
身材: 168 cm 58 kg
婚姻状况: 未婚
年龄: 34 岁
培训认证:
诚信徽章:
求职意向及工作经历
人才类型: 普通求职
应聘职位: 计算机软件:ERP/SAP系统工程师、软件工程师:Windows Mobile,Android,J2ME开发、嵌入式软件开发(Linux/单片机/DLC/DSP…):
工作年限: 8
职称: 无职称
求职类型: 全职
可到职日期: 一个星期
月薪要求: 5000--8000
希望工作地区: 广东省 北京 上海
个人工作经历:
公司名称:
起止年月:20xx-03 ~ 20xx-04广州市科思电脑系统公司
公司性质: 所属行业:
担任职务: 项目经理、软件工程师
工作描述: 负责企业ERP/SAP,MRP2,HR管理系统的开发与实施工作,多次带领开发团队深入企业,参与多家企业的ERP/SAP系统的设计与项目实施,成功完成了电子、服装等十多个行业公司企业的ERP/SAP系统的开发与实施任务。
离职原因:
公司名称: 起止年月:20xx-02 ~ 20xx-01广州市天河学院
公司性质: 所属行业:
担任职务: 计算机系教师
工作描述: 负责软件,网络计算机相关课程讲授,带领学生进行进行课程实验。
离职原因:
公司名称: 起止年月:20xx-01 ~ 20xx-01广州艾斯顿有限公司
公司性质: 所属行业:
担任职务: 电脑部主管,软件工程师
工作描述: 负责公司的电脑维护,网站维护,软件开发工作。
离职原因:
教育背景
毕业院校: 湖南常德电脑大学
最高学历: 本科
毕业日期: -07-01
所学专业一: 计算机信息管理
所学专业二:
受教育培训经历:
起始年月 终止年月 学校(机构) 专 业 获得证书 证书编号
1992-09 -07 湖南常德机电工程学校(湖南常德职业技术学院) 机械电子 毕业证
1996-09 1999-07 湖南常德电脑大学 计算机信息管理 毕业证
20xx-01 20xx-01 广东外语外贸大学 商务英语 结业证
语言能力
外语: 英语 良好
国语水平: 优秀 粤语水平: 良好
工作能力及其他专长
1.精通Windows Mobile,WinCe手机系统软件开发,熟悉Android,J2Me系统设计。
2.精通C/C++VB/VC++,C++Builder/ABAP, EVC/WIN CE, SQL SERVER等编程语言, 有丰富的ERP/MRP/OA系统开发与实施经验,精通酒店信息管理系统的开发与维护,为多家企业成功设计开发了ERP/SAP系统软件和一百多家五星级酒店管理系统,赢得了客户广泛的好评。
2.熟识思科、华为等网络设备的安装与调试维护工作,精通RFID、嵌入式系统程序设计、嵌入式/上位机编程。
详细个人自传
精通Windows Mobile,WinCe手机系统软件开发,熟悉Android,J2Me系统设计,精通C/C++VB/VC++,C++Builder/SAP(ABAP), EVC/WIN CE,RFID、SQL SERVER等编程语言, 熟悉思科、华为等网络设备的安装与调试维护工作,为多家企业成功设计开发、完成实施ERP/SAP系统软件和一百多家五星级酒店管理系统,赢得了客户广泛的好评。
在android个人求职者的面试中,个人求职信跟个人简历起着同样重要的作用,下面是本网小编为大家精心推荐的android个人面试求职信范文,希望能够对您有所帮助。
篇6:android面试调试技巧
,
这里主要讲解Android adb,它是一个命令行工具。而ddms功能与adb相同,只是它有一个图形化界面。对不喜欢命今操作方式的.人来说是一个不错的选择。这些命令在 Android sdk下的tools目录下。这些命令在linux和window中都可运行
(1) 首先确定本机上有一个模拟器已启动。确定是否有模拟器已启动可以使用命令:
adb devices
List of devices attached
emulator-5554 device
emulator-5556 device
返回一个5554的模拟器。
(2) 给模拟器安装一个应用程序,
篇7:百度面试Android面试题
1.java 基础题,输入结果是什么?
public static void main(String[] args) {
String str = new String(“abc”);
char[] ch = {‘a’,'b’,'c’};
change(str,ch);
System.out.print(str+” “);
System.out.print(ch);
}
public static void change(String str,char[] ch){
str = “gbc”;
ch[0] = ‘g’;
}
2.HashMap,Hashset,ArrayList以及LinkedList集合的区别,以及各自的用法
3.Activity的启动模式有哪几种
4.介绍Handler机制
5.线程考核,解析sleep,wait,join,yield方法,以及notify 和notifyAll是如何控制线程同步的
6.android 存储方式以及各至用法
7.ListView 中BaseAdapter的使用和优化;在ListView中的item放置一个按钮,如何使用按钮对不能的item响应不同的事件
8.编程题:
题意:生成一个1-100的随机数组,但数组中的数字不能重复,即位置是随机的,但数组元素不能重复
笔试题目就只能记住这么多了.
由于笔试时间是在晚上,麦洛答好题目才交卷,时间大概用一个半小时(感觉其他人答得非常快,有的没有半个小时就交卷了).
总体上,麦洛感觉笔试题目还是比较简单的,只要平时稍微注意学习,这些题目都不是很难.
百度评卷的效率也是很高的,麦洛刚从茂业大厦(百度深圳研发中心)出来不多久,就电话通知进入面试了.第二天面试时,被麦洛瞄到了答卷的分数,93分!
面试的第一轮是第二天9:00开始,在酒店里.因为深圳这边的研发中心刚刚建立起来,面试官都是从北京飞过来的.第一轮面试的面试官,应该也是 Android工程师,这一轮问的题目基本都还行.就是其中一个题目是说,监听数据库变化的一个接口,这个接口麦洛用的比较少,所以没有答上来,就是 ContentObserver这个接口.
这一轮的题目:
1.以前做过项目的,画个简单的架构图,介绍之前的项目;
2.项目中遇到的问题,以及怎么解决的.麦洛就举了之前写的上拉下拉这个控件的例子
3.Android Activity生命周期
4.Adapter中View重用的问题
就回忆起这么多了
第一轮讨论的话题是项目比较多,都是介绍项目经验之类的.
这一关讨论了一个多小时,顺利通过.
第二轮还是面试,是另外一个工程师来面试,就是面试官交换面试.
这一轮难度其实也不是特别大,但是因为问到几个麦洛没有做过的东西,被卡住了一下.
能回忆起的题目有:
1.介绍Http协议
2.Http协议实现多线程下载并支持断点续传,以及服务端是怎么支持的?
3.面向对象的理解,面向对象的原则C开发封闭原则的理解
4.android wap与net的两种连接方式
5.项目中的一些问题
这一轮主要是一些java基础知识,以及项目中的一些问题
两轮下来一个上午就过去了.麦洛也感觉精疲力尽了.然后就是吃午饭,等待第三轮面试了.
第三轮是比较轻松了.这一轮的面试应该是部门老大级别的了.随便聊聊,说说为何离职,以及有什么问题需要问的,大概半个小时就搞定了.
然后就回去等通知,要1周到两周时间.OMG!麦洛可不想等那么久啊
从笔试到面试总体感觉其实不是特别的难,只要做好准备平时注意积累,很多问题都是很好回答的.
篇8:android程序员面试宝典
谈谈UI中, Padding和Margin有什么区别?
widget相对位置的完成在antivity的哪个生命周期阶段实现。
请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系。
AIDL的全称是什么?如何工作?能处理哪些类型的数据?
请解释下Android程序运行时权限与文件系统权限的区别。
系统上安装了多种浏览器,能否指定某浏览器访问指定页面?
对多线程的运用和理解,及多线程之间handle的传值。
对android虚拟机的理解,包括内存管理机制垃圾回收机制。
Framework工作方式及原理,Activity是如何生成一个view的,机制是什么。
android本身的一些限制,比如apk包大小限制,读取大文件时的时间限。
如何加载的音乐信息,如何改善其效率。
ListView如何提高其效率?
启动应用后,改变系统语言,应用的语言会改变么?
启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么区别?
Android程序与Java程序的区别?
Android中Task任务栈的分配。
在Android中,怎么节省内存的使用,怎么主动回收内存?
不同工程中的方法是否可以相互调用?
在Android中是如何实现判断区分通话记录中的电话状态,去电,来电、未接来电?
dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念
sim卡的EF 文件有何作用
如何判断是否有SD卡?
嵌入式操作系统内存管理有哪几种, 各有何特性。
什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?
一条最长的短信息约占多少byte?
Linux中跨进程通信的几种方式 。
谈谈对Android NDK的理解。
谈谈Android的优点和不足之处。
Android系统中GC什么情况下会出现内存泄露呢?
Android UI中的View如何刷新。
简单描述下Android 数字签名。
什么是ANR 如何避免它?
android中的动画有哪几类,它们的特点和区别是什么?
handler机制的原理。
android中线程与线程,进程与进程之间如何通信。
说说mvc模式的原理,它在android中的运用。
android中有哪几种解析xml的类,官方推荐哪种?以及它们的原理和区别。
DDMS与TraceView的区别?
res目录有默认几项resource。
android的哪个版本是一次重大的升级?
两个Activity之间跳转时必然会执行的是哪几个方法。
横竖屏切换时候Activity的生命周期。
如何将一个Activity设置成窗口的样式。
你后台的Activity被系统 回收怎么办?
如何退出Activity?如何安全退出已调用多个Activity的Application?
如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
两个Activity之间怎么传递数据?
怎么让在启动一个Activity是就启动一个service?
同一个程序,但不同的Activity是否可以放在不同的Task任务栈中?
Activity怎么和service绑定,怎么在activity中启动自己对应的service?
什么是Service以及描述下它的生命周期。
Service有哪些启动方法,有什么区别,怎样停用Service?
不用service,B页面为音乐播放,从A跳转到B,再返回,如何使音乐继续播放?
什么是IntentService?有何优点?
什么时候使用Service?
请描述一下Intent 和 Intent Filter。
Intent传递数据时,可以传递哪些类型数据?
说说Activity,Intent,Service是什么关系 。
请描述一下Broadcast Receiver。
在manifest和代码中如何注册和使 用 broadcast receiver 。
请介绍下ContentProvider是如何实现数据共享的。
请介绍下Android的数据存储方式。
SharedPreferences:用来存储”key-value paires“格式的数据,它是一个轻量级的键值存储机制,只可以存储基本数据类型。
文件存储:通过FileInputStream和FileOutputStream对文件进行操作。在Android中,文件是一个应用程序私有的,一个应用无法读写其他应用程序的文件。
[android程序员面试宝典]
篇9:android面试问题与答案
android面试问题与答案
View重绘和内存泄露的好像是面试经常问的问题
1. View的刷新:
在需要刷新的地方,使用handle.sendmessage发送信息,然后在handle的getmessage里面执行invaliate或者postinvaliate.
2. GC内存泄露
出现情况:
1.数据库的cursor没有关闭
2.构造adapter时,没有使用缓存contentview
衍生listview的优化问题—–减少创建view的对象,充分使用contentview,可以使用一静态类来优化处理getview的过程/
3.Bitmap对象不使用时采用recycle()释放内存
4.activity中的对象的生命周期大于activity
调试方法: DDMS==> HEAPSZIE==>dataobject==>[Total Size]
还有其他问题,大家欢迎提出阿,可以是整体架构的,还有这个Hal层.
这篇文章会涉及到以下几个内容
一 Activity的生命周期
二 让Activity变成一个窗口:Activity属性设定
三 你后台的`Activity被系统 回收怎么办:onSaveInstanceState
四 调用与被调用:我们的通信使者 – Intent
一 Activity的生命周期
和其他手机平台的应用程序一样,Android的应用程序 的生命周期是被统一掌控的,也就是说我们写的应用程序命运掌握在别人(系统)的手里,我们不能改变它,只能学习并适应它,
简单地说一下为什么是这样:我们手机在运行 一个应用程序的时候,有可能打进来电话发进来短信 ,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能 ,另
外系统也不允许你占用太多资源 ,至少要保证电话功能吧,所以资源不足的时候也就有可能被干掉。
言归正传,Activity的基本生命周期如下代码 所示:
Java 代码
public
class MyActivity extends Activity {
protected
void onCreate(Bundle savedInstanceState);
protected
void onStart();
protected
void onResume();
protected
void onPause();
protected
void onStop();
protected
void onDestroy();
}
public class MyActivity extends Activity { protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); }
你自己写的Activity会按需要 重载这些方法,onCreate是免不了的,在一个Activity正常启动的过程中,他们被调用的顺序是 onCreate -> onStart -> onResume, 在Activity被干掉的时候顺序是onPause -> onStop -> onDestroy ,这样就是一个完整的生命周期,但是有人问了 ,程序正运行着呢来电话了,这个程序咋办?中止了呗,如果中止的时候新出的一个Activity是全屏的那么:onPause->onStop ,恢复的时候onStart->onResume ,如果打断 这个应用程序的是一个Theme为Translucent 或者Dialog 的Activity那么只是onPause ,恢复 的时候onResume ,
详细介绍一下这几个方法中系统在做什么以及我们应该做什么:
onCreate: 在这里创建界面 ,做一些数据 的初始化工作
onStart: 到这一步变成用户可见不可交互 的
onResume: 变成和用户可交互 的,(在activity 栈系统通过栈的方式管理这些个
Activity的最上面,运行完弹出栈,则回到上一个Activity)
onPause: 到这一步是可见但不可交互 的,系统会停止动画 等消耗CPU 的事情
从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候
你的程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在
onResume里读出来,注意:这个方法里做的事情时间要短,因为下一
个activity不会等到这个方法完成才启动
onstop: 变得不可见 ,被下一个activity覆盖了
onDestroy: 这是activity被干掉前最后一个被调用方法了,可能是外面类调用finish方
法或者是系统为了节省空间将它暂时性的干掉,可以用isFinishing()来判
断它,如果你有一个Progress Dialog在线程中转动,请在onDestroy里
把他cancel掉,不然等线程结束的时候,调用Dialog的cancel方法会抛
异常的。
onPause,onstop, onDestroy,三种状态 下 activity都有可能被系统干掉
为了保证程序的正确性,你要在onPause()里写上持久层操作的代码,将用户编辑的内容都保存到存储介质上(一般都是数据库 )。实际工作中因为生命周期的变化而带来的问题也很多,比如你的应用程序起了新的线程在跑,这时候中断了,你还要去维护那个线程,是暂停还是杀掉还是数据回滚,是吧?因为Activity可能被杀掉,所以线程中使用的变量和一些界面元素就千万要注意了,一般我都是采用Android的消息机制 [Handler,Message]来处理多线程和界面交互的问题。这个我后面会讲一些,最近因为这些东西头已经很大了,等我理清思绪再跟大家分享。
二 让Activity变成一个窗口:Activity属性设定
讲点轻松的吧,可能有人希望做出来的应用程序是一个漂浮在手机主界面的东西,那么很简单你只需要设置 一下Activity的主题就可以了在AndroidManifest.xml 中定义 Activity的地方一句话:
Xml代码
android :theme=”@android:style/Theme.Dialog”
android:theme=”@android:style/Theme.Dialog”
这就使你的应用程序变成对话框的形式弹出来了,或者
Xml代码
android:theme=”@android:style/Theme.Translucent”
- 高中作文指导:审题上的八个技巧2022-12-26
- Android中对日期进行排序2022-12-27
- 管理你的Android电池使用2023-06-18
- Android系统架构之微服务架构2022-12-11
- android使用Font Awesome字体图标2022-12-24
- Android Beam:引领未来的NFC数据交换2023-05-05
- Android 获取当前数据连接的状态2023-06-12
- Android加载动态库失败分析2023-07-21
- Android学习笔记总结初学者必看2023-04-08
- Android常用系统Intent.Action小例子2022-12-20