-
一个物理屏划分为三个逻辑屏,是靠谁来分发事件的。
-
ConcurrentHashMap是不是绝对的线程安全。(final,绝对线程安全,相对线程安全,线程不安全)
-
线程池是如何管理线程状态的
大宇无限(C轮公司 前身是豌豆荚)
是我第二心仪的一家公司,办公环境,氛围,福利都好的一逼,可惜了 总共七轮面试 五轮技术面
-
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++,比较看重思路与抽象的解决方案。
如果你想去一家不错的公司,但是目前的硬实力又不到,我觉得还是有必要去努力一下的,技术能力的高低能决定你走多远,平台的高低,能决定你的高度。
在面试前我也准备了很久,刷了很多大厂面试题,知识点整理出来分享给大家,算是一个感恩回馈吧:
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.网络框架对比和源码分析
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 的)?