您的位置:首页 > 职场人生

Android面试题

2016-07-20 15:55 507 查看
面试题如下:
整个面试题分为三个部分:Java、Android和项目经验。

1Java技术 1.1 Java基础

对抽象、继承、多态的理解 参考

泛型的作用及使用场景 参考

枚举的特点及使用场景

线程sleep和wait的区别

JAVA反射机制 参考

weak/soft/strong引用的区别

Object的hashCode()与equals()的区别和作用

1.2 集合类

JAVA常用集合类功能、区别和性能

并发相关的集合类

部分常用集合类的内部实现方式

1.3 多线程相关

Thread、Runnable、Callable、Futrue类关系与区别

JDK中默认提供了哪些线程池,有何区别

线程同步有几种方式,分别阐述在项目中的用法

在理解默认线程池的前提下,自己实现线程池

1.4 字符

String的不可变性
参考

StringBuilder和StringBuffer的区别
参考

字符集的理解:Unicode、UTF-8、GB2312等

正则表达式相关问题

1.5 注解

注解的使用

注解的级别及意义

如何自定义注解

2Android技术 2.1 Android基础

四大组件的意义及使用,生命周期回调及意义

AsyncTask、Handler的使用 参考

Android系统层次框架结构

AsyncTask的实现方式
参考

AsyncTask使用的时候应该注意什么

Android常见的存储方式

SQLite数据库存储,SharedPreferences存储,文件存储,网络存储,使用ContentProvider存储数据

Looper、Handler和MessageQueue的关系
参考

Activity的启动流程(考察对Framwork的熟悉程度)

多进程开发的注意事项(Application类区分进程,进程间内存不可见、进程间通讯方式)

2.2 Resource相关

.9图片的意义

为了Android的多频适配,.9图可以按一定的要求拉伸来适配不同的情况

style和theme的作用及用法 参考

dpi、sp、px的区别以及转换关系

px: pixels(像素)。不同设备显示效果相同,一般HVGA代表320x480像素,这个用的比较多。

sp: scaled pixels(放大像素)。主要用于字体显示best for textsize。

dip: device independent pixels(设备独立像素)。不同设备有不同的显示效果,这个和设备硬件有关,一般为了支持WVGA、HVGA和QVGA 一般使用这个,不依赖像素。

 转换关系:1dp定义为屏幕密度值为160ppi时的1px,即,在mdpi时,1dp = 1px。 以mdpi为标准,这些屏幕的密度值比为:ldpi : mdpi : hdpi : xhdpi : xxhdpi = 0.75 : 1 : 1.5 : 2 : 3;即,在xhdpi的密度下,1dp=2px;在hdpi情况下,1dp=1.5px。其他类推。dp和sp都是安卓的开发单位,dp是长度单位,sp是字体单位。sp与dp类似,但是可以根据用户的字体大小首选项进行缩放。Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时1sp=1dp,而当文字尺寸是“大”或“超大”时,1sp>1dp。一般情况下可认为sp=dp。

raw和assets文件夹的作用,二者有何区别

res下面的文件夹不可以重建,里面的文件夹名字是固定的,

assets里面的文件夹是可以任意建的,可以多级目录,命名时只要满足文件命名的规范就可以了。

assets和raw里面存放的文件在打包的时候,不会编译成二进制,res(除了raw)在打包的时候,会编译成二进制,

读取方式:raw: R.raw.xxx, getResource().openRawResource();

assets: 绝对路径:file:///android_asset/xxx

Android系统如何在多个资源文件夹下查找匹配最合适的资源

比如多个drawable文件夹,Android系统通过当前设备的dpi去取对应dpi的drawable文件夹下的文件

不同的dpi修饰符对应的dpi如下

drawable-ldpi 120DPI

drawable-mdpi 160DPI

drawable-hdpi 240DPI

drawable-xhdpi 320DPI

drawalbe-xxhdpi 480DPI

drawable-xxxhdpi 640DPI

2.3 虚拟机

Java内存模型

Android虚拟机的特点

Dalvik和Art的区别

熟悉垃圾回收的实现机制,了解虚拟机的GC类型

2.4 View相关

常用组件的使用:ListView、RecyclerView及Adapter的使用

View之间的继承关系
参考

Invalidate与postInvalidate的区别

自定义View的实现方式(根据项目经验询问相关组件)。 参考 http://blog.csdn.net/lwjlol/article/details/50596166
onMeasure/onLayout/onDraw的作用


Paint、Matrix、Shader等绘制相关类的方法作用

详细描述事件分发机制

2.5 动画

Android有哪些动画的实现方式
参考

Interpolator类的意义和常用的Interpolator

ViewAnimation与属性动画有什么区别

如何自定义ViewAnimation

属性动画的实现原理

2.6 图片处理

一般项目中如何加载大图

图片压缩的方式

如何不压缩图片加载高清图

图片加载过程中,一般会使用缓存,这个缓存的主要作用是什么

谈谈自己熟悉的图片加载框架

3项目经验 3.1 开发工具

代码管理工具:SVN、Git

常用的调试工具:Hierarchy Viewer、DDMS等

CI工具:Lint检查,FindBugs、Jenkins

内存分析工具:dumpsys、memoinfo、MAT

3.2 项目工程

APP更新策略:推送或者拉取?

如何统一处理错误崩溃

如何进行用户行为收集

日志管理有哪些要点?(Debug包开放,release包关闭,错误日志反馈)

打包方式Ant、Maven、Gradle

机型适配情况

3.3 开放平台

是否使用过第三方平台

常用开放平台的熟悉度(微信、QQ、微博、支付宝等常用的支付和分享)

是否进行过对第三方平台的统一封装?

是否自己开发过SDK?

3.4 设计相关

有哪些常用的设计模式、设计原则

设计模式在Android源码中的应用

设计模式在项目中的应用

项目中的分包方式

MVC在android中的应用,利弊

android项目中的常见层次结构,包划分

有没有设计过项目中的层级结构、包划分
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: