---
url: https://sugarat.top/offer/sum-interview/20-autumn/zyb.md
---

# 作业帮-前端团队

## 一面

> 先问了下实习所做的一些工作

## 手撕代码

1. 数组去重

```js
// 1. {}与{},{a:1}与{a:1},[]与[]算一样的
// [1,2,'1','2',1,null,null,undefined,undefined,{},{},[],[],[1],[1],['1'],['1']]
```

2. 合并两个有序数组，计算其中位数

```js
// [1,2,4,5,6,8,11] m
// [2,5,6,8,10] n
// 1.偶数个时，取中间两个数的平均值
// 2. 时间复杂度不超过O(m+n)
```

## js

1. 判断变量类型的方式有几种
2. Object.prototype.toString.call是如何判断的，讲讲原理
3. null instanceof Object结果
4. 了解闭包吗？他有什么缺点，如何优化
5. 知道强引用与弱引用吗

## CSS

1. 如何实现响应式布局
2. 如何书写媒体查询
3. 如何保证h5和pc在显示上的一致性（即不会很突兀切换的时候）

## 浏览器

1. 垃圾回收机制了解吗？如何工作的
2. 回流与重绘是什么
3. 一个div的高度100px是被其内容撑开的，如果为其添加样式`height:50px;overflow:hidden`，会触发回流重绘吗？如果其先有样式`position:absolute`，再添加上述样式会触发哪些？
4. 使节点脱离文档流的方式有哪些
5. 浏览器渲染页面的过程，从收到html文档开始
6. localStorage，cookie，sessionStorage的区别区别
7. session与cookie有什么关系
8. cookie有哪些属性
9. 异步任务有哪些
10. requestAnimationFrame知道吗，他与setTimeout比较有哪些区别
11. 了解requestIdleCallback吗？他有什么作用

### 其它

1. eslint是如何生成AST的
2. AST有什么作用

## 二面

> 先聊了一下自己简历上的项目，问了所用技术栈，项目背景，难点，项目中担任的角色等等

### 手撕代码

1. 实现一个雪花飘落的动画，假设雪花是一个div
2. 实现一个箭头
3. 利用面向对象的思想实现一个dialog组件（考虑普通的modal，alert，confirm）等，可以采用原生js或者熟悉的框架（vue/react/angular）

### CSS

1. 如果屏幕要展示多个飘落的雪花飘落的动画，说说你的方案？

> 我这里讲了canvas与dom节点实现两种方式

* 这里接着dom节点实现的方案问，如果结合js实现，共有50个dom节点，如何去实现这个全屏的雪花飘落动画

2. 知道BFC是什么吗？如何触发
3. 如何使节点脱离文档流

### 浏览器

1. 浏览器输入url到页面展示这个阶段发生了什么
2. 如何做资源预加载，DNS预解析
3. 什么是跨域，有哪些解决方案
4. jsonp的原理是什么，需要后端做何配合
5. 如何开启CORS，后端需要做何配置
6. 客户端如何判断某个资源是否过期
7. 如何设置资源强缓存

### 性能优化

1. 如何做图片压缩
2. 图片优化的方案
3. 如果要有10000张图片需要在一个列表中加载，如何实现（这里应该就是考察虚拟滚动如何实现）

### 网络

1. Content-Type这个字段的作用是什么，常用的有哪些
2. 200，204，301，302，304这些请求头代表什么意思，什么场景下会出现
3. etag这个字段有什么作用

## HR面

1. 前两面次面试感受怎么样？
2. 给自己的表现打分1-10分？觉得是哪些点不够好，哪些地方需要完善的？
3. 在mt的工作内容是什么，简单说一下？
4. 做了几次code review
5. 如何印证你的抗压能力强？
6. 在mt有遇到什么技术/业务难点吗？如何解决的？
7. 对未来的规划是什么？
8. 你觉得一个优秀的FE需要具备哪些能力？
9. 通过何种渠道/方式去提升自己技术能力的
10. 分享一个你觉得你做的最有成就感的一件事
11. 在选择第一份工作的时候你会关注哪些方面
12. 你考研吗？
13. 最近有参加哪些面试呀？
14. 对zyb的了解有多少
15. 什么驱使你去投的zyb
16. 然后开始查户口（问家庭情况）
17. 平时的兴趣爱好
18. 你觉得自己的优势与不足有哪些
