====== 差别 ======
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
前端专刷_代码题 [2022/01/24 14:22] 若愚 |
前端专刷_代码题 [2022/02/10 11:25] 若愚 |
||
---|---|---|---|
行 4: | 行 4: | ||
## 闭包 | ## 闭包 | ||
1. 输出什么? | 1. 输出什么? | ||
- | |||
```javascript | ```javascript | ||
for(var i=0; i<6; i++) { | for(var i=0; i<6; i++) { | ||
行 13: | 行 12: | ||
``` | ``` | ||
- | ## this、作用域、声明前置 | + | ## 异步、Promise输出 |
- | 1. 以下代码输出 | + | 1. 输出什么 |
+ | ```javascript | ||
+ | async function async1 (){ | ||
+ | console.log(" | ||
+ | await async2() | ||
+ | console.log(" | ||
+ | } | ||
+ | console.log(" | ||
+ | async1() | ||
+ | async function async2() { | ||
+ | await console.log(" | ||
+ | } | ||
+ | new Promise((resolve, | ||
+ | console.log(" | ||
+ | resolve() | ||
+ | }).then(()=> | ||
+ | console.log(" | ||
+ | }) | ||
+ | setTimeout(()=> | ||
+ | console.log(" | ||
+ | }) | ||
``` | ``` | ||
+ | |||
+ | 2. 输出什么 | ||
+ | ```javascript | ||
+ | setTimeout(()=> | ||
+ | new Promise(resolve => { | ||
+ | resolve() | ||
+ | console.log(2) | ||
+ | }).then(_ => { | ||
+ | console.log(3) | ||
+ | Promise.resolve().then(_ => { | ||
+ | console.log(4) | ||
+ | }).then(_ => { | ||
+ | Promise.resolve().then(_ => { | ||
+ | console.log(5) | ||
+ | }) | ||
+ | }) | ||
+ | }) | ||
+ | console.log(6) | ||
+ | ``` | ||
+ | |||
+ | ## this、作用域、声明前置、隐式转换 | ||
+ | 1. 以下代码输出 | ||
+ | ```javascript | ||
var a = function(){ this.b = 3 } | var a = function(){ this.b = 3 } | ||
var c = new a() | var c = new a() | ||
行 26: | 行 68: | ||
2. 代码输出什么 | 2. 代码输出什么 | ||
- | ``` | + | ```javascript |
function Foo() { | function Foo() { | ||
getName = function () { | getName = function () { | ||
行 32: | 行 74: | ||
} | } | ||
} | } | ||
- | |||
var getName = function () { | var getName = function () { | ||
console.log(4); | console.log(4); | ||
}; | }; | ||
- | |||
function getName() { | function getName() { | ||
console.log(5); | console.log(5); | ||
} | } | ||
- | |||
Foo.getName = function () { | Foo.getName = function () { | ||
console.log(2) | console.log(2) | ||
} | } | ||
- | |||
Foo.prototype.getName = function () { | Foo.prototype.getName = function () { | ||
console.log(3); | console.log(3); | ||
} | } | ||
- | |||
Foo.getName() | Foo.getName() | ||
getName() | getName() | ||
new Foo.getName() | new Foo.getName() | ||
``` | ``` | ||
+ | 1. 隐式转换 | ||
+ | ```javascript | ||
+ | if ([]) console.log(1); | ||
+ | if ([].length) console.log(2); | ||
+ | if ([] == 0) console.log(3); | ||
+ | if ({} === {}) console.log(4); | ||
+ | ``` | ||
## 算法 | ## 算法 | ||
1. 给两个数组[1, | 1. 给两个数组[1, | ||
2. 无重复的字符串字串 | 2. 无重复的字符串字串 | ||
+ | 3. 合并两个有序链表 | ||
+ | 4. 最长回文子串 | ||
+ | 5. 最长无重复字符子串 | ||
+ | 6. 搜索二叉树,找出第k大 | ||
+ | 7. 很长的字符串返回出现次数最多的字母以及相应次数 | ||
+ | 8. 多叉树的最大深度 | ||
+ | 9. js实现树的深度优先搜索、广度优先搜索 | ||
+ | 10. 返回前k个最小的数字组成的数组,保持相对顺序 | ||
+ | 11. 给定一棵二元查找树,实现左右子树反转 用栈怎么实现 | ||
+ | 12. 找出数组中第k大和第m大的数字相加之和 findTopSum(arr, | ||
+ | 13. 给定一个带嵌套的数组,实现一个方法可获取嵌套数组的最大深度 | ||
## 手写 | ## 手写 | ||
- | 1. 手写一个Promise.all | + | 1. 手写一个Promise.all |
2. 手写Promise,包含简单的逻辑即可 | 2. 手写Promise,包含简单的逻辑即可 | ||
2. 用reduce实现map | 2. 用reduce实现map | ||
行 71: | 行 125: | ||
rp(' | rp(' | ||
``` | ``` | ||
- | 4. | + | 4. 字符串转化为数字 |
+ | ```javascript | ||
+ | // ' | ||
+ | // ' | ||
+ | // ' | ||
+ | ``` | ||
+ | 5. 手写观察者(3), 带once | ||
+ | 6. 代码题:写一个函数打印杨辉三角前n行 | ||
+ | ```javascript | ||
+ | [ | ||
+ | [1], | ||
+ | [1,1], | ||
+ | [1,2,1], | ||
+ | [1, | ||
+ | [1, | ||
+ | ] | ||
+ | ``` | ||
+ | 6. 用call/ | ||
+ | 7. 实现大数相加 | ||
+ | 8. 手写防抖和节流 throttle/ | ||
+ | 9. 实现并发控制 | ||
+ | 10. 写一个instanceof的实现 | ||
+ | 11. 字符串 转换为对象。 比如 a.b.c, | ||
+ | ```javascript | ||
+ | { | ||
+ | a: { | ||
+ | b: { | ||
+ | c: null | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | ``` |