腾讯前端面试集锦
本文档汇总了腾讯前端面试的真实题目和经历,涵盖WXG、普通部门等多个面试场景,适用于准备腾讯前端面试的候选人参考。
目录
面试题目汇总
一、网络协议
1. TCP相关
- TCP连接中的四次挥手流程是怎样的?
- TCP三次握手的过程是怎样的?
- TCP如何实现可靠传输?
- TCP和UDP的区别是什么?应用场景是什么?
- 你觉得微信聊天中哪些功能是UDP哪些是TCP?
- http2怎么通过streamID实现多路复用?
- 为什么http2不能完全解决队头阻塞,而http3却可以?
2. HTTP/HTTPS
- HTTP协议中常见的状态码有哪些,分别代表什么含义?
- HTTP与HTTPS协议有哪些主要区别?
- HTTP/1.0、HTTP/1.1和HTTP/2.0之间有哪些重要的改进和差异?
- HTTP/1.0、HTTP/1.1、HTTP/2之间有哪些主要区别?
- HTTP/2除了多路复用,还有哪些优点?
- HTTP2了解过吗?contentLength了解过吗?
- keepalive模式下为什么需要传contentLength字段?
- HTTP3了解过吗?
- 启用http2需要在nginx中做哪些配置?
- HTTPS数字证书交换的过程详细说一下?
- HTTPS网站证书是怎么获取的?
- 怎么验证权威机构颁发的证书是真的?
- nginx是怎么配置https的?
- https了解过吗?
3. 浏览器相关
- 描述从浏览器地址栏输入URL到页面完整呈现的整个过程?
- 描述一下浏览器缓存机制?
- 浏览器有哪些常见的缓存策略?
- 介绍一下CDN的工作原理和应用场景?
- 为什么bilibili、百度这些网站的html页面不做缓存?
4. WebSocket
- HTTP和WebSocket的区别?
- 实时协作编辑使用什么协议?
- WebSocket怎么建立的?和HTTP的关系
- WebSocket有没有同源限制?
- WebSocket的使用场景(socket.io降级)?
5. 其他
- 除了HTTP还用过什么应用层协议?
- 解释HTTP请求和响应的过程,以及关键组成部分
二、前端安全
1. XSS攻击
- 常见的Web安全攻击有哪些,如何防范跨站脚本攻击(XSS)?
- 前端常见的攻击方式有哪些?
- 针对这些前端攻击,有哪些防范手段?
2. CSRF攻击
- Token如何防范CSRF攻击?
- 讲解CSRF
- 前端安全防范措施?xss攻击和csrf攻击?
3. 其他安全
- JWT相对Cookie在安全性上有什么优势,即便JWT也放在请求头中传输?
- 在前端开发中,如何有效防范常见的安全漏洞,表单验证的最佳实践是什么?
- 有哪些常见的web攻击?ddos攻击怎么防御?
- 为甚么要有同源策略?
- 描述同源策略,以及如何解决跨域问题
三、跨域与缓存
1. 跨域
- 常见的跨域解决方案有哪些?
- 在实际项目中,你使用过CORS吗?具体应用场景是怎样的?
- 简单请求?跨域?
2. 缓存
- 解释缓存和缓冲的概念及异同?
- 缓存相关(对比缓存?强缓存?对应请求头)
- cookie有哪些属性?
四、JavaScript基础
1. 原型与继承
- 说说对OOP的理解
- 在JS中如何实现多重继承?
- 说一下原型链,原型链实现继承
- 如何理解原型链?
2. 闭包与作用域
- 闭包
- 闭包的理解
- 什么是变量提升
- 说说对闭包的理解
3. 事件循环
- 分析以下代码,说明其输出结果,并解释JavaScript事件循环机制?
- setTimeout(0)和promise.then()区别
- vue中nextTick的实现,结合浏览器事件循环机制说一下?
- node的事件循环机制?
4. ES6特性
- es6中的set(集合)和map(字典)的使用和对应的数据结构
- async和await在es5的浏览器中是怎么实现兼容的?polyfill了解过吗?
- Promise的工作原理,以及与传统回调函数的区别
- 描述一下TypeScript泛型的概念及应用?
5. 数据类型与方法
- 各种原生方法的使用,基本类型和引用类型
- JS基本数据类型有哪些?
6. 算法与数据结构
- 排序的实现
- 了解哪些排序算法?
- 说一下快排的实现思路
- 解释快速排序的原理和时间复杂度?
- 数组的sort排序算法
- 快排原理
- 如何实现查找字符串中最长不重复子串的算法?
- 如何将一个扁平化的数组结构转换为树形结构?
- 实现一个LRU缓存机制
五、CSS与渲染
1. CSS基础
- bfc布局规则
- 什么是盒模型?
- grid相比flex有哪些优点?
- 新版本的浏览器flex有gap属性吗?
- grid布局怎么处理兼容性?
2. 性能优化
- 阐述重绘(Repaint)和重排(Reflow)的概念及其对性能的影响?
- 什么情况下会引发重绘?
- SVG与Canvas在渲染机制、性能表现以及各自的潜在优劣方面有何区别?
- 是否使用过Canvas技术进行开发?
3. 移动端适配
- 项目怎么做的移动端适配?
- flexible原理
- 移动端的1像素问题怎么解决
- 有开发过移动端吗?
- 移动端常见的点击穿透怎么解决?
- css像素比有了解过吗?
- 安卓怎么兼容0.5px边框?
- 如果让你写一个自动转换0.5px边框的loader,该loader能自动将0.5px边框转换成安卓兼容的样式,你会怎么实现,简单说说思路
4. 其他
- 拖拽功能有实现过吗?
- relative定位和transform都是视觉上的偏移,那他们有什么不一样的地方?
- 访问元素的top属性会不会引起回流?
- 对于这种2d平面的transform动画有没有什么手段开启gpu加速优化它?
六、Vue框架
1. Vue基础
- 你熟悉的框架(vue),如何学习框架,vue的特点,vue的生命周期
- Vue的生命周期钩子有哪些?
- 用vue遇到的性能问题
- 在vue项目中如何设置统一的头部字段
2. Vue原理
- 介绍一下Vue的内部机制
- Vue 2和Vue3双向绑定原理有何不同?
- Vue 3为何选择使用Proxy实现响应式?
- Vue数据响应式的原理?
- vue中nextTick的实现,结合浏览器事件循环机制说一下?
- 你对Vue源码的理解程度如何?
3. 虚拟DOM与Diff算法
- 说一下对虚拟DOM的理解
- Diff算法的具体比较过程?
- 怎么看待virtual dom?ast语法树了解吗?
- vue diff?
4. 计算属性与监听
- vue computed和watch区别?
- computed怎么实现的缓存(dirty)?
5. Vue3新特性
- vue3双向数据绑定实现?createRender?
- 和vue2有哪些不同,提到了函数式编程,说下对函数式编程对的理解
6. 其他
- vue-loader做了哪些事情?
七、工程化与构建工具
1. Webpack
- 你对构建工具的理解
- Webpack插件的工作机制是怎样的?
- Webpack的构建工作流程是怎样的?
- 在Webpack中如何实现代码分割?
- 路由懒加载的实现原理是怎样的?
- 如何优化Webpack的打包速度?
- 项目中是否用过哪些loader?plugin?
- 你写的这个插件实现了什么?怎么实现的?
- sourcemap原理知道吗?
2. Vite
- 是否使用过Vite?
- Vite为何能够实现更快的开发构建速度?
3. 其他
- 打包工具都用过哪些?
八、Node.js
1. Node基础
- node相关问题,node的事件循环机制?
- stream两种模式的区别?
- 看过koa源码都会觉得和express有很大不同,说一下?
九、小程序
1. 小程序基础
- 你写过小程序,说下和写vue有什么区别?
- 对小程序的了解?从技术上讲
- 小程序有什么问题或有什么建议?
- 小程序与网页开发的区别
2. 小程序API
- 小程序中setData会有性能问题?
- jsbridge?
十、其他技术
1. 微前端
- 看你项目里有写微前端,使用的是哪种微前端框架?
- 微前端对比iframe有哪些优势?
- qiankun框架怎么实现多应用场景下的js隔离?
2. PWA与ServiceWorker
- servicework和webwork了解吗?
- work的使用需要做webpack配置吗?
- pwa应用怎么做离线提交?
- 前端有监听断网联网状态的事件有了解过吗?
- localStorage大小是多少?
- 如果前端要持久化图片这种比较大的资源怎么办?
3. WebWorker
- 你对Web Worker的理解是什么?
4. 低代码
- 说说你对低代码的了解
5. 云原生
- 说说对云原生的理解
6. Nginx
- 介绍一下Nginx及其在项目中的应用?
十一、项目与经验
1. 项目经验
- 介绍一下一个项目经验?
- 在开发个人项目的时候用到了哪些工具?
- 为什么要做这个项目?
- 前后端如何交互?
- 项目中,业务数据的传输形式是什么?
- 项目是如何进行部署的?
2. 项目优化
- 在项目中具体应用了哪些性能优化方法,这些优化策略是否都是独立思考并实现的?
- 项目中是否实现了分片上传功能?
- 首屏加载时间怎么优化?
- 首屏加载fcp、lcp指标有了解过吗?
- ssr和预渲染有什么区别?
3. 难点与解决
- 实习做了什么?遇到过什么难点?是怎么解决的?
- 如果程序出现错误,调试思路和解决方法是怎样的?
十二、算法题
1. 数组与字符串
- 实现一个函数,接受数组作为参数,数组元素为整数或者数组(数组里面还可能有数组),函数返回扁平化后的数组。要求给出不使用递归、不使用字符串处理的解法
- 如:输入 [1, [2, [ [3, 4], 5, []], 6]],输出 [1, 2, 3, 4, 5, 6]
- 假设有一个升序数组,经过不确定长度的偏移,得到一个新的数组,我们称为循环升序数组。(例:[0,3,4,6,7] 可能变成 [6,7,0,3,4])。给定一个数字和一个循环升序数组,判断这个数字是否在这个数组内,在的话返回 true,否则返回 false。要求时间复杂度 O(logN)
- 示例1:输入:nums = [6,7,0,3,4], target = 0,输出:true
- 示例2:输入:nums = [6,7,0,3,4], target = 2,输出:false
2. 并发与请求
- 设计一个函数,用于测试请求一个 URL 的平均耗时。要求可以设置总的请求次数以及并发请求个数。假设环境是小程序,使用的接口是 wx.request ,不考虑请求失败的情况
3. 动态规划
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法
- 爬楼梯
- 打家劫舍 III
- 三数之和的变形题
- 组合问题
- 图相关的题目
4. 搜索与查找
- 搜索二维矩阵
5. 字符串处理
- 猴子吃香蕉
- 回文字符串个数(这道题出现频率很高,朋友面试的时候也遇到了,最长回文子字符串)
6. 树与堆
- 堆和栈的区别,哪一个需要程序员控制?
- 给你一个数组,把他变成大顶堆/小顶堆
7. 手写题
- 手写bind
- 手写简版promise,基础架子,不用写all、race等api
- 手写代码函数柯里化和数组转树
十三、个人问题
1. 自我介绍
- 自我介绍一下?
- 自我介绍和项目介绍
2. 个人评价
- 个人在技术能力或职业发展方面,相较于他人有哪些突出的优势和需要改进的劣势?
- 自我评价一下
- 你觉得有哪些优点?
- 周围人对你的评价
- 你遇到的难题
3. 学习与成长
- LeetCode刷题数量大概是多少,是否有偏好的题目类型?
- 怎么学习前端的?
- 抗压能力如何?
- 最近在看什么新东西吗?
- 为什么要离职?怎么学习的?
- 你遇到问题是更喜欢自己找答案还是去问别人?
- 平时花在写代码上的时间多吗?
4. 背景信息
- 方便介绍一下籍贯和教育背景吗?
- 家在哪里?
- 家住哪?
5. 其他
- 有什么问题想向我们提问吗?
- 有什么问题吗?
- mySQL了解吗?
- 实习周期?
- 平时关注哪些技术论坛?
- 有写技术博客的习惯吗?
- 平时有什么爱好?
- 在访问国外网站时,你遇到过哪些问题?你是如何解决的?
完整面试经历
一、WXG部门面经(失败案例)
面试信息
- 面试部门:WXG(微信小店团队)
- 面试轮次:一面(直接挂)
- 面试方式:电话面试
- 面试时长:1小时20分钟(笔试题1小时+面试20分钟)
- 主要业务:微信小店,包括售后、物流、客服等功能
- 技术栈:小程序、Node.js、Vue都有涉及
- 工作节奏:一般早上10点,晚上可能也是9点多、10点
面试特点
- 一上来直接4道笔试题,时间1小时
- 非常重视算法能力,是硬性要求
- 要求尽量用效率更高的方法解题
笔试题目(一小时)
- 题目1:三数之和的变形题
- 题目2:组合问题
- 题目3:图相关的题目
- 题目4:打家劫舍 III(动态规划)
面试官反馈
- 做了一个小时20分钟左右,面试官问了每一道题的思路和想法
- 第一轮面试主要就是考察算法的基础能力
- 倒不是说在日常工作中需要直接用到算法
- 这是数据结构里面最基础的算法
- 考察的是在日常代码里面,有一些算法思维在里面
- 当你知道怎么去评估时间复杂度,以及怎么用算法思维解决日常代码遇到的问题后,写出来的代码效率会更高,会高很多,有时候是数量级的提升
- 这个在性能优化方面其实是比较有优势的
- 所以这4道题在我们看来都是考基础能力
- 目前看来跟要求还是有一定差距的
面试总结
- 难度等级:⭐⭐⭐⭐⭐(极高)
- 挂掉原因:算法能力不足
- 准备建议:重点刷LeetCode,特别是动态规划、图、树相关题目
二、WXG部门面经(成功案例 - 6轮)
面试信息
- 面试部门:WXG开平(开发平台基础部)小程序中心
- 面试轮次:6轮 = 3轮部门技术面 + 2轮面委面 + 1轮HR面
- 面试结果:拿到Offer
- 作者背景:前端小哥,秋招拿下BATTM等10家大厂offer
前言
- wxg的总部在广州,深圳也有分部,成都有企业微信,北京的微信分部人比较少,主要做算法
- wxg以门槛高、hc少、年终奖多而著称
- 微信是统招统分,只有到次年1月中下旬才能知道最终分配的部门,但一般来说就是前几轮面试官所在的部门
- 面委全称是面试委员会,汇集了微信事业群很多技术大佬,面委面试主要是为了保证wxg招聘的公平公正,严格把关每一个wxg的候选人
- wxg对算法题要求比较高,推荐大家把CodeTop上边wxg的题目刷一遍
- CodeTop:https://codetop.cc
一面(部门技术面)
- 时长:60min写代码,写完后电话交流
题目1:数组扁平化
实现一个函数,接受数组作为参数,数组元素为整数或者数组(数组里面还可能有数组),函数返回扁平化后的数组。要求给出不使用递归、不使用字符串处理的解法
javascript
// 输入:[1, [2, [ [3, 4], 5, []], 6]]
// 输出:[1, 2, 3, 4, 5, 6]题目2:循环升序数组查找
假设有一个升序数组,经过不确定长度的偏移,得到一个新的数组,我们称为循环升序数组。(例:[0,3,4,6,7] 可能变成 [6,7,0,3,4])。给定一个数字和一个循环升序数组,判断这个数字是否在这个数组内,在的话返回 true,否则返回 false。要求时间复杂度 O(logN)
javascript
// 示例1:
// 输入:nums = [6,7,0,3,4], target = 0
// 输出:true
// 示例2:
// 输入:nums = [6,7,0,3,4], target = 2
// 输出:false题目3:并发请求测试
设计一个函数,用于测试请求一个 URL 的平均耗时。要求可以设置总的请求次数以及并发请求个数。假设环境是小程序,使用的接口是 wx.request ,不考虑请求失败的情况
javascript
// wx.request调用示例:
wx.request({
url: 'https://qq.com',
success() {
// 请求完成
}
})其他问题
- setTimeout(0)和promise.then()区别
- 实时协作编辑使用什么协议?
- WebSocket怎么建立的?和HTTP的关系
- WebSocket有没有同源限制?
- 后边都是聊项目
二面(部门技术面)
- 聊项目和实习
- 对小程序的了解?从技术上讲
- 小程序有什么问题或有什么建议?
三面(部门技术面)
- 聊项目
- 讲解CSRF
四面(面委一面)
- 时长:30min做题,写完腾讯会议交流
题目1:闭包与事件循环
javascript
for (var i = 0; i < 4; i++) {
setTimeout(function() {
console.log(i);
}, 300);
}请问打印结果是?
题目2:爬楼梯
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法
题目3:闭包嵌套
javascript
function test(a,b) {
console.log(b)
return {
test:function(c){
return test(c,a);
}
};
}
var retA = test(0);
retA.test(2);
retA.test(4);
retA.test(8);
var retB = test(0).test(2).test(4).test(8);
var retC = test('good').test('bad');
retC.test('good');
retC.test('bad');请问打印结果是?
先讲题,再聊项目
五面(面委二面)
- 小程序与网页开发的区别
- Babel转译原理
- 数组的sort排序算法
- 快排原理
六面(HR面)
- 周围人对你的评价
- 你遇到的难题
- 微信是统招统分,如果你被分到了你不太想去的部门(边缘部门),你会怎么做
三、完整的三轮面试经历
一面(电话面试)
CSS与JS基础
- 各种css js基础相关问题
- 各种原生方法的使用,基本类型和引用类型
- es6中的set(集合)和map(字典)的使用和对应的数据结构
- sort的实现
- bfc布局规则
- 项目怎么做的移动端适配?
- flexible原理
- 移动端的1像素问题怎么解决
原型与继承
- 说一下原型链,原型链实现继承
HTTP与TCP
- http和tcp协议?
缓存
- 缓存相关(对比缓存?强缓存?对应请求头)cookie有哪些属性?
跨域
- 简单请求?跨域?
Vue
- vue中nextTick的实现,结合浏览器事件循环机制说一下?
模块化
- 说说commonjs和esmodule?
学习情况
- 最近在看什么新东西吗?
二面(视频面试)
- 时长:面了两个多小时,中途换了个面试官
项目深入
- 项目相关问题,项目还是需要好好准备。问得有点仔细
- 遇到过哪些难点?怎么解决的?
- 做过哪些优化?优化有量化吗?
- 用过哪些loader?plugin?
- 你写的这个插件实现了什么?怎么实现的?
- sourcemap原理知道吗?(因为瞄过一个博客,说知道一点,说了个vlq编码,然后被问得很尴尬,不会直接说不会就好)
HTTP与TCP深入
- http和tcp、https、http2(队头阻塞?解决了哪些问题?哪有哪些问题未解决?tcp和udp?)
- 摘要算法和对称加密、非对称加密大概说一下?
- 摘要和加密的区别?
- 知道哪些加密算法?
- websocket的使用场景(socket.io降级)?
前端安全
- 前端安全防范措施?xss攻击和csrf攻击?
Vue深入
- 怎么看待virtual dom?ast语法树了解吗?
- vue-loader做了哪些事情?
- vue diff?
- vue computed和watch区别?
- computed怎么实现的缓存(dirty)?
- vue3双向数据绑定实现?createRender?
- 和vue2有哪些不同,提到了函数式编程,说下对函数式编程对的理解。(答得很垃圾,vue3了解不多,尤大的直播没认真看)
设计模式
- 对MVC (react) MVVM(vue)的了解
Node.js
- node相关问题,node的事件循环机制?
- stream两种模式的区别?
- 看过koa源码都会觉得和express有很大不同,说一下?
小程序
- 你写过小程序,说下和写vue有什么区别?
- 然后我说setData会有性能问题(react中setState会有这个问题吗?又给自己挖坑了)
- 说下jsbridge?
算法题
- 时针和分针的夹角?
个人问题
- 为什么要离职?怎么学习的?
- 有什么问题吗?
三面(视频面试)
项目与业务
- 项目相关问题?
安全与网络
- 和很多二面的问题类似
- 为甚么要有同源策略?
- dns劫持?
团队协作
- 团队协作,以前的开发流程?
职业规划
- 职业规划?
提问环节
- 有什么问题吗?
笔试题(二面、三面后的笔试)
手写题
- 手写bind
- 手写简版promise,基础架子,不用写all、race等api
算法题
- 爬楼梯
- 猴子吃香蕉
- 回文字符串个数(这道题出现频率很高,朋友面试的时候也遇到了,最长回文子字符串)
四、另一组三轮面试经历
一面
自我介绍与项目
- 自我介绍和项目介绍
- 在开发个人项目的时候用到了哪些工具?
Vue内部机制
- 介绍一下Vue的内部机制
- 说一下对虚拟DOM的理解
- Diff算法的具体比较过程?
- Vue数据响应式的原理?
- Vue的生命周期钩子有哪些?
JavaScript基础
- 说说对闭包的理解
- 什么是变量提升
- 如何理解原型链?
- 说说对OOP的理解
- 在JS中如何实现多重继承?
- JS基本数据类型有哪些?
CSS与渲染
- 什么是盒模型?
- 从输入URL到页面呈现发生了什么?
- 什么情况下会引发重绘?
算法
- 了解哪些排序算法?
- 说一下快排的实现思路
个人问题
- 怎么学习前端的?
- 自我评价一下
- 抗压能力如何?
二面
自我介绍与项目
- 自我介绍和项目介绍
- 为什么要做这个项目?
- 前后端如何交互?
网络协议
- 除了HTTP还用过什么应用层协议?
- 项目中,业务数据的传输形式是什么?
- HTTP和WebSocket的区别?
- 说一下TCP三次握手
- TCP如何实现可靠传输?
数据库
- mySQL了解吗?
其他技术
- 说说你对低代码的了解
算法题
- 搜索二维矩阵
个人问题
- 平时关注哪些技术论坛?
- 有写技术博客的习惯吗?
- 说说对云原生的理解?
- 平时有什么爱好?
- 你觉得自己有哪些优点?
- 家在哪里?
- 实习周期?
五、深入技术面试
HTTP/HTTPS/TCP深入
- http2了解过吗?contentLength了解过吗?
- keepalive模式下为什么需要传contentLength字段?
- http2是怎么通过streamID实现多路复用的?
- 启用http2需要在nginx中做哪些配置?
- http3了解过吗?
- 为什么http2不能完全解决队头阻塞,而http3却可以?
- https了解过吗?
- 网站证书是怎么获取的?
- 怎么验证权威机构颁发的证书是真的?
- nginx是怎么配置https的?
Canvas与性能
- 拖拽功能有实现过吗?
- relative定位和transform都是视觉上的偏移,那他们有什么不一样的地方?
- 访问元素的top属性会不会引起回流?
- 对于这种2d平面的transform动画有没有什么手段开启gpu加速优化它?
ES6兼容
- async和await在es5的浏览器中是怎么实现兼容的?
- polyfill了解过吗?
Web安全
- 有哪些常见的web攻击?
- ddos攻击怎么防御?
首屏优化
- 首屏加载时间怎么优化?
- 首屏加载fcp、lcp指标有了解过吗?
- 为什么bilibili、百度这些网站的html页面不做缓存?
- ssr和预渲染有什么区别?
移动端
- 有开发过移动端吗?
- 移动端常见的点击穿透怎么解决?
- css像素比有了解过吗?
- 安卓怎么兼容0.5px边框?
打包工具
- 打包工具都用过哪些?
- 如果让你写一个自动转换0.5px边框的loader,该loader能自动将0.5px边框转换成安卓兼容的样式,你会怎么实现,简单说说思路
CSS布局
- grid相比flex有哪些优点?
- 那新版本的浏览器flex有gap属性吗?
- grid布局怎么处理兼容性?
Web Worker
- servicework和webwork了解吗?
- work的使用需要做webpack配置吗?
- pwa应用怎么做离线提交?
- 前端有监听断网联网状态的事件有了解过吗?
- localStorage大小是多少?
- 如果前端要持久化图片这种比较大的资源怎么办?
微前端
- 看你项目里有写微前端,使用的是哪种微前端框架?
- 微前端对比iframe有哪些优势?
- qiankun框架怎么实现多应用场景下的js隔离?
手写题
- 手写代码函数柯里化和数组转树
面试总结与建议
WXG部门面试特点
1. 面试轮次多(6轮)
- 3轮部门技术面:基础技术考察、项目深入、综合能力
- 2轮面委面:严格的算法和技术深度把关
- 1轮HR面:综合素质和匹配度考察
2. 算法能力是硬性要求
- 每轮都有算法题
- 一面:60min写3道题(数组扁平化、循环升序数组查找、并发请求)
- 四面(面委):30min写3道题(闭包、爬楼梯、闭包嵌套)
- 推荐刷CodeTop上wxg的题目
3. 小程序考察重点
- 小程序与网页开发的区别
- 小程序的技术问题和建议
- wx.request等小程序API的使用
4. 前端基础深度考察
- setTimeout(0)和promise.then()的区别(事件循环)
- WebSocket建立过程和同源限制
- CSRF攻击原理
- Babel转译原理
- 数组sort算法和快排原理
5. 项目经验要求高
- 每轮都会聊项目
- 要求深入理解项目技术细节
- 实习经验很重要
面试通过关键点
1. 算法基础扎实
- 能快速解出中等难度算法题
- 理解时间复杂度优化
- CodeTop wxg题库必刷
2. 前端基础深入
- 闭包、事件循环、原型链等核心概念
- 网络协议(HTTP、WebSocket)理解深入
- 框架原理(Vue、小程序)掌握透彻
3. 项目经验丰富
- 有真实的实习经验
- 能深入讲解项目技术细节
- 对项目有思考和优化建议
4. 学习能力强
- 持续学习新技术
- 对技术原理有深入理解
- 能举一反三
WXG部门 vs 普通部门对比
| 维度 | WXG部门 | 普通部门 |
|---|---|---|
| 面试轮次 | 6轮 | 3-4轮 |
| 算法要求 | 极高 | 中等 |
| 面委面试 | 有(2轮) | 无或总监面 |
| 难度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| HC数量 | 很少 | 相对较多 |
| 年终奖 | 多 | 正常 |
备考建议
1. 算法准备
- CodeTop刷wxg题目
- LeetCode中等题重点准备
- 动态规划、二分查找、数组操作必练
2. 前端基础
- 深入理解事件循环、闭包、原型链
- 网络协议:HTTP、WebSocket、TCP
- 安全:XSS、CSRF、跨域
3. 小程序知识
- 小程序与H5的区别
- 小程序架构和原理
- 常见问题和优化方案
4. 项目准备
- 准备1-2个深入理解的项目
- 能讲解技术选型和架构设计
- 有具体的优化案例和数据
5. 心态准备
- 6轮面试需要很好的心态
- 面委面试是最终把关,要展现出综合实力
- 保持自信和持续学习的心态
高频考点总结
超高频考点(必考)
- 事件循环机制(setTimeout vs promise.then)
- 闭包原理与应用
- 原型链与继承
- TCP三次握手/四次挥手
- HTTP/HTTPS区别与原理
- Vue双向绑定原理
- 虚拟DOM与Diff算法
- 跨域解决方案
- XSS/CSRF攻击与防范
- 数组扁平化
高频考点
- 浏览器缓存机制
- Webpack打包优化
- 前端性能优化
- 移动端适配
- HTTP/2.0特性
- WebSocket原理
- 小程序开发
- 算法题(数组、树、动态规划)
- 前端工程化
- TypeScript泛型
中频考点
- CSS布局(Flex、Grid)
- Canvas与SVG
- Node.js基础
- 微前端架构
- PWA与ServiceWorker
- 首屏优化指标
- 设计模式(MVC/MVVM)
- Babel转译原理
- Web Worker
- Nginx配置
TOP 20 考点优先级
- 事件循环机制 - 每次必考,涉及setTimeout、Promise、async/await
- 闭包 - 核心概念,常结合实际场景考查
- 原型链与继承 - JavaScript核心,必须掌握
- TCP三次握手/四次挥手 - 网络基础,高频考点
- HTTP/HTTPS - 安全、状态码、版本差异
- Vue双向绑定原理 - Vue2 vs Vue3,响应式实现
- 虚拟DOM与Diff算法 - 框架原理,深度考查
- 跨域解决方案 - CORS、JSONP、代理等
- XSS/CSRF - 前端安全,必会内容
- 数组扁平化 - 经典算法题,多种解法
- 浏览器缓存 - 强缓存 vs 对比缓存,缓存策略
- Webpack - Loader、Plugin、代码分割
- 性能优化 - 首屏、打包、渲染优化
- 移动端适配 - flexible、1像素问题、Retina屏
- HTTP/2.0 - 多路复用、二进制帧、头部压缩
- WebSocket - 握手过程、与HTTP区别、应用场景
- 小程序 - 双线程模型、setData、API使用
- 动态规划 - 爬楼梯、打家劫舍等经典题
- TypeScript - 泛型、类型推断、类型体操
- 项目经验 - 难点解决、技术选型、优化方案
面试准备清单
技术栈准备
- [ ] JavaScript基础(闭包、原型链、事件循环)
- [ ] Vue框架(原理、源码、最佳实践)
- [ ] 网络协议(TCP/IP、HTTP/HTTPS、WebSocket)
- [ ] 前端工程化(Webpack、Vite、Babel)
- [ ] 性能优化(首屏、打包、渲染)
- [ ] 前端安全(XSS、CSRF、跨域)
- [ ] 小程序开发(双线程、API、性能)
- [ ] Node.js基础(事件循环、Stream)
- [ ] TypeScript(类型系统、泛型)
- [ ] 微前端(qiankun、single-spa)
算法准备
- [ ] LeetCode刷题200+
- [ ] CodeTop刷WXG题目
- [ ] 动态规划专题
- [ ] 数组与字符串专题
- [ ] 树与图专题
- [ ] 二分查找专题
- [ ] 手写题(bind、promise、数组扁平化等)
项目准备
- [ ] 2-3个深入理解的项目
- [ ] 技术选型与架构设计
- [ ] 难点与解决方案
- [ ] 优化方案与数据
- [ ] 业务理解与思考
软技能准备
- [ ] 自我介绍(1-3分钟版本)
- [ ] 项目介绍(STAR法则)
- [ ] 学习能力与成长经历
- [ ] 团队协作与沟通能力
- [ ] 职业规划与目标
面试常见问题
个人相关
- 自我介绍
- 为什么选择前端?
- 介绍一下你的项目
- 遇到的最大困难是什么?
- 你是如何学习的?
- 你有什么优缺点?
- 你的职业规划是什么?
- 对加班的看法?
技术相关
- 你觉得哪个技术最值得学习?
- 你最近在学习什么新技术?
- 你如何看待前端发展趋势?
- 你如何解决技术难题?
- 你对团队技术栈有什么建议?
面试技巧
回答技巧
- STAR法则:Situation(情境)→ Task(任务)→ Action(行动)→ Result(结果)
- 先总后分:先给出结论,再展开说明
- 举例说明:用具体案例佐证观点
- 主动延伸:从问题延伸到相关知识点
沟通技巧
- 不懂就问:不清楚的地方可以要求澄清
- 不会就说:不会的题目诚实承认,展示学习态度
- 互动交流:适当反问,展现思考深度
- 控制节奏:回答时控制语速,避免过快或过慢
心态调整
- 自信但不自负:展现能力,但保持谦逊
- 压力面试:面对压力保持冷静
- 多轮面试:保持状态,每轮都要全力以赴
- 失败总结:从失败中学习,持续改进
资源推荐
学习资源
- CodeTop:https://codetop.cc - 腾讯面试题库
- LeetCode:算法练习平台
- MDN Web Docs:前端权威文档
- Vue官方文档:框架学习
- 掘金/思否:技术社区
面经资源
- 牛客网面经区
- 知乎前端面试专题
- 掘金面试经验分享
- 各大厂前端招聘公众号
最后的建议
- 持续学习:前端技术更新快,保持学习热情
- 深度思考:不只是会用,要理解原理
- 实践为王:多写代码,多做项目
- 总结归纳:定期总结,形成知识体系
- 保持自信:相信自己的能力,展现最好的自己
祝面试顺利,拿到心仪的Offer!💪
