字节跳动_中国交易与广告前端面经

字节跳动_中国交易与广告(上海)

详细复盘:https://yuki-bloom.vercel.app/post/zi-jie-tiao-dong-zhong-guo-jiao-yi-yu-guang-gao-shang-hai-mian-jing

面试时间

2026_0512-19:00

面试内容

  1. 自我介绍
  2. DataAgent 的项目是怎么样的?能介绍一下吗?
  3. 大概说一下这个项目的前端内容有哪些呢?
  4. 这个项目中你主要负责什么?
  5. AI 返回的 ECharts 图表有考虑过万一 AI 报错了怎么办呢?
  6. 第二个项目中,你有遇到什么难题,挑几个说一下吧。
  7. 看你之前写了一个 MCP 服务器,能详细解释一下这个吗?
  8. Agent 相关的了解吗?可以讲一下吗?
  9. 你对 Skill 的理解是什么?
  10. 能讲一下你怎么理解 RAG 吗?
  11. 你提到最新的框架都有 llms.txt,面试官和我讲了一下 IDE 里面 RAG 和搜索的两种方式。
  12. JS 基本数据类型
  13. 开发中引用类型和基本数据类型有什么要注意的点吗?
  14. Vue 和 React 都了解吗?
  15. 可变数据和不可变数据有了解吗?
  16. React 中更改数据需要返回的 set 方法去更改,那引用类型有什么需要注意的吗?
  17. 代码性能问题分析:

javascript

function parseLines(files) {
  return String(files).split("\n");
}

function renderLinesSlow(files, container) {
  const text = parseLines(files); // 几十万行的文本
  for (const line of text) {
    const dom = document.createElement("p");
    dom.textContent = line;
    container.append(dom);
  }
}
  • 问题:频繁 append + 一次性渲染过多节点,主线程阻塞、页面卡顿。
  • 优化:虚拟滚动、分片渲染(requestIdleCallback / setTimeout)、DocumentFragment 批量插入。
  1. 手撕代码:异步并发调度器(实现一个 Scheduler 类,控制异步任务并发数量)

javascript

class Scheduler {
  constructor(limit) {
    this.limit = limit; // 最大并发数
    this.running = 0; // 当前运行中的任务数
    this.queue = []; // 等待队列
  }

  // 添加任务:接收一个返回 Promise 的函数
  add(task) {
    return new Promise((resolve, reject) => {
      this.queue.push({ task, resolve, reject });
      this._run();
    });
  }

  _run() {
    while (this.running < this.limit && this.queue.length) {
      const { task, resolve, reject } = this.queue.shift();
      this.running++;
      task()
        .then(resolve)
        .catch(reject)
        .finally(() => {
          this.running--;
          this._run();
        });
    }
  }
}

// 使用示例
const scheduler = new Scheduler(2);

const timeout = (ms, value) =>
  new Promise((resolve) => setTimeout(() => resolve(value), ms));

scheduler.add(() => timeout(1000, "A")).then(console.log);
scheduler.add(() => timeout(500, "B")).then(console.log);
scheduler.add(() => timeout(300, "C")).then(console.log);
scheduler.add(() => timeout(400, "D")).then(console.log);

// 输出顺序:B, C, A, D (并发数为2,按完成时间输出)
全部评论

相关推荐

点赞 评论 收藏
分享
双面试官,时长约一个多小时自我介绍1.&nbsp;自学全栈+消息队列+AI工程,如何避免碎片化?怎么沉淀可复用方法论?2.&nbsp;实习用RabbitMQ/Celery全自学,如何规避线上设计缺陷?举一个核心架构坑。•&nbsp;追问:如何证明你掌握底层原理而非只会调API?3.&nbsp;实习未续聘真实原因:能力不匹配、项目结束还是主动选择?如实复盘。4.&nbsp;主动离职的沉没成本评估?短期实习对技术壁垒有无负面影响?5.&nbsp;选复杂度最高的工作,从背景、瓶颈、架构取舍、性能收益、容错五维复盘,禁流水账。•&nbsp;追问:你说的普通实习生也能做,你的不可替代性和技术深度在哪?6.&nbsp;前端后端AI架构全覆盖,如何解决&quot;全而不深&quot;?核心技术护城河是什么?7.&nbsp;消息队列、异步任务、AI编排的学习瓶颈与底层原理瓶颈?如何工程落地验证?8.&nbsp;你与纯前端/纯后端/全栈的核心差异?适配广告交易业务的优势在哪?9.&nbsp;广告业务高并发、高资金链路、强稳定性,你的技术栈为何适配?对比普通ToC前端优势?10.&nbsp;广告业务为何偏爱全栈前端?从链路闭环、故障定位、降本增效三维分析。11.&nbsp;量化数据说明两段实习核心技术产出,区分业务产出与技术架构产出。12.&nbsp;前后端联调中你解决的最高难度问题?如何推动跨角色协作、定位根因、落地根治?13.&nbsp;别人只会页面开发,你会架构与AI工程,系统性方法论是什么?如何持续迭代?14.&nbsp;前端工程、业务架构、AI全栈三条路线如何取舍?说明技术选型底层逻辑。15.&nbsp;RabbitMQ解耦异步任务,说明投递链路、交换机机制、持久化策略及架构选型依据。•&nbsp;追问1:高并发下为何弃Redis&nbsp;List/Stream选RabbitMQ?各自极限吞吐和故障短板?*•&nbsp;追问2:消息丢失、重复消费、死信堆积,前后端各如何兜底容错?16.&nbsp;Celery异步/定时任务:优先级、队列隔离、重试策略如何设计?•&nbsp;*追问1:任务阻塞、超时雪崩,从消费者/队列/触发层如何排查根治?前端如何感知降级?*•&nbsp;追问2:海量堆积如何削峰、分片、动态扩缩容?前后端协同优化策略?17.&nbsp;发布订阅在架构中实现哪层解耦?模块、服务还是业务层?•&nbsp;追问:如何基于此做高阶工程封装解决复杂耦合?技术壁垒在哪?18.&nbsp;前后端异步链路状态不一致,如何定义一致性等级?不同等级兜底策略如何差异?19.&nbsp;广告高并发场景,最终一致性、实时性、可用性三角矛盾如何权衡?20.&nbsp;完整阐述异步任务全链路:触发→投递→消费→落库→状态同步的容错机制。21.&nbsp;接口幂等如何实现?前端防重、后端幂等、数据库幂等三层方案与性能损耗对比。22.&nbsp;流量高峰期,后端限流、前端节流、队列削峰如何联动?错用引发什么事故?23.&nbsp;Agent流式长任务,HTTP轮询/WS/SSE性能上限、断线重试、内存开销与选型边界?24.&nbsp;多级故障:超时、弱网、熔断、宕机,前端如何分层降级、灰度兜底、无感知容错?25.&nbsp;自研统一异常处理架构,如何区分业务/系统/网络/模型异常?日志溯源告警方案?26.&nbsp;前端兜底与后端容错的优先级边界?什么场景必须后端兜底,什么依赖前端自愈?27.&nbsp;三人团队中你的核心技术架构职责?区分开发、设计、兜底、优化具体产出。•&nbsp;追问:如何解决多人开发的架构耦合、代码冲突、逻辑冗余?28.&nbsp;项目状态机基于开源库二次开发,重构了哪些核心逻辑?解决了哪些工程缺陷?•&nbsp;追问:从零手写轻量业务状态机,核心模块和容错逻辑如何设计?29.&nbsp;稳定性提升至99.5%,优化权重拆解:你与组员分别占比?核心技术贡献?30.&nbsp;从架构视角评判项目:技术瓶颈、扩展性短板、性能上限分别是什么?•&nbsp;追问:还有能体现高并发、高可用、架构能力的硬核项目吗?深度说明。31.&nbsp;在发布订阅基础上如何做异步链路治理:可追溯、可重试、可降级、可监控?32.&nbsp;自研项目有无落地工程化架构、状态调度、异步治理?说明技术难点。33.&nbsp;Agent拆分用LangGraph,如何支撑动态任务变更、异常分支插入、实时流程微调?34.&nbsp;状态机流转异常:前置/执行/后置回写异常,前后端如何分层拦截、分级处理、精准回滚?35.&nbsp;99.5%稳定性统计口径?如何剔除测试数据、环境误差、偶发故障?如何保真?36.&nbsp;上线后最高优先级故障:发现、定位、止损、根治、复盘全流程。37.&nbsp;四类任务失败场景,分别设计重试、降级、用户反馈、数据补偿策略。38.&nbsp;多用户并发操作同一资源,竞态冲突:前端锁、服务锁、分布式锁三层方案。39.&nbsp;工程优化:构建提速、分包、缓存、环境隔离、错误监控,量化收益。40.&nbsp;高频重复触发任务,防抖、防重、幂等、去重四层联动架构?41.&nbsp;大文件分片上传、断点续传、进度同步一致性问题?断网刷新退页如何兜底?42.&nbsp;Agent批量任务并发:动态限流、优先级调度、故障隔离如何设计防雪崩?43.&nbsp;客观分析项目技术亮点与架构短板,短板不优化会引发什么线上风险?44.&nbsp;V2迭代:从扩展性、并发承载力、故障自愈、用户体验四维权衡优先级与逻辑。45.&nbsp;从协议规范、调度层级、业务边界三维拆解Tool/Skill/MCP底层关系与设计初衷。•&nbsp;追问:Skill已能编排,为何推MCP协议层?分层必要性?能否合并?46.&nbsp;Skill跨模型适配报错率高、不稳定,为何仍是主流?从工程成本、迭代效率、解耦分析。47.&nbsp;Skill诞生后MCP/Tool热度下降,是范式迭代还是场景替代?Skill淘汰风险与方向?48.&nbsp;Agent元认知工程化:自我校验、链路复盘、错误归因、动态修正的前后端落地方案。49.&nbsp;自研Skill&nbsp;vs&nbsp;垂直定制Agent:架构成本、迭代速度、稳定性上限、适用场景核心区别。•&nbsp;追问:剔除工具能力,剩余规则逻辑与Prompt的本质差异?为何不能用Prompt替代Skill?50.&nbsp;动态调度&nbsp;vs&nbsp;静态Workflow:复杂度、容错、并发上限、迭代成本、准确率全方位对比。•&nbsp;追问1:实际落地中两种方案的隐性线上风险?•&nbsp;追问2:选型边界:什么场景必须动态编排,什么禁止动态只能静态?•&nbsp;追问3:极端场景下各自稳定性缺陷?如何架构补强?51.&nbsp;深度讲解ReAct/Plan执行原理、资源开销、故障特性及工程落地难点。•&nbsp;追问:Plan单节点异常致链路崩溃,不重构架构下如何分层兜底、局部重试、分支熔断、断点续跑?52.&nbsp;结合广告投放、视频剪辑,分析ReAct和Plan性能/准确率瓶颈及优化方案。53.&nbsp;Agent上下文超长引发卡顿超时,前后端协同做裁剪、缓存复用、分片请求、增量渲染?54.&nbsp;Skill版本迭代如何平滑灰度、兼容兜底、旧版下线、故障回滚?避免批量报错。55.&nbsp;多模型路由:自动降级、流量灰度、负载均衡、故障隔离调度架构设计。56.&nbsp;Agent短期/长期记忆:存储介质、更新策略、过期淘汰、隐私脱敏工程化。57.&nbsp;Agent如何智能决策Skill调用?规避无效/循环/冗余调用?算法+工程两层说明。58.&nbsp;流式输出vs完整返回对QPS、带宽、渲染、体验、故障感知影响?高并发选型?手撕四个题给忘了反问环节1.具体业务2.目前我有一个idea,但是不知道如何实现,问了一下怎么解决面完之后我满头大汗
如果人间有后悔药
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

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