安卓面试题 笔试题 带答案

1.【多选】activity的启动模式有哪些?( )

A.standard     B.singleTop        C. singleTask      D.singleInstance


2.【单选】下列哪些语句关于内存回收的说明是正确的?(  )

A.程序员必须创建一个线程来释放内存           B.内存回收程序负责释放无用内存

C.内存回收程序允许程序员直接释放内存       D.内存回收程序可以在指定的时间释放内存对象   


3.【单选】String a1=new String("abc"); String a2=new String("abc"); String a3=new String("abcd"); 总共创建(  )个String对象

A.2  B.3  C.5  D.6

 

4.【单选】Math.round(11.5)和Math.round(-11.5)分别等于多少?( )

A.11,-11          B.11,-12          C. 12,-11         D.12,-12


5.【多选】Intent传递数据时,下列的数据类型哪些可以被传递?( )

A.Serializable     B.Charsequence     C. Parcelable      D.Bundle


6.【多选】android中的动画分类有?( )

A.Tween            B.Draw             C. Frame           D.Animation


7.【单选】下面退出Activity错误的方法是?( )

A.System.exit()    B.onStop()         C.抛异常强制退出   D.Finish()


8.【单选】下列哪些语句关于内存回收的说明是正确的? (  )

A、程序员必须创建一个线程来释放内存           

B、 内存回收程序负责释放无用内存

C、 内存回收程序允许程序员直接释放内存    

D、 内存回收程序可以在指定的时间释放内存对象


9.【单选】Android项目工程下面的assets目录的作用是什么(  )

A、放置应用到的图片资源。                     

B、主要放置多媒体等数据文件

C、放置字符串,颜色,数组等常量数据

D、放置一些与UI相应的布局文件,都是xml文件

 

10.【多选】下列对android NDK的理解正确的是(  )

A、 NDK是一系列工具的集合

B、 NDK 提供了一份稳定、功能有限的 API 头文件声明。

C、 使 “Java+C” 的开发方式终于转正,成为官方支持的开发方式

D、 NDK 将是 Android 平台支持 C 开发的开端


11.【单选】关于res/raw目录说法正确的是()

A.这里的文件是原封不动的存储到设备上不会转化为二进制的格式

B.这里的文件是原封不动的存储到设备上会转化为二进制的格式

C.这里的文件最终以二进制的格式存储到指定的包中

D.这里的文件最终不会以二进制的格式存储到指定的包中


12.【多选】下面是属于GLSurFaceView特性的是()

A.管理一个surface,这个surface就是一块特殊的内存,能直接排版到Android的视图view上

B.管理一个EGL display,它能让opengl把内容渲染到上述的surface上

C.让渲染器在独立的线程里运作,和UI线程分离

D.可以直接从内存或者DMA等硬件接口取得图像数据


13.【单选】对于一个已经存在的SharedPreferences对象setting,想向其中存入一个字符串"person",setting应该先调用什么方法( )

A.edit()             B.save()            C.commit()          D.putString()


14.【多选】android中使用SQLiteOpenHelper这个辅助类时,可以生成一个数据库,并可以对数据库版本进行管理的方法可以是( )

A.getWriteableDatabase()  B.getReadableDatabase()    C.getDatabase()     D.getAbleDatabase()


15.【多选】以下属于提高listview效率的正确的方法()

A.利用convertview回收视图 B缩小每个item以节省资源. C.利用viewholder模式D.尽量不要加载图片。

 

1.ABCD 2. B  3.C 4.C 5.ABCD 6.AC 7.A 8.B  9.B 10.ABCD 11.A 12.ABC 13.A

14.AB 15.AC

 

一.什么是ANR 如何避免它?

  答:ANR:Application Not Responding

在Android中,活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应。当出现下列情况时,Android就会显示ANR对话框了:

  对输入事件(如按键、触摸屏事件)的响应超过5秒

  意向接受器(intentReceiver)超过10秒钟仍未执行完毕

  Android应用程序完全运行在一个独立的线程中(例如main)。这就意味着,任何在主线程中运行的,需要消耗大量时间的操作都会引发ANR。因为此时,你的应用程序已经没有机会去响应输入事件和意向广播(Intentbroadcast)。

  因此,任何运行在主线程中的方法,都要尽可能的只做少量的工作。特别是活动生命周期中的重要方法如onCreate()和onResume()等更应如此。潜在的比较耗时的操作,如访问网络和数据库;或者是开销很大的计算,比如改变位图的大小,需要在一个单独的子线程中完成(或者是使用异步请求,如数据库操作)。但这并不意味着你的主线程需要进入阻塞状态已等待子线程结束-- 也不需要调用Therad.wait()或者Thread.sleep()方法。取而代之的是,主线程为子线程提供一个句柄(Handler),让子线程在即将结束的时候调用它(xing:可以参看Snake的例子,这种方法与以前我们所接触的有所不同)。使用这种方法涉及你的应用程序,能够保证你的程序对输入保持良好的响应,从而避免因为输入事件超过5秒钟不被处理而产生的ANR。这种实践需要应用到所有显示用户界面的线程,因为他们都面临着同样的超时问题。

 

二.请介绍下android大众常用的五种布局。你觉得对于非常复杂的界面,从性能方面考虑,你会选择使用哪种布局,并说明原因。

FrameLayout(框架布局)

只可以有一个控件,并且不能设计这个控件的位置,控件会放在左上角

LinearLayout(线性布局)

一行只能控制一个控件的线性布局,所以当有很多控件需要在一个界面中列出时,可以用LinearLayout布局

AbsoluteLayout(绝对布局)

可以放置多个控件,并且可以自己定义控件的x,y的位置

RelativeLayout(相对布局)

比如要在一行上显示多个控件,这时就要用到相对布局

TableLayout(表格布局)

将子元素的位置分配到行或列中,一个TableLayout由许多的TableRow组成

2.会尽量选用RelaticeLayout布局,尽量少使用LinearLayout,以减少布局的嵌套,来提高性能。

 

(安卓基础知识是否熟悉)

三.请大致讲解一下制作一个listview并显示出数据的流程

四.请讲解自定义一个view的流程

 

(是否有过开发经验)

五.内存溢出问题 oom是什么,发生oom的根本原因是什么,一般什么情况会导致oom的发生,如何避免,检测内存泄露 工具 

导致内存泄漏主要的原因是,先前申请了内存空间而忘记了释放。如果程序中存在对无用对象的引用,那么这些对象就会驻留内存,消耗内存,因为无法让垃圾回收器GC验证这些对象是否不再需要。如果存在对象的引用,这个对象就被定义为"有效的活动",同时不会被释放。要确定对象所占内存将被回收,我们就要务必确认该对象不再会被使用。典型的做法就是把对象数据成员设为null或者从集合中移除该对象。但当局部变量不需要时,不需明显的设为null,因为一个方法执行完毕时,这些引用会自动被清理。 

Java 内存泄露的根本原因就是 保存了不可能再被访问的变量类型的引用

(1) 数据库的cursor没有关闭
(2) 构造adapter时,没有使用缓存contentview
(3) Bitmap对象不使用时采用recycle()释放内存
(4) activity中的对象的生命周期大于activity

DDMS

六.请问安卓是如何调用c/c++语言的,如果对它有所了解,请简述在android中的调用过程。

通过jni来调用C/C++

)安装和下载Cygwin,下载 An#from 面试常见问题--android高级面试题精选3篇来自学优网http://www.gkstk.com/ end#droid NDK

)在ndk项目中JNI接口的设计

)使用C/C++实现本地方法

)JNI生成动态链接库.so文件

)将动态链接库复制到java工程,在java工程中调用,运行java工程即可

 

1.图片加载问题

2.框架问题

3.界面适配问题

 

你可能感兴趣的:(安卓)