【字节跳动】前端岗-互娱研发提前批详细面经
很幸运拿到了字节的提前批意向书,字节的面试体验是很棒的。加油!
一面
- MVC MVVC MVP的异同
- react和vue的异同
- 使用框架一定比原生的或者jQuery好吗?为什么
- react和vue在虚拟DOM的diff算法有什么不同(不了解react..)
- 那你讲一下Vue的diff算法
- vue性能优化的方法
- 懒加载的原理(不是实现,是原理。。不会。。)
- 用过什么模块化解决方案吗?比如webpack、还有vue里面的?
- 自己写过loader和plugin吗
- 进程和线程的区别
- plugin实现原理
- JS为什么是异步的
- 异步解决方案
- 代码输出,解释一下(Promise、Setimeout、async/await混合)
- 讲一下一个URL请求后发生了什么
- get和post的区别
- 什么样子的get请求会有缓存
- 讲一下HTTP缓存、对应的响应头
- 如何解决谷歌浏览器6个TCP连接限制
- TCP三次连接
- TCP和UDP的区别、应用场景
- TCP的拥塞控制
- 代码题目:给定一个正整数数组和n,求最短子数组,要求子数组之和大于等于n(滑动窗口)
二面
- 自我介绍
- python、node、java的区别
- 有没有学过操作系统、计组之类的
- node为什么是异步
- node如何充分利用CPU
- node如果想多开几个进程该怎么操作
- 深挖项目
- C#、python、node网络请求
- 异步解决
- echarts
- 线程进程
- express
- 数据表设计
- 为什么加索引有提速
- .vue怎么变成前端产物、每个阶段做了什么、解析阶段做了什么
- vue-router懒加载实现原理
- 场景题目
三面
- 读研期间学过操作系统等基础课程吗
-
在实验室搞工程还是科研
-
问了一个操作系统的。。我没听过不会也没记住。。
-
进程线程
-
协程听过吗?
-
为什么要有协程?协程的目的?
-
数据库平时用的多吗
-
数据库为什么要加索引?为什么要用B+树?
-
联合索引听过吗?这个也没听过(这个应该是数据量大的时候会用,面试官说我平时做项目的数据量不是特别大)
-
编码题
实现一个模态框
- 在父盒子中上下左右居中
- 宽高不固定,由内容撑开
- 外层有灰色蒙版,透明度为0.5
- 自下向上弹出(可选)
- 算法题:爬楼梯,出的是英文题目,但是是爬楼梯的题
-
场景题:JavaScript实现一个带并发限制的异步调度器,保证同时最多运行2个任务
-
平时是怎么学习的
-
能不能早来实习
-
对毕业第一份工作是怎么考虑的
-
反问
HR面
- 自我介绍
- 前三面聊下来自己感觉怎么样?自己的表现怎么样?自己的优缺点?
- 跟实验室的同学比较自己有什么优势?
- 高考出现什么失误吗?
- 做的项目是老师给的还是说自己找的实习?
- 自己做的项目哪个整体成长,整体成就感最强?
- 这个项目做了多久?
- 是全栈开发,东西都有涉及到吗?
- 如果遇到技术类的问题如何解决?老师还是自我解决?
- 校招做了哪些准备?
- 其他的公司有投递吗?
- vivo的工作地点也是北京吗?
- 主要考虑北京?
- 家是哪里?打算长期在北京发展?
- 女朋友也是山东的吗?
- vivo的offer薪资是多少呀?也是15薪吗?
- 反问
总体感觉字节的效率是最高的,面试官也是最好的。不仅仅是面试,而是双方相互讨论交流技术。
复盘
- 简历上准备的东西一定要充分进行准备,对所有东西都有深层次的了解,而不是浅尝辄止停留在使用层次。
- 多总结,不断参加面试的过程其实是一个查漏补缺、不断充实完善自己的过程,及时对面试进行复盘总结,查漏补缺。
- 要有自己的思考,网上八股文千千万,但面试的时候不一定会出原题,要有自己的思考与总结。
- 平时做项目的同时也要重视基础。
交流
- 有的同学把前端技术栈归为HTML、CSS、JS、框架的使用等,其实在我看来,技术栈应该是对一个领域有全方位的了解。
比如从前端来看,有浏览器架构、Web 网络、事件循环机制、JavaScript 核心、V8 的内存管理、浏览器的渲染流程、Web 安全、CSS、React、Vue、Node、构建工具链等等
除了偏应用的知识,底层的相关知识更为重要,在日常工作中,正是这些底层的知识,可以更好地处理解决问题。 - 随着大前端的流行,前端所能做的事情越来越多,适当了解学习一些后端的知识有利于更好的学习工作,例如NodeJS。