【面试题】 经典但依然超难做的 前端面试题 (值得收藏)_前端面试选择题高难度

131 阅读2分钟

**1、前端面试题库 (**面试必备) 推荐:★★★★★

地址:前端面试题库

最近我的一些学员比较膨胀,认为已经精通了 HTML、CSS、JavaScript 三剑客,老是催我进入框架学习和项目实战。

为了让他们意识到自身的不足,我搬出了几道经典前端面试题,毫无例外,全员覆灭。

1. a 应该等于什么可以让下面的 console.log 输出 true?

const a = void 0;

console.log(a == 1 && a == 2 && a == 3);// true

2. 实现 sum 函数,参数为数组,求该数组所有项之和,不允许使用循环和数组方法

const arr = [1, 2, 3, 4, 5]

function sum (arr) {
	// TODO:
}

sum(arr);// 15

3.请说出如下代码的输出

var x;
let y;
var z;

if(true) {
  let z;
  x();
  console.log(z);
  x = 1;
  function x(z) {
    z = 4;
  }
  function y(z) {
    z = 3;
  }
  z = () => {}
  y(z);
  console.log(z);
  x = 2;
  console.log(x);
}

console.log(x);
console.log(y);
console.log(z);

题解

1

这一题是在考察隐式类型转换。

当两个类型不一样的变量进行双等于比较时,会调用它的 valueOf 方法,并使用 valueOf 方法返回的值进行比较。

我们只需要定义一个初始为 1 的属性,每次调用时让它增加 1 就可以了。

var a = {
	n: 1,
  valueOf() {
    return this.n++;
  }
}

2

这一题是在考察递归。

遍历一个数组中的所有子项,能用到的方法只有循环和递归。

首选需要分析递归公式。

假设有个内部函数 _sum,该函数接受 i 作为参数,可以计算出从数组第 i 位到数组末尾之和。

基于这个函数,我们还可以推演出一个递推公式:_sum(i) = arr[i] + _sum(i + 1)。

最后再来分析边缘情况,当参数 i 大于等于数组的 length 之后,就无法求和了,所以这时返回 0。

function sum(arr) {
  function _sum(i) {
    if(i >= arr.length) return 0
    return arr[i] + _sum(++i)
  }
	return _sum(0)
}



### 最后

整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。


**《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》**

![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/3f26fe15e514425097253964f20ce23d~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1770805058&x-signature=HO52nMCYY4W7v2yGyZIL3zIHrac%3D)



![前端面试题宝典](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/c8ecf4201952484896ac1f435e9ed765~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1770805058&x-signature=5Js%2B%2FdtfSR8sXzV273R4nmV9aN8%3D)

![前端校招面试题详解](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/63816f72050e4b42b88b3681d09c739c~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1770805058&x-signature=Ycp1YKTbGkvOqeDMWbOenq9fjwc%3D)


**开源分享:https://docs.qq.com/doc/DSmRnRGxvUkxTREhO**