前言
首先介绍一下本人根本状况:渣本毕业快 4 年,始终在小厂摸鱼混日子,学历和简历背景不是很难看,所以面试邀约也不是很多,面试也到处碰壁。
从 3 月中旬开始面试,始终到 4 月底。共面试 9 家公司,近 20 轮面试,拿到 2 个小公司和 1 个上市公司(不是闻名的公司)的 offer,最初筹备去上市公司了。也投递了 BAT、360、抖音、快手、安全等大厂的岗位,不过大部分没给面试机会,多数大厂在后续面试中也把我回绝了,起因是:基础知识不够扎实,技术深度不够。
面试分享
每轮面试都会有自我介绍,所以在面试前大家能够先筹备一段自我介绍,向面试官介绍本人的根本状况。我这里只分享 Android 技术面试题(以每个公司为分类,将几轮面试题综合起来),面试官会在每个面试题持续深刻,始终问到你不会为止。至于面试题答案,大家自行百度,在面试过程中尽可能答复残缺(深度、广度、扩大),这样能力在面试官背后加分。倡议大家找工作开始面试前,先找几家小公司找点面试感觉,而后再投本人冀望的公司。
接下来是面试题:
公司一
1. 组件化和 arouter 原理
2.recyclerview 和 listview 区别
- glide 流程,缓存前压缩,缓存命中
4.APP 性能优化,内存优化,布局优化,绘制优化,内存透露
5.Http 和 Https 区别
6.socket 心跳包 - jvm 虚拟机,堆和栈的构造
- 8.activity 启动模式,有哪些不同
- 9.stack 栈的特点,自定义 stack 构造 10.kotlin 优劣势
公司二
1. 自定义 view,中英文字符串宽高测量显示,测量算法,可扩展性
2. 事件散发机制
3.Activity,view,window 分割 4. 热修复和插件化原理
5.Synchronized 底层原理,java 锁机制
- java 容器,hashmap 和 hashtable 区别,hashmap 原理,扩容流程,扰动算法的劣势
7.ArrayList 和 LinkendList 区别,List 泛型擦除,为什么反射可能在 ArrayList< String > 中增加 int 类型
8.Http 和 Https 区别,SSL/TLS 过程
9.Android 性能优化 - jvm 虚拟机,堆和栈的构造,栈帧,JMM11. 组件化留神点,组件间通信机制
12. 线程平安的单例模式有哪几种 13. 相熟的设计模式
公司三
1.MVC,MVP,MVVM
2.Activity 和 fragment 生命周期区别,fragment 失常增加和 viewpager 增加的区别,fragment 懒加载原理,FragmentPagerAdapter 和 FragmentStatePagerAdapter
3. 热修复和插件化
4. 友盟 bug 统计,混同后怎么定位 bug。没接入热修复的 APP 中,上线后遇到 bug 怎么解决
5.view 绘制原理(能够先说下根本 view 绘制,而后再说下屏幕刷新机制)6. 应用 Analyze 缩小 APK 体积,原理
7.Android 版本差别
公司四
1. 根底类型字节,汉字占几个字节,线程和过程
2. 四大组件,fileprovider 和 Contentprovide 区别,activity 启动流程
3.MVC,MVP,MVVM
4.TCP 三次握手,四次挥手
5.Eventbus,glide 原理
6. 性能优化,内存抖动,内存透露,内存溢出,handler 机制,lntentService 和 handlerThread,子线程更新 view 内容的办法
7.GC 回收算法
8.recyclerview 和 listview 区别
9. 组件化,模块化,插件化,热修复
10. 工作中遇到的难题怎么解决的
11.Kotlin Java 优缺点,kotlin 什么时候用分号,run,with,apply, 内联函数,
高阶函数
12.APK 体积优化 13. 过程间通信
14. 单例模式,哪些是平安的 15.retrofit 设计模式
16. 自定义 view
17. 是否做过音视频和 IM?
18.APK 性能优化
19.CurrentHashMap1.7 和 1.8 区别
20.volatile 关键字的作用,怎么保障原子性呢?
23.java 泛型,协变和逆变
公司五
1.HTTPS 具体步骤
2. 罕用的设计模式,代理模式和装璜者模式区别
3. 服务端返回谬误的 json 数据,客户端怎么自定义 model,防止出错
4.Hook 技术
5.kotlin 理解,协程
6. 屏幕适配
7. 抓包工具应用和原理
8. 网络优化
9. 将来冀望,对公司的理解
10.Okhttp,rxjava,glide,retrofit 等原理,okhttp 底层数据传输原理,http
报文体构造
11.APK 体积优化
12.Android jetpack 应用和原理,新技术认识
13.crashHandler 获取利用 crash 信息
14.recyclerview 和 listview 缓存区别
15.Android 常见解体问题剖析及个别的解决方案
16.NestedScrollView 触摸机制,AOP 相干常识
17. 设计 APP,整体架构选型
18.Android 沙盒和底层 Linux 通信
19.ACTION_CANCLE 什么时候触发
20. 线程池原理
公司六
1. 组件化,arouter,组件化 UI,还有哪些路由框架。AS 调试办法
2.MVC,MVP,MVVM,Jetpack
3.JVM,JMM,java 加载对象的步骤,classLoader,GC 回收算法
4. 插件化和热修复
5. 惟一安卓 ID,安卓平安的常识,加密算法,判断 activity 前台过程
6.TCP 三次握手和四次挥手
7.hash 算法,hashmap, 怎么解决 hash 抵触
8. 加载大图,glide 缓存机制,设计模式,双重检测的单例模式为什么要查看两次,本人设计图片加载框架思路
9. 启动未注册的 Activity
10.AOP, 蓝牙开发,IOT
- glide 缓存革除: Irucache 算法
12.glide 缓存文件太大,查找效率慢怎么优化? glide 下载高清图片优化
13. 最近钻研的技术,遇到最难的事,对公司的冀望
公司七
1. 组件化, arouter 优缺点
2.MVC,MVP,MVVM
3. 我的项目中的亮点,对架构的了解
4.handler 原理及相干知识点,message 回收策略
- hashmap 原理,arraymap 原理,比照性能。
- hashmap 为什么大于 8 才转化为红黑树,加载因子为什么是 0.75
- Synchronized 底层原理,java 锁机制
8. 服务和播送
9.activity 启动模式(给例子具体分析,A(规范)-》B(单例)-》C(singleTop)-》D(singleTask),剖析有几个栈,每个栈内的 activity)
10. 罕用设计模式,线程平安的单例模式
公司八
1.static、final; 继承与多态
2. 组件化, arouter 优缺点
3.context 相干知识点
4.handler 原理及相干知识点,handler 缓存池大小。5. 性能优化,启动速度优化,架构
6.java 虚拟机与 Dalvik 和 ART 区别
7.Kotlin 协程,扩大函数和属性以及伴生对象
8. 电商 APP 的首页,怎么设计一个 APP 架构
9.MVP 中数据申请为什么要和 M 一起,答: 网络申请和 javabean 都是数据
模型相干
10.Glide 的存储 EngineKey 是怎么保障惟一的。面试官答: 有个队列会将
EngineKey 存储起来,每次生成后进行比照存储。这个我在源码中没找对地位,如果晓得的同学,麻烦帮忙解释下。
11.retrofit 是怎么将 service 接口转化为咱们须要的 javabean 的?12. 怎么做治理,新技术学习
公司九
1.SqLite 与 contentProvider 区别
- fragment 周期,两个 fragment 切换周期变动,fragment 通信
- https 证书校验,加密相干,网络申请框架
- glide 加载流程,大图显示,图片大小计算
-
view 绘制 (从 onSync() 开始)
6. 线程内存模型,线程间通信
7. 获取 view 的宽高,更新 view 的形式,主线程音讯机制
8.OOM,内存透露,内存溢出,java 援用类型,ANR 剖析
9.APP 性能优化,webview 相干,webview 优化,webview 中 Android 与 js 互调
10. 插件化和热修复第一章 Java 根底
- 动态外部类和非动态外部类的比拟
- 多态的了解与利用
- java 办法的多态性了解
- java 中接口和继承的区别
- 线程池的益处,详解,单例(相对好记)
- 线程池的长处及其原理
- 线程池的长处(重点)
- 为什么不举荐通过 Executors 间接创立线程池
- 不怕难之 BlockingQueue 及其实现
- 深刻了解 ReentrantLock 与 Condition
- Java 多线程:线程间通信之 Lock
- Synchronized 关键字原理
- ReentrantLock 原理
- HashMap 中的 Hash 抵触解决和扩容机制
- JVM 常见面试题
- JVM 内存构造
第二章 Android 根底
- Activity 知识点(必问)
- Fragment 知识点
- Service 知识点
- Intent 知识点
第三章 UI 控件篇
- 屏幕适配
- 次要控件优化
- 事件散发与嵌套滚动
第四章 网络通信篇
- 网络协议
第五章 架构设计篇
- MVP 架构设计
- 组件化架构
第六章 性能优化篇
- 启动优化
- 内存优化
- 绘制优化
- 安装包优化
第七章 源码流程篇
- 开源库源码剖析
- Glide 源码剖析
- Android 面试题:Glide
- day 20 面试题:Glide 面试题
- 聊一聊对于 Glide 在面试中的那些事
- 面试官:简历上如果写 Glide,请留神以下几点…
- Glide OOM 问题解决办法汇总
- OkHttp 源码剖析
- Okhttp 连接池复用机制
- Okhttp 流程和优化的实现
- 一篇让你受用的 okhttp 剖析
- OkHttp 面试之–OkHttp 的整个异步申请流
- OkHttp 面试之–HttpEngine 中的 sendRequest 办法详解
- OkHttp 解析大总结
- Okhttp 工作队列工作原理
- Android 高频面试专题 – 架构篇(二)okhttp 面试必知必会
- Android 网络优化,应用 HTTPDNS 优化 DNS,从原理到 OkHttp 集成
- Retrofit 源码剖析
- RxJava 源码剖析
- RxJava 原理与源码剖析
第八章 新技术篇
- 实战问题篇
第九章 面试篇
- 开源文档
-
面试题合集
因为文章篇幅无限,文档资料内容较多,本能够提供链接下载,但无奈容易被谐和,所以全副存档,须要这些文档这里的敌人,能够【点击这里收费获取】,心愿可能共同进步,共勉!总结
简历上写的货色,肯定要先搞懂,特地是简历上的专业技能。这次面试收到的最多反馈就是:基础知识不够扎实,技术深度不够。当初 Android 开发大部分须要懂点 C ++ 和 Linux 常识,大厂也须要刷算法面试题,在前面的学习过程中,我将从以上几个方面着手。当然也必须把基础知识学牢固,技术深度搞深刻点。
最初祝大家都能拿到心仪的 offer!