您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > Android笔试面试题
1.基本的UI控件和布局文件文本控件-TextView-EditText按钮控件-Button-ImageButton状态开关按钮-ToggleButton单选与复选按钮-CheckBox-RadioButton图片控件-ImageView时钟控件-AnalogClock-DigitalClock日期与时间选择控件-DataPicker-TimePicker布局文件:LinearLayout和RelativeLayout共有属性:java代码中通过btn1关联次控件android:id=@+id/btn1控件宽度android:layout_width=80px//80dip或80dpandroid:layout_width=“wrap_content”android:layout_width=“match_parent”控件高度android:layout_height=80px//80dip或80dpandroid:layout_height=“wrap_content”android:layout_height=“match_parent”控件排布android:orientation=horizontal”android:orientation=vertical“控件间距android:layout_marginLeft=5dip//距离左边android:layout_marginRight=5dip//距离右边android:layout_marginTop=5dip//距离上面android:layout_marginRight=5dip//距离下面控件显示位置android:gravity=center//left,right,top,bottomandroid:gravity=center_horizontalandroid:layout_gravity是本元素对父元素的重力方向。android:layout_gravity属性则设置控件本身相对于父控件的显示位置android:gravity是本元素所有子元素的重力方向。android:layout_gravity=center_verticalandroid:layout_gravity=leftandroid:layout_gravity=left|bottomTextView中文本字体android:text=@String/text1//在string.xml中定义text1的值android:textSize=20spandroid:textColor=”#ff123456”android:textStyle=bold//普通(normal),斜体(italic),粗斜体(bold_italic)定义控件是否可见android:visibility=”visible”//可见android:visibility=”invisible”//不可见,但是在布局中占用的位置还在android:visibility=”gone”//不可见,完全从布局中消失定义背景图片android:background=@drawable/img_bg//img_bg为drawable下的一张图片seekbar控件背景图片及最大值android:progressDrawable=@drawable/seekbar_imgandroid:thumb=@drawable/thumbandroid:max=60仅在RelativeLayout中有效:在父亲布局的相对位置android:layout_alignParentLeft=true//在布局左边android:layout_alignParentRight=true//在布局右边android:layout_alignParentTop=true//在布局上面android:layout_alignParentBottom=true//在布局的下面在某个控件的相对位置android:layout_toRightOf=@id/button1//在控件button1的右边,不仅仅是紧靠着android:layout_toLeftOf=@id/button1//在控件button2的左边,不仅仅是紧靠着android:layout_below=@id/button1//在控件button1下面,不仅仅是正下方android:layout_above=“@id/button1”//在控件button1下面,不仅仅是正下方定义和某控件对奇android:layout_alignTop=”@id/button1”//和控件button1上对齐android:layout_alignBottom=”@id/button1”//和控件button1下对齐android:layout_alignLeft=”@id/button1”//和控件button1左对齐android:layout_alignRight=”@id/button1”//和控件button2右对齐android:layout_centerHorizontal=true//水平居中android:layout_centerVertical=trueandroid:layout_centerInParent=true仅在LinearLayout中有效设置控件在一排或一列中所占比例值android:layout_weight=11、Androiddvm的进程和Linux的进程,应用程序的进程是否为同一个概念DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念。2、sim卡的EF文件有何作用sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本身可以有自己的操作系统cos,EF(EiementaryFile)基本文件就是作存储并和手机通讯用的3、嵌入式操作系统内存管理有哪几种,各有何特性页式,段式,段页,用到了MMU(内存管理单元),虚拟空间等技术4、什么是嵌入式实时操作系统,Android操作系统属于实时操作系统吗?嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和硬实时两种,而android是基于linux内核的,因此属于软实时。5、一条最长的短信息约占多少byte(字节)?中文70(包括标点),英文160,160个字节。6、android中的动画有哪几类,它们的特点和区别是什么?两种,Tween动画、这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;Frame动画。传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。7、handler机制的原理andriod提供了Handler和Looper来满足线程间的通信。当Android系统启动时,就创建了一个Looper与MessageQueue对象,并且与当前线程相绑定.当在主线程使用Handler并创建该对象时,他会获得该Looper。Handler对象发送消息有两种方式:sendMessage.../Psot...但是最终调用的都是sendMessageAtTime方法,该方法主要作用有两个:指定目标Handler对象把消息放入到消息队列当中Looper中使用loop方法用于不断的循环监听消息队列,看源码可知,监听消息队列并不是另外开一个线程来实现,loop方法主要是,对消息进行分发,最终交给目标Handler并由HandleMessage方法最终处理.8、说说mvc模式的原理,它在android中的运用MVC(Model_view_contraller)”模型_视图_控制器”。MVC应用程序总是由这三个部分组成。Event(事件)会导致Controller来改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。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==[TotalSize]还有其他问题,大家欢迎提出阿,可以是整体架构的,还有这个Hal层.9、Activity的生命周期和其他手机平台的应用程序一样,Android的应用程序的生命周期是被统一掌控的,也就是说我们写的应用程序命运掌握在别人(系统)的手里,我们不能改变它,只能学习并适应它。简单地说一下为什么是这样:我们手机在运行一个应用程序的时候,有可能打进来电话发进来短信,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能,另外系统也不允许你占用太多资源,至少要保证电话功能吧,所以资源不足的时候也就有可能被干掉。言归正传,Activity的基本生命周期如下代码所示:Java代码1.public2.classMyActivityextendsActivity{3.protected4.voidonCreate(BundlesavedInstanceState);5.6.protected7.voidonStart();8.9.protected10.voidonResume();11.12.protected13.voidonPause();14.15.protected16.voidonStop();17.18.protected19.voidonDestroy();20.}21.22.publicclassMyActivityextendsActivity{protectedvoidonCreate(BundlesavedInstanceState);protectedvoidonStart();protectedvoidonResume();protectedvoidonPause();protectedvoidonStop();protectedvoidonDestroy();}你自己写的Activity会按需要重载这些方法,onCreate是免不了的,在一个Activity正常启动的过程中,他们被调用的顺序是onCreate-onStart-onResume,在Activity被干掉的时候顺序是onPause-onStop-onDestroy,这样就是一个完整的生命周期,但是有人问了,程序正运行着呢来电话了,这个程序咋办?中止了呗,如果中止的时候新出的一个Activity是全屏的那么:onPause-onStop,恢复的时候onStart-onResume,如果打断这个应用程序的是一个Theme为Translucent或者Dialog的Activity那么只是onPause,恢复的时候onResume。详细介绍一下这几个方法中系统在做什么以及我们应该做什么:onCreate:在这里创建界面,做一些数据的初始化工作onStart:到这一步变成用户
本文标题:Android笔试面试题
链接地址:https://www.777doc.com/doc-5475148 .html