背景
字节跳动商业化前端实习岗位的完整面试经历,经历了四轮技术面试,最终成功获得OC(Offer Call)。这次面试从基础知识到项目经验,从技术深度到个人规划,是一次非常全面的考察。
一面
面试特点
最基础的一集,但是也会深挖,好久没被问基础了
项目经验
1. 实习中最有挑战的问题
服务端渲染
2. SSR相关问题
JavaScript基础
3. JavaScript有哪些数据类型?
4. 数据类型判断
5. 如何判断数组?
6. 原型链
Vue相关
7. vue-router的两种模式及原理
浏览器相关
8. script标签的async和defer
CSS相关
9. 垂直水平居中
10. 块级格式化上下文(BFC)
代码题
11. 输出题
12. 事件循环题
13. 事件冒泡捕获题
14. 字符串格式化
let str = `
1 2 4342 3 4 5
23 4
4 5
`
// 期望输出
let ans = [[1,2,4342,3,4,5],[23,4],[4,5]]二面
网络基础
1. 输入URL到页面展现的过程
2. 五层网络模型
3. TCP在哪一层?
4. TCP依赖于哪个协议?
5. 如何区别每一个进程?
6. 端口的作用
性能相关
7. 对首屏的理解,是哪段时间?
编程题
8. 实现一个repeat函数
let timeLog = repeat(2, 1000, console.log)
timeLog('hello world')
timeLog('ByteDance')
// 期望输出:
// 'hello world'
// 'ByteDance'
// 'hello world'
// 'ByteDance'三面
项目经验
1. 实习中最有挑战、最有价值的事
Vue深入
2. Vue中比较核心的提高开发体验的点,讲一讲
3. 如果我声明了一个响应式数据但是并没有使用它,在它发生变化时会rerender吗?
4. Vue是在什么时候去做依赖收集的呢?
工程化
5. 在使用tree-shaking时需要注意哪些事情?
编程题
6. 字符串路径解析
let str = 'a.b.c'
resolve(str)
// 期望输出:
// {
// a: {
// b: {
// c: null
// }
// }
// }四面
个人经历
1. 为什么离职?
2. 之前面试没有通过的原因有复盘过吗?
3. 上一份实习时候有发现自己的不足,如何改进的呢?
4. 为什么学前端的呢?
项目经验
5. 上份实习有做过一些商业投放页的功能能讲一讲吗,有难点吗?
6. 上份实习学到了哪些东西?
职业规划
7. 以后的规划
8. 有在面其他公司吗?
9. 为什么拒了呢?
10. 对我们岗位的认识讲一讲
面试感受
面试轮次特点
一面:基础扎实
- 重点考察JavaScript、CSS、Vue等前端基础
- 虽然是基础题,但会深入挖掘原理
- 代码题考察实际编程能力
二面:网络与工程
- 网络协议和浏览器原理
- 性能优化相关概念
- 函数式编程思维
三面:框架深度
- Vue响应式系统的深入理解
- 工程化工具的使用经验
- 复杂数据结构处理
四面:综合素质
- 个人经历和成长反思
- 职业规划和目标
- 对岗位的理解和认知
注重基础但不止于基础
- 基础知识要求扎实,但会深入原理
- 不仅要知道怎么用,更要知道为什么
实际业务结合
- 关注商业投放页等业务场景
- 考察解决实际问题的能力
全面的人才评估
- 技术能力、学习能力、沟通能力并重
- 注重个人成长和职业规划
给后来者的建议
技术准备
- 基础要扎实:JavaScript、CSS、Vue/React等基础知识要深入理解
- 网络知识重要:TCP/IP、HTTP协议等网络基础是必考内容
- 算法能力:保持刷题习惯,提高编程思维
项目经验
- 深度参与:不要只停留在完成功能层面,要思考技术原理
- 业务理解:了解所在业务的特点和技术挑战
- 问题解决:积累解决实际问题的经验
面试技巧
- 诚实回答:不会的问题要诚实,但可以说出自己的思路
- 逻辑清晰:回答问题要有条理,先说结论再说原因
- 积极态度:展现学习能力和成长潜力
总结
这次字节跳动商业化的面试让我收获很多,不仅是技术上的提升,更是对自己职业规划的思考。
最终能够获得OC,我认为关键在于:
- 扎实的技术基础和深入的原理理解
- 丰富的项目经验和问题解决能力
- 清晰的职业规划和学习成长意识