Android 面试题7

《Android开发艺术探索》

《Android群英传》

《深入理解Java虚拟机》

《剑指offer》

刷题,主要是LeetCode

牛课网

Android客户端面试题集锦

Android阿里面试题锦集

Android一些优化方案
什么是过渡绘制,如何防止过渡绘制
事件分发机制
ListView的优化
Binder机制
在多进程中,Application会启动几次
单例模式,双锁原理,volatile原理,静态内部类实现单例的原理。
Java多线程,synchronized
聊项目,都具体做了什么。
Binder机制
问了关于数据库的一些问题,SQLite的相关操作,没办法,我在华为唯一一个做的和java相关的项目,但是不太擅长数据库。
网络相关的问题,网络的五层模型,又问了TCP和UDP,还有Android相关的长连接,这里问的比较深。
开始Android先关的知识,Handler机制,Acticity的生命周期以及四种启动模式,各自特点,Service的两种启动模式生命周期,如果同时使用两种启动

volley的源代码,在图片缓存部分讨论了挺长时间,http中缓存机制,Last-Modify的作用等。
fragment的生命周期
service一些知识
事件分发机制
Binder实现机制,Stub类中asInterface函数作用,BnBinder和BpBinder区别。
gradle中buildToolsVersion和TargetSdkVersion的区别是什么
手机适配一些方案
hashmap的实现原理
静态方法是否能被重写

3次握手和4次挥手的原因,以及为什么需要这样做。
数据结构,搜索二叉树的一些特性,平衡二叉树。
hashmap是如何解决hash冲突的
进程与线程区别
写了一个二分查找和单例模式
http中的同步和异步
聊了一些项目上做的东西,问了问职业规划

Android是如何进行资源管理的。
java比较重要的几个特性
网络五层结构,每一层协议,由于我网络不是很好,还问了一些其他的问题(例如MAC地址和ip地址的区别等)。

OpenGL、GLSurfaceView和Shader,主要聊了OpenGL绘制方法,还有一些Binder相关知识,

单例,快排,回型打印二维数组
写一个死锁,死锁是怎样产生的,怎样防止死锁
Acticity启动模式有几种,分别代表什么意思
聊项目都做了些什么

字符串反转,讨论复杂度。

给定一个int型 n,输出1~n的字符串例如 n = 4 输出“1 2 3 4”
输出所有的笛卡尔积组合
单例模式
最长上升子序列

对刚才做的题,一些错的地方做了讨论,主要是类的加载和内部类方面的知识,尤其一些深入到JVM层的知识的确自己有一些不足,不过大部分都还是能答出来。
双亲委托机制,类的五个加载过程。
java类加载器的加载流程。
Binder机制,从java到framework再到kenral层,面试官问的都很详细,遇到不会的也都会跟我解释。
Serializable和Parcelable的区别。
View的绘制流程,详细到framework代码,讨论到不确定的地方,立马打开电脑和我一起看源码。
事件分发机制。
常用设计模式,使用静态内部类实现单例的原理是什么。
线程同步,CopyOnWriteArrayList怎样实现。
Volley源码,EventBus源码。

GLSufaceView,OpengGL,Shader相关一些知识,在项目中做的优化
gc是根据什么来回收一个对象的,引用计数和gc root分别怎么实现。
怎样会产生内存泄露,举一个具体的例子,使用什么检查内存泄露
自定义View的绘制流程
给出二叉树和一个值,找出所有和为这个值的路径;{1,3}{3,6}{3,4}{6,8}区间去重,最少去掉几个集 合,可以让这个集合没有交集。

什么是ANR,Activity、BroadcastReceiver、Service对ANR时间限制分别是多少,怎么处理ANR,除了系统生成trace.txt文件,怎么在程序中检测ANR。写出伪代码。
编解码一些知识,I帧,B帧,P帧区别。
Android一些优化方案。
算法 n/m,怎么判断得数是无限循环小数。

事件分发机制。
算法,将一个字符串转换成int型数字,考虑 错误输入,溢出,正负值等一些条件,考细心。
给出一个搜索二叉树,输出一个排序好的双向链表。

类的加载过程,Person person = new Person();为例进行说明。
JVM相关知识,GC机制。
类的加载器,双亲机制,Android的类加载器。
Android中进程的级别,以及各自的区别。
插件化原理。
集合框架,list,map,set都有哪些具体的实现类,区别都是什么。
concurrentHashmap原理,原子类。
volatile原理。
Binder机制。
View的绘制流程,事件传递机制,Handler异步消息机制。
Interger中的128(-128~127),这里考的是常量池的概念,这个没回答上来。
线程池的相关知识。
Handler机制,HandlerThread实现等等。
LRUCache算法是怎样实现的。

说了说项目中相关的知识。
聊了聊之前做过的项目。
内存泄露,怎样查找,怎么产生的内存泄露。
怎样计算一张图片的大小,加载bitmap过程(怎样保证不产生内存溢出),二级缓存,LRUCache算法。
简单介绍一下java中的泛型,泛型擦除以及相关的概念。
Android优化相关的只是,布局优化、内存优化等等。
SQL相关的知识优化的方案,这里我直接说不太了解,就过了。
算法题,m * n的矩阵,能形成几个正方形(2 * 2能形成1个正方形,2 * 3 2个,3 * 3 6个)

项目相关。
Android优化.。
插件化相关技术,热修补技术是怎样实现的,和插件化有什么区别。

询问了我博客上写的一些东西,从项目立意谈起,到设计,再到详细的技术实现,可谓是面面俱到,由于自己写的博客还是比较熟悉,回答的还不错。
GLSurfaceView的相关知识,OpenGL,Shader,绘制流程。
询问当前做的项目,以及到具体的实现和优化。
多进程间的通讯,Binder机制。
询问看过哪些框架源码,EventBus,Volley讲了一下。

广度:比较新的技术(Rxjava,插件化等),JVM,GC,网络,数据库,Android(一般不会询问之前面试官问过的问题)。
深度:一般会通过1或2个问题来考察,例如:map接口下都有什么子类->hashmap和hashtable区别->hashmap实现原理->怎么解决hash冲突->是否了解concurrentHashmap->concurrentHashmap实现原理->volatile实现原理(concurrentHashmap读是不加锁的,使用到了volatile)。

你可能感兴趣的:(Android 面试题7)