B站客户端四面面经
一面
MVVM和MVP的区别
DataBinding的实现原理
Kotlin协程和线程的区别,如何实现异步调用
Activity跳转到新Activity的生命周期变化
View的渲染流程,MeasureSpec的组成
View的事件分发机制,事件拦截的两种方法
Handler的原理,MessageQueue的组成,怎么执行消息的排序
Handler内存泄漏的原因,怎么避免
Java的四种引用类型
为什么要使用内部类,使用外部类能不能完成相同的功能
HashMap的原理,为什么重写equals方法要重写hashcode方法
JVM的内存结构,方法的定义存在什么位置
JVM垃圾回收机制,什么对象可以被作为GCRoot
算法:判断二叉搜索树
二面
Http的请求过程?DNS的解析流程?
Tcp的可靠性原理?滑动窗口协议?
Java常用的设计模式?观察者模式和监听模式的区别?
HashMap的底层原理?为什么使用红黑树而不使用平衡二叉树?(平衡二叉树的调整比较消耗性能)
为什么静态内部类的单例模式是线程安全的?
为什么类的加载是线程安全的?(ClassLoader.loadClass方法加了锁)
GC什么时候会发生回收?老年代的晋升是复制还是移动?
什么是公平锁和非公平锁?读写锁的实现原理?
AQS的实现原理?加锁流程?
View的事件分发机制,先调用onTouch方法还是onTouchEvent方法?
android进程通信的方式?Binder的底层原理?
mmap的底层原理有没有了解(不了解)
为什么要用mmap而不用管道或者其他IPC方式(只需要一次复制)
Handler为什么不会死循环?
MVVM的优势和劣势(其实就是观察者模式和监听模式的区别)
sharedPrefernce的底层原理?为什么不能在应用启动的时候获取文件?
描述一下APP的启动流程?
webView的启动优化?RecyclerView的优化(不了解)
三面(技术+hr)
讲一个你熟悉的框架底层原理?使用Retrofit和使用OKHttp或者直接使用socket有什么区别?
讲一个你目前正在学习的技术?RPC协议和Restful有什么区别?
讲一次失败的经历?从中获取的教训?
对自己未来的规划?
平时如何学习?
对B站的了解?平时看的最多的视频分区?
对内卷的看法?
反问:团队氛围和加班情况?(氛围比较年轻?加班会比主站多)
新人培养机制(会组织新人小伙伴做一个创新项目,会配一个导师带领半年)