腾讯前端面经 - 按部门经历分类
本文档按部门对腾讯前端面试经历进行分类整理,帮助候选人了解不同部门的面试特点和重点。
目录
WXG部门
部门介绍
基本信息
- 全称:微信事业群(WeChat Group)
- 总部:广州
- 分部:深圳、成都(企业微信)、北京(微信分部,人少,主要做算法)
- 特点:门槛高、hc少、年终奖多
- 面试形式:统招统分,次年1月中下旬才能知道最终分配的部门
- 分配规则:一般就是前几轮面试官所在的部门
面委制度
- 全称:面试委员会
- 组成:汇集了微信事业群很多技术大佬
- 目的:为了保证wxg招聘的公平公正,严格把关每一个wxg的候选人
- 其他事业群:不太清楚有没有面委会,但有的会有总监面,意思差不多
特殊情况
- 今年如果投递腾讯的可以试试WXG,第一次开放1000+实习hc,是微信事业群史上最大规模的实习生招聘
- 实习不限制年级,23届、24届的同学也可以申请
- wxg对算法题要求比较高,推荐大家把CodeTop上边wxg的题目刷一遍
- CodeTop:https://codetop.cc
WXG面试流程
标准流程(6轮)
- 一面:部门技术面(60min写代码,写完后电话交流)
- 二面:部门技术面(聊项目和实习)
- 三面:部门技术面(聊项目)
- 四面:面委一面(30min做题,写完腾讯会议交流)
- 五面:面委二面
- 六面:HR面
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
一面(部门技术面)
- 时长: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面)
- 周围人对你的评价
- 你遇到的难题
- 微信是统招统分,如果你被分到了你不太想去的部门(边缘部门),你会怎么做
WXG面试特点总结
优势
- 门槛高,技术氛围好
- 年终奖多,福利待遇好
- 面委制度保证公平公正
- 技术要求高,能学到很多东西
劣势
- hc少,竞争激烈
- 面试轮次多(6轮)
- 算法要求极高
- 工作强度可能较大
面试建议
- 算法是硬性要求:必须重点刷LeetCode,特别是动态规划、图、树相关题目
- 推荐CodeTop:刷WXG相关的题目,了解常考题型
- 准备笔试:WXG一面可能有1小时4道题的笔试环节
- 深入理解小程序:WXG很多业务涉及小程序,需要深入理解
- 准备项目经验:项目细节会被深入挖掘,需要准备充分
其他部门
部门特点
- 相对WXG来说,算法要求没有那么高
- 面试轮次相对较少(通常3-4轮)
- 更注重项目经验和实际应用能力
- 技术栈可能更加多样化
完整的三轮面试经历
一面(电话面试)
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有很大不同,说一下?
工程化
- 你对构建工具的理解
- Webpack插件的工作机制是怎样的?
- Webpack的构建工作流程是怎样的?
- 在Webpack中如何实现代码分割?
- 路由懒加载的实现原理是怎样的?
- 如何优化Webpack的打包速度?
- 是否使用过Vite?
- Vite为何能够实现更快的开发构建速度?
性能优化
- 阐述重绘(Repaint)和重排(Reflow)的概念及其对性能的影响?
- 什么情况下会引发重绘?
- SVG与Canvas在渲染机制、性能表现以及各自的潜在优劣方面有何区别?
- 是否使用过Canvas技术进行开发?
- 在项目中具体应用了哪些性能优化方法,这些优化策略是否都是独立思考并实现的?
- 项目中是否实现了分片上传功能?
- 首屏加载时间怎么优化?
- 首屏加载fcp、lcp指标有了解过吗?
- ssr和预渲染有什么区别?
小程序
- 你写过小程序,说下和写vue有什么区别?
其他技术
- 你对Web Worker的理解是什么?
- servicework和webwork了解吗?
- work的使用需要做webpack配置吗?
- pwa应用怎么做离线提交?
- 前端有监听断网联网状态的事件有了解过吗?
- localStorage大小是多少?
- 如果前端要持久化图片这种比较大的资源怎么办?
- 看你项目里有写微前端,使用的是哪种微前端框架?
- 微前端对比iframe有哪些优势?
- qiankun框架怎么实现多应用场景下的js隔离?
项目经验
- 介绍一下一个项目经验?
- 在开发个人项目的时候用到了哪些工具?
- 为什么要做这个项目?
- 前后端如何交互?
- 项目中,业务数据的传输形式是什么?
- 项目是如何进行部署的?
三面(视频面试)
个人问题
- 自我介绍一下?
- 个人在技术能力或职业发展方面,相较于他人有哪些突出的优势和需要改进的劣势?
- 自我评价一下
- 你觉得有哪些优点?
- LeetCode刷题数量大概是多少,是否有偏好的题目类型?
- 怎么学习前端的?
- 抗压能力如何?
- 最近在看什么新东西吗?
- 为什么要离职?怎么学习的?
- 你遇到问题是更喜欢自己找答案还是去问别人?
- 平时花在写代码上的时间多吗?
- 方便介绍一下籍贯和教育背景吗?
- 家在哪里?
- 家住哪?
- 有什么问题想向我们提问吗?
- 有什么问题吗?
- mySQL了解吗?
- 实习周期?
- 平时关注哪些技术论坛?
- 有写技术博客的习惯吗?
- 平时有什么爱好?
- 在访问国外网站时,你遇到过哪些问题?你是如何解决的?
项目问题
- 实习做了什么?遇到过什么难点?是怎么解决的?
- 如果程序出现错误,调试思路和解决方法是怎样的?
技术问题
- 你熟悉的框架(vue),如何学习框架,vue的特点,vue的生命周期
- 用vue遇到的性能问题
- 在vue项目中如何设置统一的头部字段
- 你对Vue源码的理解程度如何?
- 介绍一下Vue的内部机制
- 拖拽功能有实现过吗?
- relative定位和transform都是视觉上的偏移,那他们有什么不一样的地方?
- 访问元素的top属性会不会引起回流?
- 对于这种2d平面的transform动画有没有什么手段开启gpu加速优化它?
- grid相比flex有哪些优点?
- 新版本的浏览器flex有gap属性吗?
- grid布局怎么处理兼容性?
- 你对构建工具的理解
- 你写的这个插件实现了什么?怎么实现的?
- 打包工具都用过哪些?
- 有开发过移动端吗?
- 移动端常见的点击穿透怎么解决?
- css像素比有了解过吗?
- 安卓怎么兼容0.5px边框?
- 如果让你写一个自动转换0.5px边框的loader,该loader能自动将0.5px边框转换成安卓兼容的样式,你会怎么实现,简单说说思路
部门对比总结
WXG vs 其他部门
| 对比维度 | WXG部门 | 其他部门 |
|---|---|---|
| 面试轮次 | 6轮(3部门技术+2面委+1HR) | 通常3-4轮 |
| 算法要求 | 极高,硬性要求 | 相对较低 |
| 笔试环节 | 一面可能1小时4道题 | 通常无笔试 |
| 项目经验 | 重要,但算法更关键 | 非常重要 |
| 技术栈 | 小程序、Node.js、Vue | 多样化 |
| hc数量 | 很少 | 相对较多 |
| 难度等级 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| 福利待遇 | 年终奖多 | 正常水平 |
| 工作强度 | 较大 | 相对正常 |
| 统招统分 | 是 | 否 |
| 面委制度 | 有 | 可能无 |
选择建议
选择WXG如果:
- 算法基础扎实,喜欢挑战
- 希望在高技术要求的环境中成长
- 看重年终奖和福利待遇
- 对小程序开发有浓厚兴趣
- 不介意面试轮次多和竞争激烈
选择其他部门如果:
- 算法基础一般,但项目经验丰富
- 希望面试压力相对较小
- 更注重工作生活平衡
- 对特定业务方向有明确偏好
- 希望更快拿到offer
备考建议
WXG备考重点
- 算法是第一优先级:重点刷动态规划、图、树相关题目
- CodeTop WXG题目:针对性练习常考题型
- 小程序深入理解:小程序原理、性能优化、最佳实践
- 项目经验梳理:项目难点和优化点需要准备充分
- 准备1小时笔试:练习在限时内完成多道算法题
其他部门备考重点
- 项目经验是第一优先级:梳理项目细节和优化案例
- 技术广度:网络、JavaScript、Vue、工程化等都需要准备
- 项目优化实践:准备量化的优化数据和效果
- Vue源码理解:虚拟DOM、Diff算法、响应式原理等
- Webpack原理:构建流程、Loader、Plugin等
总结
- WXG:适合算法能力强、喜欢挑战、希望在高要求环境中成长的候选人
- 其他部门:适合项目经验丰富、技术全面、希望平衡工作生活的候选人
根据自身情况选择合适的部门,并针对性地准备面试内容。
