面试经验

面了一些上海二线互联网公司,例如爱奇艺,京东,喜马拉雅,得物,B站,某安,美团等等,记录了局部面试真题。大部分能够自行搜到答案,有疑难的能够留言交换~

爱奇艺一面

1.handler外面的native pollonce 为什么不会anr
2.对称加密和非对称加密的区别
3.布局嵌套过深会导致什么问题
4.java为什么跨平台?c是跨平台吗
5.app打包过程
6.协程挂起和线程阻塞的区别
7.so文件加载流程
8.AIDL怎么实现
9.字节码是什么

爱奇艺二面
和一面间隔时间太久了,放弃

货拉拉一面

1.简述https的握手流程,私钥加密谁都能够破解,那么有什么意义
2.oom是否try catch
3.公钥和私钥的区别
4.客户端怎么平安保留私钥
5.怎么加载一张超大图
6.采集app启动工夫原理
7.exception分类。oom属于哪种分类
8.弱网 无网优化

货拉拉二面

1.说下我的项目中怎么使用MVVM
2.viewModel的源码实现
3.设计一个图片加载框架(蕴含内存缓存和本地缓存),参考Glide答复就行了
4.简述hashMap put办法的流程,一些细节诘问:什么时候链表转树?为啥要转成树?什么时候树再次转回链表
5.英语口语如何(我面的是国际化业务)

货拉拉HR面
办理了居住证积分吗?balabala

京东一面

1.简述LinkedHashMap源码实现
2.说下Handler流程
3.handler用于线程间通信,怎么保障线程平安
4.界面有个Button,手指放上去缓缓移到Button外的区域,形容事件散发的流程
5.说下View的绘制流程,包含渲染和绘制
6.算法 两个单链表合并成有序链表,说下思路
7.组件化的实现,WMRouter调用其余模块的对应办法怎么实现的

京东二面
齐全忘了

京东三面
问我的项目细节,你次要负责的模块,怎么设计

算法 N宫格,从左上角A登程只能向右或者向下走,求所有不同门路的条数总和。手写伪代码(用递归就能够)

京东四面

1.平时的上下班工夫点
2.有没有应用过咱们的app,有什么倡议
3.后面的3次技术面有什么感触
4.职业规划

京东HR面
平时的上下班工夫点 balabala

某安一面

1.多线程同步有哪些形式
2.sycnized和lock区别,别离用于什么场景
3.线程池原理
4.线程池回绝策略怎么自定义
5.怎么实现线程退出线程池的优先级
6.volatile底层原理?是否线程平安
7.死锁怎么产生?怎么避免死锁
8.介绍下apm,怎么捕捉crash和native crash?腾讯matrix怎么统计app启动工夫,页面加载工夫
9.gc回收算法有哪些?别离用于什么场景
10.jvm有哪些区域?栈的作用
11.算法 三数之和

某安二面

1.问我的项目 httpdns相干:为什么要httpdns?怎么解决握手问题,ip直连是否防止dns挟持?
2.问我的项目 首页弹窗优先级
3.做过哪些内存优化
4.怎么全局捕捉app所有异样,并且保障app不解体,不卡死
5.如何获取app的所有线程信息
6.怎么查找anr
7.安卓有哪些过程间通信?为什么应用binder?mmap产生在哪个阶段?怎么找到指标过程
8.leakcanary怎么检测内存泄露的
9.算法 两个栈实现一个队列

某安三面

1.gradle生命周期,怎么自定义插件
2.统计编译耗时插件,运行在哪个阶段?
3.形容从编译到apk的过程,以及gradle有哪些task参加其中
4.如何实现字节码插桩
5.子线程更新ui会报什么异样?从哪里抛出来的
6.子线程怎么更新textview不会crash
7.activity window view显示进去,全流程源码解析,准确到类和外围办法
8.数据库用的什么库,相熟sql语句吗
9.mmkv为什么比sp高效,存储的数据结构是什么样
10.mmap为什么比io高效,说下实现原理
11.sp存在哪些问题?
12.hashmap put流程源码解析,链表和树转换机会?扰动函数的作用?为什么hashcode & n-1?扩容机会?
13.gc roots有哪些
14.activity有个外部类handler,形容下援用关系链路,并阐明为何gcroots能拜访到activity
15.加载xml和动态创建view哪个高效?为什么加载xml效率低
16.如何缩小布局嵌套?jetpack compose的原理
17.recycleview缓存实现?开发中怎么优化
18.算法 给定一个字符串,输入所有不同字符组合

B站一面

1.一句话形容协程
2.协程只在主线程应用,怎么实现挂起和切回的
3.协程的轻量级怎么体现的
4.ViewModel源码实现,它在Activity重启后为什么复原数据?数据保留在哪里?5.和onsaveinstancestate有啥区别
6.LifeCycle源码实现
7.LiveData源码实现,先后setValue两次,都能收到吗?
8.简述View的刷新机制,屏幕刷新信号从哪里收回来的?
9.硬件加速是否理解
10.SurfaceView的工作原理是否有理解
11.组件化相干,WMRouer为什么能够这么不便实现组件之间通信,背地原理

喜马拉雅一面

1.有理解过直播吗?有哪些常见协定
2.说下自定义View的个别流程
3.多个线程异步执行工作,主线程须要期待它们都实现再持续,有哪些实现形式
4.说下handler的流程,异步音讯是什么?Android中哪些场景会发送异步音讯?5.咱们在代码中能够手动发异步音讯吗
6.弹幕怎么实现?比方直播中的流星雨特效,跑车这种怎么实现进去
7.说下你开发中做过的一个动画
8.理解过SurfaceView的原理吗
9.有没有接触过Socket编程,简略说下代码实现
10.加载一张超大图怎么实现
11.补间动画和属性动画各自的原理
12.内存优化有哪些伎俩
13.开放性题目 开发中怎么晋升整个app的稳定性

喜马拉雅二面

1.动静代理是怎么实现的
2.你相熟哪些设计模式
3.画一下动静代理的类图
4.说下插件化原理
5.说下热修复的基本原理?比方QQ空间的计划和Tinker
6.算法 判断两个单链表是否相交及找到第一个交点

喜马拉雅HR面

对公司感觉怎么样,之前有理解过吗
是否违心承当一些治理角色

得物一面

  • 狂问Kotlin相干,比方委托的实现原理,协程原理,kotlin的益处,kotlin编译流程,罕用的kotlin技巧
  • app的打包流程
  • View的渲染绘制流程

得物二面

1.inflate加载view过程
2.简述okhttp源码,申请怎么治理,它的线程池怎么实现
3.apt原理
4.viewmodel为什么能够复原数据
5.livedata能够保留多个数据吗
6.aac架构有什么劣势
7.mmkv理解吗
8.算法 单链表找到倒数第K个元素
9.算法 单链表找到两头的元素(2个题都用快慢指针就能够了)
10.组件化怎么做的?WMRouter编译期间做了什么

得物HR面
没问什么特地的

教训tips

  1. 必考题肯定要把握!
    【必问】Handler的工作流程,源码要记牢,细节要了解透,比方怎么唤醒主线程的,while为啥不会阻塞主线程
    【必问】View的绘制流程,包含渲染和View自身的绘制3部曲
    【必问】MVVM的含意,ViewModel+LivaData+LifeCycle的源码实现
    【必问】自定义View的个别实现流程
    【必问】内存透露怎么排查,OOM怎么排查
    【必问】你做过哪些性能优化
    【必问】Retrofit的实现,动静代理
    【必问】组件化相干,WmRouter的原理
    【高频】ANR怎么排查,有哪些起因
    【高频】APP打包流程
    【高频】kotlin常见知识点的原理,如协程,委托,扩大函数,编译流程
    【高频】Android有哪些跨过程通信,AIDL的代码实现
    【高频】怎么加载一张超大图
    【高频】OkHttp的线程池实现,Java线程池原理,回绝策略怎么自定义

2.算法筹备
有工夫就刷剑指offer66道题目,没工夫就把握个别的套路,答复一些常见题目根本够了。

3.对于性能优化
你做过哪些性能优化?这个点也是常常被问到,我的倡议 不要随便把他人博客的性能优化当成本人做过的,很多都是纯KPI我的项目,他们可能本人都没去实际。面试官一听就晓得你在瞎说,挑一些绝对靠谱的联合本人我的项目说下,而后拓展一下还未实现然而筹备去做的。

写在最初

其实Android开发的知识点就那么多,面试问来问去还是那么点货色。所以面试没有其余的窍门,只看你对这些知识点筹备的充沛水平。所以,进来面试时先看看本人温习到了哪个阶段就好。

上面开始进入注释,以下是我进阶学习所积攒的历年爱奇艺,京东,喜马拉雅,得物,B站,某安,美团等公司2021年度的高频面试题,心愿对你有帮忙。

第一章 Android 高频面试之必考Java根底

1,面向对象和面向过程的区别 2,面向对象的特色有哪些 3,解释下Java的编译与解释并存的景象 4,简略介绍下JVM的内存模型 5,简略介绍下Java的类加载器 6,谈一下Java的垃圾回收,以及罕用的垃圾回收算法。 7,成员变量和局部变量的区别 8,Java 中的办法重写(Overriding)和办法重载(Overload)的含意 9,简略介绍下传递和援用传递 10,为什么重写 equals 时必须重写 hashCode 办法

11,接口和抽象类的区别和相同点是什么 12,简述下HashMap 13, CurrentHashMap 14,介绍下什么是乐观锁、乐观锁 15,谈谈对Java线程的了解 16, Synchronized、volatile、Lock并发 17,锁 18,谈谈你对Java 反射的了解 19, 注解 20,单例

第二章 Android 面试之必问Android根底

1,Activity:生命周期、启动模式、启动流程

2,Fragment:生命周期、与Activity传递数据 3, Service:启动形式、生命周期、Service不被杀死 4, BroadcastReceiver 5, ContentProvider

6,Android View知识点:测量流程、事件散发、MotionEvent、Draw 绘制流程等等 7,Android过程:过程生命周期、多过程、多过程通信形式 8,序列化 9,Window 10,音讯机制:Handler 机制、工作原理 11, RecyclerView优化:卡顿场景、其余优化策略

第三章 Android 面试之必问高级知识点

1,编译模式:AOT长处、垃圾回收 2,类加载器:类加载器分类、双亲委托模式、Android的类加载器 3,Android Hook 4,代码混同:Proguard、混同规定、混同模版 5,NDK:JNI根底、NDK开发根本流程、CMake 构建 NDK 6,动静加载:插件化、热修复

第四章 Android 面试之必问性能优化

1,启动优化:冷启动/热启动和温启动的优化、代码方面的优化 2,UI渲染优化:CPU/GPU、适度绘制、解决自定义View的OverDraw、Hierarchy Viewer 3,内存优化:内存治理、内存透露、大图内存优化、线上监控 4,网络优化 5,耗电优化:优化方向、耗电监控、如何监控耗电 6,安装包优化:罕用的优化策略、资源压缩、资源动静加载

第五章 Android 面试之开源库剖析

1,HTTP与缓存实践:HTTP缓存策略、强制缓存、比照缓存 2,OKHttp:OKHttp申请流程、OKHttpClient、同步申请、异步申请、CacheInterceptor网络申请缓存解决 3,Retrofit 4,Glide 6,EventBus

第六章 算法面试题汇总

6.1 排 6.2 二叉树 6.3 链表 6.4 栈 / 队列 6.5 二分搜寻 6.6 哈希表 6.7 堆 / 优先队列 6.8 二叉搜寻树 6.9 数组 / 双指针 6.10 贪婪 6.11 字符串解决 6.12 动静布局 6.13 矩阵 6.14 二进制 / 位运算 6.15 其余:两个大文件中找出独特记录、ip地址与int类型的转换、整数反转、LRU缓存策略

须要完整版《Android2021年度的高频面试真题》的敌人能够点击这里收费支付