当前位置: 首页 > backend >正文

腾讯前端面试真题

今天心情起起伏伏(2025.08.08),

  1. 小鹏汽车挂人(上次面试就感觉不招人,完全没面试氛围,但是心了;还是想要过了,毕竟是正式秋招批第一给面的,也想那个offer保底,但是…没了…)
  2. 投了京东秋招,做测试时,Tencent打电话约面(提前批),完全是抱着试试水投的,还给面了,虽然知道很有可能…,但加油,可以的,会有工作的!!!

在这里插入图片描述


以下是对腾讯前端实习面试问题的系统分类和逻辑化回答框架,帮助您在面试中结构化展示技术能力:


一、技术领域分类

面试问题
前端基础
框架原理
网络协议
性能优化
工程化
算法/数据结构

二、核心问题回答框架

1. 前端基础
问题逻辑化回答要点
虚拟DOM vs 真实DOM
1. 性能瓶颈:直接操作DOM触发重排/重绘(昂贵)
2. 解决方案:虚拟DOM作为内存中的轻量对象(计算diff)
3. 批量更新:将多个DOM操作合并为单次patch(例:列表更新)
4. 性能权衡:内存计算时间 < 浏览器渲染时间(适用于中大型应用)

| 事件循环 |

- 宏任务:script整体/setTimeout/setInterval/UI渲染/I/O
- 微任务:Promise.then/MutationObserver/queueMicrotask
- **关键点**:fetch是宏任务(但Promise回调是微任务)

在这里插入图片描述

2. React原理

React的架构演进始终围绕​​用户体验​​与​​开发效率​​双核心:从Fiber架构解决渲染阻塞问题[Stack],到Hooks重构组件开发范式,再到并发模式实现交互零延迟。最新版本通过Server Components将服务端能力引入组件层级,配合编译器级优化,使应用性能逼近理论极限。在复杂业务场景中,我们结合自动批处理选择性水合等特性,实现首屏加载<500ms的极致性能。

 2013:同步渲染(Stack Reconciler) →2017:异步渲染(Fiber架构) → 2019:并发模式(Concurrent Mode)

在这里插入图片描述
在这里插入图片描述

  • 虚拟DOM
- 内存中的轻量JS对象(`{ type: 'div', props: { className:... }, children: [...] }`- Diff算法优化策略:• 同级比较(时间复杂度O(n))• Key值复用• 组件类型比对
  • Fiber架构
- **解决痛点**:同步渲染阻塞主线程(>16ms导致掉帧)
- **核心创新**:• 链表结构(可中断/恢复)• 时间切片(5ms/任务块)• 优先级调度(用户交互>动画>数据加载)
- **双缓冲机制**:

在这里插入图片描述

在这里插入图片描述

  • 并发渲染&服务端组件

​​并发渲染通过Fiber架构的时间切片和优先级调度,使复杂界面保持60fps流畅交互;服务端组件则颠覆传统数据获取模式,将数据库访问直接集成到组件层,实现零客户端bundle的极速加载​​

在这里插入图片描述

在这里插入图片描述

| Hooks优化 |

- 内存优化:useMemo/useCallback避免重复计算
- 逻辑复用:自定义Hook解耦业务逻辑
- 渲染控制:React.memo减少重渲染

在这里插入图片描述

3. 网络协议
HTTP
状态码
缓存策略
HTTPS

| HTTPS加密 |

1. 非对称加密:交换密钥(RSA)
2. 对称加密:传输数据(AES)
3. 证书作用:验证服务端身份(防中间人攻击)

| 缓存策略 |

- 强缓存:Cache-Control/max-age(200 from memory)
- 协商缓存:ETag/Last-Modified(304 Not Modified)
4. 性能优化
场景解决方案
复杂计算阻塞
1. Web Workers:多线程执行(不阻塞UI)
2. 时间切片:将任务拆分为requestIdleCallback区块
3. 算法优化:空间换时间(记忆化)

| 首屏加载慢 |

- 资源分级:关键CSS内联/非核心JS异步
- 预加载:link rel=preload
- CDN加速:静态资源分发
5. **工程化体系
1. 构建工具:Webpack(tree-shaking) vs Vite(ESM)
2. 模块规范:CJS(require) vs ESM(import)
3. TS进阶:- 泛型:类型参数化(`type Response<T> = { data: T }`)- type vs interface:类型扩展能力不同
6. 算法/数据结构
题型解题框架
字符串两数相加
function addStrings(num1, num2) {let i = num1.length-1, j = num2.length-1;let carry = 0, res = [];while(i>=0 || j>=0 || carry) {const sum = (+num1[i--] || 0) + (+num2[j--] || 0) + carry;res.push(sum % 10);carry = Math.floor(sum / 10);}return res.reverse().join('');
}

| 组合总和(回溯) |

function combinationSum(candidates, target) {const res = [];const dfs = (start, path, sum) => {if (sum === target) res.push([...path]);if (sum >= target) return;for (let i = start; i < candidates.length; i++) {path.push(candidates[i]);dfs(i + 1, path, sum + candidates[i]); // 关键:i+1避免复用path.pop();}};dfs(0, [], 0);return res;
}

三、面试表达技巧

  1. STAR法则
    S(情境):在广告落地页优化项目中  
    T(任务):需解决首屏秒开率仅15%的问题  
    A(行动):采用ISR渲染+资源预加载+Lottie替代APNG  
    R(结果):秒开率提升至65%,曝光+10%
    
  2. 原理图解
    虚拟DOM diff过程:
    State变化
    生成新Virtual DOM
    Diff算法比对
    最小化patch
    批量更新真实DOM
  3. 避坑指南
    • React Fiber调度不是直接使用requestIdleCallback,而是模拟其逻辑
    • Array.sort在V8中:小数组用插入排序(稳定),大数组用快排(不稳定)

💡 终极话术
“我的技术知识体系建立在 深度理解原理 + 大型项目验证 基础上:

  • 通过实现简易React(含Fiber调度)理解框架设计
  • 在得物广告系统中验证性能优化方案的有效性
    这种能力可快速迁移到贵司复杂业务场景中。”

http://www.xdnf.cn/news/17278.html

相关文章:

  • svm的一些应用
  • Prometheus 通过读取文件中的配置来监控目标
  • MyBatis流式查询详解
  • 系统构成与 Shell 核心:从零认识操作系统的心脏与外壳
  • 机器学习-Logistic Regression
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘transformers’问题
  • AJAX与axios框架
  • 【轮速传感器方向判断原理】
  • Flutter开发 SingleChildScrollView、ScrollController
  • 液体泄漏识别误报率↓76%:陌讯多模态融合算法实战解析
  • camera人脸识别问题之二:【FFD】太阳逆光场景,人像模式后置打开美颜和滤镜,关闭heif拍摄格式对着人脸拍照,成像口红出现位置错误
  • 北京安全员C练习题
  • Xiphos Q8 摄像头板 高性能图像处理板
  • 恒科持续低迷:新能源汽车股下跌成拖累,销量担忧加剧
  • C++编程之旅-- -- --类与对象的奇幻征途之初识篇(一)(了解类的基本用法,计算类大小,分析this指针)
  • 快速上手 Ollama:强大的开源语言模型框架
  • GitLab同步提交的用户设置
  • 论文reading学习记录7 - daily - ViP3D
  • 日本站群服务器与普通日本服务器对比
  • Spring AMQP 入门与实践:整合 RabbitMQ 构建可靠消息系统
  • 【接口自动化测试】---requests模块
  • SpringBoot的profile加载
  • 可编辑51页PPT | 某鞋服品牌集团数字化转型项目建议书
  • 微服务如何保证系统高可用?
  • iOS 签名证书全流程详解,申请、管理与上架实战
  • 腾讯iOA:数据安全的港湾
  • 0_外设学习_ESP8266+云流转(no 0基础)
  • 最新的GPT5效果如何,我试了一下(附加GPT5大模型免费使用方法)
  • 力扣-189.轮转数组
  • 秋招笔记-8.8