类型转换等 面试真题

devtools/2024/11/13 9:42:35/

题目1

请问哪个结果为NaN
A. 123+null
B. 123+‘1’
C. 123/0
D. 123+undefined

在这四个表达式中,只有D. 123 + undefined 的结果是 NaN,原因如下:

A. 123 + null

  • 结果是:123
  • 原因null 在数值运算中会被自动转换为 0,所以 123 + null 相当于 123 + 0,结果是 123

B. 123 + '1'

  • 结果是:'1231'
  • 原因123 是数字,而 '1' 是字符串,JavaScript 遇到数字和字符串进行加法运算时,会将数字转换为字符串,然后进行字符串拼接。因此结果是 '1231'(字符串)。

C. 123 / 0

  • 结果是:Infinity
  • 原因:在 JavaScript 中,数字除以 0 会得到 Infinity。这不是 NaN,而是 JavaScript 特殊的无穷大值。

D. 123 + undefined

  • 结果是:NaN
  • 原因undefined 在数值运算中无法被自动转换为有效的数值,因此结果是 NaN(Not a Number)。

总结:

  • D. 123 + undefined 结果是 NaN

题目2

[1,3,4,10,8,78,20].sort()的结果

在这里插入图片描述

题目3

给你一个字符串,请你找出其中不含有重复字符的最长子串长度。给出js代码实现

function lengthOfLongestSubstring(s) {let charIndexMap = {};let start = 0;let maxLength = 0;for (let i = 0; i < s.length; i++) {let char = s[i];if (charIndexMap[char] !== undefined && charIndexMap[char] >= start) {start = charIndexMap[char] + 1;}charIndexMap[char] = i;maxLength = Math.max(maxLength, i - start + 1);}return maxLength;
}// 测试代码
let testString = "abcabcbb";
console.log(lengthOfLongestSubstring(testString)); // 输出应该是 3

这个函数通过维护一个滑动窗口(start 到 i),并使用一个对象 charIndexMap 来记录字符最后出现的位置。如果遇到重复字符,就移动窗口的起始位置到重复字符上一次出现位置的下一个位置。每次迭代更新最长子串的长度 maxLength。对于给定的测试字符串 “abcabcbb”,最长不含重复字符的子串长度是 3(例如 “abc”)。

题目4

Es5中的类和s6中的class有什么区别?
ES5中的类和ES6中的class关键字在实现面向对象编程方面存在一些关键的区别:

  1. 语法糖

    • ES6的class关键字提供了一种更简洁、更清晰的语法来定义类和继承,它被看作是ES5中构造函数和原型链操作的语法糖。
    • ES5中使用构造函数和原型链来模拟类的行为,而ES6的class则直接提供了类的定义方式。
  2. 构造函数和原型链

    • 在ES5中,类是通过构造函数和原型链来实现的。构造函数用于创建对象实例,而原型链用于定义共享的方法和属性。
    • ES6的class则允许直接在类体中定义方法和属性,而不需要显式地操作原型链。
  3. 继承

    • ES5中实现继承需要手动设置原型链,或者使用一些辅助函数如Object.createcall方法。
    • ES6引入了extends关键字来简化继承的实现,子类可以使用super关键字来调用父类的构造函数或方法。
  4. 静态方法和属性

    • ES6的class允许使用static关键字定义静态方法和属性,这些方法和属性属于类本身,而不是类的实例。
    • 在ES5中,静态方法和属性需要手动添加到构造函数上。
  5. new.target

    • ES6引入了new.target属性,它在构造函数中使用,用于确定函数是否是通过new关键字调用的。
    • ES5中没有直接的方式来检测函数是否是通过new调用的。
  6. 不存在变量提升

    • ES6的class声明不存在变量提升,这意味着类的声明必须在使用之前完成。
    • ES5中的函数声明和变量声明存在提升现象。
  7. 简洁性和可读性

    • ES6的class语法更加简洁和直观,使得代码更易于理解和维护。
    • ES5的实现方式较为复杂,需要对原型链和构造函数有较深的理解。

综上所述,ES6的class关键字在语法上为JavaScript的面向对象编程提供了更为简洁和直观的实现方式,而ES5则需要通过构造函数和原型链来实现类似的功能。尽管ES6的class在功能上与ES5的实现方式等效,但其引入的语法糖使得代码更加符合传统面向对象语言的风格。

题目5

给你一个整型数组numbers在数字中找出由三个数组成的最大乘积并输出这个乘积。给出js代码实现
在 JavaScript 中,要找出一个整型数组中由三个数字组成的最大乘积,可以通过以下步骤实现:

  1. 首先对数组进行排序。
  2. 最大的乘积要么是最大的三个数的乘积,要么是两个最小的数(可能为负数)和最大的数的乘积(如果数组中包含负数)。

以下是实现这一功能的 JavaScript 函数:

javascript">function maxProductOfThree(numbers) {// 对数组进行排序numbers.sort(function(a, b) { return a - b; });// 最大乘积可能是最大的三个数的乘积,或者是两个最小数和最大数的乘积return Math.max(numbers[0] * numbers[1] * numbers[numbers.length - 1], numbers[numbers.length - 1] * numbers[numbers.length - 2] * numbers[numbers.length - 3]);
}// 示例使用
let numbers = [1, 10, 2, 6, 3, -1, -2];
console.log(maxProductOfThree(numbers)); // 输出应该是 180

在这个例子中,数组 [1, 10, 2, 6, 3, -1, -2] 的最大乘积由三个最大数 2 * 6 * 10 或者两个最小数 -2 * -1 * 10 组成,结果为 180


http://www.ppmy.cn/devtools/114353.html

相关文章

【YashanDB知识库】单机升级典型问题及应急措施

升级典型问题 官网升级操作指引 离线升级&#xff0c;一般线上操作之前需要照着做一遍&#xff0c;但是由于数据量少、monit进程在测试环境没有启动等原因&#xff0c;一些操作、配置问题在测试过程中不会暴露&#xff0c;在生成操作的时候才暴露&#xff0c;下面3项是比较常见…

人工智能——猴子摘香蕉问题

一、实验目的 求解猴子摘香蕉问题&#xff0c;根据猴子不同的位置&#xff0c;求解猴子的移动范围&#xff0c;求解对应的过程&#xff0c;针对不同的目标状态进行求解。 二、实验内容 根据场景有猴子、箱子、香蕉&#xff0c;香蕉挂天花板上。定义多种谓词描述位置、状态等…

Python世界:基于PESQ的自动化语音打分脚本实践

Python世界&#xff1a;基于PESQ的自动化语音打分脚本实践 任务背景Python实现代码讲解本文总结 任务背景 音频任务中&#xff0c;有时需对处理后的语音信号进行客观打分&#xff0c;以评估算法效果。这里提供一种基于PESQ的自动化语音打分脚本&#xff0c;提高效率。 Python…

【论文阅读】BC-Z: Zero-Shot Task Generalization with Robotic Imitation Learning

Abstract 在这篇论文中&#xff0c;我们研究了使基于视觉的机器人操纵系统能够泛化到新任务的问题&#xff0c;这是机器人学习中的一个长期挑战。我们从模仿学习的角度来应对这一挑战&#xff0c;旨在研究如何扩展和扩大收集的数据来促进这种泛化。为此&#xff0c;我们开发了…

项目小总结

这段时间主要把大概的开发流程了解完毕 修改了&#xff0c;并画了几个界面 一.界面 修改为 博客主页 个人中心 二.前后端分离开发 写前端时 就可以假设拿到这些数据了 const blogData2 {blog:{id:1,title: "如何编程飞人",author_id: 1,content: "这是一篇…

学习风格的类型

学习风格是指个体在学习过程中偏好的方式和方法。不同的学习风格反映了人们在接收、处理和记忆信息方面的不同偏好。了解自己的学习风格可以帮助提高学习效率和效果。以下是几种常见的学习风格类型&#xff1a; 1. 视觉型&#xff08;Visual Learner&#xff09; 特点&#x…

深度解析代理IP地址与端口:定义及高效获取方法

代理服务器在互联网生活中扮演了重要角色&#xff0c;不仅能帮助我们实现隐私安全浏览&#xff0c;还能获取更多的网络资源。而代理IP地址和端口是设置代理服务器的关键参数&#xff0c;想要成功连接代理&#xff0c;这两个参数是不可或缺的。那什么是代理IP地址和端口&#xf…

828华为云征文|部署在线文件管理器 Spacedrive

828华为云征文&#xff5c;部署在线文件管理器 Spacedrive 一、Flexus云服务器X实例介绍1.1 云服务器介绍1.2 产品优势1.3 计费模式 二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 Spacedrive3.1 Spacedrive 介绍3.2 Docker 环境搭建3.3 Spac…