本文最后更新于 2 分钟前,文中所描述的信息可能已发生改变。
字节跳动
详情
2.13 字节飞书一面 算法题:字母大小写全排列 ************************************* 一眼回溯很快做出来了, 先讲回溯思路,然后花 5 分钟做出来了 基本上是根据项目用到的内容
- 问了我是考研还是保研的?答:考研的, 内容是 408
- JVM 层次 一个 new Object 从创建到 GC 的完整过程(没回答上来。。没复习到 简历没更新、旧简历还在后续以更新, 就只回答了 对象的创建是先 1 分配内存、 2 初始化对象、3 把对象指向内存)
- kafka 的延迟队列自己如何实现? 答:Java 本身用延迟阻塞队列来接数据,面试官引导这样会造成每个机器都需要部署, 如果是分布式环境是不是需要分布式延迟队列, 我说是
- 有没有了解过 RockedMQ 是如何做延迟队列的?答:学习过程中只清楚 RocketMQ 和 Kafka 底层数据结构和吞吐量高的原因, 还没了解到 RocketMQ 比 Kafka 新增的应用是怎么实现的。
- 消息队列如果发生消息堆积怎么办? 答:从生产端、消费端、队列本身入手, 消费端增加消费者, 生产端做一个回调缓冲(如果太多减少消息生产), 队列进行消息压缩(我具体是说很多消息的 id 等属性重复在业务上可以接受压缩成一条)
- 场景:如果增加了消费者,性能、吞吐量还是很低是为什么?答:排查的方式, 如果还是没有提高, 可能是消费组里有空闲消费者没有用到, 增加 partition, 重平衡(面试官说重平衡不能增加 partition)
- kafka 怎么保证消息消费的有序性,patition 内 offset 可以顺序消费 , Topic 内也是有序的(面试官说这个不对 Topic 内不是有序的,他说的应该意思和我有些差别)
- Mysql , innodb 底层数据结构 答 B+, 分析了底层数据页、块的链接结构, 和 B+为什么作为 Innodb 结构的原因(通过和其他数据结构进行比较)
- Mysql 锁, select 会加锁吗?什么情况下会加锁? 答: select 不会加锁, RC、RR 隔离级别下读的是 ReadView, 通过 MVCC 机制来构建的, 讲了下 MVCC 是通过 undolog 和 事务 id 算法 进行实现的, 在可见、不可见、 活跃区可以判断要查哪些数据, RC 下是每个 select 前创建一个 ReadView, RR 下是第一个 Select 就创建 ReadView。加锁的情况 是设定了 select 。。。 for update 或者 in shard mode
- 项目数据量多少? 答每天 10w+, 一年 3kw。
- 项目中 Mysql 索引失效的场景, 尤其是 Like, 在你们的数据量大情况, 有什么办法实现模糊搜索高性能? 答: like 是会造成性能问题, 面试官引导我大数据情况下应该怎么做到模糊搜索, 我回到了 ES 是可以实现,面试官追问怎么实现的?没回答上(后续看是倒排索引), 最后回答的是维护一个前缀树, 但是第一次查询也会很慢
- redis2hive、申请 Redis 集群是什么? 答:杂活, 完成自测,hive2redis 不合理, 之前的简历没更新。。。。。
- 项目查询怎么实现的? 答: 项目的第一步一般都是查询展示, 需要根据查询人的权限和查询条件查询, 也就是 RBAC + 筛选条件, 角色获取由权限控制获取, 筛选条件写在 Mybait 的动态查询里面, 那些
- 如何排查慢查询?实际操作是什么?答:1. 网络连接数是否匹配? 2. 多人多版本开发问题, 后人增加索引, 但是优化器还是走了老索引, force 强制走索引 3. 查看监控 Buffer Pool 的命中情况, 一般低于 99%, 一般考虑是业务逻辑有问题, 违背了局部性原理, 抖动太多 4. 索引失效: explain 看 走的索引、类型、长度、 extra、 搜到 rows 判断, 并修改
- MySQL 中 B+树结构,根据主键具体查询过程、二级索引查询过程? 二级索引, 如果像是联合索引, 查询目标就在索引里面,直接返回, 如果不在, 二级索引的叶子结点就是主键, 再根据主键查询一次
- 现在已知公网源 IP、 目标 IP, 输入的全过程?答: 子网掩码, 在子网内通过 ARP 协议搜索目标 IP 或者路由器的 Mac 地址, 在通过路由器转发,可以是邻接转发也可以是洪范, 直到找到目标子网, 再通过 APR 找到目标 Mac 进行访问, 后续还说 Tcp、http(面试官说多了)
- 其他关于专业选择、和未来求职、导师学位?答:学的都是计算机基础, 未来目标就是后端开发、导师很开明自由选择方向我选择的就是去企业学习。 反问:1. 进去做什么 2 部门业务
2.19 字节飞书二面 算法题: 1, 2, 5, 10 硬币组成 n 元的组合方式 答: 完全背包的动态规划, 但是递推公式有点问题, 没做出来, 应该是求出用不用第 i 硬币的加法而不是取 max 类似:**************************************** 问题
- 上次面试有哪些不会?学了吗?
- 什么情况下数据会进入老年代?
- JVM 老年代会不会被 GC?
- 为什么 GC 要分成不同的年代?
- GC 的分代内存是连续的还是零碎?各有什么好处?坏处?
- 数据链路层、网络层、传输层为啥要分层, 各层的职责
- 那为啥要分呢, 不分不是更好
- 传输层 什么是链接?
- 如果网络某一个路由器断开 3s, 链接还存在吗?
- 进程间通信方式共享内存, 进程 A 存放字符串的指针, 进程 B 读指针,然后 print(指针) 会打印出什么?
- 你能讲讲你个人的优势在哪里?
回答:
- 上次关于 JVM 进程的详解没有讲清楚, 这次详细讲解了 new 一个对象的全过程
- 类加载检查, 看下这个对象所属的类有没有加载、链接、初始化成功, 否则先加载类(JVM 类加载具有动态加载的特性)
- 分配内存, 分配方式根据内存模型的规整与否(关系 GC 的选择)
- 内存零值赋值
- 初始化对象头,包括这个对象的年龄代、字面量、属于哪个类的元数据等, 其实就是标记字段 + 类 指针
- Init(), Java 程序看起来,对象的创建函数,字段 init(), 对象的地址分配给引用变量
- JVM 内存模型分为不同的年龄代, Eden Survivor Old 等
- 年龄代存在对象头中, 用于记录 GC 情况, 当一个对象对于 GC Root 没有被引用的地方,即不可达时, 会被标记, 后续再次会被删除
- Eden 在经过一次 MoniGC 还存活的对象进入 S0、S1 区, 年龄+1, 年龄超过 GC 器阈值(0 -15)可以进入老年代, 同时大对象也可以进入老年代
- 会。被回收的直接原因是因为对象的引用可达性不存了,GC 一般分为部分 GC 和 Full GC, 部分 GC 可以在单独的 Eden、Old 乃至混合区域 GC,如果内存不够还会触发 Full GC 引用不可达的老年代对象一样会被删除
- 不同年代内存区域有各自的适用范围, 比如 Eden 每时每刻都会有大量的对象死去, 适用用标记-复制, 而老年代对象存活时间较长, 用标记-清除、标记-整理更好, 分代 GC 效率更高
- 零碎的。零碎的好处是空间利用率高, 只需要一个逻辑标识就能知道是哪个年龄代, 坏处是没有利用好空间局部性。连续的好处是利用了空间局部性, 但是容易有碎片。
- 有点问穿, 数据链路层的基本单位是数据帧, 用于咋局域网内的物理机器地址 mac 传输, 网络层是在不同的子网内 ip 传输, 传输层是在找到了应用端间口建立的稳定或者不稳定的链接
- 。。。。我回到是耦合性, 解耦了, 不同层有不同的协议解决各自的问题, 混沌系统太复杂的很难排查, 分层每次只需要接受下层接口,给上层提供服务就行,而不用关心实现细节
- 我认为的链接是指在目标端口的过程中, 无论是 IP 协议会在不同路由器留下转发映射, 还是 APR 协议留下目标 MAC IP 转换, 在逻辑上是有一条通路的, 这就是链接
- 我认为如果路由器的 ip 映射也消失了, 就会断开链接, 如果没有不一定会断开, 还会重新去找路径链接, 如果在没有超过 ACK 确认的时间内找到了则不会断开(这段感觉在胡言乱语)
- 这不太会, 我答的是地址或者 HashCode, 提到了很多虚拟地址的情况, C++相关的问题, 后面查资料是因为每个进程的虚拟地址空间不一样, 进程 B 是打印不对的
- 从个人专业学习、工程经验、团队经验、个人性格四个方面回答
2.20 字节飞书三面 概述:几乎没问技术题, 面试官人很开明,感觉像是大 leader 问题:
- 还是问了前面的实习为什么要离职?
- 智力题: 一个圆形, 12-0 点, 12 点是飞机场, 飞机满油能飞半圈 12-6, 能顺、逆时针飞, 保证所有飞机都能飞回飞机场, 飞机之间能互相加油, 问至少多少辆飞机可以让一台飞机飞满一圈
- 两家实习的生活有哪些区别, 和提高
- 第一家你说技术提高蛮多, 举一些具体的例子
- base 在深圳有咩有压力会走么
- 为什么考研当时要考这个学校,怎么选择
智力题:回答不出来, 感觉不太好。。。 问答:原则基本上是格式保持逻辑性回答, 内容保证自我的提高积极性, 由于实习的时候还算认真,举例子能举出很多实际开发中提高的例子, 还有实际的产出显示。
作者:cyc3 链接:https://www.nowcoder.com/feed/main/detail/21e7d4f44c1043849c4662ddd45335d1?sourceSSR=users 来源:牛客网