今天分享下钉钉远程面试经历的一个分享和一些心得,但愿对你们可以有所帮助。面试
阿里巴巴 -- 钉钉部门
阿里钉钉一面(面试时长80min)算法
自我介绍,对本身项目的介绍,架构图呈现
由于说本身之后的发展方向是音视频,因此问了我用过哪些现有框架
项目中的一些优化问题,MVC -> MVP,Handler的内存泄漏状况分析等,对MVP和MVVM的理解。
项目中的第三方库选择的问题,由于简历中写了我对第三方库选择的问题,好比选ObjectBox和greenDao的问题,图片加载框架问题
HashMap和HashTable,引伸ConCurrentHashmap的深刻,version1.7和1,8的区别,以及高并发下HashMap发生的问题
四大启动模式,以及场景对应
Handler的机制介绍,不存在消息时的IdleHandler的运做机制,为何不能在子线程初始化问题
设计模式中的单例介绍,使用场景(Okhttp的Seesion存储等等),在线编写
快排算法
OkHttp的源码分析,及总体架构的流程图绘制
四大组件的完整介绍,及深刻,答了IntentService、LocalBroadcast
四大引用的问题和MVP框架相结合进行回答
网络中的响应码对大致进行回答,具体回答了200、40四、500、304等
View绘制流程问题,如何不使用xml,来实现中间位置的定位
事件分发机制流程讲解,以及如何实现单击事件和长按事件的断定
关于为何选用mqtt协议的问题,优点,原理等等(没答上来,只说针对性作过测压,以及oceanlink和mqtt的对比)
阿里钉钉二面(面试时长30min)设计模式
自我介绍,优缺点的,以及将来但愿的发展方向
目总体介绍,如何作到分压啊之类的问题
若是给我阿里、腾讯、头条、谷歌的offer的一个选择(不掺杂地域性的问题),首先直接否认了google我就的一个企业的商业模式进行分析。
我对钉钉这个产品的理解,个人回答是就的是钉钉前身的对标项目微信,已经后期转型的商业模式做出的分析,最后给出的个人结论是一个企业性质的办公软件
给出了钉钉一个mac平台的关于共享屏幕的耗CPU的问题
让我提问,提的是关于音视频发展方向的问题,具体是一个发展空间。
阿里钉钉三面(面试时长60min,有几率通,要等hr)安全
自我介绍呗,仍是同样,项目介绍,项目的优缺点对比
对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机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工做当中你压根不会用到它,可是你要知道它是什么东西。并发
无论怎么样,不管是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题作好全面的准备,固然除了这个还须要在平时把本身的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊~app
最后这里是关于我本身的Android 学习,面试文档,视频收集大整理,有兴趣的伙伴们能够看看~