|
| 1 | +# 字节跳动 |
| 2 | + |
| 3 | +## 面经1 |
| 4 | + |
| 5 | +一面: |
| 6 | + |
| 7 | + 1.IM系统用户登录怎么实现的? |
| 8 | + |
| 9 | + 2.登录状态是怎么保存的?session是怎么获取的?sessionid是怎么识别的?整个流程是什么样的?有没有考虑分布式session? |
| 10 | + |
| 11 | + 3.Redis的数据类型 |
| 12 | + |
| 13 | + 4.Redis数据类型的底层数据结构 |
| 14 | + |
| 15 | + 5.三次握手、四次挥手 |
| 16 | + |
| 17 | + 6.Redis持久化机制 |
| 18 | + |
| 19 | + 7.MySQL的InnoDB索引数据结构 |
| 20 | + |
| 21 | + 8.哪些SQL的关键字会让索引失效 |
| 22 | + |
| 23 | + 9.队列、栈、数组、链表 |
| 24 | + |
| 25 | + 10.算法题:leetcode 92题 |
| 26 | + |
| 27 | + 二面: |
| 28 | + |
| 29 | +1.讲讲爬虫的构成 |
| 30 | + |
| 31 | +2.爬虫抓到的数据不清洗吗?不去重吗? |
| 32 | + |
| 33 | +3.对爬虫有什么更多的了解吗? |
| 34 | + |
| 35 | +4.Linux进程间通信机制 |
| 36 | + |
| 37 | +5.进程和线程的区别 |
| 38 | + |
| 39 | +6.线程私有的数据有哪些?(不是Java线程) |
| 40 | + |
| 41 | +7.讲一下堆排序,每次调整的时间复杂度?堆排序是稳定的吗?(一开始说错了,应该是不稳定的,后面面试官问稳定的定义是什么) |
| 42 | + |
| 43 | +8.哈希表的原理,怎么减小哈希表的冲突,怎么保证哈希表的并行读写 |
| 44 | + |
| 45 | +9.Kafka用过吗?说说Kafka的原理?怎么保证Kafka的高可用?Kafka怎么保证消息有序? |
| 46 | + |
| 47 | +10.项目里的set实现点赞,zset实现关注,为什么? |
| 48 | + |
| 49 | +11.zset底层实现?说一下跳表?节点的高度是多少?怎么决定节点的高度? |
| 50 | + |
| 51 | +12.https了解吗? |
| 52 | + |
| 53 | +13.中间人攻击知道吗?怎么做https的抓包?https怎么篡改? |
| 54 | + |
| 55 | +14.虚拟地址到物理地址的映射过程 |
| 56 | + |
| 57 | +15.算法题:给一个数组,建一颗最小高度的二叉树(递归和非递归) |
| 58 | + |
| 59 | + 三面: |
| 60 | + |
| 61 | +1.介绍一下做过的项目,哪些挑战性比较大,比较有难度的 |
| 62 | + |
| 63 | +2.IM项目怎么用Netty的,为什么要用Netty,长连接交互是怎样的 |
| 64 | + |
| 65 | +3.消息怎么存储,怎么发送,怎么知道消息已读和未读的 |
| 66 | + |
| 67 | +4.读了5条消息、又来5条消息,你是怎么去更新的,你的消息是幂等的吗? |
| 68 | + |
| 69 | +5.项目里怎么用ES的,ES怎么支持搜索的 |
| 70 | + |
| 71 | +6.技术论坛网站的评论是怎么存储的 |
| 72 | + |
| 73 | +7.查询评论是在DB里扫表查询吗?怎么展示所有的评论?性能如何?想要查询更快可以做哪些优化? |
| 74 | + |
| 75 | +8.结合缓存和DB的时候会出现哪些问题?要怎么解决? |
| 76 | + |
| 77 | +9.快排了解吗?介绍一下快排?时间复杂度是多少?为什么会退化成O(n^2)?单链表可以做快排吗?快排最核心的逻辑是什么?写一下单链表快排 |
| 78 | + |
| 79 | +## 面经2 |
| 80 | + |
| 81 | +一年经验,Java开发 |
| 82 | + |
| 83 | +1. 自我介绍; |
| 84 | +2. 项目介绍;(延申较浅) |
| 85 | +3. 手撕算法:NC95 最长连续子序列 |
| 86 | +4. 手撕算法:NC91 最长递增子序列 |
| 87 | +5. 线程和进程的区别?怎么创建线程?有哪些状态?有什么区别? |
| 88 | +6. Java1.8了解哪些新特性?重点讲讲HashMap和CurrentHashMap。 |
| 89 | +7. OSI七层协议和TCP/IP五层协议有什么区别?TCP/UDP在哪一层?对TCP了解多少? |
| 90 | +8. 你还有什么要问的吗? |
| 91 | + |
| 92 | +总结:开幕雷击,字节对算法还是挺看重的。 |
| 93 | + |
| 94 | +## 面经3 |
| 95 | + |
| 96 | +字节电商后端 |
| 97 | + |
| 98 | +- 进程和线程区别 |
| 99 | +- 为什么进程切换开销比线程切换开销大? |
| 100 | +- 你知道逻辑地址和物理地址么? |
| 101 | +- sql题(表T (id,name,salary,city)用SQL实现找到同时符合城市平均工资大于5000,单人工资大于10000的人的名字) |
| 102 | +- wifi属于OSI哪一层 |
| 103 | +- 三次握手四次挥手相关(细节,以及为什么三次,为什么四次) |
| 104 | +- hashmap的底层原理 |
| 105 | +- 红黑树和二叉搜索树,二叉树之间的区别 |
| 106 | +- 为什么hashmap不直接用红黑树 |
| 107 | + |
| 108 | + 算法题 |
| 109 | + |
| 110 | +1. 求从一个树的左边的叶子节点到一个树右边的叶子节点的最短路径) |
| 111 | + |
| 112 | +2. 最长回文子串 |
| 113 | +3. 给定一个数N,求(1-n)所有的可能子序列)比如给个1 返回1 给个2 返回1,2,1 2 |
| 114 | + |
| 115 | +## 面经4 |
| 116 | + |
| 117 | +1. 自我介绍 |
| 118 | +2. 项目 |
| 119 | +3. volatile原理和作用 |
| 120 | +4. 什么是指令重排序,举个例子 |
| 121 | +5. AQS原理 |
| 122 | +6. JVM内存模型 |
| 123 | +7. 类加载过程 |
| 124 | +8. 双亲委派机制 |
| 125 | +9. 介绍代理模式 |
| 126 | +10. redis数据结构 |
| 127 | +11. HTTP状态码,header |
| 128 | +12. MVCC原理 |
| 129 | +13. 算法: |
| 130 | + |
| 131 | + - 买股票无限次 |
| 132 | + - 买股票只买一次 |
| 133 | + - 买股票有手续费 |
| 134 | + - 买股票最多买两次 |
| 135 | + |
| 136 | +## 面经5 |
| 137 | + |
| 138 | +1. 自我介绍 |
| 139 | +2. 业务部分: |
| 140 | + |
| 141 | + - 2.1 堆和栈的区别 |
| 142 | + - 2.2 调用一个函数在堆中的过程 |
| 143 | + - 2.3 密码学 中间人攻击、RSA、DSA密码的差别、加密过程,私钥加密公钥加密,数字签名的过程(跟本人网络空间安全背景有关) |
| 144 | + - 2.4 彩虹表、 kerberos、ECC(椭圆曲线加密) |
| 145 | + |
| 146 | +3. 算法题: |
| 147 | + |
| 148 | + 4. 一个无序数组,求其topK |
| 149 | + |
| 150 | + 5. 时段统计。动态规划。 |
| 151 | + |
| 152 | +## 面经6 |
| 153 | + |
| 154 | +1. 自我介绍 |
| 155 | +2. 实习介绍:你在腾讯干了啥 |
| 156 | +3. 实习项目介绍:这个项目(深挖) |
| 157 | +4. 项目为啥立项,你做了什么模块 |
| 158 | +5. 你的日志模块是怎么设计的,怎么开发的 |
| 159 | +6. 你的token怎么做的,怎么保证唯一 |
| 160 | +7. 你开发的业务模块举个例子(给他举了),你是怎么设计数据表的,具体用了哪些中间件 |
| 161 | +8. mysql中inoodb的索引有哪些种类 |
| 162 | +9. B+树索引具体是怎么实现的 |
| 163 | +10. B树与B+树的区别 |
| 164 | +11. 为什么B+树的中间节点不储存数据? |
| 165 | +12. 给一个索引,在有的查询过程中他没有走索引查询,说说你能想到的原因 |
| 166 | +13. 红黑树了解过么? |
| 167 | +14. 用过redis么?(妈耶能别聊数据库了么) |
| 168 | +15. 你提到了kafka是吧,来聊一哈 |
| 169 | +16. 聊一下你对git的理解 |
| 170 | +17. git rebase与git merge的区别 |
| 171 | +18. 聊一下你对工作流的理解 |
| 172 | + |
| 173 | +手撕算法: |
| 174 | + |
| 175 | +给四个整数,判断是否只通过四则运算加()优先级能否运算出24 |
| 176 | + |
| 177 | +## 面经7 |
| 178 | + |
| 179 | +一面: |
| 180 | + |
| 181 | +1. 自我介绍 |
| 182 | +2. JAVA SDK起到的作用 |
| 183 | +3. 项目 |
| 184 | +4. 数据流(项目) |
| 185 | +5. 排序(介绍下你知道的排序和复杂度) |
| 186 | +6. Arrays.sort底层的排序算法(有三种策略) |
| 187 | +7. 堆排序基本思路 |
| 188 | +8. linux,操作系统的开机流程(这题我不会。) |
| 189 | +9. 进程和线程的区别 |
| 190 | +10. 进程切换会发生什么 |
| 191 | +11. 进程调度算法有哪些 |
| 192 | +12. TCP、udp区别 |
| 193 | +13. java锁,关键字区别 |
| 194 | +14. 公平锁、非公平锁解释一下 |
| 195 | + |
| 196 | +二面: |
| 197 | + |
| 198 | +1. 算法题:由前序遍历中序遍历重建子树; |
| 199 | +2. 为什么静态类中不能使用非静态类(从类加载过程回答); |
| 200 | +3. java类加载过程; |
| 201 | + 3.1. 加载阶段中,为什么要有自定义的类加载器; |
| 202 | + 3.2. 双亲委派原则的机制; |
| 203 | +4. HashMap数据结构; |
| 204 | + 4.1. 为什么小于6是链表,大于8变成红黑树; |
| 205 | + 4.2. HashMap扩容机制; |
| 206 | + 4.3. HashMap是否线程安全,例子; |
| 207 | + 4.4. ConcurrentHashMap和HashTable的区别; |
| 208 | + 4.5. ConcurrentHashMap如何保证高效,为什么是线程安全,为什么比HashTable优秀,分段锁机制; |
| 209 | + 4.6. CAS能保证线程安全吗(我回答能,面试官说不能。。估计想考ABA问题),volatile关键字能保证线程安全吗; |
| 210 | +5. 随机数求根,比如根号二的值。(二分查询) |
| 211 | +6. 有n个筐,筐固定,每个筐内有不同数目的苹果,移动苹果,使每个筐苹果平均(移动的代价:1~2算1步,1~3算2步)使步数最小; |
| 212 | + |
| 213 | +三面: |
| 214 | + |
| 215 | +1. 自我介绍 |
| 216 | +2. 解决什么问题,做了些什么?(项目) |
| 217 | +3. 多个接口,有失败怎么办(项目) |
| 218 | +4. redis分布式锁怎么实现 |
| 219 | +5. 时间过期怎么办 |
| 220 | +6. ArrayList怎么扩容,时间复杂度O(n)?插尾部O(1),平均是多少,答案O(2)需要考虑扩容,小伙伴们可以自己推一下。 |
| 221 | +7. HashMap底层原理 |
| 222 | +8. mysql索引什么原理、B+树 |
| 223 | +9. mysql和redis区别(讲一下各自优缺点) |
| 224 | +10. 为什么不用redis存数据? |
| 225 | +11. 算法:LRU缓存(),先讲一下再写 |
| 226 | + |
| 227 | +## 面经8 |
| 228 | + |
| 229 | +抖音电商 |
| 230 | + |
| 231 | +1. 自我介绍 |
| 232 | +2. 讲一下HashMap的put方法 |
| 233 | +3. 讲一下HashMap的扩容过程 |
| 234 | +4. 讲一下你自定义协议怎么解决粘包问题的? |
| 235 | +5. 算法题:LeetCode 二叉树根节点到子节点的路径和 |
| 236 | +6. mysql的索引结构 |
| 237 | +7. 为什么用B+树呢? |
| 238 | +8. having的作用 |
| 239 | +9. 聚簇索引、非聚簇索引 |
| 240 | +10. 聚簇索引比非聚簇索引的优点 |
| 241 | +11. mysql的四个隔离级别,应用场景 |
| 242 | +12. 如何在可重复读隔离级别解决幻读问题 |
| 243 | +13. dubbo的负载均衡策略 |
| 244 | +14. java的动态代理 |
| 245 | +15. Spring哪里用到了动态代理? |
| 246 | +16. CGlib动态代理说一下 |
| 247 | +17. MQ如何保证消息不会丢失 |
| 248 | + |
| 249 | +## 面经9 |
| 250 | + |
| 251 | +一面 |
| 252 | + |
| 253 | +- 怎么理解微服务 |
| 254 | +- 微服务的缺点 |
| 255 | +- 微服务之间怎么做负载均衡 |
| 256 | +- Oauth2基本流程、原理 |
| 257 | +- 登录模块是怎么做的 |
| 258 | +- cookie和session的区别 |
| 259 | +- 购物车为什么用Redis存,是永久存储吗 |
| 260 | +- 为什么购物车多读多写 |
| 261 | +- Redis怎样清除过期key,有哪些策略 |
| 262 | +- lru是怎样的过程 |
| 263 | +- Redis字典底层怎么实现的 |
| 264 | +- hashtable是怎样实现的 |
| 265 | +- ziplist怎样实现的 |
| 266 | +- 普通的哈希表怎样实现的 |
| 267 | +- 哈希表怎么扩容 |
| 268 | +- 使用MQ的好处 |
| 269 | +- MQ解耦和微服务解耦的区别 |
| 270 | +- 算法:最长回文子串 |
| 271 | +- https建立连接的过程(SSL/TLS协商的过程) |
| 272 | +- 对称加密和非对称加密的优缺点 |
| 273 | +- 为什么要区分内核态和用户态 |
| 274 | +- 什么时候从用户态切换到内核态 |
| 275 | +- 你编程的情况下,系统调用什么时候会发生 |
| 276 | + 反问:业务,开发语言,表现,对应届生的要求(重点是基础和算法) |
| 277 | + 面试体验不错,但是项目挖的有点深 |
| 278 | + |
| 279 | +2面 |
| 280 | + |
| 281 | +- 手写单例模式 |
| 282 | +- volatile什么作用 |
| 283 | +- 多线程的几种实现方式 |
| 284 | +- 四种方式的区别 |
| 285 | +- 锁用过哪些 |
| 286 | +- 排它锁什么意思 |
| 287 | +- 自旋锁什么意思 |
| 288 | +- CAS相关 |
| 289 | +- MySQL可以不指定主键建表吗,背后的逻辑是什么 |
| 290 | +- 聚簇索引和其他索引有什么区别 |
| 291 | +- 建唯一索引,插入数据时是怎么处理的 |
| 292 | +- 重复插入会报错,是怎么处理的 |
| 293 | +- 不同事物隔离级别的实现 |
| 294 | +- 以前没有实习过吗 |
| 295 | +- lc40 组合总和II |
| 296 | + 反问:部门怎样培养新人,刚进来做什么(学基础,语言和中间件,做demo),大概多久做需求(1周到1个月不等,看学习情况),框架和中间件以开源的为主还是以自研的为主(自研的) |
| 297 | + |
| 298 | +3面 |
| 299 | + |
| 300 | +- 有在实习吗 |
| 301 | +- 面试通过后可以实习吗 |
| 302 | +- 做项目的过程中遇到过什么问题 |
| 303 | +- 内存泄露具体发生在哪 |
| 304 | +- 什么情况下会出现多线程访问 |
| 305 | +- 缓存穿透,怎么解决 (好像一紧张说成缓存击穿了,面试复盘的时候才发现。。。) |
| 306 | +- 缓存雪崩,怎么解决 |
| 307 | +- 缓存与数据库数据一致性 |
| 308 | +- 超卖问题怎么解决的 |
| 309 | +- 集群环境下,Redis内存里的数据怎么保证一致 |
| 310 | +- 算法:给定一个字符数组,和一个字符串,在字符串里找到任意一个完全由字符数组组成的子串,字符顺序无所谓(滑动窗口) |
| 311 | + |
| 312 | + |
| 313 | + |
| 314 | +**最后给大家分享一份精心整理的大厂高频面试题PDF,需要的小伙伴可以自行下载:** |
| 315 | + |
| 316 | +[大厂面试手册](http://mp.weixin.qq.com/s?__biz=Mzg2OTY1NzY0MQ==&mid=2247485445&idx=1&sn=1c6e224b9bb3da457f5ee03894493dbc&chksm=ce98f543f9ef7c55325e3bf336607a370935a6c78dbb68cf86e59f5d68f4c51d175365a189f8#rd) |
0 commit comments