4

面试官:你需要正确回答这些 JavaScript 问题才能获得 offer

 2 years ago
source link: https://www.fly63.com/article/detial/12037
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

作为开发人员找到我的第一份工作花了我几个月的时间,经过数百封拒绝邮件,我终于得到了面试机会。我被问了很多问题来测试我的编程能力,其中一些是基础的,但其中一些问题,在短暂的面试期间对我来说并不是那么容易弄清楚。我在这里,我分享一些我面试中遇到的问题,以便我们可以一起学习和成长。

如果你对我的回答有任何疑问,或者如果你有比我更好的解决方案,请在留言区告诉我。

1、console.log(1 < 2 < 3) 返回什么?

应该是从左到右求值,所以问题基本上相当于console.log(1 < 2)和console.log(2 < 3)。由于 console.log(1 < 2) 计算结果为 true 并且 JavaScript 尝试转换为相同的类型,所以 true 被转换为 1。从这个意义上说,console.log(1 < 2 < 3) 意味着 console.log( true < 3 ),也就是console.log(1 < 3),所以最后的答案是true。

让我们再想一想,console.log(3 > 2 > 1) 会返回什么?按照上面的逻辑,问题应该被解析成console.log(3 > 2)和console.log(2 > 1)两部分。显然 3 > 2 为true,所以我们将其转换为 1。

下一步是比较 console.log(true > 1) 是否等效于 console.log(1 > 1),所以它会返回 false。

2、如何将两个数组合并在一起?

array.concat()

此方法将两个或多个数组合并在一起,它不会更改现有数组并返回一个新数组。

const array1 = ['a', 'b', 'c'];
const array2 = ['d', 'e', 'f'];
const array3 = array1.concat(array2);
console.log(array3);  // expected output: Array ["a", "b", "c", "d", "e", "f"]

扩展运算符

扩展运算符由三个点 (...) 组成,它允许你连接数组或复制数组实例。

let array1 = [1,2];
let array2 = [3,4,5];
let mergedArray = [...array1, ...array2];
console.log(mergedArray) // [1,2,3,4,5];

3、array.map和array.forEach有什么区别?

这两种方法都遍历数组中的元素。但是,array.forEach() 不返回值,它会在 array.map() 创建一个新数组时对数组进行原地变异。因此,如果你只是需要遍历一个数组,forEach 是一个不错的选择,如果你不想改变原始数组,那么 map 更好。

const a = [1, 2, 3];
const doubled = a.forEach((num, index) => {
 // Do something with num and/or index.
});
console.log(doubled) // undefined
const a = [1, 2, 3];
const doubled = a.map((num) => {
 return num * 2;
});
// doubled = [2, 4, 6]

4、控制台的打印结果是什么?

63059a62259c5.jpg

正确答案应该是 ACB。这是因为代码从顶部开始,所以console.log(‘A’)会先被执行。然后,调用 setTimeout 但仅在 1 秒后执行,因此下一步将是 console.log('C')。B 将是控制台上显示的最后一个字符。

5、var、let 和 const 有什么区别?

这个问题测试你对一些重要的 JavaScript 概念的了解。var 和 let 之间有几个区别。当你在函数外部定义 var 变量时,它们属于全局范围。全局变量意味着该变量可以被任何函数访问。

另一方面,使用 let 关键字的变量是块作用域的。这意味着该变量只存在并且可以在相应的范围内访问。在 JavaScript 中,块由一对花括号 {} 分隔,就像在 for 语句中一样。

const 是用于声明常量的关键字,它基本上与 let 关键字非常相似,不同之处在于,它创建对值的只读引用并且不能重新分配值。例如:

const a = 10;  
a = 20;  // Type error as value cannot be reassigned

以上就是我在面试中经常被问到的几个面试题,我在这里总结了一下,同时,也想跟大家说一句,基础知识真的很重要。

准备开发面试很困难,需要付出很多努力,幸运的是你可以通过更多的学习和练习变得更好。 我希望你在面试中表现出色,并祝你好运!

来源: web前端开发

链接: https://www.fly63.com/article/detial/12037


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK