字节 一面挂经 JD是java,面试变成了go。
前景提要, 被字节的HR 主动打电话过来。邀请面试。
行,反正秋招面就面。我详细询问了岗位JD, HR 一口咬定是Java的岗位。
然后,反问发现面试官组里业务和JD 只能说 毫无关系。连语言都是GO。
以后 HR再打电话, 一定要问清 组的业务 和 语言。 面试官是go的,他知道我不会go,没办法问我java ,也没办法问我go。 相当于直接少了一半的知识点可以问。 就只能聚焦于问,数据库,redis 还有消息队列。 这样每个问题会被挖的非常非常深。而且都是场景题拷打,我一时半会真顶不住。 毕竟校招生考场景题。。。
#发面经攒人品#
我也面过 哔哩哔哩 ,虾皮 等公司用go的,面试都会出现这种情况。 而且我觉得大部分情况来说,实习可以接受转语言。而校招正式岗除非,特别特别优秀。 不然一般就会挂。
所以,刚面完就知道挂了。#校招#
算了,希望别面评太差。
手撕:
手撕一道, sql 题, 一道滑动窗口。
### 核心技术问题
* **Redis**:
* 排行榜如何用 Redis **Sorted Set** 实现?它的底层数据结构是什么?你对跳表(skip list)了解多少?
* 在限流、缓存和去重等场景中,你还用过 Redis 的哪些功能?
* **消息队列(MQ)**:
* 你用 RocketMQ 做什么?如何保证消息的**可靠性**(不丢失)和**幂等性**(不重复消费)?
* 当消息大量积压时,你会怎么处理?
* **并发与限流**:
* 你简历中提到的高并发限流是如何实现的?
* 你选择的**令牌桶算法**在实际生产中是如何工作的?特别是令牌是如何生成的?这种实现方式有什么潜在问题?
* **数据库**:
* 你用过哪些数据库?对 MySQL 了解多少?
* **InnoDB** 为什么要用 **B+树** 作为索引结构?相比于其他树结构有什么优势?
* 在分布式系统中,为什么主键推荐使用自增 ID 而不是雪花算法生成的 ID?这和数据库底层存储有什么关系?
* `VARCHAR(50)` 和 `VARCHAR(5000)` 在存储和性能上有何区别?
* 数据库死锁是如何产生的?你有什么解决方案?
* **系统与基础**:
* Java 中什么时候用**多进程**,什么时候用**多线程**?它们的区别是什么?(我是第一次听说Java 有多进程这东西)
* 你对**虚拟内存**有什么了解?
* 你在实习期间主要负责哪些工作?
* 你做的排行榜是怎么实现的?
* 你提到的“延迟消息解冻机制”具体是做什么的,解决了什么业务问题?
* 你如何保证缓存和数据库的**数据一致性**?
* 你提到的“先更新数据库,再删缓存”和“双删”方案,它们的实现细节和各自的缺陷是什么?特别是在读写分离场景下,如何解决读到旧数据的问题?
技术深度与广度
Redis:详细询问了Redis在排行榜、限流、缓存和去重表中的应用。特别关注了Sorted Set的底层实现(跳表)以及跳表本身的实现原理。此外,还考察了Redis数据类型的底层实现(例如,Set)以及你对Redis中各种数据结构的掌握程度。
MQ(消息队列):主要围绕RocketMQ展开,询问了你使用MQ的目的(异步解耦和最终一致性),以及如何保证消息的可靠性(不丢失)、不重复消费(幂等性)以及如何处理消息积压。他特别对你提到的分布式锁、去重表和ACK确认机制等方案进行了追问,并深入探讨了它们在实际场景中的局限性。
并发与限流:针对你简历中提到的高并发限流项目,详细询问了你实现的令牌桶算法。他追问了令牌的生成方式(定时任务)以及这种实现可能带来的问题(流量不平滑),试图考察你对算法原理的理解是否深入。
数据库:
MySQL:深入询问了InnoDB的索引结构(B+树),特别是它为什么选择B+树以及这种结构带来的优势(范围查询)。他还通过自增ID和雪花ID作为主键的例子,考察你对数据库底层存储和索引原理的理解。此外,还问到了死锁的产生和解决方法(包括MVCC)。
数据类型:通过VARCHAR(50)和VARCHAR(5000)的对比,考察你对MySQL数据类型存储和性能的理解。
Java基础:询问了Java中多进程与多线程的区别,以及在什么场景下会选择使用它们。
操作系统:简单询问了虚拟内存的概念和作用。
---
总结
整体来看,面试官不仅关心你“做了什么”,更关心你“为什么这么做”以及“你是怎么做的”。他通过层层递进的追问,试图考察你是否真正理解了项目背后的技术原理,以及你是否有能力独立思考并解决实际问题。他多次对你的回答进行反问和质疑,这通常是为了测试你面对压力的应变能力以及对技术细节的掌握程度。
建议你重点回顾以下几个知识点:
Redis中Sorted Set的底层原理(跳表),以及跳表的具体实现。
令牌桶和漏桶算法的原理对比,以及如何实现一个真正平滑的限流。
缓存和数据库双删方案在读写分离场景下的一致性问题。
MySQL索引,特别是为什么主键建议使用自增ID。
多进程和多线程在不同场景下的选择和优劣。
行,反正秋招面就面。我详细询问了岗位JD, HR 一口咬定是Java的岗位。
然后,反问发现面试官组里业务和JD 只能说 毫无关系。连语言都是GO。
以后 HR再打电话, 一定要问清 组的业务 和 语言。 面试官是go的,他知道我不会go,没办法问我java ,也没办法问我go。 相当于直接少了一半的知识点可以问。 就只能聚焦于问,数据库,redis 还有消息队列。 这样每个问题会被挖的非常非常深。而且都是场景题拷打,我一时半会真顶不住。 毕竟校招生考场景题。。。
#发面经攒人品#
我也面过 哔哩哔哩 ,虾皮 等公司用go的,面试都会出现这种情况。 而且我觉得大部分情况来说,实习可以接受转语言。而校招正式岗除非,特别特别优秀。 不然一般就会挂。
所以,刚面完就知道挂了。#校招#
算了,希望别面评太差。
手撕:
手撕一道, sql 题, 一道滑动窗口。
### 核心技术问题
* **Redis**:
* 排行榜如何用 Redis **Sorted Set** 实现?它的底层数据结构是什么?你对跳表(skip list)了解多少?
* 在限流、缓存和去重等场景中,你还用过 Redis 的哪些功能?
* **消息队列(MQ)**:
* 你用 RocketMQ 做什么?如何保证消息的**可靠性**(不丢失)和**幂等性**(不重复消费)?
* 当消息大量积压时,你会怎么处理?
* **并发与限流**:
* 你简历中提到的高并发限流是如何实现的?
* 你选择的**令牌桶算法**在实际生产中是如何工作的?特别是令牌是如何生成的?这种实现方式有什么潜在问题?
* **数据库**:
* 你用过哪些数据库?对 MySQL 了解多少?
* **InnoDB** 为什么要用 **B+树** 作为索引结构?相比于其他树结构有什么优势?
* 在分布式系统中,为什么主键推荐使用自增 ID 而不是雪花算法生成的 ID?这和数据库底层存储有什么关系?
* `VARCHAR(50)` 和 `VARCHAR(5000)` 在存储和性能上有何区别?
* 数据库死锁是如何产生的?你有什么解决方案?
* **系统与基础**:
* Java 中什么时候用**多进程**,什么时候用**多线程**?它们的区别是什么?(我是第一次听说Java 有多进程这东西)
* 你对**虚拟内存**有什么了解?
* 你在实习期间主要负责哪些工作?
* 你做的排行榜是怎么实现的?
* 你提到的“延迟消息解冻机制”具体是做什么的,解决了什么业务问题?
* 你如何保证缓存和数据库的**数据一致性**?
* 你提到的“先更新数据库,再删缓存”和“双删”方案,它们的实现细节和各自的缺陷是什么?特别是在读写分离场景下,如何解决读到旧数据的问题?
技术深度与广度
Redis:详细询问了Redis在排行榜、限流、缓存和去重表中的应用。特别关注了Sorted Set的底层实现(跳表)以及跳表本身的实现原理。此外,还考察了Redis数据类型的底层实现(例如,Set)以及你对Redis中各种数据结构的掌握程度。
MQ(消息队列):主要围绕RocketMQ展开,询问了你使用MQ的目的(异步解耦和最终一致性),以及如何保证消息的可靠性(不丢失)、不重复消费(幂等性)以及如何处理消息积压。他特别对你提到的分布式锁、去重表和ACK确认机制等方案进行了追问,并深入探讨了它们在实际场景中的局限性。
并发与限流:针对你简历中提到的高并发限流项目,详细询问了你实现的令牌桶算法。他追问了令牌的生成方式(定时任务)以及这种实现可能带来的问题(流量不平滑),试图考察你对算法原理的理解是否深入。
数据库:
MySQL:深入询问了InnoDB的索引结构(B+树),特别是它为什么选择B+树以及这种结构带来的优势(范围查询)。他还通过自增ID和雪花ID作为主键的例子,考察你对数据库底层存储和索引原理的理解。此外,还问到了死锁的产生和解决方法(包括MVCC)。
数据类型:通过VARCHAR(50)和VARCHAR(5000)的对比,考察你对MySQL数据类型存储和性能的理解。
Java基础:询问了Java中多进程与多线程的区别,以及在什么场景下会选择使用它们。
操作系统:简单询问了虚拟内存的概念和作用。
---
总结
整体来看,面试官不仅关心你“做了什么”,更关心你“为什么这么做”以及“你是怎么做的”。他通过层层递进的追问,试图考察你是否真正理解了项目背后的技术原理,以及你是否有能力独立思考并解决实际问题。他多次对你的回答进行反问和质疑,这通常是为了测试你面对压力的应变能力以及对技术细节的掌握程度。
建议你重点回顾以下几个知识点:
Redis中Sorted Set的底层原理(跳表),以及跳表的具体实现。
令牌桶和漏桶算法的原理对比,以及如何实现一个真正平滑的限流。
缓存和数据库双删方案在读写分离场景下的一致性问题。
MySQL索引,特别是为什么主键建议使用自增ID。
多进程和多线程在不同场景下的选择和优劣。
全部评论
佬,“在分布式系统中,为什么主键推荐使用自增 ID 而不是雪花算法生成的 ID?这和数据库底层存储有什么关系?”这个是不是说反了啊?
求面经
佬,感觉面试官八股问的有点偏门了,是不是大部分是项目里用到的
sql和滑动窗口分别是哪道题呀,还能想起来吗佬
相关推荐
投票
点赞 评论 收藏
分享