Android 面试题

android 面试题: 1.Activity的生命周期 官方说明 开源项目

2.请覆写一个类的equals()方法。为什么覆写一个类的equals方法时常常需要覆写hashCode()方法?

3.谈谈padding和margin有何区别。

4.请指出下面的include用法有何问题。

5.如图,要实现FrameLayout里面包含了一个ImageView,FrameLayout的位置是(0, 50, 240, 230),ImageView的位置是(20, 140, 120, 210)(Unit: px)。当ImageView的layout_gravity=”bottom center_horizontal”时,请写出ImageView对应的layout_margin值。(screen pixel density: mdpi)

6.假设有如下drawable目录,每一个目录包含相同图片的不同版本, drawable/ drawable-en/ drawable-fr-rCA/ drawable-en-port/ drawable-en-notouch-12key/ drawable-port-ldpi/ drawable-port-notouch-12key/

假设如下的设备配置(以修饰词的优先级高低排列) Locale = en-GB Screen orientation = port Screen pixel density = hdpi Touchscreen type = notouch Primary text input method = 12key

请描述出android系统是如何一步一步选出最匹配的resource的。

7.什么情况下Activity的onSaveInstanceState()方法会被调用。

  1. Start service和bind service分别会调用到service哪些生命周期的方法。在service的onStartCommand()方法里返回START_STICKY有何作用。

  2. 为什么要用ContentProvider。

  3. BroadcastReceiver的onReceive()方法总是在主线程运行吗。

  4. Android提供了哪些线程机制。

  5. 什么情况下会产生ANR以及如何避免ANR。

  6. 谈谈你对activity的android:launchMode=”singleTask”的理解。

  7. 请描述Handler,Message,MessageQueue,Looper,Thread,HandlerThread,Runnable之间的关系。

  8. 如右图的布局, 假定LayoutView2的onInterceptTouchEvent和onTouchEvent均返回true,其他全为默认返回值,请描述手指点下,移动并抬起的过程中,onInterceptTouchEvent和onTouchEvent相关的调用流程。

  9. 什么时候需要实现Parcelable接口,需要哪些具体的步骤。

  10. 请画出Context模块的类结构图,使用了何种设计模式。