|
| 1 | +--- |
| 2 | +面试记录 |
| 3 | +--- |
| 4 | + |
| 5 | +#### 比心一面 |
| 6 | + |
| 7 | +1. Gradle 自定义了哪些 Task? |
| 8 | +2. 编译优化做过哪些? |
| 9 | +3. HashMap 1.7/1.8 的变化 |
| 10 | +4. ConcurrentHashMap |
| 11 | +5. Java 泛型擦除 |
| 12 | +6. 项目中的性能优化 |
| 13 | +7. Activity、Window、View 三者的关系 |
| 14 | +8. 模块化/插件化 |
| 15 | +9. 热修复的原理 |
| 16 | +10. 项目中加载一张大图 |
| 17 | +11. SurfaceView |
| 18 | +12. Kotlin 比 Java 好哪些? |
| 19 | +13. 自定义 LinearLayout 怎么做? |
| 20 | +14. WebView 加载优化? |
| 21 | + |
| 22 | +#### 比心二面 |
| 23 | + |
| 24 | +聊项目。 |
| 25 | + |
| 26 | +#### 猫眼一面 |
| 27 | + |
| 28 | +1. 手百做了哪些东西,遇到哪些问题 |
| 29 | +2. Android 端的通信机制(进程间通信、线程间通信方式) |
| 30 | +3. ANR 的处理方式 |
| 31 | + |
| 32 | +#### 猫眼二面 |
| 33 | + |
| 34 | +纯聊天〜 |
| 35 | + |
| 36 | +#### 哔哩哔哩一面 |
| 37 | + |
| 38 | +大多和个人项目有关,八股文基本上没咋问。 |
| 39 | + |
| 40 | +1. 项目相关 |
| 41 | +2. 类加载器 |
| 42 | +3. 大图加载 |
| 43 | +4. //... 还有一些忘了 |
| 44 | + |
| 45 | +#### 哔哩哔哩二面 |
| 46 | + |
| 47 | +1. 项目相关 |
| 48 | +2. Choreagrapher 相关 |
| 49 | +2. View 绘制流程 |
| 50 | +2. Window、Surface、View 的关系 |
| 51 | +2. 硬件加速 |
| 52 | +2. requestLayout、invalidate 的区别 |
| 53 | +2. 事件分发、滑动冲突的处理 |
| 54 | +2. 在 Activity 中获取 View 的宽高的方式,post 后为啥可以获取到 View 的宽高了呢 |
| 55 | +2. LeakCanary 的实现原理 |
| 56 | +2. Retrofit 的实现原理(不会 |
| 57 | +2. 网络的强弱缓存(强缓存和协商缓存) |
| 58 | +2. Object 里面的一些方法 |
| 59 | +2. 获取 Class 对象的几种方法 |
| 60 | +2. 异常的理解,异常类之间的继承关系 |
| 61 | + |
| 62 | +#### 哔哩哔哩三面 |
| 63 | + |
| 64 | +1. 从零做一个业务,大致的流程是咋样的(背景、目标用户、业务指标、精细化运营) |
| 65 | +2. JVM 内存模型、内存区域、GC 算法、JVM 调参 |
| 66 | +3. 系统或者厂商魔改导致的崩溃,该如何处理 |
| 67 | +4. Dialog dismiss 加一个打点,怎么做? |
| 68 | + |
| 69 | +#### 哔哩哔哩四面 |
| 70 | + |
| 71 | +1. 聊项目聊业务 |
| 72 | +2. 搜索框输入,联想功能是怎么做的、网络请求是怎么对得上的 |
| 73 | +3. 谈谈自己的优势 |
| 74 | +4. 对 Kotlin 的理解 |
| 75 | + |
| 76 | +#### 蔚来一面 |
| 77 | + |
| 78 | +1. 项目相关 |
| 79 | +2. Activity 中的三种动画,优缺点、适用场景 |
| 80 | +3. 泛型的理解、桥接方法 |
| 81 | +4. JVM 内存布局、GC |
| 82 | +5. HashMap、hashCode 和 equals 方法 |
| 83 | +6. 原子类的实现原理 |
| 84 | +7. Java 锁升级过程 |
| 85 | +8. volatile 实现原理、内存屏障 |
| 86 | +9. JVM 类加载过程、\<clinit> 方法 |
| 87 | +10. View 渲染流程 |
| 88 | +11. Activity 的启动流程 |
| 89 | +12. Activity onCreate 里面获取 View 的宽高 |
| 90 | +13. Handler、IdleHandler、Looper 为啥没有导致卡顿 |
| 91 | +14. 卡顿处理、监控 |
| 92 | +15. App 架构、组件化、组件间通信 |
| 93 | +16. Kotlin 里的空安全怎么实现的 |
| 94 | +17. Gradle Plugin |
| 95 | +18. 内存优化、内存泄露、LeakCanary |
| 96 | +19. 图片管理 |
| 97 | +20. 项目中印象比较深刻的地方 |
| 98 | + |
| 99 | +#### 蔚来二面 |
| 100 | + |
| 101 | +1. 项目相关 |
| 102 | +2. 卡顿 |
| 103 | +3. 崩溃、ANR |
| 104 | +4. Gradle 构建优化 |
| 105 | +5. MVC、MVP 的理解 |
| 106 | + |
| 107 | +#### 蔚来三面 |
| 108 | + |
| 109 | +1. 项目相关 |
| 110 | + |
| 111 | +#### 快手一面 |
| 112 | + |
| 113 | +1. 项目相关 |
| 114 | +2. Gradle Plugin |
| 115 | +3. 事件分发 |
| 116 | +4. View 设置 gone 的流程、requestLayout、invalidate |
| 117 | +5. 帧率的检测 |
| 118 | +6. 跨 Activity 传 Bitmap、传大 Bitmap 怎么做 |
| 119 | +7. 线程池的参数 |
| 120 | +8. Binder |
| 121 | +9. Task 依赖关系,怎么判断存在循环依赖 |
| 122 | + |
| 123 | +#### 快手二面 |
| 124 | + |
| 125 | +1. 项目相关 |
| 126 | +2. MotionEvent Action_CANCEL 怎么触发的? |
| 127 | +3. TCP 的慢启动 |
| 128 | +4. HTTP 的协议、请求头里面有啥、keep-alive 的理解? |
| 129 | +5. 视频聊天会用到 HTTP 的哪些特性,数据流怎么传递到对端的? |
| 130 | +6. Android 签名(从我的博客里面岁随便挑的一篇) |
| 131 | +7. 大图的加载 |
| 132 | + |
| 133 | +#### 快手三面 |
| 134 | + |
| 135 | +1. 项目相关 |
| 136 | +2. 快排的思路 |
| 137 | +3. 树的广度优先遍历和深度优先遍历 |
| 138 | +4. 图的遍历 |
| 139 | +5. 完全二叉树插入一个节点继续保持完全二叉树的状态 |
| 140 | + |
| 141 | +#### 字节鸡架一面 |
| 142 | + |
| 143 | +1. 项目相关 |
| 144 | +2. 内存泄露、LeakCanary、Android Profile |
| 145 | +3. FPS 的检测、卡顿优化 |
| 146 | +4. 启动优化 |
| 147 | +5. 遇到哪些 ANR 问题、ANR 监控、ANR 弹窗是哪个进程弹出来的呢?SharedPreferences 为啥会导致 ANR?那怎么去解决呢? |
| 148 | +6. Java 反射的实现原理 |
| 149 | +7. 线程池原理、线程池设置线程的优先级 |
| 150 | +8. synchronized 的实现原理 |
| 151 | +9. JVM 对象内存布局 |
| 152 | +10. View 绘制流程 |
| 153 | +11. Binder 机制 |
| 154 | +12. 插件化原理、插件和宿主的有重名类的怎么办?插件和宿主的有重名的 so 库怎么办? |
| 155 | +13. 二叉树的路径总和 || |
| 156 | + |
| 157 | +#### 字节鸡架二面 |
| 158 | + |
| 159 | +1. 热修复的实现原理 |
| 160 | +2. 包体积优化、so 库的优化、代码层面的优化、Proguard 了解哪些参数配置 |
| 161 | +3. Kotlin 的扩展方法,在字节码层面是怎么实现的? |
| 162 | +4. SP ANR 的原因?commit 和 apply 都会存在 ANR 嘛?异步 commit 会有啥问题?SP 写入的时候怎么保证不会有脏数据?怎么做到 xml 增量写入呢?提前写? |
| 163 | +5. Gradle 插件、ASM 用过吗?方法耗时怎么做的?如果抛异常了怎么样?系统方法的耗时怎么插桩,比如 context.getSP? |
| 164 | +6. 崩溃的解决?遇到哪些崩溃比较难解决的? |
| 165 | +7. synchronized 怎么使用?实现原理?死锁是怎么样的场景? |
| 166 | +8. 两个对象互相引用,会不会被回收?GCRoot 有哪些东西?GC 的时候方法没有执行完,那些虚拟机栈里面的局部变量表里面的对象算不算 GCRoot 对象? |
| 167 | +9. 不用 CountdownLatch 怎么来做线程同步?一个线程等待三个线程执行完成怎么做?优化空间? |
| 168 | +10. 两个线程交替打印奇偶数 |
| 169 | + |
| 170 | +#### 字节鸡架三面 |
| 171 | + |
| 172 | +1. 项目相关,自己做的项目的核心竞争力是什么? |
| 173 | +2. 矢量图 SVG 是怎么渲染的? |
| 174 | +3. 渲染流程、View 是怎么会绘制到屏幕上、硬件加速怎么实现的 |
| 175 | +4. 绘制 View 倒影的框架,给一个 View 返回一个 View |
| 176 | +5. View Inflate 时间比较长,怎么去优化?过度绘制怎么监控,确定是哪些控件导致了过度绘制?x2c 原理? |
| 177 | +6. 多语言加载,用户选择对应的语言去下载然后更改 app 语言。 |
| 178 | +7. 把本地的图片动态加载,怎么去设计?怎么确定哪些图片能做离线化哪些不行呢? |
| 179 | +8. 页面的动态化框架怎么去做?支持不同事件处理的动态化框架怎么做? |
| 180 | +9. 编译优化做了哪些东西?增量编译有哪些优化手段? |
| 181 | +10. OOM 怎么去优化、Handler 内存泄漏引用链是怎么样的,从哪里到哪里?内存抖动怎么监控? |
| 182 | +11. 图片的不同格式(png、jpeg)会影响 Bitmap 内存嘛? |
| 183 | +12. 有遇到比较难的 ANR 或者崩溃嘛? |
| 184 | +13. nativePoolOnce 这种 ANR 遇到过嘛?有啥解决思路。 |
| 185 | +14. ViewGroup 遍历 View 时候发现数组越界,崩溃堆栈是系统堆栈,遇到这种问题怎么解决? |
| 186 | +15. 单链表快排 |
| 187 | + |
| 188 | +#### 字节飞书一面 |
| 189 | + |
| 190 | +1. 项目相关 |
| 191 | +2. 硬件加速的实现原理 |
| 192 | +3. View 三种动画的区别 |
| 193 | +4. View 绘制流程 |
| 194 | +5. Vsync 信号、Choreographer、FPS 的计算 |
| 195 | +6. InputManagerService |
| 196 | +7. 泛型、协变和逆变 |
| 197 | +8. 类加载机制、目的是什么、什么场景会导致类加载 |
| 198 | +9. 三个线程交替打印数字 |
| 199 | +10. 二叉树的右视图 |
| 200 | + |
| 201 | +#### 字节飞书二面 |
| 202 | + |
| 203 | +1. 项目相关 |
| 204 | +2. 崩溃的处理、Native 崩溃的捕获 |
| 205 | +3. 热修复 |
| 206 | +4. ViewModel |
| 207 | +5. IOC |
| 208 | +6. 隐私 API 的检测 |
| 209 | + |
| 210 | +#### 字节 TikTok 一面 |
| 211 | + |
| 212 | +1. 项目相关 |
| 213 | +2. 自定义 ViewPager 流程 |
| 214 | +3. 事件分发 |
| 215 | +4. 获取 View 的宽高,为啥 post 后就可以获取到宽高了 |
| 216 | +5. 启动优化,ASM 插桩 |
| 217 | +6. 二叉搜索树和双向链表 |
| 218 | + |
| 219 | +#### 字节 TikTok 二面 |
| 220 | + |
| 221 | +算法题: |
| 222 | + |
| 223 | +``` |
| 224 | +求最长数对链的长度 |
| 225 | + |
| 226 | +题目描述 |
| 227 | +给出 n 个数对,数对的第二个数字一定比第一个数字大 |
| 228 | +对于(a, b) (c,d)两个数对,当 b<c 时,认为可形成一个数对链,记为 (a, b) -> (c,d) |
| 229 | + |
| 230 | +输入一个数对的集合,请输出能够形成的最长数对链的长度 |
| 231 | + |
| 232 | + |
| 233 | +例如: |
| 234 | +输入:(1,2) (3,10) (4,7) (8, 10) (11,12) |
| 235 | +形成:(1,2) -> (4, 7) ->(8, 10)-> (11,12) |
| 236 | +输出:4 |
| 237 | + |
| 238 | +``` |
| 239 | + |
0 commit comments