腾讯前端面经 - 按面试轮次分类
本文档按面试轮次对腾讯前端面试内容进行分类整理,帮助候选人了解不同面试阶段的重点和难点。
目录
一面内容汇总
技术基础
JavaScript基础
- 各种原生方法的使用,基本类型和引用类型
- es6中的set(集合)和map(字典)的使用和对应的数据结构
- sort的实现
- 各种css js基础相关问题
原型与继承
- 说一下原型链,原型链实现继承
HTTP与TCP
- http和tcp协议?
缓存
- 缓存相关(对比缓存?强缓存?对应请求头)
- cookie有哪些属性?
跨域
- 简单请求?跨域?
Vue
- vue中nextTick的实现,结合浏览器事件循环机制说一下?
模块化
- 说说commonjs和esmodule?
学习情况
- 最近在看什么新东西吗?
WXG一面特点
- 60min写代码,写完后电话交流
- 一上来就是4道算法笔试题
- 时间限制1小时
- 非常重视算法能力
WXG一面题目
- 数组扁平化(不使用递归和字符串处理)
- 循环升序数组查找(时间复杂度O(logN))
- 并发请求测试函数设计
- setTimeout(0)和promise.then()区别
- 实时协作编辑使用什么协议?
- WebSocket怎么建立的?和HTTP的关系
- WebSocket有没有同源限制?
二面内容汇总
项目深入
- 项目相关问题,项目还是需要好好准备。问得有点仔细
- 遇到过哪些难点?怎么解决的?
- 做过哪些优化?优化有量化吗?
- 用过哪些loader?plugin?
- 你写的这个插件实现了什么?怎么实现的?
- sourcemap原理知道吗?
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有哪些不同,提到了函数式编程,说下对函数式编程对的理解
设计模式
- 对MVC (react) MVVM(vue)的了解
Node.js
- node相关问题,node的事件循环机制?
- stream两种模式的区别?
- 看过koa源码都会觉得和express有很大不同,说一下?
小程序
- 对小程序的了解?从技术上讲
- 小程序有什么问题或有什么建议?
WXG二面特点
- 聊项目和实习
- 重点关注项目细节
- 可能涉及小程序技术讨论
三面内容汇总
项目相关
- 聊项目
前端安全
- 讲解CSRF
其他
- 可能涉及更深入的技术讨论
- 考察候选人的技术广度和深度
四面及以上内容汇总
WXG面委一面
- 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');请问打印结果是?
WXG面委二面
- 小程序与网页开发的区别
- Babel转译原理
- 数组的sort排序算法
- 快排原理
面委面试特点
- 汇集了微信事业群很多技术大佬
- 面委面试主要是为了保证wxg招聘的公平公正,严格把关每一个wxg的候选人
- 题目难度较高
- 需要扎实的基础和深入的理解
笔试题目汇总
WXG一面笔试(1小时4道题)
- 三数之和的变形题
- 组合问题
- 图相关的题目
- 打家劫舍 III(动态规划)
算法题汇总
数组与字符串
- 实现一个函数,接受数组作为参数,数组元素为整数或者数组(数组里面还可能有数组),函数返回扁平化后的数组。要求给出不使用递归、不使用字符串处理的解法
- 如:输入 [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
并发与请求
- 设计一个函数,用于测试请求一个 URL 的平均耗时。要求可以设置总的请求次数以及并发请求个数。假设环境是小程序,使用的接口是 wx.request ,不考虑请求失败的情况
动态规划
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法
- 爬楼梯
- 打家劫舍 III
- 三数之和的变形题
- 组合问题
- 图相关的题目
搜索与查找
- 搜索二维矩阵
字符串处理
- 猴子吃香蕉
- 回文字符串个数(这道题出现频率很高,朋友面试的时候也遇到了,最长回文子字符串)
树与堆
- 堆和栈的区别,哪一个需要程序员控制?
- 给你一个数组,把他变成大顶堆/小顶堆
手写题
- 手写bind
- 手写简版promise,基础架子,不用写all、race等api
- 手写代码函数柯里化和数组转树
HR面试内容
个人问题
自我介绍
- 自我介绍一下?
- 自我介绍和项目介绍
个人评价
- 个人在技术能力或职业发展方面,相较于他人有哪些突出的优势和需要改进的劣势?
- 自我评价一下
- 你觉得有哪些优点?
- 周围人对你的评价
- 你遇到的难题
学习与成长
- LeetCode刷题数量大概是多少,是否有偏好的题目类型?
- 怎么学习前端的?
- 抗压能力如何?
- 最近在看什么新东西吗?
- 为什么要离职?怎么学习的?
- 你遇到问题是更喜欢自己找答案还是去问别人?
- 平时花在写代码上的时间多吗?
背景信息
- 方便介绍一下籍贯和教育背景吗?
- 家在哪里?
- 家住哪?
其他
- 有什么问题想向我们提问吗?
- 有什么问题吗?
- mySQL了解吗?
- 实习周期?
- 平时关注哪些技术论坛?
- 有写技术博客的习惯吗?
- 平时有什么爱好?
- 在访问国外网站时,你遇到过哪些问题?你是如何解决的?
WXG HR面试特点
- 周围人对你的评价
- 你遇到的难题
- 微信是统招统分,如果你被分到了你不太想去的部门(边缘部门),你会怎么做
各轮次面试特点总结
一面
- 重点:基础知识、算法能力
- 时长:1-2小时
- 难度:中等
- 特点:WXG有笔试环节,普通部门以基础知识为主
二面
- 重点:项目经验、技术深度
- 时长:1-2小时
- 难度:中等偏上
- 特点:会深入问项目细节和技术原理
三面
- 重点:综合能力、技术广度
- 时长:1小时左右
- 难度:较高
- 特点:考察技术广度和深度
四面及以上(面委)
- 重点:算法能力、综合实力
- 时长:30-60分钟
- 难度:很高
- 特点:汇集技术大佬,题目难度高,严格把关
HR面试
- 重点:软技能、职业规划
- 时长:30分钟-1小时
- 难度:中等
- 特点:考察个人素质、团队匹配度
备考建议
一面准备
- 复习基础知识(网络、JavaScript、Vue)
- 刷基础算法题
- 准备自我介绍
二面准备
- 深入梳理项目经验
- 准备项目难点和优化案例
- 理解技术原理(虚拟DOM、Diff算法等)
三面准备
- 拓展技术视野
- 关注前端新技术
- 思考技术选型和架构
四面及以上准备
- 重点刷算法题
- CodeTop刷WXG相关题目
- 准备手写核心代码(bind、Promise等)
HR面试准备
- 准备自我介绍和项目介绍
- 思考职业规划和发展方向
- 准备几个向面试官提问的问题
