文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-12-01 16:49

关注

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

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

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前端开发内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯