个人收集,平常看到一些就放进来
Android:
前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回调方法。
Activity的生命周期和启动模式
activity启动模式ANR的原因
ANR 出现的场景以及解决方案四大组件
Service的开启方式
Activity与Service通信的方式
Activity之间的通信方式
ListView的优化
RecycleView的使用,原理,RecycleView优化
RecyclerView怎么实现的item缓存,跟ListView有什么区别
进程和线程的概念,Android里怎样实现多线程?
App启动崩溃异常捕捉
事件传递机制的介绍
Handler的原理和使用 Handler是怎么和线程绑定的
Handler的线程切换与事件分发为什么Looper.loop()要设计成死循环
手写生产者/消费者模式
手写双检查单例模式,各个步骤有什么区别
HashMap和HashTable区别,HashMap原理和实现,hash()的算法
Android的IPC机制(Binder)
什么是内存泄漏,Android里有哪些内存泄漏的场景,原因是什么
怎么实现LRU缓存
LRU缓存机制
- 怎么解决用户高频点击打开新Activity导致的多实例问题(Activity启动模式)
算法:
1.二叉树,给出根节点和目标节点,找出从根节点到目标节点的路径
- 一个无序,不重复数组,输出N个元素,使得N个元素的和相加为M,给出时间复杂度、空间复杂度。手写算法
- 数据结构中堆的概念,堆排序
- 如何用两个队列(FIFO)实现栈(FILO)
- 了解常见排序算法吗,手写一下快排
- 怎么判断两个无环单链表是否相交
- 算法题,反转数组
- 算法题,链表求和
- 算法,删除数组中的重复元素
JAVA:
死锁的概念,怎么避免死锁
ReentrantLock的内部实现
3.synchronized跟ReentranLock有什么区别?
4.synchronized与ReentranLock发生异常的场景.
ReentrantLock 、synchronized和volatile
关于volatile与synchronized集合的接口和具体实现类,介绍
TreeMap具体实现
逻辑地址与物理地址,为什么使用逻辑地址
Java的几种内部类,区别是什么
String的hashCode()和Object的hashCode()
Java里泛型的实现
Java里加锁的方式,synchornized关键字的原理,悲观锁和乐观锁都有哪些实现
死锁的条件和解决方法,讲讲银行家算法
泛型、泛型擦除、通配符相关的东西
final、finally、finalize 的区别
接口、抽象类的区别
Java 四大引用
StringBuilder
Exception 和 Error
IO 、 NIO、 OKIO
ArrayList、LinkedList
HashMap 、HashTable、HashSet
string,equals,==有什么区别
JVM
- 内存区域
- 内存模型
- 内存分配回收策略
- Java 对象的创建、内存布局和访问定位
- GC过程,GC的算法都有哪些
垃圾收集算法 - 类加载机制
- 类加双亲委派模型机制
- 编译器优化
- 方法内联
- JVM 内存结构
- JVM 是如何执行方法调用的?
- JVM 是如何实现反射的?
- JVM 是如何实现泛型的?
- JVM 是如何实现异常的?
- JVM 是如何实现注解的?
- 逃逸分析
- 虚拟内存和物理内存的概念和关系,内存分页的调度算法
架构与三方库:
模式MVP,MVC介绍
RxJava的功能与原理实现
用到的一些开源框架,介绍一个看过源码的,内部实现过程。
网络:
- TCP的三次握手四次挥手,为什么要四次挥手
- TCP的流量控制算法(滑动窗口),拥塞控制算法
tcp的拥塞控制和流量控制 - HTTP1.0与2.0的区别 HTTPS 和 HTTP 的区别,HTTPS 2.0 3.0?
- 网络框架对比和源码分析
- 自己去设计网络请求框架,怎么做?
- 网络请求缓存处理,okhttp如何处理网络缓存的
- 从网络加载一个10M的图片,说下注意事项
- TCP与UDP的区别
- TCP与UDP的应用
- HTTP协议
- HTTP报文结构
项目中的Webview与native通信
项目中对WebView的功能进行了怎样的增强
Activity生命周期
AsyncTask内存泄露
dispatchTouchEvent,onInterceptEvent,onTouchEvent顺序,关系
onMeasure,onLayout,onDraw关系
说说你对协程的理解
协程怎么取消
说说MVP与MVVM的区别
快手二面
1.算法题,二叉树的最大深度
2.如果android端和IOS端调一个接口,一个通了一个没通,你会如何解决
3.如果android端和IOS端调一个接口,一个比较慢,一个比较快,有什么思路
4.ARouter的原理是什么?如果不用ARouter,你会怎么去解藕。接口?设计接口有什么需要注意的?
5.h5与native交互做过什么工作?
6.登陆功能,登陆成功然后跳转到一个新Activity,中间涉及什么?从事件传递,网络请求,AMS交互角度分析
7.AMS交互调用生命周期是顺序的吗?
8.binder进程间通信可以调用原进程方法吗?
9.mvp与mvvm有什么区别?
10.token放在本地如何保存?如何加密比较好?
快手三面
1.viewModel的原理,为什么可以在Activity销毁后保存数据
2.mvvm双向数据绑定的原理是怎样的?ViewModel
3.说说你们项目中的难点是怎样的?
4.伪代码实现一个长按事件
5.实现一个下载功能的接口
1.你们的项目中有什么难点?
2.你们项目的稳定性如何?有做过什么稳定性优化的工作?
3.WebView性能优化做过什么工作?
4.AIDL in out oneWay代表什么意思?
5.线程池了解多少?拒绝策略有几种,为什么有newSingleThread
6.跨进程通信了解多少?管道了解吗?
7.协程介绍一下,讲一个协程的scope与context,协程的+号代表什么
8.Handler休眠是怎样的?epoll的原理是什么?如何实现延时消息,如果移除一个延时消息会解除休眠吗?
9.算法斐波那契台阶
10.手写生产者消息者模型
11.IdleHandler应用场景
字节跳动2面
1.自定义圆角图片
2.自定义LinearLayout,怎么测量子View宽高
3.setFactory和setFactory2有什么区别?
4.插件化换肤方案
5.插件化的原理,startActivity hook了哪个方法
6.手势操作ActionCancel后怎么取消
7.怎么优化xml inflate的时间,涉及IO与反射。了解compose吗?
8.算法题:二叉树的每一层最左边节点
9.RecyclerView 缓存结构,RecyclerView预取,RecyclerView局部刷新
11.setOnTouchListener,onClickeListener和onTouchEvent的关系
- 线程池怎么实现,阻塞队列原理?
Fragment初始化参数调用哪个方法?
Fragment懒加载怎么实现?
java8对hashmap的优化
hashmap和hashset区别,hash怎么散列的
HashMap的哈希散列实现,线程安全吗,为什么?
OkHttp原理,怎么把参数组装的
1.启动 app 黑白屏优化
2.稳定——内存优化
3.流畅——卡顿优化
4.节省——耗电优化
5.安装包——APK 瘦身
6.冷启动与热启动
7.内存泄漏的场景和解决办法
9.webview 优化
10.如何避免 OOM?
1.Android 系统架构
2.View 的事件分发机制?滑动冲突怎么解决?
3.View 的绘制流程?
4.跨进程通信
5.Android 系统启动流程是什么?
6.启动一个程序,可以主界面点击图标进入,也可 以从一个程序中 跳转过去,二者有什么区别?
7.AMS家族重要术语解释
1.网络底层框架:OkHttp 实现原理
2.网络封装框架:Retrofifit 实现原理
3.响应式编程框架:RxJava 实现原理
4.图片加载框架:Glide 实现原理
5.事件总线框架:EventBus 实现原理
6.内存泄漏检测框架:LeakCanary 实现原理
7.依赖注入框架:ButterKnife 实现原理
8.依赖全局管理框架:Dagger2 实现原理
9.数据库框架:GreenDao 实现原理
1.从原理分析Kotlin的延迟初始化: lateinit var和by lazy
2.使用Kotlin Reified 让泛型更简单安全
3.Kotlin里的Extension Functions实现原理分析
4.Kotlin系列之顶层函数和属性
5.Kotlin 兼容 Java 遇到的最大的 “坑”
6.Kotlin 的协程用力瞥一眼
7.Kotlin 协程「挂起」的本质
8.到底什么是「非阻塞式」挂起?协程真的更轻量级吗?
9.资源混淆是如何影响到Kotlin协程的
10.Kotlin Coroutines(协程) 完全解析
11.破解 Kotlin 协程
1.谈谈你对Android设计模式的理解
2.MVC MVP MVVM原理和区别
3.你所知道的设计模式有哪些?
4.项目中常用的设计模式
5.手写生产者/消费者模式
6.写出观察者模式的代码
7.适配器模式,装饰者模式,外观模式的异同?
8.用到的一些开源框架,介绍一个看过源码的,内部实现过程。
9.谈谈对RxJava的理解
10.Rxjava发送事件步骤
11.RxJava的作用,与平时使用的异步操作来比的优缺点
12.说说EventBus作用,实现方式,代替EventBus的方式
13.从0设计一款App整体架构,如何去做?
14.说一款你认为当前比较火的应用并设计(比如:直播APP,P2P金融,小视频等)
15.谈谈对java状态机理解
16.Fragment如果在Adapter中使用应该如何解耦?
17.Binder机制及底层实现
1.对热修复和插件化的理解
2.插件化原理分析
3.模块化实现(好处,原因)
4.热修复、插件化
5.项目组件化的理解
6.描述清点击 Android Studio 的 build 按钮后发生了什么
1、图片库对比
3、图片加载原理
4、自己去实现图片库,怎么做?
5、Glide源码解析
6、Glide使用什么缓存?
7、Glide内存缓存如何控制大小?