乐趣区

关于android:阿里腾讯百度网易美团Android面试经验分享拿到了百度腾讯offer

根本状况

2021 届普通本科,Android 开发岗。

此文次要是 2020 年秋招面试教训汇总,最终拿到了百度、腾讯的 offer。

次要包含阿里三面,腾讯四面,百度三面,网易三面,美团一局面完。

阿里 (由师姐内推,2 面后挂)

阿里技术一面 -35min

自我介绍

Android

  • 有没有遇到 OOM 问题 (有遇到内存透露问题)
  • Handler 机制
  • ThreadLocal
  • Activity 启动到加载 View 过程
  • View 绘制过程
  • LinearLayout (wrap_content) & TextView (match_parent) 最终后果???
  • OKHttp(1\. 为什么抉择它?2\. 性能理解不?3\. 外部有哪些设计模式)
  • 理解 EventBus 嘛?

设计模式

  • 用过哪些设计模式
  • 观察者举例

网络

  • HTTP & HTTPS 区别

其余

  • 为什么抉择飞猪
  • 业余问题
  • 加入的较量

阿里技术二面 -1h 挂

自我介绍

我的项目

  • 为什么抉择 OKHTTP 框架
  • 加载图片框架?(学一下 Glide)
  • JSON 解析框架?(学一下 Gson,FastJson)
  • 技术选型?
  • 页面个数?
  • OSS 上传凭证怎么设计缓存?怎么加密?(加密算法??)
  • 还有哪些项目能够说的?

Android

  • Activity 生命周期?启动通明 Activity 生命周期?按 Home 键生命周期?
  • 后盾杀死 APP 后怎么复原数据?
  • 一个 APP 能够多过程嘛?
  • ListView 和 RecyclerView 区别?
  • RecyclerView 卡顿怎么排查?
  • RecyclerView 怎么实现多 Type?
  • RecyclerView 的 ItemView 层级过深怎么优化?
  • Android 多过程?
  • 怎么设计 Android 线程间通信?
  • Handler 机制?子线程能够用 Handler 吗?
  • ANR?

Java

  • private protected public 关键字的用法区别!!!
  • 接口,抽象类区别?抽象类要不要实现接口的办法???
  • Map 的线程平安?读多写少选哪个汇合?(CopyOnWrite,不懂原理没敢说)

网络

  • HTTP/HTTPS 区别
  • TCP 理解么?握手与挥手过程?
  • 长连贯?
  • push 怎么实现?

腾讯

提前批一面 -35min

我的项目介绍

  • 实现的性能,基于 OKHTTP 实现网络申请

HTTP(s)

  • 介绍下 HTTP 协定
  • HTTPS 公钥裸露怎么办
  • HTTP 分段上传文件怎么保障正确
  • HTTP 缓存

Java

  • 过程 线程区别
  • 子线程间通信
  • 解决死锁的方法,怎么判断产生死锁

算法题

  • 奇数偶数数组,从新排序保障程序不变,奇数在前偶数在后
  • 2 数 / 3 数之和

提前批二面 -30min- 挂

自我介绍

我的项目介绍

  • 我的项目梳理
  • 图片压缩算法?聊聊对于 Android 图片压缩那点事儿
  • Bitmap JPG 区别 图像处理:JPG、PNG 及 BMP 的区别?
  • 断点重传?怎么动静确定范畴?Android 实现断点上传文件
  • 断点下载?CRC 原理 文件校验 MD5、SHA1、CRC32、sha256、cksum

设计模式

  • MVC 长处毛病
  • MVP 中的 MVC 的 C 实现在哪
  • 单例模式的饿汉与懒汉的抉择,应用场景 Java 单例模式的不同写法(懒汉式、饿汉式、双检锁、动态外部类、枚举)

HTTPS 加密形式

腾讯正式批测开一面 -25min

  • Crash
  • ANR 怎么解决
  • 设计世界杯 32 强对战数据结构
  • 2 个球 100 楼找那一层摔下来会坏
  • 测开具体工作

腾讯正式批测开二面 -1h

我的项目

  • 聊细节

Android

  • 图片,语音大内存数据的性能排查,定位?
  • Handler 内存透露问题
  • ART Dalvik 区别?
  • GC 机制?
  • CountDownLatch 原理?

算法题

  • 不应用 for 查找数组最大值?

闲聊

  • 自我劣势

百度

百度一面 -1h

自我介绍

我的项目介绍

  • 编码标准有用吗?

Android

  • Android 四大组件安全性
  • Activity 启动模式
  • IntentFilter 匹配规定,action 和 category 区别?
  • Handler 阻塞为什么不卡死?
  • 点击事件散发机制,onTouchEvent 返回 false? dispatchTouchEvent 返回 false?
  • Looper
  • 对象池,手写对象池实现
  • ContentProvider 原理
  • sp 反对跨过程么?怎么解决跨过程,怎么实现进程同步
  • 帧动画实现: 100 张图,200ms 显示一张,读取一张图要 400ms,怎么解决防止卡顿 (多线程读)
  • Bitmap 内存复用限度条件
  • 线程工夫片调配原理

百度二面 -45min

我的项目

  • 梳理我的项目
  • 难点
  • 技术框架

算法题

  • 手写二分法
  • 电梯状态机设计

优缺点

  • 长处
  • 毛病
  • 业余

百度三面 -45min

技术

  • 最长公共子串
  • 类加载机制
  • okhttp 原理
  • 热修复原理

其余闲聊

  • 长处毛病
  • 大学遗憾
  • 组织哪些流动
  • 长期保持的事件
  • 业余去向

网易

网易技术一面 -1h

自我介绍

我的项目介绍

  • 华为解 bug 印象最深的

Android

  • TouchEvent 传递过程?onTouchEvent 返回 flase 怎么办?
  • 怎么设计缓存
  • Android 数据长久化
  • 数据库怎么批处理(原理)
  • SP 支不反对多线程?SP 怎么实现多线程
  • View 绘制过程
  • Handler 音讯机制

Java

  • B 线程怎么实现期待 A 线程实现工作
  • 线程怎么完结工作 Java 完结线程的三种办法
  • Java 哪些办法反对中断
  • 设计一个无限资源的申请
  • 怎么设计对象池(对象的存与放回)
  • 线程池的线程什么时候创立
  • Java 中的锁
  • 可重入锁性能

口试题

  • 两个数组替换一个值,让和相等,找到这两个值

网易技术二面 -1h

自我介绍

华为实习

  • 参加的我的项目
  • 解的 bug
  • 参加的编程标准说一下
  • Lint 工具?

设计模式

  • 单例模式
  • volatile 关键字原子性

Android

  • 过程间通信形式(与 linux 过程间通信区别)
  • Socket 怎么验证安全性
  • 播送(全局 本地区别)
  • 怎么实现文件的多过程通信(A 过程改了文件怎么告诉 B 过程读取)
  • 二级缓存怎么设计(网络 数据库 view 间关系)

View

  • Activivty 生命周期
  • onSaveInstanceState onRestoreInstanceState 区别,调用机会
  • 播送注册应该在 Activity 哪个生命周期里
  • 怎么统计 onCreate 的次数
  • Fragment 与 Activity 区别
  • Fragment 生命周期治理
  • Fragment 与 ViewPager 怎么做到反复加载
  • View 绘制过程 MeasureSpec 的三种模式
  • Framelayout LinearLayout ReativeLayout 怎么做到 View 在右下
  • margin padding 区别
  • gone invisible 的区别
  • requestLayout、invalidate 与 postInvalidate 区别
  • Android 动画 怎么勾销循环动画 repeat 模式
  • drawable 与 view 区别 有哪些 drawable

网易技术三面 -50min

自我介绍

我的项目介绍不用说太细

Android

  • 图片传输过程中 URL 加上默认大小如果是 wrap_content 怎么办
  • 图片相干缓寸,编码,内存复用
  • svg (其余图片格式)
  • drawable mutate 理解不
  • okhttp 桥接拦截器和缓存拦截器
  • 设计自定义 DNS 解析器
  • 打点零碎设计: 写文件过程中会有 buffer,此时过程被杀怎么办,怎么设计日志零碎 打点日志被用户篡改怎么办,保障日志安全性
  • 磁盘内存映射原理
  • 有没有看过开源打点框架
  • 平时开发有没有遇到过资源复用
  • 最近理解啥 Android 新动向不
  • 本人学习打算

美团现场一天面完

自我介绍

我的项目

  • 实习我的项目
  • 我的项目最难点
  • 技术抉择
  • OSS STS 凭证设计
  • Lint 工具是编译期的嘛?原理?

场景题

  • 美团首页设计?
  • RecyclerView 多 Item 的难点?

设计模式

  • MVP MVVM 应用场景

HR

  • 有什么 offer 当初?
  • 抉择 offer 根据?
  • 上海破费高?
  • 怎么解决沟通问题?

倡议

  • 多看源码,包含 Java 层的代码在 JVM 中的实现源码:如 synchronized 的实现源码,Android Framework 的源码更好意识 Android 层的实现,Android 开源库源码 (OKHttp,Retrofit,RxJava,EventBus,Glide,Gson…,更好的学习优良开源库源码,做到用的熟,懂原理)
  • 多问本人为什么,比方两个技术点优缺点别离在哪,各自的应用场景 (如单例模式下饿汉与懒汉的优缺点,应用场景),这样能力更符合理论利用开发,针对不同场景应用不同技术点
  • 及时复盘总结面试中遇到的问题,分为两方面,一是晓得但不能深刻的,这种须要持续多看多总结,另一种是没接触过的,这种能够先理解下,万一面试又遇到了,能够答复下理解到的,之后再去深刻总结 (毕竟工夫无限,不可能八面玲珑,只能一直学习总结)

最初

本人如果有想要去的大公司,肯定要晋升好本人,让本人的能力和素质与公司匹配的上,我也始终置信,机会永远是留给有筹备的人。

在秋招面试前我也筹备了很久,刷了很多大厂面试题,知识点整理出来分享给大家,算是一个感恩回馈吧:

Java 相干

1. 容器(HashMap、HashSet、LinkedList、ArrayList、数组等)

2. 内存模型

3. 垃圾回收算法(JVM)

4. 垃圾回收机制和调用 System.gc() 的区别?

5. 类加载过程(须要多看看,重在了解,对于热修复和插件化比拟重要)

6. 反射

7. 多线程和线程池

8. 设计模式(六大根本准则、我的项目中罕用的设计模式、手写单例等)

9.Java 四大援用

10.Java 的泛型

11.final、finally、finalize 的区别

12. 接口、抽象类的区别

如有须要全套面试题 + 解析,间接划到文末收费支付哦~

Android 相干

1. 自定义 View

2. 事件拦挡散发

3. 解决过的一些性能问题,在我的项目中的理论使用

4. 性能优化工具

5. 性能优化(讲讲你本人我的项目中做过的性能优化)

6.Http[s] 申请慢的解决办法(DNS、携带数据、间接拜访 IP)

7. 缓存本人如何实现(LRUCache 原理)

8. 图形图像相干:OpenGL ES 管线流程、EGL 的意识、Shader 相干

9.SurfaceView、TextureView、GLSurfaceView 区别及应用场景

10. 动画、差值器、估值器(Android 中的 View 动画和属性动画 – 简书、Android 动画 介绍与应用)

11.MVC、MVP、MVVM

12.Handler、ThreadLocal、AsyncTask、IntentService 原理及利用

13.Gradle(Groovy 语法、Gradle 插件开发根底)

14. 热修复、插件化

15. 组件化架构思路

16. 零碎打包流程

17.Android 有哪些存储数据的形式。

18.SharedPrefrence 源码和问题点;

20.sqlite 相干

21. 如何判断一个 APP 在前台还是后盾?

22.AMS、PMS

23.Activity 启动流程,App 启动流程

24.Binder 机制(IPC、AIDL 的应用)

25. 为什么应用 Parcelable,益处是什么?

26.Android 图像显示相干流程,Vsync 信号等

如有须要全套面试题 + 解析,间接划到文末收费支付哦~

源码了解

Glide:加载、缓存、LRU 算法 (如何本人设计一个大图加载框架)(LRUCache 原理)

EventBus

LeakCanary

ARouter

插件化(不同插件化机制原理与流派,优缺点。局限性)

热修复

RXJava(RxJava 的线程切换原理)

Retrofit(Retrofit 在 OkHttp 上做了哪些封装?动静代理和动态代理的区别,是怎么实现的)

OkHttp

算法与数据结构

  1. 工夫复杂度 / 空间复杂度
  2. 罕用的排序算法有哪些?
  3. 字符串反转
  4. 链表反转(头插法)
  5. 如何查找第一个只呈现一次的字符(Hash 查找)
  6. 如何查找两个子视图的独特父视图?
  7. 无序数组中的中位数 (快排思维)
  8. 如何给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
  9. 二叉树前序、中序、后序遍历
  10. 最大 K 问题
  11. 广度、深度优先搜索算法
  12. String 转 int。外围算法就三行代码,不过临界条件很多,除了判空,还须要留神正数、Integer 的最大最小值边界等;
  13. 如何判断一个单链表有环?
  14. 100 亿个单词,找出呈现频率最高的单词。要求几种计划;
  15. 链表每 k 位逆序;
  16. 镜像二叉树;
  17. 找出一个无序数组中呈现超过一半次数的数字;
  18. 计算二叉树的最大深度,要求非递归算法。
  19. String 形式计算加法。

网络

1. 网络框架比照和源码剖析

  1. 网络七层协定有哪些?
  2. Http 和 Https 的区别?Https 为什么更加平安?
  3. HTTPS 的连贯建设流程
  4. 解释一下 三次握手 和 四次挥手
  5. TCP 和 UDP 的区别
  6. Cookie 和 Session
  7. DNS 是什么?
  8. DNS 解析过程

10.HTTP 报文构造

11.HTTP 与 HTTPS 的区别以及如何实现安全性

12. 如何验证证书的合法性?

13.https 中哪里用了对称加密,哪里用了非对称加密,对加密算法(如 RSA)等是否有理解?

14.client 如何确定本人发送的音讯被 server 收到?

15. 谈谈你对 WebSocket 的了解

16.WebSocket 与 socket 的区别

17. 谈谈你对安卓签名的了解。

18. 请解释安卓为啥要加签名机制?

19. 视频加密传输

20.App 是如何沙箱化,为什么要这么做?

21. 权限管理系统(底层的权限是如何进行 grant 的)?

如有须要全套面试题 + 解析,间接划到文末收费支付哦~

Kotlin 相干

1. 从原理剖析 Kotlin 的提早初始化: lateinit var 和 by lazy

2. 应用 Kotlin Reified 让泛型更简略平安

3.Kotlin 里的 Extension Functions 实现原理剖析

4.Kotlin 系列之顶层函数和属性

5.Kotlin 兼容 Java 遇到的最大的“坑”

6.Kotlin 的协程使劲瞥一眼

7.Kotlin 协程「挂起」的实质

8. 到底什么是「非阻塞式」挂起?协程真的更轻量级吗?

9. 资源混同是如何影响到 Kotlin 协程的

10.Kotlin Coroutines(协程) 齐全解析

11. 破解 Kotlin 协程

Flutter 相干

  1. Dart 当中的「..」示意什么意思?
  2. Dart 的作用域
  3. Dart 是不是单线程模型?是如何运行的?
  4. Dart 是如何实现多任务并行的?
  5. 说一下 Dart 异步编程中的 Future 关键字?
  6. 说一下 Dart 异步编程中的 Stream 数据流?
  7. Stream 有哪两种订阅模式?别离是怎么调用的?
  8. await for 如何应用?
  9. 说一下 mixin 机制?
  10. 请简略介绍下 Flutter 框架,以及它的优缺点?
  11. 介绍下 Flutter 的理念架构
  12. 介绍下 FFlutter 的 FrameWork 层和 Engine 层,以及它们的作用
  13. 介绍下 Widget、State、Context 概念 – Widget

14. 简述 Widget 的 StatelessWidget 和 StatefulWidget 两种状态组件类

15.StatefulWidget 的生命周期

16. 简述 Widgets、RenderObjects 和 Elements 的关系

17. 什么是状态治理,你理解哪些状态治理框架?

18. 简述 Flutter 的绘制流程

19. 简述 Flutter 的线程治理模型

20.Flutter 是如何与原生 Android、iOS 进行通信的?

21. 简述 Flutter 的热重载

①「Android 面试真题解析大全」PDF 残缺高清版 +②「Android 面试常识体系」学习思维导图压缩包——————能够我的【Github】浏览下载 ,最初感觉有帮忙、有须要的敌人能够点个赞

退出移动版