字节四面面经1.linux有哪些ipc方式 为什么选择了binder binder驱动 binder通信协议 Linux VFS 2.mmap什么原理2.service manager的句柄如何注册 如何被获取3.system server了解的都有哪些服务 如何定位一个服务 4.Handler机制 epoll 机制 哪些fd可以被epoll注册 如何理解Android是一个消息驱动的系统 5.rxjava和协程是如何实现线程切换的 协程挂起如何做到的 retrofit如何支持 suspend接口 okHttp如何支持HTTP/2.0的 6. LeakCanary什么原理 工作流程 内存优化 如果监测大图 如何避免OOM7.渲染优化途径 为什么flutter 和webview的cpu逻辑不在主线程却会引起主线程卡顿 RenderThread做哪些事情 surfaceFlinger 的mvc模式 Vsync信号为了解决什么问题 Choreographer的角色8.mvp mvvm mvi架构有什么特点 livedata和flow框架的区别9.如何测量一个activity的启动耗时 hook Instrumentation有没有遇到问题 10.gradle生命周期 gradle插件 Transform原理 AGP是什么 consumerProguardFiles和proguardFiles区别 什么时候 如何配置混淆规则 gradle7 有什么变化 什么叫复合构建