mirror of
https://github.com/ZiuChen/ZiuChen.github.io.git
synced 2025-08-18 07:29:33 +08:00
137 lines
2.4 KiB
Markdown
137 lines
2.4 KiB
Markdown
# 【字节跳动】前端面试题总结
|
|
|
|
## 看代码说结果
|
|
|
|
### 代码输出结果1
|
|
|
|
```js
|
|
console.log(['1', '2', '3'].map(parseInt))
|
|
```
|
|
|
|
```
|
|
[1, NaN, NaN]
|
|
```
|
|
|
|
### 代码输出结果2
|
|
|
|
```js
|
|
let [a = 1, b] = []
|
|
console.log(a, b)
|
|
```
|
|
|
|
```
|
|
1 undefined
|
|
```
|
|
|
|
### 代码输出结果3
|
|
|
|
```js
|
|
Promise.resolve()
|
|
.then(() => {
|
|
Promise.resolve()
|
|
.then(() => {
|
|
console.log(1)
|
|
})
|
|
.then(() => {
|
|
console.log(2)
|
|
})
|
|
})
|
|
.then(() => {
|
|
console.log(3)
|
|
})
|
|
```
|
|
|
|
```
|
|
1 3 2
|
|
```
|
|
|
|
### 代码输出结果4
|
|
|
|
```js
|
|
const obj = { 3: '3', 2: 2, 1: '1', name: 'name', age: 'age' }
|
|
console.log(Object.keys(obj))
|
|
```
|
|
|
|
```
|
|
['1', '2', '3', 'name', 'age']
|
|
```
|
|
|
|
### 代码输出结果5
|
|
|
|
```js
|
|
let myArray = {}
|
|
myArray['0'] = 'a'
|
|
myArray['1'] = 'b'
|
|
myArray.length = 2
|
|
console.log(...myArray)
|
|
```
|
|
|
|
```
|
|
```
|
|
|
|
### 代码输出结果6
|
|
|
|
```js
|
|
console.log([1, 2, 3, 4, 5].splice(1, 2, 3, 4, 5))
|
|
console.log([1, 2, 3, 4, 5].slice(1, 2, 3, 4, 5))
|
|
```
|
|
|
|
```
|
|
[2, 3]
|
|
[2]
|
|
```
|
|
|
|
### 代码输出结果7
|
|
|
|
```js
|
|
console.log([].constructor === Array)
|
|
console.log(typeof [] === 'array')
|
|
console.log(typeof null === 'object')
|
|
console.log('' instanceof Object)
|
|
```
|
|
|
|
```
|
|
true
|
|
false
|
|
true
|
|
false
|
|
```
|
|
|
|
## 问答题
|
|
|
|
### HTTP缓存的请求头与响应头有哪些
|
|
|
|
- 强制缓存
|
|
- 响应头: Expires 与 Cache-Control
|
|
- Expires 绝对时间
|
|
- Cache-Control 相对时间
|
|
- 协商缓存
|
|
- 响应头: Etag 请求头: If-Non-Match
|
|
- 响应头: Last-Modified 请求头: If-Modified-Since
|
|
|
|
### 宏任务与微任务有哪些区别?简述他们的应用场景
|
|
|
|
宏任务与微任务优先级不同
|
|
|
|
- 先执行同步代码,后执行异步代码
|
|
- 主线程代码执行完毕后,检查微任务队列是否为空,非空则优先执行微任务
|
|
- 每次执行宏任务之前,都会检查微任务队列是否为空,非空则优先执行微任务
|
|
|
|
常见的宏任务与微任务
|
|
|
|
- 宏任务 `script` `setTimeout` `setInterval` `postMessage` `MessageChannel` `setImmediate (NodeJS)`
|
|
- 微任务 `Promise.then` `Object.observe` `MutationObserver` `process.nextTick (NodeJS)`
|
|
|
|
## 算法
|
|
|
|
中文数字转为阿拉伯数字
|
|
|
|
|
|
给定一个字符串,返回该字符串的所有组合
|
|
|
|
```js
|
|
输入 abc
|
|
输出 ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
|
|
```
|
|
|
|
回溯算法 |