秋招面经-字节-广告度量信号与隐私保护

一面:
1、自我介绍
2、谈谈项目 1 的整体架构,有哪些模块,分别做什么的
3、如果把项目 1 升级为分布式系统,你会如何设计改造?怎么让数据存起来,保证不丢失、不重复,具备良好的容错能力?
4、项目 1 中图数据在内存和磁盘中的数据结构是如何设计的?
5、你在项目中做了哪些工作?你们的淘汰策略相较于 LRU 或 LFU 的优势在哪里?
6、你设计的淘汰策略依据来源是什么?有无其他比较的模型?
7、在你设计的淘汰策略,温数据被驱逐和加载时,会不会导致系统波动?怎么解决这个问题?
8、数据迁移引擎如何设计的?
9、异步迁移过程中如果任务挂掉了,怎么保证数据迁移成功?怎么保证数据不丢失、顺序不乱?
10、系统设计题:设计一个短链系统,支持点击段短 URL 能跳转到长 URL。要求支持几十万 QPS 的访问量,并且要保证系统高可用、稳定,你如何设计?
11、基于数据库的自增 ID 去做,数据库能抗住压力吗?
12、通常不会直接暴露 ID,需要把 ID 映射成一段字符串作为短链,应该怎么做?
13、如果用哈希算法去做映射,那发生了哈希冲突怎么处理?
14、用雪花算法得到的是 64 位整数,如何把它编码成字符串?
15、谈谈基于进制转换的映射思路,如何设计字符串到 n 进制的转换过程?
16、如果某个短链是热点,且这个短链是新的,Redis 中没有缓存这个数据,所有的请求都会打到数据库上,这种场景怎么解决?
17、手撕做题:实现一个基于线性探测的哈希表,主要实现 put 和 get 方法
18、反问
全部评论

相关推荐

快手主站一面(已挂)1.滴滴代码DIFF和PRD角度分别都是怎么考虑的代码DIFF:主要分为新代码和迭代代码,新代码我会关注首先是数据,写缓存或者落库的数据,数据从哪里来的,经过了怎么样的加工,写到哪里去。其次是业务逻辑,和我认知的逻辑是否有偏差。然后是针对循环判断中特殊的分支去考虑。老代码,主要关注DIFF改了之前的什么数据,改了会对历史逻辑有影响吗,然后才去关注新逻辑。PRD:可以举例堵车卡2.自动化全流程介绍一下就是司机端那套3.自动化关注什么校验点钱和文案,一口价会关注全流程的钱是否是一样的4.订单状态机的状态流转怎么测状态机就是维护了不同状态,通过事件驱动状态改变的一个黑盒子。对于我们这个业务状态机就是双向链表,他只能顺序流转或者倒退,不能跳跃某一阶段。5.了解过订单结算后发奖失败的异步补偿怎么做的吗1. 任务创建与持久化:- 订单结算成功后,立即创建一个奖励任务并将其持久化到专门的数据库表(reward_tasks)中,状态为待处理。- 通常通过消息队列(如发件箱模式)或直接调用服务来触发任务创建。2. 异步重试机制:- 一个独立的后台调度器会定期扫描 reward_tasks 表,查找失败或待处理的任务。- 对这些任务进行异步重试发奖,并记录重试次数。- 重试间隔采用指数退避策略(逐渐拉长间隔),并设置最大重试次数。3. 确保幂等性:- 发奖接口必须设计为幂等的,即多次调用同一发奖操作(带相同业务ID)只会成功发放一次奖励,防止重复发放。4. 监控与告警:- 实时监控奖励任务的状态(成功、失败、永久失败等)。- 对持续失败或达到永久失败阈值的任务进行告警,以便及时发现问题。5. 人工干预:- 对于达到最大重试次数仍未成功的永久失败任务,提供管理后台或工具,允许运营人员进行人工查询、分析和手动重试/处理。6.测开周期比怎么提升的自动化mock7.Trace实现原理核心概念Trace :一个完整请求链路可以通过雪花算法生成,解决时间回拨,可以记录一个发生过的时间,如果之后的时间比这个时间要小,就重新生成一个。Span :一次调用过程(需要有开始时间和结束时间)SpanContext :Trace 的全局上下文信息, 如里面有traceId1. 请求入口: 当一个请求进入系统时,入口服务(如网关)会生成一个全新的 Trace ID 和一个根 Span ID,并创建一个根 Span。这个 SpanContext(包含 Trace ID 和根 Span ID)被标记为采样(如果配置了采样)。2. 上下文传播:- 当入口服务调用下游服务A时,它会将当前的 SpanContext(包含 Trace ID 和当前 Span 的 Span ID 作为 Parent Span ID)注入到调用服务A的请求头中。- 服务A接收到请求后,从请求头中提取 SpanContext。- 服务A使用提取到的 Trace ID 和 Parent Span ID 创建一个新的子 Span。3. 持续传播: 这个过程在整个请求链路上重复。每个服务在调用下一个服务之前,都会将当前 Span 的 SpanContext 注入到出站请求中。4. Span 完成与上报: 当一个 Span 完成其操作后(例如,RPC 调用返回),会记录其结束时间,并将其所有信息(Trace ID, Span ID, Parent Span ID, start_time, end_time, tags, logs 等)上报到追踪后端。5. 追踪后端处理: 追踪后端接收到所有 Span 数据后,会根据 Trace ID 和 Parent Span ID 将它们关联起来,重建出完整的 Trace 链路图,并提供可视化界面供分析。8.trace在header里面,rpc没有header的概念,怎么传过去的尽管 RPC 没有 HTTP 的“header”概念,但现代 RPC 框架都提供了与业务数据分离的上下文元数据传输机制(如 gRPC 的 Metadata、Dubbo 的 Attachment)。配合拦截器(Interceptors)或过滤器(Filters),分布式追踪库(如 OpenTelemetry、OpenTracing)能够透明地在这些元数据中注入和提取 SpanContext,从而实现 Trace 信息的跨服务传播,而无需业务代码感知。9.定时任务trace能扫到吗,怎么做的了解过吗实际上就是没有从网关层面的一个入口了,通过字节码注入一个入口,或者AOP10.快手业务11.权限DIFF工具怎么做的12.设计模式13.超卖解决方案14.AI自己主动探索过啥(只了解过RAG和MCP)15.代码题:从测试角度分析这段代码有什么问题 1.安全性 2.空指针 3.double精度 4.业务逻辑要求使用设计模式重构这段代码,解决上述问题。反问:1.我们这个业务主要是负责快手,你可以理解为除了快手,还有像A站kim以及你们那边估计也在用我们这边的能力。我们这边涉及的能力就是有账号,地理位置、推送短信,就是一些中台的。然后你像key count k switch也是我们负责,还有热更新,这些东西业务上的是这些,然后还有一些专项建设的。我们这边专项机设的可能就涉及到trace相关的应用,还有大模型相关的应用。是这样的。2.建议的话其实你实习经验已经我觉得已经够了,还是多多探索一下前沿的东西。就是现在感觉互联网公司都都挺那个的,都挺专注发展AI这个东西,可以自己多动手实践一下。然后还有就是写代码,写代码得长写,不然会经常忘掉。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务