46道面试题带你了解高级Android面试,威力加强版
# 阿里
### 自我介绍
* Android学习方式
* 对源码是否了解(Android Java)
### 源码
* Handler消息机制(具体涉及到的类 & 细节)
* HashMap(数据结构 & **put操作**)
* **HashMap扩容时间复杂度**
* **ArrayMap**
### JVM
* Java内存区域
* 堆栈区别
* 哪些区域线程私有,哪些共享
* **栈帧**
* 方法调用时的入栈出栈操作
### Java
* 并发访问:
1. **volatile(只保证了可见性和有序性,不能保证原子性)**
2. **synchronized:修饰代码块/方法/对象的区别?** **(单例模式DCL会不会失效?)**
3. **Lock**
### Android
* Activity生命周期(具体执行,涉及到哪些类?)
* **ANR(什么是ANR?怎么监测,运行前,运行后,线上监测?)**
### 项目
* **项目线程同步的优化(session/cooike/token/上传凭证的区别)**
## 阿里一面 1h (挂)
### 自我介绍
### 项目
* 使用人数/有无上架商店
* 有无IM通讯模块
* 登录模块是怎么解决的
* **如何优化千万级别用户下让用户实时知道自己状态(APP端 & 服务器端)**
### Java
* synchronized修饰方法和类有什么区别
* volatile关键字作用
### JVM
* 内存分配
* 垃圾回收算法
### Android
* **事件分发机制**
* 消息机制
* **View绘制流程(具体原理,包括不限于绘制三大流程)**
* Handler(怎么实现多线程?为什么Looper死循环没事?怎么实现线程间通讯?)
* 操作系统层面死循环是怎么回事?
* 死循环一定会导致ANR麽?
### HTTP协议
* **HTTP缓存了解不?**
# 腾讯
## 提前批一面 50min
### Android
* 四大组件是什么?轮番介绍之
* Fragment是什么?与Activity区别?
* SurfaceView与View区别?SurfaceView原理?
* 前台服务与后台服务区别?
* AIDL了解么?
* IPC方式?谁最快?
* Protocol Buffer了解么?
* APP中多进程有什么用?
* 方法数65536怎么解决?
* View显示过程?
### Java
* 线程同步方式?
* 死锁是什么?
### 虚拟机
* 内存分配方式?
* 堆和栈的区别?
* GC?垃圾回收?
* class文件生成过程?
### 计算机网络
* 什么是HTTP?
* HTTP/HTTPS区别?
* TCP/IP 三次握手 四次挥手?
* TCP/UDP区别?
* HTTP是长连接还是短连接?
* HTTP状态码?
* 抓包工具?怎么抓包HTTPS?
### 设计模式
* 生产者,消费者是什么?
* 命令模式是什么?
### 数据结构
* 快排是什么?时间复杂度多少?
* 七大排序分别是什么?
* 二叉树原理?
* 红黑树是什么?
## 提前批二面 30min (挂)
### C++
* class与struct区别(看到我相关课程上写了C++,就开始问我C++,我说C++基本没怎么用过,才开始问我Java)
### 项目
* 介绍项目,有什么难点?
* 竞赛用了单片机? 指令级是什么?
### Java
* HashMap介绍下?
* **ArrayList,LinkedList用法有什么要注意的**?
* 注解介绍下?
* 泛型中类型擦除?
### 数据结构
* 线段树 B+树?
### Android
* OkHttp了解不?
* OkHttp使用需要注意什么?
* RxJava介绍下?
* Activity四种启动模式?
* 一个APP 怎么退出所有Activity?
* 接上问如果有第三方SDK,怎么退出?
## 正式批一面 40min
### 手写代码
* 字符串出现频率中位数
* 最长公共子串问题LCS
### 项目
* OKHTTP框架
* TCP UDP HTTP区别
* TCP**滑动窗口**
* 用UDP实现TCP
### 数据库
* 三大范式
* 索引
* **怎么知道命中索引**
### 操作系统
* 进程间通讯方式
* **共享内存原理**
## 正式批二面 35min (挂)
### 项目
* 内存泄漏?
### Android
* **OKHTTP 对HTTP与HTTPs之间的区别**
* **HTTPs加密原理**
* **BlueboothAdapter**
* **Activity在AndroidManifest.xml文件中有哪些标志位?**
* **CLEAR_TOP?**
* **singleTop和singleTask分别的使用场景**
* Android存储(文件,SP,数据库[**具体介绍下SQLite**])
### JVM
* **Android虚拟机与Java虚拟机之间区别**
### Java
* 深拷贝 浅拷贝(内存溢出or垃圾回收时有什么区别?)
* 多线程模型
### 数据结构
* 二叉树
* B树(**插入/删除过程**)
![](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625584026949085.jpg)
# 字节跳动
## 字节一面 1h
### 项目
* 介绍项目
* HTTPs加密的解释
* 对称/非对称加密
### Java
* 深拷贝/浅拷贝,怎么实现深-浅拷贝 CopyonWrite
* Java内存(分配->回收)
### 网络通信
* TCP挥手 第三次不挥手会怎么样
### 算法
* 数组A 数组B 计算A-B
* 0-n之间所有质数(先求所有合数)
## 字节二面 1.5h
### Java
* 线程同步问题(为什么需要同步&怎么实现同步)
### 设计模式
* 单例模式(静态内部类)
* 其他设计模式简介
### 数据结构
* 排序算法
* 归并/快排(实现原理/平均复杂度/能否提前结束/谁性能更优)
* 堆排(怎么实现调整堆结构/k个最大的数)
### 算法题
* 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组
## 字节三面 40min (挂)
### 自我介绍
* 专业课程
* 看过哪些书
### 操作系统
* 内存分配区域(Java层面回答?对象引用在堆和栈都有么?函数内部new的对象存放在哪?)
* **用户态/内核态**
* **中断**
### 计算机网络
* 计算机网络有哪几层?分别对应什么协议?
* IP TCP传输的都是什么数据?
* DNS?
### Java
* 泛型上界,下界定义/作用
* Java有哪几种锁
* 临界区概念
* synchronized和可重入锁的区别
# 爱奇艺
## 爱奇艺一面 50min
### 项目
* 主要介绍了实习项目,分析了内存泄漏,线程同步的问题
### 计算机网络
* HTTP/HTTPS区别
### Android
* OkHttp框架(里面有那些设计模式)
* 如何终止一个线程
## 爱奇艺二面 50min
### 介绍项目
* 内存泄漏的来源
* 有没有做过优化
### Android
* Service的两种启动方式?区别在哪?
* 性能优化有没有做过?
### Java
* 手写单例模式
### 算法
* 删除链表中一个节点
## 爱奇艺三面 40min
### 自我介绍
* 项目
* 有没有特别擅长的
### Java
* public作用?
* .java文件名怎么确定?
* 外部类最多有几个?
* 内部类最多有几个?
* 内部类支持嵌套么?
* 线程池怎么给新建的线程设置名字?
* 线程池种类?
* 注解的使用?
### Android
* Activity的启动模式下生命周期
* Activity A->B的生命周期
* Handler中怎么实现Looper和线程绑定?
* 一个线程最多有几个Looper?
* 多个Looper报的异常?
* 消息阻塞再次唤醒是什么机制?
* ThreadLocal是什么?
# 网易
## 网易一面 15min
### Android
* OkHttp
* Retrofit
* RxJava
## 网易二面 15min
### Android
* OkHttp
* Retrofit
* RxJava
### 算法
* 斐波那契数列
## 网易HR面 15min
### 聊天
* 怎么学习Android
* 专业
* 为什么不进医疗仪器行业
### 个人
* 城市选择
* 家庭情况
### 业务
* CC直播部门
* 先做培训和功能迭代
* 网易游戏的生态链一环 & 技术实力尚可
![](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625584026180670.jpg)
# 华为
## 华为一面
### 项目
* 实习项目
* 可优化的地方
* 专业
### 算法
* 复盘笔试题
## 华为二面
* 聊人生
* 对华为文化看法
* 家庭情况
* 专业情况
### 最后
我这里整理了一份完整的学习思维以及Android开发知识大全PDF,有需要的同学可以自行领取。
![](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625584026731215.jpg)
**[资料获取方式:Android完整知识学习体系路线](https://docs.qq.com/doc/DSkNLaERkbnFoS0ZF)**
当然实践出真知,即使有了学习线路也要注重实践,学习过的内容只有结合实操才算是真正的掌握。