2026-07-31 05:34:47
总结:以下是对蚂蚁、字节、滴滴三家公司前端岗位面试经历的梳理,涵盖技术考察点、项目经验、算法题及面试策略等内容。
字节跳动面试总结浏览器缓存:
强缓存:通过Expires和Cache-Control控制,直接从浏览器获取数据。
协商缓存:通过Last-Modified/If-Modified-Since和Etag/If-None-Match控制,需先访问服务器验证缓存有效性,其中Etag优先级更高。
Cookie与Session:
Session是服务端保存的数据结构,用于跟踪用户状态;Cookie是客户端保存用户信息的机制,是实现Session的一种方式。
前端安全:
XSS:攻击者插入恶意脚本,用户浏览时执行恶意代码。
CSRF:攻击者利用用户Cookie伪造请求,在用户不知情时执行未授权操作。
跨域处理:
常用方案:JSONP、CORS、Nginx代理。
CORS实现:服务端设置Access-Control-Allow-Origin;GET和POST的预检请求(OPTIONS)差异需关注。
HTTPS过程:需理解握手流程及加密原理。
Webpack优化:
体积优化:使用webpack-bundle-analyzer分析。
速度优化:使用speed-measure-webpack-plugin分析,参考“打包速度提升90%”方案。
ES Module与CommonJS:
ES Module是值的引用,编译时输出接口;CommonJS是值的拷贝,运行时加载。
React动态加载:通过React.lazy和import()实现,原理涉及动态创建script标签及JSONP请求。
笔试题:
页面布局:页头固定、页脚在页面底部(非视口底部)。
new执行过程:创建对象、指向原型、绑定this、返回对象。
加法精度处理:将浮点数转为整数计算,大数通过字符串处理进位。
项目经验:重点考察项目难点及解决方案、技术亮点。
ES6继承:实现extends功能,需正确处理原型链。
大数相乘:字符串处理进位,类似加法思路。
项目经验:深入讨论技术方案及项目价值。
防抖函数:限制函数执行频率。
算法题:如“不可牌中的顺子”(LeetCode原题)。
Webpack原理:
初始化参数、编译、确定入口、编译模块、输出资源、输出完成。
插件通过监听事件执行逻辑。
Babel原理:
解析(Parsing)、转换(Transforming)、生成(Generating)。
使用babylon生成AST,babel-traverse遍历修改AST,babel-generator生成代码。
虚拟DOM:理解其价值及在React中的实现。
项目性能优化:结合具体项目经验回答。
Webpack Loader/Plugin:需有实际编写经验。
Redux原理:与发布订阅模式的区别在于数据可预测和可回溯。
React-Redux原理:通过Provider和connect组件关联React。
多端原理:需了解跨端开发技术。
TCP与HTTP:
TCP可建立多个连接,HTTP管线化需关注。
三次握手(建立连接)、四次挥手(断开连接)的必要性。
Babel插件:需了解AST生成及词法/语法分析。
React运行时:需研究React内部机制。
项目经验:深入讨论复杂问题解决及数据量处理。
组件权限设计:需结合业务场景设计。
Node.js:需了解Express及中间件原理。
后端服务稳定性:如降级处理、容灾方案。
数据库优化:索引、分表、分库策略。
项目难点:需展示技术深度及解决方案。
技术优势:如对React原理的深入理解。
职业规划:需明确技术方向及学习计划。
项目经验:需展示技术沉淀及业务价值。
状态管理:除Redux外,需了解Hooks、Mbox、Dva等。
Hooks原理:需参考草案理解实现机制。
Vue3类似Hooks:需对比React Hooks理解设计思想。
项目经验:深入讨论技术难点及解决方案。
TypeScript引入:需说明类型检查的优势。
Dva与Redux区别:需理解Dva的封装及约定。
组件升级:需设计自动化升级方案,确保安全性。
项目经验:非前端技术考察,如业务理解及改进方案。
业务反馈:需展示项目对业务方的价值。