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

最近面试Android的一些面试题

2016-04-22 15:22 369 查看
最近一个多月面试过一下公司(均为实习):

腾讯:内推一面卒。正式校招拿到offer

阿里:内推二面卒。

蘑菇街:面完三面技术面,等待HR面

网易:拿到offer。

可以看到,大部分问题不难,但是能回答对和回答的好不好又是两个两个不同的情况了。任何问题都尽量回答的越详细,越清晰,越全面,面试官就会越认为你掌握的越好。

比如问一下内存泄露,那么试着多列举一些情况:

首先解释内存泄露是什么。

最常见的handler引用Activity,static+WeakReference解决

耗时线程

bitmap调用recycle,3.0前和后,3.0后偷换native内存

想持久化Drawable,定义成static,老版本他持有view,view持有activity,可能间接造成activity泄露,4.0已修复。

广播记得取消注册

除此之外,如能提到jdk1.6中String的substring方法,那效果更好。



再比如问到性能优化:

从布局优化ViewStub,merge,include

overdraw,GPU选项观察overdraw情况

view的ondraw,尽量别new对象,不能耗时,60fps,16ms,GPU加速

必要情况下使用SurfaceView

避免内存泄露(又回到上一个问题了)

ListView的优化:holder,分页加载,滑动停止后再下载图片等

Bitmap的优化,加载单个bitmap,多个bitmap时的内存硬盘缓存

利用android中的一些数据结构比如ArrayMap和SparseArray

少用枚举,多用static访问快



以下是面试中问到的问题,可能不全,因为隔得时间有些长可能忘记了。

jvm:

内存模型,特点,类信息在哪个区

栈和堆的区别

GC怎么知道一个对象要被回收,

GC Root

强引用,软引用,弱引用,虚引用

类加载过程

在项目中哪里使用过JVM的知识

java:

java基本数据类型

多态是什么,怎么实现的

==和equals

hashcode

HashMap和HashTable区别

HashMap,LinkedHashMap底层实现

HashMap的整过过程,怎么设计一个hash函数散列均匀

并发容器包,ConcurrentHashMap原理

ArrayList和LinkedList区别

虚函数实现

反射,项目中啥时候用过。

wait和sleep的区别

并发同步,synchronized为什么是重量级的方式

votile关键字的特点

线程和线程池,线程池的实现的原理

两个线程依次打印一串数字

NIO,原理,裸写NIO的难点在哪

unix的I/O模型

数据结构算法

堆得实现,数组保存二叉树

堆排序

快速排序

数组找重复数字,位置

讲一下常见排序算法的思想和复杂度

android:

activity生命周期,每个函数调用发生在什么情况下

Fragment生命周期,开发中需要注意什么问题

android中几种上下文的区别

bitmap优化,复用,偷换native内存,BitmapFrctory.option几个参数

缓存策略,LruCache和DiskLruCache原理,加上软引用,缓存框架的构架大概是什么样子。

网络请求缓存

handler机制

handler一般用来干什么?还有在哪些地方看到使用handler

HandlerThread

Service和IntentService

启动服务的方式,有没有使用过bindService

view绘制过程

事件分发过程

使用过Canvas没

ListView优化

做过什么自定义控件,需要注意什么问题

View的onDraw方法扯到SurfaceView

ANR怎么避免

OOM怎么避免

Binder底层实现,框架

ViewRoot源码,这个类的主要功能

内存泄露

怎么检测内存泄露

性能优化

动态加载了解不

activity启动过程

/data/app/的文件夹和文件的权限(很犀利的面试官问的,项目中用到最重要的一点,不愧10年工作经验)

Android是怎么学的

强行装逼时刻:想办法扯到Binder的源码,动态加载,插件框架:360的DroidPlugin和百度的DynamicLoad原理,activity启动流程,跨进程回调上面来,以及一些开源库,基本上讲完动态加载的框架就是和面试官聊天了。

设计模式:

知道哪些设计模式,平时怎么用的?

口头念出一个单例每行怎么写,多线程问题

外观模式

http:

(每次http的问题我回答不出来我就告诉面试官,http这些我只知道简单的,没有深入研究,android的可以随便问,然后就不问http的问题了)

304

缓存

tcp/ip:

七层模型

TIME_WAIT

流量控制,拥塞控制

http头里面的host有什么用url里面都有了为什么在头字段要有

操作系统:

进程与线程

操作系统看了那些内容

进程间通信的方式

死锁,怎么避免,平时遇到没

项目:

每讲一个点的时候都会问我为什么这么设计,你从哪里学到的?在哪里看到这么做的?

遇到了什么问题,怎么解决的?是怎么发现问题的?log,单步调试

项目的架构

有没有为面试做准备,准备了哪些内容。

大概就是这些,有些可能时间太长我也记不太清了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 面试题 面试