iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >10个JavaScript笔试题的问答是怎样的
  • 190
分享到

10个JavaScript笔试题的问答是怎样的

2024-04-02 19:04:59 190人浏览 薄情痞子
摘要

10个javascript笔试题的问答是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。作为JavaScript开发人员,

10个javascript笔试题的问答是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

作为JavaScript开发人员,我们可以挑战自己成长的一个方法就是用刷题来练习!下面的问题旨在具有挑战性和启发性。如果你确切地知道如何回答每一个问题,那很好,但如果你答错了,并知道为什么答错了,我认为那就更好了!

问题1:数组排序比较

考虑以下数组。在不同的排序条件中会输出什么?

const arr1 = ['a', 'b', 'c']; const arr2 = ['b', 'c', 'a'];  console.log(   arr1.sort() === arr1,   arr2.sort() == arr2,   arr1.sort() === arr2.sort() );

答案: true, true, false

这里有几个概念在起作用。首先,数组 sort 方法对原始数组进行排序,并返回对该数组的引用。这意味着在编写 arr2.sort() 时,将对 arr2  数组对象进行排序。

事实证明,在比较对象时,数组的排序顺序并不重要。由于 arr1.sort() 和 arr1 指向内存中的同一对象,因此第一个相等测试返回  true。第二个比较也是如此:arr2.sort() 和 arr2 指向内存中的同一对象。

在第三个测试中,arr1.sort() 和 arr2.sort() 的排序顺序相同;但是,它们指向内存中的不同对象。因此,第三项测试的结果为  false。

问题2:set 一组对象

考虑下面的对象 Set 集合,它们散布到一个新的数组中。会输出什么?

const mySet = new Set([{ a: 1 }, { a: 1 }]);  const result = [...mySet];  console.log(result);

答案:[{a: 1}, {a: 1}]。

尽管 Set 对象确实会删除重复项,但是尽管具有相同的键值对,但我们使用 Set 创建的两个值是对内存中不同对象的引用。这与 {a:1} ===  {a:1} 为 false 的原因相同。

应该注意的是,如果集合是使用对象变量创建的,例如 obj = {a:1},则 new Set([obj,obj])  将只有一个元素,因为数组中的两个元素都引用内存中的同一对象。

问题3:深度对象可变性

考虑下面这个代表用户Joe和他的狗Buttercup的对象。我们使用 Object.freeze  保存我们的对象,然后尝试更改Buttercup的名称。会输出什么?

const user = {   name: 'Joe',   age: 25,   pet: {     type: 'dog',     name: 'Buttercup'   } };  Object.freeze(user);  user.pet.name = 'Daffodil';  console.log(user.pet.name);

答案:Daffodil。

Object.freeze 将对对象执行浅层冻结,但不会保护深层属性不被突变。在此示例中,我们将无法更改user.age,但对 user.pet.name  进行更改不会有问题。如果我们认为需要保护某个对象以免其被“彻底破坏”,则可以递归应用 Object.freeze 或使用现有的“deep  freeze”库。

问题4:原型继承

在这个问题中,我们有一个 Dog 构造函数,我们的 dog 显然知道说话的命令。当我们要求PoGo讲话时,以下示例中将会输出什么?

function Dog(name) {   this.name = name;   this.speak = function() {     return 'woof';   }; }  const dog = new Dog('Pogo');  Dog.prototype.speak = function() {   return 'arf'; };  console.log(dog.speak());

答案:woof。

每次创建一个新的 Dog 实例时,我们都会将该实例的 speak 属性设置为一个返回字符串 woof 的函数。由于每次创建新的 Dog  实例时都会设置该字段,因此解释器无需再向上寻找原型链来查找 speak 属性。结果,永远不会使用 Dog.prototype.speak 上的 speak  方法。

问题5:Promise.all Resolve Order

在这个问题中,我们有一个 timer 函数,该函数返回一个 Promise,该Promise将在随机时间后解析。我们使用 Promise.all 解析  timers 数组。会输出什么,还是随机的?

const timer = a => {   return new Promise(res =>     setTimeout(() => {       res(a);     }, Math.random() * 100)   ); };  const all = Promise.all([   timer('first'),   timer('second') ]).then(data => console.log(data));

答案: ["first", "second"]。

Promise解决的顺序与 Promise.all 无关。我们可以可靠地指望它们以数组参数中提供的相同顺序返回。

问题6:Reduce Math

下面的代码输出什么?

const arr = [   x => x * 1,   x => x * 2,   x => x * 3,   x => x * 4 ];  console.log(arr.reduce((agg, el) => agg + el(agg), 1));

答案:120。

使用 Array#reduce 时,聚合器的初始值(在这里称为 agg)在第二个参数中给出。在这种情况下,就是 1。然后,我们可以如下迭代函数:

  • 1 +1 * 1 = 2(下一次迭代中聚合器的值)

  • 2 + 2 * 2 = 6(下一次迭代中聚合器的值)

  • 6 + 6 * 3 = 24(下一次迭代中聚合器的值)

  • 24 + 24 * 4 = 120(最终值)

因此,它是120!

问题7:短路通知

让我们向用户显示一些通知!以下代码段会输出什么?

const notifications = 1;  console.log(   `You have ${notifications} notification${notifications !==     1 && 's'}` );

答案:“You have 1 notificationfalse”。

不幸的是,我们的短路评估将无法按此处的预期进行:notifications!== 1 && 's' 评估为  false,这意味着我们实际上将输出 You have 1  notificationfalse。如果我们希望代码段正常工作,则可以考虑条件运算符:${notifications === 1 ? '' :  's'}。

问题8:Spread并重命名

考虑以下具有单个对象的数组。当我们扩展该数组并更改0索引对象上的 firstName 属性时会发生什么?

const arr1 = [{ firstName: 'James' }]; const arr2 = [...arr1]; arr2[0].firstName = 'Jonah';  console.log(arr1);

答案:[{ firstName: "Jonah" }]。

Spread创建一个数组的浅层副本,这意味着 arr2 中包含的对象仍指向 arr1 对象指向的内存中的同一对象。因此,在一个数组中更改对象的  firstName 属性将通过另一个数组中的对象更改而反映出来。

问题9:数组方法绑定

在以下情况下会输出什么?

const map = ['a', 'b', 'c'].map.bind([1, 2, 3]); map(el => console.log(el));

答案:1 2 3。

['a', 'b', 'c'].map,当调用时,将调用 Array.prototype.map,其 this 值为 ['a', 'b',  'c']。但是,当作为引用使用时,['a', 'b', 'c'].map 只是对 Array.prototype.map 的引用,而不是调用。

Function.prototype.bind 将把函数的 this 绑定到第一个参数(在本例中是 [1, 2, 3]),用这样的this 调用  Array.prototype.map 会导致这些项被迭代并记录下来。

问题10:Set 唯一性和顺序

在以下问题中,我们使用 Set 对象和spread语法创建一个新数组。输出的内容(考虑:项目被强制为唯一的吗?它们是否已排序?)

const arr = [...new Set([3, 1, 2, 3, 4])]; console.log(arr.length, arr[2]);

答案:4 2。

Set 对象将强制唯一元素(集合中已经存在的重复元素将被忽略),但不会更改顺序。所得的 arr 数组将为[3,1,2,4],表示 arr.length 为  4 ,而 arr [2] (数组的第三个元素)为 2。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网node.js频道,感谢您对编程网的支持。

--结束END--

本文标题: 10个JavaScript笔试题的问答是怎样的

本文链接: https://www.lsjlt.com/news/82526.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 10个JavaScript笔试题的问答是怎样的
    10个JavaScript笔试题的问答是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。作为JavaScript开发人员,...
    99+
    2024-04-02
  • 如何回答这10个最常见的Javascript 问题
    这篇文章给大家介绍如何回答这10个最常见的Javascript 问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Javascript 中的闭包是什么闭包是封闭在一起的函数的组合,其中...
    99+
    2024-04-02
  • JavaScript中10个需要掌握基础的问题是怎样的
    JavaScript中10个需要掌握基础的问题是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JavaScript 是一...
    99+
    2024-04-02
  • JavaScript的面试问答题有哪些
    本篇内容介绍了“JavaScript的面试问答题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JavaScript的数据类型都有什么?...
    99+
    2023-06-27
  • 7个简单但棘手的JavaScript面试问题是怎样
    本篇文章为大家展示了7个简单但棘手的JavaScript面试问题是怎样,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。如果您符合高级开发人员的资格,其工作涉及Java...
    99+
    2024-04-02
  • 面试JavaScript的题目是怎样的
    面试JavaScript的题目是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  1、怎样添加、移除、移动、复制、创建和查找节点  ...
    99+
    2024-04-02
  • 10个Python面试常问的问题分别是哪些
    10个Python面试常问的问题分别是哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。概述Python是个非常受欢迎的编程语言,随着近些年机器学习、云计算等技术的发展,P...
    99+
    2023-06-17
  • CentOS配置常见问题的解答是怎样的
    这篇文章将为大家详细讲解有关CentOS配置常见问题的解答是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。CentOS配置的问题一直被一些初次接触者感到头疼。这次,我们就收集了关于Ce...
    99+
    2023-06-16
  • Python的10道简单测试题(含答案)
    1 以下代码的输出结果为: print(round(-3.6)) A.-4 B.-4.0 C.-3 D. -3.0 2 以下代码的输出结果为(Python3.6及以上): dic=...
    99+
    2023-05-15
    Python Python测试题 Python测试题 答案
  • 10个超级实用的Javascript 技巧是怎么样的
    这期内容当中小编将会给大家带来有关10个超级实用的Javascript 技巧是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。众所周知,JavaScript 一直在...
    99+
    2024-04-02
  • 10个很棒的 JavaScript 字符串技巧是怎样的
    10个很棒的 JavaScript 字符串技巧是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。我们称一个字符序列为字符串。这几乎是所有编...
    99+
    2024-04-02
  • Javascript作用域问题是怎样的
    本篇文章为大家展示了Javascript作用域问题是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在前端学习中,作用域这个问题一直被广泛提起,什么是作用域,什...
    99+
    2024-04-02
  • JavaScript的问答题有哪些
    这篇文章主要介绍“JavaScript的问答题有哪些”,在日常操作中,相信很多人在JavaScript的问答题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript的问答题有哪些”的疑惑有所...
    99+
    2023-06-27
  • 10个艰难的Java面试题是什么
    本篇内容介绍了“10个艰难的Java面试题是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.为什么等待和通知是在 Object 类而不...
    99+
    2023-06-16
  • 面试官问到ThreadLocal的问题怎么回答
    本篇内容主要讲解“面试官问到ThreadLocal的问题怎么回答”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“面试官问到ThreadLocal的问题怎么回答”吧...
    99+
    2024-04-02
  • 技术面试题分享:含答案的10道Jvm面试专题
    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行...
    99+
    2023-06-02
  • 12个有趣的C语言问答分别是怎样的
    本篇文章为大家展示了12个有趣的C语言问答分别是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。0,gets() 方法Q:以下代码有个被隐藏住的问题,你能找到它吗?A:这个不显眼的问题就是使用了...
    99+
    2023-06-17
  • 常见的25个python面试问答
    1.什么是Python?使用Python有什么好处?Python是一种编程语言,它有对象、模块、线程、异常处理和自动内存管理。它简洁、简单、方便、容易扩展,有许多自带的数据结构,而且它开源。2.什么是PEP8?PEP8是一个编程规范,内容...
    99+
    2023-01-31
    问答 常见 python
  • Node.js的面试问答题有哪些
    本篇内容主要讲解“Node.js的面试问答题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Node.js的面试问答题有哪些”吧!问题什么是错误优先的回调函数?如何避免回调地狱?什么是Pro...
    99+
    2023-06-17
  • Python的面试问答题有哪些
    今天小编给大家分享一下Python的面试问答题有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、基础知识1. 列出 5...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作