当前位置: 首页 > 科技观察

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

时间:2023-03-19 01:14:34 科技观察

我作为开发人员的第一份工作花了我几个月的时间,在收到数百封拒绝邮件后,我终于得到了面试机会。我被问了很多问题来测试我的编程技能,其中一些是基本的,但其中一些,我在简短的面试中并不那么容易弄清楚。我在这里,分享一些我在采访中遇到的问题,这样我们就可以一起学习和成长。如果您对我的回答有任何疑问,或者您有比我更好的解决方案,请在评论中告诉我。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),所以最后的答案是正确的。我们再想想,console.log(3>2>1)返回了什么?按照上面的逻辑,问题应该被解析为console.log(3>2)和console.log(2>1)两部分。显然3>2为真,所以我们将其转化为1。接下来就是比较console.log(true>1)是否等价于console.log(1>1),所以返回false。2.如何将两个数组合并在一起?array.concat()此方法将两个或多个数组合并在一起,它不会更改现有数组并返回一个新数组。constarray1=['a','b','c'];constarray2=['d','e','f'];constarray3=array1.concat(array2);console.log(array3);//预期输出:数组["a","b","c","d","e","f"]展开运算符展开运算符由三个点(...)组成,它允许您连接数组或复制数组实例。letarray1=[1,2];letarray2=[3,4,5];letmergedArray=[...array1,...array2];console.log(mergedArray)//[1,2,3,4,5];3.array.map和array.forEach有什么区别?这两种方法都遍历数组中的元素。但是,array.forEach()不返回值,它会在原地改变数组,而array.map()创建一个新数组。所以如果你只是需要遍历一个数组,forEach是一个不错的选择,如果你不想改变原始数组,那么map更好。consta=[1,2,3];constdoubled=a.forEach((num,index)=>{//用num和/或index做点什么。});安慰。log(doubled)//undefinedconsta=[1,2,3];constdoubled=a.map((num)=>{returnnum*2;});//doubled=[2,4,6]4.控制台打印结果是什么?正确答案应该是ACB。这是因为代码从顶部开始,所以console.log('A')将首先执行。然后,仅在1秒后调用setTimeout,因此下一步将是console.log('C')。B将是控制台上显示的最后一个字符。5、var、let、const有什么区别?这个问题测试你对一些重要的JavaScript概念的了解。var和let之间有几个区别。当您在函数外部定义var变量时,它们属于全局范围。全局变量意味着该变量可以被任何函数访问。另一方面,使用let关键字的变量是块作用域的。这意味着该变量仅在相应范围内存在并且可以访问。在JavaScript中,块由一对花括号{}分隔,就像在for语句中一样。const是一个用于声明常量的关键字,它基本上与let关键字非常相似,只是它创建一个值的只读引用并且不能重新分配该值。例如:consta=10;一=20;//Typeerrorasvaluecannotbereassigned写在最后。以上是我在面试中经常被问到的几个面试问题。我在这里总结了它们。同时,我也想告诉大家,基础知识真的很重要。准备开发面试很困难,需要付出很多努力,幸运的是,你可以通过更多的学习和练习变得更好。我希望你在面试中取得好成绩,祝你好运!最后感谢大家的阅读,如果觉得有用请记得点赞,关注我,分享给你的朋友,说不定能帮到他。