作业帮-前端团队
一面
先问了下实习所做的一些工作
手撕代码
- 数组去重
js
// 1. {}与{},{a:1}与{a:1},[]与[]算一样的
// [1,2,'1','2',1,null,null,undefined,undefined,{},{},[],[],[1],[1],['1'],['1']]
- 合并两个有序数组,计算其中位数
js
// [1,2,4,5,6,8,11] m
// [2,5,6,8,10] n
// 1.偶数个时,取中间两个数的平均值
// 2. 时间复杂度不超过O(m+n)
js
- 判断变量类型的方式有几种
- Object.prototype.toString.call是如何判断的,讲讲原理
- null instanceof Object结果
- 了解闭包吗?他有什么缺点,如何优化
- 知道强引用与弱引用吗
CSS
- 如何实现响应式布局
- 如何书写媒体查询
- 如何保证h5和pc在显示上的一致性(即不会很突兀切换的时候)
浏览器
- 垃圾回收机制了解吗?如何工作的
- 回流与重绘是什么
- 一个div的高度100px是被其内容撑开的,如果为其添加样式
height:50px;overflow:hidden
,会触发回流重绘吗?如果其先有样式position:absolute
,再添加上述样式会触发哪些? - 使节点脱离文档流的方式有哪些
- 浏览器渲染页面的过程,从收到html文档开始
- localStorage,cookie,sessionStorage的区别区别
- session与cookie有什么关系
- cookie有哪些属性
- 异步任务有哪些
- requestAnimationFrame知道吗,他与setTimeout比较有哪些区别
- 了解requestIdleCallback吗?他有什么作用
其它
- eslint是如何生成AST的
- AST有什么作用
二面
先聊了一下自己简历上的项目,问了所用技术栈,项目背景,难点,项目中担任的角色等等
手撕代码
- 实现一个雪花飘落的动画,假设雪花是一个div
- 实现一个箭头
- 利用面向对象的思想实现一个dialog组件(考虑普通的modal,alert,confirm)等,可以采用原生js或者熟悉的框架(vue/react/angular)
CSS
- 如果屏幕要展示多个飘落的雪花飘落的动画,说说你的方案?
我这里讲了canvas与dom节点实现两种方式
- 这里接着dom节点实现的方案问,如果结合js实现,共有50个dom节点,如何去实现这个全屏的雪花飘落动画
- 知道BFC是什么吗?如何触发
- 如何使节点脱离文档流
浏览器
- 浏览器输入url到页面展示这个阶段发生了什么
- 如何做资源预加载,DNS预解析
- 什么是跨域,有哪些解决方案
- jsonp的原理是什么,需要后端做何配合
- 如何开启CORS,后端需要做何配置
- 客户端如何判断某个资源是否过期
- 如何设置资源强缓存
性能优化
- 如何做图片压缩
- 图片优化的方案
- 如果要有10000张图片需要在一个列表中加载,如何实现(这里应该就是考察虚拟滚动如何实现)
网络
- Content-Type这个字段的作用是什么,常用的有哪些
- 200,204,301,302,304这些请求头代表什么意思,什么场景下会出现
- etag这个字段有什么作用
HR面
- 前两面次面试感受怎么样?
- 给自己的表现打分1-10分?觉得是哪些点不够好,哪些地方需要完善的?
- 在mt的工作内容是什么,简单说一下?
- 做了几次code review
- 如何印证你的抗压能力强?
- 在mt有遇到什么技术/业务难点吗?如何解决的?
- 对未来的规划是什么?
- 你觉得一个优秀的FE需要具备哪些能力?
- 通过何种渠道/方式去提升自己技术能力的
- 分享一个你觉得你做的最有成就感的一件事
- 在选择第一份工作的时候你会关注哪些方面
- 你考研吗?
- 最近有参加哪些面试呀?
- 对zyb的了解有多少
- 什么驱使你去投的zyb
- 然后开始查户口(问家庭情况)
- 平时的兴趣爱好
- 你觉得自己的优势与不足有哪些