写点什么

app 启动速度优化,分享一点面试小经验,最全的 BAT 大厂面试题整理

发布于: 2021 年 04 月 13 日

前言


最近我开始偷偷投简历了。与老东家的合同快要到期,想知道自己的斤两,续签合同也好有个底,顺便悄悄看看新的工作机会。虽然市场环境不好,但我们身在涨工资靠跳槽的行业没办法。


由于工作了 5 年了,经验有了,我收到的面试邀请也挺多,但半个月的面试下来却没收到一份满意的 offer,真是**“被现在的公司害了”**。下面是我总结的一些面试题,希望对想跳槽的小伙伴有一些帮助。

阿里巴巴

  • LRUCache 原理

  • 图片加载原理

  • 模块化实现(好处,原因)

  • JVM

  • 视频加密传输

  • 统计启动时长,标准

  • 如何保持应用的稳定性

  • ThreadLocal 原理

  • 谈谈 classloader

  • 动态布局

  • 热修复,插件化

  • HashMap 源码,SpareArray 原理

  • 性能优化,怎么保证应用启动不卡顿

  • 怎么去除重复代码

  • SP 是进程同步的吗?有什么方法做到同步

  • 介绍下 SurfView

  • HashMap 实现原理,ConcurrentHashMap 的实现原理

  • BroadcastReceiver,LocalBroadcastReceiver 区别

  • Bundle 机制

  • Handler 机制

  • android 事件传递机制

  • 线程间 操作 List

  • App 启动流程,从点击桌面开始

  • 动态加载

  • 类加载器

  • OSGI

  • Https 请求慢的解决办法,DNS,携带数据,直接访问 IP

  • GC 回收策略

  • 画出 Android 的大体架构图

  • 描述清点击 Android Studio 的 build 按钮后发生了什么,大体说清一个应用程序安装到手机上时发生了什么;

  • 对 Dalvik、ART 虚拟机有基本的了解;

  • Android 上的 Inter-Process-Communication 跨进程通信时如何工作的;

  • App 是如何沙箱化,为什么要这么做;

  • 权限管理系统(底层的权限是如何进行 grant 的)

  • 进程和 Application 的生命周期;

  • 系统启动流程 Zygote 进程 –> SystemServer 进程 –> 各种系统服务 –> 应用进程

  • recycleview listview 的区别,性能

  • 排序,快速排序的实现

  • 树:B 树的介绍

  • 图:有向无环图的解释

  • TCP/UDP 的区别

  • synchronized 与 Lock 的区别

  • volatile

  • Java 线程池

  • Java 中对象的生命周期

  • 类加载机制

  • 双亲委派模型

  • Android 事件分发机制

  • MVP 模式

  • RxJava

  • 抽象类和接口的区别

  • 集合 Set 实现 Hash 怎么防止碰撞

  • JVM 内存区域 开线程影响哪块内存

  • 垃圾收集机制 对象创建,新生代与老年代

  • 二叉树 深度遍历与广度遍历

  • B 树、B 树

  • 消息机制

  • 进程调度

  • 进程与线程

  • 死锁

  • 进程状态

  • JVM 内存模型

  • 并发集合了解哪些

  • ConCurrentHashMap 实现

  • CAS 介绍

  • 开启线程的三种方式,run()和 start()方法区别

  • 线程池

  • 常用数据结构简介

  • 判断环(猜测应该是链表环)

  • 排序,堆排序实现

  • 链表反转

  • 动态权限适配方案,权限组的概念

  • 网络请求缓存处理,okhttp 如何处理网络缓存的

  • 图片加载库相关,bitmap 如何处理大图,如一张 30M 的大图,如何预- - 防 OOM

  • 进程保活

  • listview 图片加载错乱的原理和解决方案

  • https 相关,如何验证证书的合法性,https 中哪里用了对称加密,哪里用了非对称加密,对加密算法(如 RSA)等是否有了解

美团

  • static synchronized 方法的多线程访问和作用,同一个类里面两个 synchronized 方法,两个线程同时访问的问题

  • 内部类和静态内部类和匿名内部类,以及项目中的应用

  • handler 发消息给子线程,looper 怎么启动

  • View 事件传递

  • activity 栈

  • 封装 view 的时候怎么知道 view 的大小

  • arraylist 和 linkedlist 的区别,以及应用场景

  • 怎么启动 service,service 和 activity 怎么进行数据交互

  • 下拉状态栏是不是影响 activity 的生命周期,如果在 onStop 的时候做了* 网络请求,onResume 的时候怎么恢复

  • view 渲染

今日头条

  • 数据结构中堆的概念,堆排序

  • 死锁的概念,怎么避免死锁

  • ReentrantLock 、synchronized 和 volatile(n 面)

  • HashMap

  • singleTask 启动模式

  • 用到的一些开源框架,介绍一个看过源码的,内部实现过程。

  • 消息机制实现

  • ReentrantLock 的内部实现

  • App 启动崩溃异常捕捉

  • 事件传递机制的介绍

  • ListView 的优化

  • 二叉树,给出根节点和目标节点,找出从根节点到目标节点的路径

  • 模式 MVP,MVC 介绍

  • 断点续传的实现

  • 集合的接口和具体实现类,介绍

  • TreeMap 具体实现

  • synchronized 与 ReentrantLock

  • 手写生产者/消费者模式

  • 逻辑地址与物理地址,为什么使用逻辑地址

  • 一个无序,不重复数组,输出 N 个元素,使得 N 个元素的和相加为 M,* 给出时间复杂度、空间复杂度。手写算法

  • .Android 进程分类

  • 前台切换到后台,然后再回到前台,Activity 生命周期回调方法。弹出 Dialog,生命值周期回调方法。

  • Activity 的启动模式

爱奇艺

  • RxJava 的功能与原理实现

  • RecycleView 的使用,原理,RecycleView 优化

  • ANR 的原因

  • 四大组件

  • Service 的开启方式

  • Activity 与 Service 通信的方式

  • Activity 之间的通信方式

  • HashMap 的实现,与 HashSet 的区别

  • JVM 内存模型,内存区域

  • Java 中同步使用的关键字,死锁

  • MVP 模式

  • Java 设计模式,观察者模式

  • Activity 与 Fragment 之间生命周期比较

  • 广播的使用场景

  • 百度


  • https 与 http 区别

  • https 下的 TCP 链接与一般 TCP 连接有什么不同

  • handler 机制

  • service 与线程的区别

  • service 中 startservice 与 bindservice 再停止时有什么区别

  • 实现一个队列的方式

  • view 的各自优势有哪些

  • view 绘制过程。

  • view 的分发机制

  • binder 源码

  • git merge 与 git rebase 的区别

  • B B-数树了解

  • Android 动画有哪些。属性动画与补间动画的区别

  • OKhttp 源码说一下

  • https 的加密流程,CA 证书怎么验证

  • http 格式,常用状态码

  • 对称加密算法,非对称加密算法

  • 手撕代码,归并两个升序数组,说一下时间复杂度

  • 腾讯


  • GC 机制;

  • RxJava 有没有了解;

  • 内存泄漏怎么排查;

  • app 的页面突然卡了一下,怎么排查?

  • ANR 怎么排查?定义是什么?

  • 使用过哪些开源库;

  • 对 OKHttp 有哪些了解?这个框架设计怎么样?

  • Databinding 有哪些了解?

  • EventBus 了解吗?

  • 安卓的注解有什么了解?

  • RelativeLayout 和 LinearLayout 怎么选?为什么?

  • 自定义 Layout 主要有那几个流程?

  • 滑动过程卡顿,刷新率太低,怎么排查?

  • 以上这些就是面试大厂时遇到的 Android 面试题目,希望能帮助到大家,最后嘱咐大家一句:“真正面试中,尤其是大公司中面试,没有固守成规的问法,唯有实力认真才能赢”。

小结

有了这么多优秀的开发工具,可以做出更高质量的 Android 应用。


当然了,“打铁还需自身硬”,想要写出优秀的代码,最重要的一点还是自身的技术水平,不然用再好的工具也不能发挥出它的全部实力。


在这里我也分享一份大佬自己收录整理的 Android 学习 PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android 开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅的精品资料。在脑图中,每个知识点专题都配有相对应的实战项目,可以有效的帮助大家掌握知识点。


总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习


如果你有需要的话,可以点击这里领取

用户头像

VX公众号:编程进阶路 2020.11.28 加入

还未添加个人简介

评论

发布
暂无评论
app启动速度优化,分享一点面试小经验,最全的BAT大厂面试题整理