分页题目
字节跳动相关面试题第 2 页
vLLM 有哪些技术优势,为什么推理性能高?
vLLM 推理性能高,核心来自围绕大模型解码瓶颈做系统优化:PagedAttention 降低 KV cache 内存碎片并提升复用,连续批处理提高 GPU 利用率,再结合高效调度、前缀缓存和并行能力提高吞吐。
Redis 主从同步有哪些策略?
Redis 主从同步主要包括全量同步、部分重同步和命令传播三类链路。第一次复制或偏移量缺失时走全量,短暂断线且复制积压缓冲区仍保留缺失命令时走部分重同步,正常状态下主节点持续把写命令传播给从节点。
Redis 怎么做数据迁移?
Redis 数据迁移没有单一标准答案,要按停机窗口、数据规模、是否跨版本、是否集群、是否需要保留 TTL 和一致性要求选择方案。常见方式包括 RDB/AOF 迁移、主从复制切换、SCAN+DUMP/RESTORE、MIGRATE、集群 reshard 和专用同步工具。
Redis 缓存雪崩、击穿和穿透分别是什么,如何解决?
缓存雪崩、击穿和穿透都是缓存失效后流量打到后端的风险,但触发条件不同:雪崩是大面积不可用,击穿是热点 key 瞬时失效,穿透是请求的数据本来就不存在。回答时要先分类,再分别给出限流、降级、互斥重建、空值缓存、布隆过滤器和 TTL 随机化等治理手段。
如何分析用户流失是否由推送过于频繁导致?
判断用户流失是否由推送过于频繁导致,不能只看推送次数和留存同时变化,而要建立频次暴露、用户分层、时间先后、剂量反应和对照实验。最可靠的方法是设计推送频次 A/B Test 或 holdout,对退订、卸载、次日活跃和长期留存做联合评估。
广告收益下降时应该从哪些角度分析?
广告收益下降要先做收入公式拆解,再沿流量、库存、填充、竞价、点击转化、价格、策略和技术链路逐层排查。核心不是罗列指标,而是判断下降来自曝光规模、变现效率、广告主需求还是埋点和结算口径变化。
如果日活下降是竞品原因,怎么证明?
证明日活下降由竞品导致,需要建立时间重合、用户迁移、外部强度、受影响分组和排除内部原因五类证据。最有力的结论通常来自竞品活动或上线节奏与本产品 DAU 变化之间的差分对比,而不是单纯说竞品最近很火。
留存率下降时如何分析原因?
留存率下降要从口径、分母结构、用户质量、产品体验、供给内容、触达策略和外部环境逐层拆解。好的分析会先定位哪个 cohort、哪个生命周期和哪个用户分组在下降,再寻找导致用户没有回来的具体机制。
A/B Test 中如何判断差异是否显著?
A/B Test 判断显著性,要先明确假设、主指标、样本量和实验单位,再用合适的统计检验计算 p 值、置信区间和效应量。显著不等于值得上线,还要检查随机化、样本比例、实验污染、护栏指标和业务收益。
MySQL 最左前缀原则是什么?
最左前缀原则是联合索引按定义顺序从左到右建立有序结构,查询只有从最左列开始连续使用索引列,才能充分利用联合索引。它影响 where 条件、范围查询、排序、分组和覆盖索引设计。
浏览器强缓存和协商缓存分别依赖哪些 HTTP 头?
浏览器强缓存主要依赖响应头 Cache-Control 和 Expires,协商缓存主要依赖 ETag/If-None-Match 与 Last-Modified/If-Modified-Since。Cache-Control 的优先级通常高于 Expires,ETag 的优先级通常高于 Last-Modified。
强缓存和协商缓存有什么区别?
强缓存和协商缓存的根本区别在于是否向服务器发请求。强缓存有效时浏览器直接使用本地副本;协商缓存需要发条件请求,由服务器判断资源是否变化,未变化返回 304。
CSS 如何实现垂直居中?
CSS 垂直居中没有唯一答案,要根据已知高度、未知高度、单行文本、多行内容、父容器布局和兼容性选择方案。现代布局优先使用 flex 或 grid,特殊场景再考虑 absolute+transform、line-height、table-cell 等方法。
哪些 CSS 属性会触发重排?
会触发重排的 CSS 属性,本质上都是会改变元素几何信息、文档流占位、字体度量、滚动尺寸或布局上下文的属性。典型包括 width、height、margin、padding、border、display、position、top、left、float、font-size、line-height、grid、flex 相关属性等;而 color、background-color 通常只触发重绘,transform、opacity 在合成层上变化时通常可以避开主线程布局。
requestAnimationFrame 属于什么任务,适合解决什么问题?
requestAnimationFrame 不是普通宏任务,也不是微任务,而是浏览器在一次渲染机会中、绘制之前执行的动画帧回调。它适合把视觉更新对齐到屏幕刷新节奏,用来做动画、滚动联动、分批 DOM 更新和避免 setTimeout 与刷新率不一致造成的卡顿。
Vue 父子组件有哪些通信方式?
Vue 父子组件通信最基础的是 props 向下传递数据、emit 向上传递事件;更复杂的场景还包括 v-model 双向约定、slot 和作用域插槽传递渲染能力、ref 与 defineExpose 暴露子组件方法、provide/inject 跨层传递依赖,以及通过 Pinia 或 Vuex 管理跨组件共享状态。
Vue 3 相比 Vue 2 有哪些优势?
Vue 3 相比 Vue 2 的优势主要体现在 Composition API 带来的逻辑组织能力、基于 Proxy 的响应式系统、更好的 TypeScript 支持、更小更可摇树优化的包结构、更快的编译和运行时性能,以及 Fragment、Teleport、Suspense、多 v-model 等工程能力。
CSS 渲染过程是怎样的?
CSS 渲染过程从解析 HTML 和 CSS 开始,浏览器构建 DOM 与 CSSOM,经过级联、继承和选择器匹配计算样式,再生成渲染树,随后执行布局、绘制、栅格化和合成。理解这条链路可以解释为什么 CSS 会阻塞渲染、为什么某些属性触发重排或重绘,以及为什么 transform、opacity 更适合高频动画。
CSRF 的原理、攻击形式和防御方式是什么?
CSRF 是跨站请求伪造,核心是攻击者诱导已登录用户的浏览器向目标站点发起请求,浏览器会自动携带目标站点的 Cookie,从而让服务端误以为请求来自用户本人。常见攻击包括隐藏表单提交、img 或链接触发 GET 请求、跨站 POST 和配合不安全 CORS 的接口调用;防御重点是 SameSite Cookie、CSRF Token、Origin/Referer 校验、避免 GET 改状态和敏感操作二次确认。
影响前端首屏性能的关键因素有哪些?
前端首屏性能受网络链路、服务端响应、资源体积、渲染阻塞 CSS、JavaScript 下载和执行、图像与字体、接口数据依赖、缓存策略、第三方脚本、设备算力和框架水合成本共同影响。优化首屏要围绕关键渲染路径,优先让首屏所需 HTML、关键 CSS、必要 JS、核心数据和 LCP 资源尽快可用。
懒加载和虚拟列表如何优化首屏性能?
懒加载通过延后非首屏图像、组件、路由和数据请求,减少首屏需要下载和执行的资源;虚拟列表通过只渲染视口附近的列表项,减少 DOM 数量、布局计算和绘制成本。两者都能优化首屏,但前提是不要延后首屏核心内容,并要处理占位尺寸、预加载、滚动体验和可访问性。
Prompt 优化有哪些常见方法?
Prompt 优化的核心是降低任务歧义、补齐上下文、明确输出约束,并建立可评估的迭代过程。常见方法包括明确目标和受众、给出背景材料、拆解任务步骤、规定输出格式、提供正反例、使用分隔符、约束边界条件、要求模型列出假设和不确定性,以及通过测试集持续比较效果。
Temperature 和 Top-K 有什么区别?
Temperature 和 Top-K 都控制大语言模型采样随机性,但作用层不同。Temperature 会整体调整候选 token 的概率分布,低温让高概率 token 更突出,高温让分布更平;Top-K 会先限制候选集合,只允许从概率最高的 K 个 token 中采样。前者改变概率形状,后者裁剪候选范围。
AI 无法处理复杂业务逻辑时如何做人工干预?
当 AI 无法稳定处理复杂业务逻辑时,人工干预不是简单地让人兜底,而是把系统设计成可识别不确定性、可暂停高风险动作、可交给合适人员决策、可追踪结果并反哺模型的闭环。核心是明确哪些场景自动化、哪些场景必须升级、人工结果如何沉淀成规则、样本和评测。
HTTPS 握手和加密过程是什么?
HTTPS 的本质是 HTTP 运行在 TLS 安全通道之上。握手阶段通过证书验证服务器身份,通过密钥交换协商会话密钥;数据传输阶段主要使用对称加密保护内容,同时用完整性校验和认证机制防止篡改与伪造。
Cookie 有哪些常见属性?
Cookie 常见属性包括 Name、Value、Domain、Path、Expires、Max-Age、Secure、HttpOnly、SameSite、Priority、Partitioned 等。它们共同决定 Cookie 的内容、有效期、发送范围、安全边界和跨站行为,是登录态、个性化和安全防护中的基础机制。
Cursor 上下文过长时为什么可能出现效果下降?
Cursor 上下文过长时效果下降,通常不是因为模型突然失效,而是有效注意力、检索质量、指令优先级和噪声比例同时变差。上下文窗口越大,越需要选择性提供信息,否则相关代码被无关内容稀释,模型更容易漏掉关键约束或沿用错误线索。
聊天 AI 应用中如何减少大模型幻觉?
减少聊天 AI 应用中的大模型幻觉,需要同时处理知识来源、提示约束、检索增强、工具调用、输出校验、拒答策略、评测监控和用户体验。核心原则是让模型少凭空补全,多基于可验证证据回答,并在证据不足时明确不确定。
同题还出现在 1 个公司岗位
注意力机制中为什么要计算 Q 和 K 的相似度?
注意力机制计算 Q 和 K 的相似度,是为了让每个位置根据当前查询目标,从所有候选位置中动态分配信息权重。Q 表示当前位置想找什么,K 表示每个位置能被什么条件匹配,相似度越高,对应 V 的信息越应该被聚合进当前表示。
调用大模型服务时需要关注哪些核心指标?
调用大模型服务时,核心指标不能只看接口是否成功,还要同时关注效果、成本、性能、稳定性和安全。典型指标包括请求成功率、错误率、首 token 延迟、总延迟、吞吐、Token 用量、单次成本、质量评分、幻觉率、拒答率、重试率、限流率和用户满意度。
大模型输出不符合指令时如何处理?
大模型输出不符合指令时,应该先判断是指令不清、上下文冲突、能力不足、格式约束不强、还是后处理缺失,再选择提示词修正、结构化约束、示例引导、检索补充、模型切换、自动校验、重试修复或人工介入。成熟做法是把不合规输出当作工程质量问题,而不是只责怪模型。
做 AI 项目时如何选择和使用大模型?
做 AI 项目选择和使用大模型,不能只看榜单或单次体验,而要从业务目标、任务类型、质量要求、成本预算、延迟约束、上下文长度、工具能力、数据安全、供应商稳定性和可观测性综合评估。正确姿势是小范围评测、多模型分层、持续监控和可替换架构。
同题还出现在 1 个公司岗位
CLOSE_WAIT 和 TIME_WAIT 分别是什么?
CLOSE_WAIT 和 TIME_WAIT 都是 TCP 连接关闭过程中的状态,但含义完全不同。CLOSE_WAIT 出现在被动关闭方,表示对端已经发来 FIN,本端已经确认,但应用还没有调用 close 结束连接;TIME_WAIT 出现在主动关闭方,表示本端完成主动关闭后仍保留连接一段时间,用于处理延迟报文和保证对端收到最后的 ACK。
Prompt 编写有哪些关键注意点?
Prompt 编写的核心不是堆砌提示词,而是把目标、上下文、约束、输入输出格式、推理边界和评估标准表达清楚。好的 Prompt 能降低模型歧义,稳定输出结构,减少幻觉和无关内容,并让结果更容易被程序消费和人工复核。
Prompt ETL 管道如何设计?
Prompt ETL 管道是把原始业务输入经过清洗、切分、增强、模型处理、结构化解析、校验和落库的工程化流程。它的目标不是单次调用模型,而是稳定、可追踪、可回放地把非结构化或半结构化信息转成可用数据。
Transformer 中 Q、K、V 分别表示什么?
Transformer 中的 Q、K、V 分别是 Query、Key、Value,是注意力机制对输入向量做三组线性变换得到的表示。Q 用来发起查询,K 用来被匹配,Q 与 K 的相似度决定关注权重,V 承载最终被加权汇聚的信息。
什么是 TTFT,如何降低大模型首字延迟?
TTFT 是 Time To First Token,表示从请求发出或服务端接收请求到模型返回第一个 token 的时间。它直接影响用户对大模型应用是否“响应快”的感知,优化要覆盖排队、网络、鉴权、Prompt 构造、预填充计算、调度和流式返回。
Android Activity 生命周期是什么?
Android Activity 生命周期描述一个界面组件从创建、可见、可交互、暂停、停止到销毁的状态变化。核心回调包括 onCreate、onStart、onResume、onPause、onStop、onDestroy、onRestart,实际开发还要理解配置变更、进程回收、状态保存和资源释放。
C++ 基类析构函数为什么通常要声明为虚函数?
C++ 基类析构函数通常要声明为虚函数,是为了保证通过基类指针或引用删除派生类对象时,能先调用派生类析构函数,再调用基类析构函数,完整释放派生类资源。否则行为可能未定义,容易造成资源泄漏或清理不完整。
C++ 如何限制类对象只能在堆上或栈上创建?
C++ 限制对象只能在堆上或栈上创建,本质是控制构造、析构和释放入口。只能堆上创建通常把析构函数设为 private 或 protected,并提供 destroy 接口;只能栈上创建通常禁用 operator new 和 operator new[],阻止动态分配。
客户端 Crash 发生后如何定位问题?
客户端 Crash 定位要从复现、日志、崩溃栈、符号化、版本环境、用户操作路径和近期变更入手,先判断是 Java/Kotlin 异常、Native 崩溃、ANR、OOM 还是系统兼容问题,再结合监控聚合和最小复现找到根因。
Java 有哪些常见加锁机制?
Java 常见加锁机制包括 synchronized、ReentrantLock、ReadWriteLock、StampedLock、原子类和基于 AQS 的同步器。面试重点不是罗列名称,而是说明它们的互斥语义、可重入性、公平性、可中断、条件等待、读写并发和适用场景。
Java 内部类为什么可以访问外部类成员?
Java 内部类能访问外部类成员,本质上不是虚拟机给了它特殊权限,而是编译器在字节码层建立了外部实例引用和访问通道。非静态内部类会携带指向外部对象的隐藏引用,因此能通过这个引用读取外部对象的字段和方法;对私有成员的访问则由同一 nest 的访问规则或编译期生成的桥接访问方法支持。
ConcurrentHashMap 的实现原理是什么?
ConcurrentHashMap 的核心是把哈希表操作拆成可并发执行的小粒度步骤:读操作大多依赖 volatile 可见性和链表或树查找,无需整体加锁;写操作在空桶上用 CAS 放入节点,在冲突桶上锁住桶头节点;扩容时通过 ForwardingNode 和协助迁移让多个线程共同搬迁数据。
一个进程最多能打开多少文件描述符,受哪些限制?
一个进程最多能打开多少文件描述符,没有单一固定答案,取决于进程级软硬限制、系统级文件句柄上限、内核内存、服务管理器和容器配置,以及程序自身使用的 I/O 模型。实际排查要同时看 ulimit、/proc 限制、sysctl、systemd LimitNOFILE 和进程当前已打开的描述符。
HTTPS 为什么结合使用对称加密和非对称加密?
HTTPS 同时使用非对称加密和对称加密,是为了兼顾安全密钥交换、身份认证和传输性能。非对称加密适合解决陌生双方如何安全协商密钥和验证服务器身份的问题,但计算成本高;对称加密速度快,适合保护大量业务数据,因此握手阶段协商会话密钥,传输阶段用对称密钥加密数据。
HTTP 和 HTTPS 有什么区别?
HTTP 和 HTTPS 的核心区别在于 HTTPS 是运行在 TLS 之上的 HTTP。HTTP 明文传输,默认不提供身份认证、加密和完整性保护;HTTPS 通过证书、密钥协商、对称加密和完整性校验,提供防窃听、防篡改和服务器身份认证能力。
HTTP 502 状态码表示什么?
HTTP 502 Bad Gateway 表示网关或代理服务器从上游服务器收到了无效响应。它通常不是客户端请求格式本身的错误,而是代理、负载均衡、应用服务、网络链路或协议转换之间出现问题。