app 启动速度优化,分享一点面试小经验,最全的 BAT 大厂面试题整理
前言
最近我开始偷偷投简历了。与老东家的合同快要到期,想知道自己的斤两,续签合同也好有个底,顺便悄悄看看新的工作机会。虽然市场环境不好,但我们身在涨工资靠跳槽的行业没办法。
由于工作了 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 开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅的精品资料。在脑图中,每个知识点专题都配有相对应的实战项目,可以有效的帮助大家掌握知识点。
总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习
如果你有需要的话,可以点击这里领取
评论