一个物理屏划分为三个逻辑屏,是靠谁来分发事件的。
ConcurrentHashMap是不是绝对的线程安全。(final,绝对线程安全,相对线程安全,线程不安全)
线程池是如何管理线程状态的
是我第二心仪的一家公司,办公环境,氛围,福利都好的一逼,可惜了 总共七轮面试 五轮技术面
Kotlin的访问权限
Koltin为什么比Java更安全
Koltin比Java好在哪
JVM的内存模型
JMM的内存模型
为什么操作数栈是Thread-Private
计算二叉树的深度
ArrayList跟LinkeList区别
ArrayList如何扩容的,如何提高ArrayList的效率
动态代理静态代理区别
启动优化怎么做的。
如果给你个IOS APP,你打算怎么优化。
http有哪几种版本,版本间有什么区别。https跟http有什么区别。
apk为什么要签名,v1跟v2签名的区别
apk从编译打包都安装的流程
dex到odex为什么不能在编译期优化
热修复原理
你的优势是什么
三轮面试
http2.0 1.1 1.0的区别
http如何保证安全性
安装包优化有哪几种方式
启动优化有哪几种方式
View的绘制流程,每个方法干什么的,如果要获取View的宽高,在哪个方法里获取
如何应对弱网环境
android数据存储方式
如果一个app无法访问网络,你怎么做数据存储。
DVM跟JVM的区别
React Native跟原生开发的优劣
三轮面试 一面
算法题 通电小球
Android 沉浸式状态栏 怎么实现的
事件处理函数有哪几个,父View 子View 监听同一个事件,重写哪些方法。在哪个View重写?
ViewRootImpl接受事件吗?
apk编译打包流程 V1,V2 签名区别
利用logging监听方法耗时,会不会让app增大延迟。
eventbus为什么要用CopyOnWriteList?
插件化怎么加载资源的?
JVM怎么保证gc效率跟线程运行效率的 ?
如果android没用对应的view,flutter能运行吗? 手写单例模式,volatile 跟 synchronized区别?
接口暴露,但是不让别人调用,有哪些办法?
二面
为什么采用flatbuffer? 比Json好在哪里?
如何处理Crash,NativeCrash呢?Google是怎么做到的?如果上报过程中再次产生Crash能不能捕捉到?
uncaughtException是被谁调用的,如果再次崩溃能不能捕获到?
Linux是怎么知道app崩溃的,如果想要在被kill前 做一些耗时操作,该怎么做?
考虑设计一个crash捕捉模块。
100万个数字求100个最大值。
手写快速排序算法。
三面 (GM面)
kotlin比Java好在哪里,是函数式编程吗?
如何防止DNS劫持?
如果让你实现一个调试器,你会怎么设计?静态调试?动态调试呢?
大厂基本上不太看重具体的技术,无论你是Java还是C++,比较看重思路与抽象的解决方案。
如果你想去一家不错的公司,但是目前的硬实力又不到,我觉得还是有必要去努力一下的,技术能力的高低能决定你走多远,平台的高低,能决定你的高度。
在面试前我也准备了很久,刷了很多大厂面试题,知识点整理出来分享给大家,算是一个感恩回馈吧:
1.容器(HashMap、HashSet、LinkedList、ArrayList、数组等)
2.内存模型
3.垃圾回收算法(JVM)
4.垃圾回收机制和调用 System.gc()的区别?
5.类加载过程(需要多看看,重在理解,对于热修复和插件化比较重要)
6.反射
7.多线程和线程池
8.设计模式(六大基本原则、项目中常用的设计模式、手写单例等)
9.Java 四大引用
10.Java 的泛型
11.final、finally、finalize 的区别
12.接口、抽象类的区别
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.网络框架对比和源码分析
2.网络七层协议有哪些?
3.Http 和 Https 的区别?Https为什么更加安全?
4.HTTPS的连接建立流程
5.解释一下 三次握手 和 四次挥手
6.TCP 和 UDP的区别
7.Cookie和Session
8.DNS是什么?
9.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 的)?