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

更新日期: 2022-08-23阅读: 566标签: 面试

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

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

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前端开发

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

Web前端年后跳槽面试复习指南

很多童鞋可能年后有自己的一些计划,比如换份工作环境,比如对职业目标有了新的打算。当然面试这一关不得不过,大概又不可能系统性的复习,这里罗列一些 重点 面试的知识点和文章,

前端面试之webpack面试常见问题

什么是webpack和grunt和gulp有什么不同?什么是bundle,什么是chunk,什么是module?什么是Loader?什么是Plugin?如何可以自动生成webpack配置?webpack-dev-server和http服务器如nginx有什么区别?

每个 JavaScript 工程师都应当知道的 10 个面试题

多问问应聘者高层次的知识点,如果能讲清楚这些概念,就说明即使应聘者没怎么接触过 JavaScript,也能够在短短几个星期之内就把语言细节和语法之类的东西弄清楚。

37个JavaScript基本面试问题和解答

面试比棘手的技术问题要多,这篇文章整理了37个JavaScript基本面试问题和解答,这些仅仅是作为指导。希望对前端开发的你有所帮助!

React常见面试题

React常见面试题:React中调用setState之后发生了什么事情?React中Element与Component的区别?优先选择使用ClassComponent而不是FunctionalComponent?React中的refs属性的作用是什么?React中keys的作用是什么?

有趣的Js面试题_如何让 (a == 1 && a == 2 && a == 3) 返回 true

题目大意为:JS 环境下,如何让 a == 1 && a == 2 && a == 3 这个表达式返回 true ?这道题目乍看之下似乎不太可能,因为在正常情况下,一个变量的值如果没有手动修改,在一个表达式中是不会变化的。

js练习笔记:10道JavaScript题目

10道JavaScript题目:累加函数addNum、实现一个Person类、实现一个arrMerge 函数、实现一个toCamelStyle函数、setTimeout实现重复调用、实现一个bind函数、实现一个Utils模块、输出一个对象自身的属性

vue菜鸟从业记:没准备好的面试,那叫尬聊

面试开场白总缺少不了自我介绍,一方面是面试官想听听你对自己的介绍,顺便有时间看看简历上的描述,是否与口述一致。另一方面就是看看你简历上做过什么项目,用到了哪些技术栈,一会儿好提问你。

毕业一年左右的前端妹子面试总结

把面试当做学习,这个过程你会收益很大。前端知识很杂,可能实际工作中用到的技术,像框架都是跟着公司的要求走的,像我最近也在看React啦,Vue和React都对比着再学习

vue面试时需要准备的知识点

vue上手可以说是比较轻松而且简单,如果你用过angular,react,你也会很喜欢vue。vue的核心思想依旧是:构建用户界面的渐进式框架,关注视图的变化。这也是为什么新建的文件是结构是template script style

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!