前言
我的微信小号有一组特殊的朋友。
他们从 CSDN上看到我之前发布的博客后,留下邮箱询要学习资料的,我在邮箱发送资料之后我们互相添加微信认识聊上的,和他们沟通交流中可以明显感觉他们的就业焦虑。
一方面担心受疫情的影响,心仪的公司缩招或者不招;另一方面则是自己技术的不自信,担心面试不通过。我很能理解他们,有一个哥们我们前后断断续续聊了将近有一个月的时间。
上周,这个哥们激动地跟我说:“多亏了你分享的那份学习资料,我拿到小米的offer了”!虽然我们素未谋面,但是我是真的替他高兴,感觉帮到他了自己也很有成就感。
下面是这位哥们这段时间面试总结出来的面经,让我帮忙给分享出来,他说希望大家都和他一样能够找到满意的工作。
面试题
第一遍,直接看解法 多解法,比较解法优劣,默写好的解法
第二遍,打开leetcode,直接开始写 多种解法比较,调优
第三遍,过一天之后,再重复做题
第四遍,过了一周,再来反复练、
第五遍,面试前一周,恢复性训练
通过以上方法重复练习,大概刷100题就足以应付面试,如果每天刷3道,大概准备一个月即可
字节 Android 面试真题解析
Java 基础部分
HashMap 和 HashTable 以及 CurrentHashMap 的区别
synchronized 和 volatile 、ReentrantLock 、CAS 的 区别
JVM 类加载机制、垃圾回收算法对比、Java 虚拟机结 构等
Java 的四大引用
Java 的泛型, 和 的区别
Java 线程有哪些状态,有哪些锁,各种锁的区别
final 、finally、finalize 区别
接口和抽象类的区别
sleep 、wait、yield 的区别,wait 的线程如何唤醒它?
java 中==和 equals 和 hashCode 的区别
String、StringBuffer、StringBuilder 区别
.........
Jvm部分
Jvm 内存区域是如何划分的?
Jvm 内存模型是怎么样的?
String s1 = "abc"和 String s2 = new String("abc")的区别, 生成对象的情况
如何判断对象可回收?
GC 的常用算法?
Minar GC 和 Full GC 的区别?
说一下四种引用以及他们的区别?
类加载的过程?
类加载的机制,以及为什么要这样设计?
.........
计算机网络部分
TCP 与 UDP 的区别
三次握手、四次挥手。为啥是三次不是两次?
HTTPS 和 HTTP 的区别。HTTP 2.0,3.0?
浏览器输入一个 URL,按下回车网络传输的流程?
TCP 建立连接后,发包频率是怎样的?
OKHttp
如何验证证书的合法性?
https 中哪里用了对称加密,哪里用了非对称加密,对加 密法(如 RSA)等是否有了解?
client 如何确定自己发送的消息被 server 收到?
谈谈你对 WebSocket 的理解
WebSocket 与 Socket 的区别
谈谈你对安卓签名的理解
请解释安卓为啥要加签名机制?
.........
Android 面试题
什么是 ANR 如何避免它?
Activity 和 Fragment 生命周期有哪些?
横竖屏切换时候 Activity 的生命周期
AsyncTask 的缺陷和问题,说说他的原理
onSaveInstanceState() 与 onRestoreIntanceState()
android 中进程的优先级?
Bunder 传递对象为什么需要序列化?Serialzable 和 Parcelable 的区别?
动画
Context 相关
Android 各版本新特性
Json
Jar 和 Aar 的区别
Android 为每个应用程序分配的内存大小是多少
Merge、ViewStub 的作用
ContentProvider 使用方法
Android 怎么加速启动 Activity?
.........
Android Framework 相关
Android 系统架构
View 的事件分发机制?滑动冲突怎么解决?
View 的绘制流程?
跨进程通信
Android 系统启动流程是什么?
启动一个程序,可以主界面点击图标进入,也可以从一 个程序中
AMS 家族重要术语解释
App 启动流程
ActivityThread 工作原理
说下四大组件的启动过程,四大组件的启动与销毁的方 式
AMS 是如何管理 Activity 的?
理解 Window 和 WindowManager
WMS 是如何管理 Window 的?
大体说清一个应用程序安装到手机上时发生了什么?
.........
性能优化专题
你们做了哪些稳定性方面的优化?
性能稳定性是怎么做的?
业务稳定性如何保障?
如果发生了异常情况,怎么快速止损?
启动优化是怎么做的?
启动优化有哪些容易忽略的注意点?
你们内存优化项目的过程是怎么做的?
你做了内存优化最大的感受是什么?
你在做布局优化的过程中用到了哪些工具?
布局为什么会导致卡顿,你又是如何优化的?
做完布局优化有哪些成果产出?
.........
百度 Android 面试真题解析
Android 面试题
跨进程通信的几种方式
wait 和 sleep 的区别
String,StringBuffer,StringBuilder 的区别
View 和 SurfaceView 的区别
View 的绘制原理
简述 JNI
简述 TCP,UDP,Socket
音视频相关类
进程和线程的区别
内存泄露如何查看和解决
View 的分发机制,滑动冲突
RecyclerView 和 ListView 的区别
.........
Java 面试题
HashMap
ArrayList
LinkedList
Hashset 源码分析
内存模型
垃圾回收算法(JVM)
垃圾回收机制和调用 System.gc()的区别?
类加载过程
反射
多线程和线程池
HTTP、HTTPS、TCP/IP、Socket 通信、三次握手四次挥手 过程
设计模式(六大基本原则、项目中常用的设计模式、手写 单例等)
.........
kotlin
==、===和 equal 的区别?
var 和 val 的区别?
Kotlin 中默认参数的作用以及原理?
Kotlin 中顶层函数的原理
中缀函数是什么?注意点?
解构函数的本质?
扩展函数的本质?
扩展函数和成员函数的区别?
Kotlin 中常用的类的修饰符有哪些?
Kotlin 中可见性修饰符有哪些?
Kotlin 中的内部类和 Java 中的内部类有什么不同?
Kotlin 属性代理背后原理?
.........
网络
HTTP 是哪一层的协议,常见的 HTTP 状态码有哪些,分别代表什么意思?
HTTP 1.1 和 HTTP 2 有什么区别?
HTTP 和 HTTPS 有什么区别?
SSL/TLS 的握手过程?
TCP 的三次握手过程,为什么需要三次,而不是两次或者四次?
TCP 的四次挥手过程?
TCP 和 UDP 有什么区别?
.........
滴滴 Android 面试真题解析
Java 基础
数据类型
String
运算
关键字
Object 通用方法
继承
反射
.........
Java 容器
容器中的设计模式
Vector
CopyOnWriteArrayList
LinkedList
HashMap
ConcurrentHashMap
.........
Java 并发
使用线程
基础线程机制
中断
互斥同步
线程之间的协作
线程状态
J.U.C - AQS
.........
Android 知识点汇总
Activity
Fragment
Service
BroadcastReceiver
ContentProvider
数据存储
View
进程
Parcelable 接口
IPC
Bitmap
.........
Android 扩展知识点
ART
Apk 包体优化
Hook
Proguard
架构
Jetpack
NDK 开发
计算机网络基础
类加载器
.........
小米 Android 面试真题解析
算法合集
kotlin 专题
基础
函数
类、对象和接口
lambda
类型系统
协程
.........
flutter 专题
Dart 当中的 「..」表示什么意思? Dart 的作用域 Dart 是不是单线程模型?是如何运行的? Dart 是如何实现多任务并行的? 说一下 Dart 异步编程中的 Future 关键字? 说一下 Dart 异步编程中的 Stream 数据流? 请简单介绍下 Flutter 框架,以及它的优缺点? 介绍下 Flutter 的理念架构 介绍下 FFlutter 的 FrameWork 层和 Engine 层,以及它们 的作用 介绍下 Widget、State、Context 概念 StatefulWidget 的生命周期
- .........
JNI 模块专题
静态注册
动态注册
数据类型映射
对象数组引用类型
jni 函数默认参数
jni 是如何访问 java 中的方法和字段
jni 访问 java 中的静态方法
jni 访问 java 中的字段
jni 访问 Java 中的静态字段
jni 中更新 java 的字段内容
jni 中创建 java 类实例
jni 中的异常
常用函数封装
.........
总结
只有深入思考,不断反思总结,保持学习的热情,一步一步构建自己完整的知识体系,才是最终的制胜之道。
更多面经可以前往我的Gitee仓库查看