2019春·Android面试指南

12月份辞职,我的如意算盘是年前面一下定下来,然后休息,年后入职~~美滋滋!约面几家发现现在要求都好高啊,技术深度源码架构级,小红书、猿辅导每一面都有算法,算法不过,就止步了。所以就踏踏实实的准备了,年后回来面了一下,最后拿了三家的offer,在这给大家分享一些经验!我觉得很多同学其实技术都是不错的,就是面试的话术上可能表述的不够清楚有条理,所以可能这个面经更偏重与帮大家总结面试时回答的重点,没有特别具体的答案,如果有哪些问题,搞不清楚答案的,可以留言我会私信解答!

有的面试官可能会很客气,说先问一下基础哈,如果你只答基础,那你就太天真了!一定要有延伸~有深度思考~有拓展~,不要给一个合理但是不出彩的答案,一定要给一个有条理的全面的优秀的答案。

一 、View相关

1.自定义View

合理的答案:自定义一个View,需要考虑构造方法,onMeasure方法,onSizechanged(),onLayout,onDraw。

优秀的答案:Android中有几种自定义View,有继承View的,有继承ViewGroup的,有继承特定View的,有继承特定ViewGroup的,然后每一种我们都需要重写哪些方法,为什么有的要重写measure方法等。

面试官延伸:getMeasureWidth 和 getWidth的区别?view的invalidate和requestLayout区别?

2.View的绘制

合理的答案:onMeasure()+  onLayout() + onDraw() 调用顺序,以及父View和子View各个方法在做什么。

优秀的答案:View的绘制从哪里开始的?(加分点可以不说)+绘制基础+自定义View时需要注意的+自己遇到过的坑/在View的绘制流程中有哪些可以优化的点(或需要注意的点)

面试官延伸:LinearLayout和RelativeLayout 测量的区别,多次测量都在测什么?有weight的时候,怎么测量?

3.触摸反馈

合理的答案:涉及到哪些方法,调用顺序,这个部分只要看过应该都能说出来,就是别说的乱了。

优秀的答案:触摸反馈的过程中涉及到哪些角色,比如Activity 、ViewGroup、View,他们都负责做什么,他们接收到不同的事件都做了哪些处理。区分Down事件和Move /Up事件,分别描述。

面试官延伸:滑动冲突  scrollView里面有一个button,然后按住button向上滑,讲述事件传递过程?按住一个button,然后手指移到别处,click事件还能不能响应?

4.ListView RecyclerView

合理的答案:两者使用上的区别

优秀的答案:使用上的区别+缓存机制的区别(源码)

面试官延伸:如何优化

二、Handler的消息处理机制相关

1、ThreadLocal工作原理

合理的答案:作用域+怎么存 

优秀的答案:在哪些情况下用+java 的和Android的有什么区别(加分点)+优点(如果没有ThreadLocal,我们就要。。。)+具体应用(looper或者其他应用的实例)

面试官延伸:ThreadLocal和使用synchronized有什么区别?

2、Handler工作原理

合理的答案:handler looper message都负责什么,然后handler.sendMessage之后哪些方法被调用了,最后handler怎么收到的消息。一定要讲源码!!!

优秀的答案:handler是负责线程切换的,结合具体调用源码,讲述怎么切换的,先讲UI和非UI,再讲子线程使用handler和主线程有什么区别。

面试官延伸:一个线程能否创建多个Handler,Handler跟Looper之间的对应关系?looper.loop为什么没有阻塞主线程?子线程的looper.loop()之后的语句吗还会被执行吗?handler的postDelayed方法是在哪个线程等待?View的post方法实现原理?

三、多线程相关

1、volatile关键字作用

合理的答案:保证可见性,禁止指令重排

优秀的答案:jvm内存模型+线程安全(原子性、可见性、有序性)+volatile保证了哪个

2、synchronized原理及使用

合理的答案:保证可见性和有序性

优秀的答案:jvm内存模型+线程安全(原子性、可见性、有序性)+synchronized保证了哪个+底层如何实现(monitor)

面试官延伸:类锁和方法锁的区别?与Lock的区别?

3、Android实现多线程的方式

合理的答案:thread 、runnable、线程池等

优秀的答案:以上加上适用的场景+几种线程池的分析

面试官延伸:sleep wait区别 生产者消费者(代码实现)死锁(代码实现)

四、java相关

1、垃圾回收

合理的答案:什么样的东西是垃圾,怎么回收

优秀的答案:jvm内存模型,GC roots  ,垃圾回收算法及怎么选择,Android的Dalvik和ART 在垃圾回收上有什么不同?

面试官延伸:内存泄漏?ooM问题的排查?垃圾回收在哪个线程?

2、类加载器

合理的答案:双亲委托 加载过程

优秀的答案:java有几种类加载器,加载过程,Android 几种类加载器,加载过程,为什么要设计成这种委托模式?JVM在搜索类的时候,又是如何判定两个class是相同的呢?

面试官延伸:插件化、热更新(最好还能扩展除了类加载以外的其他的热更新方式)

3、动态代理 注解 反射

合理的答案:解释概念

优秀的答案:解释概念加上比如动态代理在Retrofit当中的应用 ,自定义注解,反射为什么耗性能

面试官延伸:注解如何实现一个findViewById

4、泛型

合理的答案:解释概念

优秀的答案:为何引入泛型+泛型擦除+泛型边界

面试官延伸:一般会手写代码考你对泛型擦除和边界的理解

5、数据结构(别的不会HashMap也要会的熟练的仿佛是自己写的)

合理的答案:数组+链表

优秀的答案:结构+put元素如何实现+扩容+size()

面试官延伸:ArrayMap和SparseArray的改进?是不是一定比HashMap好?是查找算法好还是结构比hashmap合理?ConcurrentHashMap的原理?(此处坑多,不同的JDK版本结构不一样)

五、优化和设计相关

1、优化相关

合理的答案:网上也很多文章,很多优化点,就怕说不全。

优秀的答案:其实Android的优化涉及的方面比较多,启动优化、内存优化、布局优化、卡顿优化、电量优化、网络优化等,我主要负责过哪部分的优化。。。然后,项目原来。。。优化的目标。。。,我们在线下如何排查问题,用了哪些工具,我们在线上怎么监控,我们怎么保持优化的长期效果等

面试官延伸:这个部分可能会问,你们优化后的具体数值体现?

2、设计相关

这个部分通常都是加分项,可以参照看过的网络框架、图片框架等的结构进行设计。比如一个网络的话,肯定要考虑它的协议层,还有其他负责连接管理和线程管理的基础组件等。

六、开源框架相关

1、网络框架

合理的答案:okhttp retrofit volley如何使用

优秀的答案:源码级别,okhttp(拦截器链的每个拦截器都负责什么+具体应用)retrofit(动态代理+适配器等挖掘里面用的好的编程思想和设计模式)volley我不熟,参考前两个。。。

面试官延伸:如何给某些特定域名的url增加header?https?

2、图片框架

合理的答案:对比Glide 和 Picasso 和Fresco,下载图片的方式,缓存机制,加载到内存的机制都有什么不同。

优秀的答案:以上+深入一个框架的源码,进行分析,比如Fresco的MVC、Drawable层次及绘制,内存缓存、硬盘缓存、职责链模式、对象池、自定义计数引用等

面试官延伸:如果你设计一个图片库?


以上是我在面试过程中出现率比较高的部分,如果大家有遇到过比较好的面试题,可以留言,我在整理补充在后面,先这样,希望大家都能在面试中真正发挥出自己的真正水平~~~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容

  • 所有知识点已整理成app app下载地址 J2EE 部分: 1.Switch能否用string做参数? 在 Jav...
    侯蛋蛋_阅读 2,434评论 1 4
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,101评论 1 32
  • 基础 不管是Android基础还是Java基础以及常见的数据结构,这些是无原则地必须要熟练掌握的,尤其是非计算机专...
    JxMY阅读 2,790评论 2 48
  • 在一个方法内部定义的变量都存储在栈中,当这个函数运行结束后,其对应的栈就会被回收,此时,在其方法体中定义的变量将不...
    Y了个J阅读 4,418评论 1 14
  • 我从十六岁开始拍电影,在我的思维里没有主、配角之分,在我的本子上我从来都是中心! 希望在每一个年龄段都有闪光的、别...
    爱丽丝潼潼阅读 65评论 0 0