-
对MVC和MVP的理解,还有Handler的内存泄漏问题具体是什么,解决方案知道有什么,空数据的时候Handler的阻塞问题,但是我还是没在Looper的源码中找到,这里让我好好再看一下。
-
另外为什么使用MVP,他的优势是什么,内存泄漏是什么样的。
-
http的长连接和短连接这两个概念,怎么去理解。我把它理解为持久化连接是什么,然后对http的3个版本的主要区别做一个介绍
-
http一整个流程,什么Baidu.com输入,经过了什么。比较简单的问题了,必答内容DNS、TCP的三次握手、四次挥手,当然我再答一些IP路由、链路还有物理层的内容
-
RecyclerView的一个复用机制,和ListView的一个区别在哪里
-
HashMap、ConcurrentHashMap、Hashtable的问题,数据结构,线程安全啊之类的问题了,当然还是考了version 1.7和1.8。
-
一个app的启动流程,冷启动和热启动,我说底层我不太了解,只知道会有AMS去调一些东西,但是具体内容不知道,后面就是一些初始化和Activitiy生命周期问题了。
-
一到算法题三值之和求目标值,没写暴力,因为大家都会写,但是浪费了很多时间,刚开始是通过二值求和的方式,但是想做成O(n),其实不太可能,后面改成了O(n^2)
字节跳动 – 抖音部门
字节抖音一面(面试时长50min)
-
接口和抽象的理解
-
进程和线程的理解
-
各种单例创建的理解,以及DCL的同步机制为什么这么做,其他的设计模式知道的,以及应用场景。
-
MVP和MVVM的理解,P层它主要做什么工作,你如何实现的M、V、P三层的通信。
-
Handler的工作流程,Handler能否在子线程初始化以及用什么方案来替代Handler的在子线程初始化。
-
JVM的组成成分,以及你对四大引用的理解
-
四大启动模式的启动方式以及场景分析,如过一个按钮对应页面跳转,如何点多次只进行一次跳转,两种方式回答
-
对http和https的理解
-
Broadcast和LocalBroadcast他的一个区别
-
Static变量他的用处是什么,具体应用场景。
-
一道两个链表的相加问题。思路+伪码实现(这里和阿里不一样,因为是牛客的平台,其实编码体验没有特别好,面试官让我用伪码来实现思路就可以了)
字节抖音二面(面试时长70min)
-
先自我介绍,问项目,老样子的MVP、MVC的理解,Handler中的内存泄漏
-
重点要讲Handler的内存泄漏,为什么会引起内存泄漏?(源码角度分析)解决方案有哪些?(说了三种)
-
为什么我的库中的MVP要基于范型实现,实现思路,还有泛形擦除(主要说了公共逻辑抽离这一块的内容)
-
对View自定义的一个了解
-
基于对网盘的理解,让我分析上传、下载这两块的内容,让我来做,会做什么样的处理,启发内容见下文:
-
关于上传方面:定时上传和立刻上传两方面的分析,针对的是数据量的大小
-
关于下载方面:线程安全(voliate / sync),线程池的使用,参数理解等等,断点重传的问题,应该怎么去进行实现。
-
还有整个的如果Activity突然断了,或者被kill了,如何对数据或者下载的位置进行保存
-
ButterKnife原理实现
-
一道深度遍历和公共节点寻找的题(给出了复杂度极高的方案,面试官给了好的方案,但是问题停留在了公共节点寻找)
字节抖音三面(面试时长70min,有概率通,要等hr)
-
问了项目架构,觉得项目有什么样可以升级的地方
-
泛型擦除,通配符的问题,主要做了extends和super的回答
-
从哪里了解的
objectBox
,和greenDao
相比觉得他有什么样的优点,性能有进行过测试嘛(只看过官方数据),图像加载框架的选用。 -
从内存泄漏问题推倒到jvm的深层次问题,可达性分析的
GC Root
有什么,虚拟机栈和堆的关系,方法是怎么实现的。 -
问我觉得自己的优势是什么,说了我对一些框架的理解
-
对
Kotlin
和Flutter
的一个了解程度的理解,还有为什么学习的一个现实原因,和学习方法。 -
数学题了,类似于斐波那契数列,但是关系式还没推倒出来。
-
用循环的方式去实现一个先序遍历,说的一些方案不用写代码。
以上就是钉钉和抖音的面试经历,如果有什么我没有思考到的地方或是文章内存在错误,欢迎与我分享。
最后
今天分享的面试题就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。
不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊~
最后这里是关于**我自己的Android 学习,面试文档,视频收集大整理**,有兴趣的伙伴们可以看看~
最后
由于文章篇幅原因,我只把面试题列了出来,详细的答案,我整理成了一份PDF文档,这份文档还包括了还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 ,帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!