Android面试:2022金三银四面试大厂请收好这份阿里钉钉和字节抖音的面经!

308 阅读9分钟

开头

在一般的互联网公司的技术人员的面试中,大概会经历3到4轮的面试,差不多2-3轮的技术面,还有1轮的HR面试,有人面试题是有关“目标”,有的关于“方法”,有的关于“算法”,有的关于“基础”。在小编看来,面试是找工作的第一道难关,原本以为面试都会问很难的问题,如果是更好的公司,可能问的问题越难。

image.png

阿里巴巴钉钉部门远程面试(技术面部分)

一面

  • 先自我介绍一下自己
  • 讲一下currenthashmap的实现原理,插入时怎么保证的线程安全?更新时怎么保证的线程安全?什么时候加锁?
  • 谈谈对代理的理解
  • 动态代理是什么?静态代理是什么?说一下两者的区别
  • 动态代理的实现方式,他们有什么区别吗?
  • JVM常用命令行调优工具
  • Redis缓存击穿和缓存雪崩
  • HashMap容量大了再扩容,比较耗时怎么办?
  • 知道哪些排序?快速排序的原理?
  • 你觉得你在开发的项目过程中,哪个项目是有亮点的?说一下亮点在哪?有没有遇到什么困难?怎么解决的?
  • 谈谈你对阿里巴巴的认识?你对钉钉了解多少?为什么选择钉钉?

二面

  • 聊了一会项目,很浅
  • 讲一下currenthashmap和hashtable的区别
  • 讲JVM回收算法,优缺点
  • 数据库事务隔离级别以及会产生的问题?
  • 数据库b+树索引建立过程
  • redis介绍
  • redis路由选择了解过吗?
  • Spring的了解,IOC,AOP原理。
  • AOP的底层实现,动态代理是如何动态,假如有100个对象,如何动态的为这100个对象代理?
  • Java有哪些锁?乐观锁 悲观锁 synchronized 可重入锁 读写锁,用过reentrantlock吗?reentrantlock与- synmchronized的区别
  • Mysql是如何实现事务的?
  • 读写分离何时强制要读主库,读哪个从库是通过什么方式决定的,从库的同步mysql用的什么方式?

三面

  • 介绍你做的项目和其中的难点?
  • 反射的作用是什么?
  • 数据仓库,多线程和并发工具等?
  • 私有云,docker和k8s等?
  • 了解哪些中间件,Dubbo,RocketMQ,Mycat等?
  • Dubbo中的 rpc如何实现?
  • 自己实现 rpc应该怎么做?
  • Dubbo的服务注册与发现?
  • 排序算法

image.png

字节跳动 -- 抖音部门

字节抖音一面(面试时长50min)

  1. 接口和抽象的理解

  2. 进程和线程的理解

  3. 各种单例创建的理解,以及DCL的同步机制为什么这么做,其他的设计模式知道的,以及应用场景。

  4. MVP和MVVM的理解,P层它主要做什么工作,你如何实现的M、V、P三层的通信。

  5. Handler的工作流程,Handler能否在子线程初始化以及用什么方案来替代Handler的在子线程初始化。

  6. JVM的组成成分,以及你对四大引用的理解

  7. 四大启动模式的启动方式以及场景分析,如过一个按钮对应页面跳转,如何点多次只进行一次跳转,两种方式回答

  8. 对http和https的理解

  9. Broadcast和LocalBroadcast他的一个区别

  10. Static变量他的用处是什么,具体应用场景。

  11. 一道两个链表的相加问题。思路+伪码实现(这里和阿里不一样,因为是牛客的平台,其实编码体验没有特别好,面试官让我用伪码来实现思路就可以了)

字节抖音二面(面试时长70min)

  1. 先自我介绍,问项目,老样子的MVP、MVC的理解,Handler中的内存泄漏

  2. 重点要讲Handler的内存泄漏,为什么会引起内存泄漏?(源码角度分析)解决方案有哪些?(说了三种)

  3. 为什么我的库中的MVP要基于范型实现,实现思路,还有泛形擦除(主要说了公共逻辑抽离这一块的内容)

  4. 对View自定义的一个了解

  5. 基于对网盘的理解,让我分析上传、下载这两块的内容,让我来做,会做什么样的处理,启发内容见下文:

  6. 关于上传方面:定时上传和立刻上传两方面的分析,针对的是数据量的大小

  7. 关于下载方面:线程安全(voliate / sync),线程池的使用,参数理解等等,断点重传的问题,应该怎么去进行实现。

  8. 还有整个的如果Activity突然断了,或者被kill了,如何对数据或者下载的位置进行保存

  9. ButterKnife原理实现

  10. 一道深度遍历和公共节点寻找的题(给出了复杂度极高的方案,面试官给了好的方案,但是问题停留在了公共节点寻找)

字节抖音三面(面试时长70min,有概率通,要等hr)

  1. 问了项目架构,觉得项目有什么样可以升级的地方

  2. 泛型擦除,通配符的问题,主要做了extends和super的回答

  3. 从哪里了解的objectBox,和greenDao相比觉得他有什么样的优点,性能有进行过测试嘛(只看过官方数据),图像加载框架的选用。

  4. 从内存泄漏问题推倒到jvm的深层次问题,可达性分析的GC Root有什么,虚拟机栈和堆的关系,方法是怎么实现的。

学习宝典

对我们Android开发者来说,一定要打好基础,随时准备战斗。不论寒冬是否到来,都要把自己的技术做精做深。虽然目前移动端的招聘量确实变少了,但中高端的职位还是很多的,这说明行业只是变得成熟规范起来了。竞争越激烈,产品质量与留存就变得更加重要,我们进入了技术赋能业务的时代。

不论遇到什么困难,都不应该成为我们放弃的理由!

很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我针对Android程序员,我这边给大家整理了一套学习宝典!包括不限于高级UI、性能优化、移动架构师、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!

【Android八大模块进阶指南】

这份笔记一共8大模块、729个知识点,3382页,66万字,可以说覆盖了当下Android开发最前沿的技术点以及阿里、腾讯、字节跳动这些大厂面试时最看重的技术。笔记都是根据高级工程师知识体系来整理的,需要的朋友点击这里免费领取,保证免费分享!

image.png

相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。

一、架构师筑基必备技能

1、深入理解Java泛型 2、注解深入浅出 3、并发编程 4、数据传输与序列化 5、Java虚拟机原理 6、高效IO ……

image.png

二、Android百大框架源码解析

1.Retrofit 2.0源码解析 2.Okhttp3源码解析 3.ButterKnife源码解析 4.MPAndroidChart 源码解析 5.Glide源码解析 6.Leakcanary 源码解析 7.Universal-lmage-Loader源码解析 8.EventBus 3.0源码解析 9.zxing源码分析 10.Picasso源码解析 11.LottieAndroid使用详解及源码解析 12.Fresco 源码分析——图片加载流程 …

image.png

三、Android性能优化实战解析

腾讯Bugly:对字符串匹配算法的一点理解 爱奇艺:安卓APP崩溃捕获方案——xCrash 字节跳动:深入理解Gradle框架之一:Plugin, Extension, buildSrc 百度APP技术:Android H5首屏优化实践 支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」 携程:从智行 Android 项目看组件化架构实践 网易新闻构建优化:如何让你的构建速度“势如闪电”? …

image.png

四、高级kotlin强化实战

1、Kotlin入门教程 2、Kotlin 实战避坑指南 3、项目实战《Kotlin Jetpack 实战》

  • 从一个膜拜大神的 Demo 开始

  • Kotlin 写 Gradle 脚本是一种什么体验?

  • Kotlin 编程的三重境界

  • Kotlin 高阶函数

  • Kotlin 泛型

  • Kotlin 扩展

  • Kotlin 委托

  • 协程“不为人知”的调试技巧

image.png

五、Android高级UI开源框架进阶解密

1.SmartRefreshLayout的使用 2.Android之PullToRefresh控件源码解析 3.Android-PullToRefresh下拉刷新库基本用法 4.LoadSir-高效易用的加载反馈页管理框架 5.Android通用LoadingView加载框架详解 6.MPAndroidChart实现LineChart(折线图) 7.hellocharts-android使用指南 8.SmartTable使用指南 9.开源项目android-uitableview介绍 10.ExcelPanel 使用指南 11.Android开源项目SlidingMenu深切解析 12.MaterialDrawer使用指南

image.png

六、NDK模块开发

1、NDK 模块开发 2、JNI 模块 3、Native 开发工具 4、Linux 编程 5、底层图片处理 6、音视频开发 7、机器学习

image.png

七、Flutter技术进阶

1、Flutter跨平台开发概述 2、Windows中Flutter开发环境搭建 3、编写你的第一个Flutter APP 4、Flutter开发环境搭建和调试 5、Dart语法篇之基础语法(一) 6、Dart语法篇之集合的使用与源码解析(二) 7、Dart语法篇之集合操作符函数与源码分析(三) …

image.png

八、微信小程序开发

1、小程序概述及入门 2、小程序UI开发 3、API操作 4、购物商场项目实战……

image.png

篇幅有限,需要《Android开发八大模块进阶指南》的小伙伴点击这里免费领取!保证免费分享!

【1599页Android面试宝典】

image.png

需要【1599页Android面试宝典】的小伙伴点击这里免费领取!保证免费分享!