背景
微软前端实习岗位的完整面试经历,经历了三轮技术面试,每轮都有不同的侧重点。从基础知识到项目实战,从框架原理到工程化实践,是一次非常全面和深入的技术考察。
一面(1小时20分钟)
开场介绍
自我介绍
JavaScript基础
1. 深浅拷贝理解?手写实现
2. 事件循环 - 输出题
3. 节流防抖?使用场景?手写实现
React相关
4. React 18有哪些新特性?
5. Hook能不能在判断条件中执行,为什么?
6. 副作用函数?和普通event有什么区别?
Vue相关
7. Vue响应式原理
8. 手写reactive实现
9. Diff原理
服务端渲染
10. SSR相关问题
算法题
11. 双向链表
二面(1小时)
项目实战
1. 实习相关经历
2. 埋点怎么做的? 我说手动加点位,面试官笑了...
工程化相关
3. 打包优化
4. Loader和Plugin区别
5. 为什么要用Zustand?
服务端渲染
6. SSR相关问题
7. 同构问题
安全相关
8. Token和RefreshToken
9. 如果发现用户有异常行为,想让他的token过期能实现吗?
10. 安全问题:CSRF、XSS
框架对比
11. Vue和React区别
12. Vue2的更新为什么是component级别的?
编程题
13. 实现usePrevious - 保存上一次的值
14. TypeScript实现泛型工具Exclude
15. 版本号比较
三面(1小时)
项目演示
1. 现场启动自己的项目
2. 项目相关问题
架构设计
3. 前端如何解决负载和选择冲突的问题?
4. 技术选型考虑
框架深入
5. Vue和React对比
6. Vue双向绑定原理
7. Vue2生命周期有哪些?
8. Vue2和Vue3区别
工程化
9. SSR项目介绍
10. 打包优化策略
编程实现
11. 手写使用HTML+CSS实现鼠标hover悬浮层
算法题
12. 如何判断链表有环?
面试感受
微软的面试非常全面和深入,三轮面试各有侧重:
- 一面:主要考察基础知识和框架原理,包括JavaScript基础、React/Vue框架理解
- 二面:更注重工程化实践和项目经验,涉及打包优化、安全、状态管理等
- 三面:综合考察,包括项目演示、架构设计思维、技术选型能力
每轮面试时间都比较长,面试官会深入挖掘每个问题,不仅要求知道是什么,更要求理解为什么。
总结与建议
重点准备方向:
基础知识
- JavaScript核心概念(事件循环、深浅拷贝、原型链)
- 手写常见工具函数(节流防抖、深拷贝等)
框架原理
- React Hooks原理和使用规则
- Vue响应式系统和生命周期
- 虚拟DOM和Diff算法
工程化实践
- Webpack配置和优化
- SSR同构应用开发
- 前端安全(XSS、CSRF防护)
- 状态管理方案选择
项目经验
- 能够清晰演示和讲解自己的项目
- 技术选型的思考过程
- 性能优化的实际经验
- 问题解决的思路和方法
算法能力
- 链表、树等数据结构
- 常见算法问题的解决思路
面试技巧:
- 准备好项目演示环境
- 对技术选型要有深入思考
- 遇到不会的问题要诚实,但可以说出自己的思路
- 注重代码质量和工程化思维