Web前端开发高频面试题-前端面试,你知道怎么回答吗?

开课吧开课吧小代2021-02-04 17:18

问题一:下面代码的输出结果是什么?

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

console.log(arr.flat(1));

A. [1, 2, [3, 4, [5]]];

B. [1, 2, 3, 4, [5]];

C. [1, 2, [3, 4, 5]];

D. [1, 2, 3, 4, 5];

解析:这里主要是考察Array.prototype.flat方法的使用,扁平化会创建一个新的,被扁平化的数组,扁平化的深度取决于传入的值;这里传入的是1也就是默认值,所以数组只会被扁平化一层,相当于.concat([1,2], [3, 4, [5]]),故选B。

问题二:下面代码的输出结果是什么?

function sayHi {

console.log(name);

console.log(age);

var name = 'Lydia';

let age = 21;

}

A. undefined 和 undefined;

B. Lydia 和 ReferenceError;

C. ReferenceError 和 21;

D. undefined 和 ReferenceError;

解析:本题的考点主要是var与let的区别以及var的预解析问题。var所声明的变量会被预解析,var name;提升到作用域最顶部,所以在开始的console.log(name)时,name已经存在,但是由于没有赋值,所以是undefined;而let会有暂时性死区,也就是在let声明变量之前,你都无法使用这个变量,会抛出一个错误,故选D。

Web面试

问题三:判断一个给定的字符串是否是重构的。

解析:如果两个字符串是同构的,那么字符串 A 中所有出现的字符都可以用另一个字符替换,以便获得字符串B,而且必须保留字符的顺序。字符串 A 中的每个字符必须与字符串 B 的每个字符一对一对应。

paper 和 title 将返回 true。

egg 和 sad 将返回 false。

dgg 和 add 将返回 true。

isIsomorphic("egg", 'add'); // true

isIsomorphic("paper", 'title'); // true

isIsomorphic("kick", 'side'); // false

function isIsomorphic(firstString, secondString) {

// 检查长度是否相等,如果不相等, 它们不可能是同构的

if (firstString.length !== secondString.length) return false

var letterMap = {};

for (var i = 0; i < firstString.length; i++) {

var letterA = firstString[i],

letterB = secondString[i];

// 如果 letterA 不存在, 创建一个 map,并将 letterB 赋值给它

if (letterMap[letterA] === undefined) {

letterMap[letterA] = letterB;

} else if (letterMap[letterA] !== letterB) {

// 如果 letterA 在 map 中已存在, 但不是与 letterB 对应,

// 那么这意味着 letterA 与多个字符相对应。

return false;

}

}, , // 迭代完毕,如果满足条件,那么返回 true。

// 它们是同构的。

return true;

}

开课吧web培训课程是由专业的教研团队和廖雪峰老师联合一线企业老师精心研发系统化、实战性强的一套课程,带领学员全面深入学习一线大厂必备技能,让学员在4个月中掌握中高级前端必备技能,冲击高薪。有想学习web前端的同学可以来开课吧试一试。

Web前端的发展前景还是很可观的,有对Web前端感兴趣的同学就赶快学习起来吧。以上就是小编今天为大家整理发布的“Web前端开发高频面试题-前端面试,你知道怎么回答吗?”一文,希望为正在学习Web前端的朋友提供学习参考,更多Web前端面试题尽在开课吧广场Web前端面试频道!

有用
分享