美文网首页面试
Android 面试题7

Android 面试题7

作者: 李福来 | 来源:发表于2017-06-29 09:14 被阅读130次

    《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

        本文链接:https://www.haomeiwen.com/subject/abtmcxtx.html