(面试复盘)字节跳动互娱研发提前批前端面经
- 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。