中高级-前端面试题(持续更新)

  1. isPrime - 返回true或false, 表示输入的数是否为质数:
    1
    2
    3
    4
    isPrime(0) // false
    isPrime(1) // false
    isPrime(17) // true
    isPrime(10000000000000) // false
1
2
3
4
5
6
7
8
9
// 初版
function isPrime(num) {
for (var i = 2; i < num; i++) {
if (num % i == 0) {
return false
}
}
return true
}
1
2
3
4
5
6
7
8
9
// 优化版
function isPrime2(num) {
for (var i = 2; i < Math.sqrt(num); i++) {
if (num % i == 0) {
return false
}
}
return true
}

参考文档

  1. factorial - 返回给定数的阶乘的值:
    1
    2
    3
    factorial(0) // 1
    factorial(1) // 1
    factorial(6) // 720
1
2
3
4
5
6
7
8
9
function factorial(num) {
var arr = [1]
for (var i = 2; i <= num; i++) {
arr.push(i)
}
return arr.reduce(function(a, b) {
return a * b
})
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function feibonaqi(n) {
var arr = [1];
if (n == 1) {
return [1];
}
if (n == 2) {
return [1, 1];
}
function helper(a1, a2, n) {
if (n == 1) {
return arr;
} else {
arr.push(a2)
return helper(a2, a1 + a2, --n);
}
}
return helper(1, 1, n);
}

数组去重
参考文档

实现sort
参考文档

已下代码在控制台输出什么?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
setTimeout(function() {
console.log(1)
}, 0)
new Promise(function exector(resolve) {
console.log(2)
for (var i = 0; i < 10000; i++) {
i === 9999 && resolve()
}
console.log(3)
}).then(function() {
console.log(4)
})
console.log(5)

-------------本文结束感谢您的阅读-------------