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项目中的常见层次结构,包划分
有没有设计过项目中的层级结构、包划分
整个面试题分为三个部分: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项目中的常见层次结构,包划分
有没有设计过项目中的层级结构、包划分
相关文章推荐
- 面试题48:不能被继承的类
- 《Web全栈工程师的自我修养》读后感
- 面试题47:不用+、-、×、÷做加法
- 面试知识
- 面试题46:求1+2+ …… +n
- 老龄程序员的心声
- 【转】这些编程语言程序员工资最高!Java才第四
- Java工程师面试题
- JAVA常见面试题及解答
- 面试题43,44,45
- Java常用排序算法/程序员必须掌握的8大排序算法
- 【那些年遇到过的面试题】pthread_mutex
- 转:浅谈程序员的英语学习
- 30岁后程序员应该进行怎样的职业转型?
- 国内一线互联网公司内部面试题库
- 怎样评估一个程序员?
- 【那些年遇到过的面试题】pthread_cancel
- Android面试全套
- PHP基础面试题
- 走进码农新时代