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

开发 前端
我被问了很多问题来测试我的编程能力,其中一些是基础的,但其中一些问题,在短暂的面试期间对我来说并不是那么容易弄清楚。我在这里,我分享一些我面试中遇到的问题,以便我们可以一起学习和成长。

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

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

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、控制台的打印结果是什么?

正确答案应该是 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前端开发
相关推荐

2019-11-21 08:40:44

面试官优化性能

2020-04-20 08:35:48

HTTP HTTPS网络协议

2011-05-10 10:56:29

DBA面试

2023-08-11 17:13:39

JavaScrip

2023-09-26 00:37:38

Spring微服务框架

2015-08-13 10:29:12

面试面试官

2021-10-22 08:37:13

消息不丢失rocketmq消息队列

2019-05-14 08:44:13

面试面试官线程安全

2021-02-25 07:08:30

JavaScript 前端面试题

2022-09-13 14:44:40

HashMap哈希表红黑树

2021-03-24 10:25:24

优化VUE性能

2019-11-26 08:24:13

TCP拥塞控制网络协议

2024-04-02 09:45:27

线程池Executors开发

2021-03-22 17:20:48

MYSQL开发数据库

2020-02-28 15:42:26

AOPJDKCGLib

2021-12-30 06:59:28

方法重写面试

2023-09-04 08:28:34

JavaScripforEach 循环

2020-04-09 13:38:40

MySQL数据库脏读

2019-02-15 20:00:49

软件测试工程师面试

2019-08-23 09:20:35

Spring 5编程Java
点赞
收藏

51CTO技术栈公众号