[JS]精选面试题-2

1.谈⼀谈你理解的函数式编程

函数式编程(Functional Programming)是一种编程范式,通过函数的组合实现程序的功能

核心特性

  1. 函数是第一等公民:在函数式编程中,函数不仅可以被调用,还可以像其他值(如整数、字符串)一样被传递、组合和操作。
  2. 纯函数:函数式编程中的函数通常是纯函数,即给定相同的输入,总会产生相同的输出,且不会改变外部状态或产生副作用。

优点

  1. 代码可读性强:大量使用函数,使得程序更加简洁和易于理解。
  2. 可维护性高:每个函数都是独立的单元,易于维护。
  3. 适合处理大规模数据:函数式编程的不可变性质使得并行处理大规模数据变得更加容易和安全。
  4. 易于并发编程:由于函数没有副作用,因此可以避免并发编程中常见的死锁和竞态条件等问题。

缺点

  1. 递归使用较多:函数式编程通常使用递归而不是循环来实现迭代逻辑,这可能导致栈溢出等问题。
  2. 难以与现有系统集成:函数式编程与传统的命令式编程方法不兼容,与现有的系统集成可能会面临一些挑战。

应用场景

  1. 并行和并发编程
  2. 数据处理:函数式编程非常适合处理数据流
  3. 数学运算:函数式编程非常适合处理数学运算和算法实现。

2.谈⼀谈箭头函数与普通函数的区别?

1. 写法与命名

  • 箭头函数:通常是匿名的
  • 普通函数:通常有明确的函数名

2. 构造函数

  • 箭头函数:不能用作构造函数。因为箭头函数没有prototype属性,且this的绑定方式与普通函数不同。
  • 普通函数:可以用作构造函数,通过new关键字来创建对象实例。普通函数具有prototype属性,可以添加方法和属性,供实例继承。

3. this的绑定

  • 箭头函数:不绑定自己的this,而是继承自上一级作用域的this值。
  • 普通函数this的绑定取决于函数的调用方式。在全局上下文中,this指向全局对象(在浏览器中是window,在Node.js中是global)。在对象方法中,this指向调用该方法的对象。在作为构造函数时,this指向新创建的对象实例。此外,还可以通过callapplybind方法来显式地设置this的绑定。

4. arguments对象

  • 箭头函数:不拥有arguments对象。如果需要访问参数列表,可以使用剩余参数(...args
  • 普通函数:每次调用时都会自动创建一个arguments对象,该对象包含了传递给函数的所有参数

3.xhtml , html, xml 有什么区别?

html是超文本标记语言, 主要作用是定义网页的结构, 在网页中展示数据,

xml是可扩展标记语言, 特点是通过标签定义数据结构, 主要作用是传输和储存数据,

xhtml是可扩展超文本标记语言, 就是对htm进行了严格的xml规范化, 目的就是取代html, 但是实际发展过程中, HTML5更受欢迎, w3c也停止了对xhtml的开发

XML和JSON的区别?

XML(eXtensible Markup Language)和JSON(JavaScript Object Notation)是两种常用于数据交换和存储的格式,以下是对这两种格式区别的详细分析:

1. 定义与起源

  • XML:是一种可扩展标记语言,专门用于存储和交换数据。
  • JSON:是一种轻量级的数据交换格式,基于JavaScript语言的一个子集。

2. 数据表示方式

  • XML:使用标签来组织数据,每个标记都有开始和结束标签。这使得XML文件具有高度的结构化和可读性,但也导致文件体积较大。
  • JSON:使用键值对来表示数据,键和值之间用冒号分隔,对象用花括号{}表示,数组用方括号[]表示。JSON的数据结构更加紧凑,因此文件体积通常较小。

3. 可读性与编码难度

  • 可读性:XML的标签形式,对于人类阅读者来说可能更加直观;而JSON则以简洁的键值对结构,在编程和自动化处理中更加受欢迎。

4.JSON 的了解

一、JSON的定义与特点

JSON是一种轻量级的数据交换格式, 最初是从JavaScript中发展而来,如今已经成为一种独立于语言的数据交换格式。

JSON使用键值对来表示数据,键和值之间用冒号分隔,对象用花括号{}表示,数组用方括号[]表示。

JSON的数据结构紧凑, 非常简洁, 易于阅读理解, 并且文件体积较小。

二、JSON的解析与生成

序列化: JSON.stringify()函数将JavaScript对象转换为JSON字符串

反序列化: JSON.parse()函数将JSON字符串转换为JavaScript对象

5.对web标准、可⽤性、可访问性的理解

对Web标准的理解

Web标准是指万维网联盟(W3C)等权威组织制定的标准。这些标准旨在实现互联网的统一,确保不同平台、浏览器和设备能够正确的呈现网页内容,从而提高用户体验、减少开发和维护成本,并促进互联网的可持续发展。Web标准主要由以下三部分组成:

  1. 结构标准:定义网页的结构,包括网页的元素、属性、标签等。常见的结构标准包括HTML(超文本标记语言)、XHTML(可扩展超文本标记语言)、XML(可扩展标记语言)等。HTML是Web页面内容的基础,通过标签来描述页面的结构和内容。
  2. 表现标准:定义网页的表现,包括网页的样式、布局、动画等。常见的表现标准包括CSS(层叠样式表)、SVG(可缩放矢量图形)等。CSS用于控制网页的布局和样式,使网页在不同的设备和浏览器上呈现一致的效果。
  3. 行为标准:定义网页的行为,包括网页的事件、交互等。常见的行为标准包括JavaScript、DOM(文档对象模型)等。JavaScript是一种编程语言,用于实现网页的动态效果和交互功能,而DOM则提供了访问和操作网页内容的接口。

对Web可用性的理解

Web可用性是一个多因素概念,包括系统的学习成本、使用成本、系统的有效性、用户满意度。

主要措施:

  1. 简洁明了的界面:保持界面简洁,使用户能够轻松找到所需的信息。
  2. 一致性和可预测性:保持系统的一致性,使用户能够准确预期网站的行为。
  3. 清晰的导航:提供明确的导航路径和导航元素,帮助用户快速找到所需的内容。
  4. 反馈和确认:给与用户明确的操作反馈,以增强用户的控制感和信任感。

对Web可访问性的理解

Web可访问性(Accessibility)是指Web内容对于残障用户的可阅读和可理解性。

提高可访问性的主要方法包括:

  1. 提供替代文本:为图像、图表等视觉元素提供替代文本(alt文本),以便屏幕阅读器等辅助技术能够解读和呈现这些元素。
  2. 使用语义化标记:使用HTML的语义化标记来描述网页的结构和内容,以便辅助技术能够理解网页的层次结构和元素之间的关系。
  3. 确保键盘可访问性:确保网站的所有功能都可以通过键盘来访问和操作,以便那些无法使用鼠标的用户(如视障用户)能够使用网站。
  4. 良好的内容层级:使用清晰易读的字体, 划分明显的内容层级,以便视觉障碍用户轻松使用网站。

7.说⼏条写JavaScript的基本规范

良好的编码规范可以显著提高代码的可读性、可维护性和性能。

1. 变量声明

  • 避免⼀⾏声明多个变量
  • 优先使用const声明变量

2. 比较运算符

  • 优先使用全等运算符(===)

3. 数组和对象的创建

  • 优先使用字面量创建数组和对象

4. 控制结构

  • switch语句:必须带有default分支,以处理未匹配到任何case的情况。
  • if和for语句:即使只有一行代码,也应使用大括号{}来明确代码块的范围

6. 命名规范

  • 局部变量遵循小驼峰命名法
  • 全局变量使用大写字母和下划线命名
  • 类和构造函数遵循大驼峰命名法命名
  • 函数遵循小驼峰命名法, 使用动词开头

8. 拆分文件

  • 使用外链的JS和CSS
  • JS放在文档的底部
  • CSS放在文档的头部

8.什么是按需加载

按需加载是前端性能优化中的重要措施,其核心理念是根据用户的实际操作来加载相应的资源。

优点

  1. 提升性能:相比一次性加载, 按需加载可以减少初始的加载时间
  2. 减少服务器压力:由于减少了不必要的资源加载,服务器的负载也会相应降低
  3. 提升用户体验:用户可以根据自己的需求加载内容,而不必等待所有资源加载完成才能使用页面

实现方式

  1. 懒加载(Lazy Loading):对于图片、视频等媒体资源,可以采用懒加载的方式,即当用户滚动到这些资源所在的位置时才进行加载。
  2. 代码分割(Code Splitting):在构建前端项目时,可以将代码分割成多个小块(chunks),然后根据需要动态加载这些小块。这通常通过Webpack等构建工具来实现。
  3. 异步组件(Async Components):在Vue等现代前端框架中,可以使用异步组件来实现按需加载。这些组件在需要时才会被加载和渲染。
  4. 按需导入(Dynamic Imports):在JavaScript中,可以使用动态导入语法(如import())来按需加载模块。这种方式允许你在需要某个模块时才加载它。

9.说说严格模式的限制

JavaScript的严格模式(Strict Mode)是一种具有限制性的JavaScript模式,它使代码隐式地脱离了“懒散(sloppy)模式”,从而以更加严格的方式对代码进行检测和执行。

  1. 变量声明
    • 变量必须通过关键字进行声明
  1. 删除变量、函数或函数参数
    • 不允许使用delete操作符删除变量、函数或函数参数
  1. 只读属性赋值
    • 不允许对只读属性(如通过const关键字声明的常量)进行赋值
  1. this值
    • 在严格模式下,全局函数的this不再指向全局对象,而是undefined
    • 除非通过call()apply()bind()明确指定
  1. 重复的函数参数名
    • 严格模式下,函数的参数不能重复
    • 在非严格模式下,重复的函数参数名会被忽略。
  1. with语句
    • 不允许使用with语句。with语句允许将对象的属性添加到作用域链中,可能导致代码可读性和性能问题。

10.常⻅兼容性问题?

由于不同浏览器对JavaScript的实现细节和特性支持程度存在差异,因此同一份代码在不同浏览器上可能会表现出不同的行为

1. 新语法支持

  • 问题描述:不同浏览器对新特性支持程度不同。
  • 解决方法
    • 使用Babel等JavaScript编译器将ES6+代码转换为向后兼容的ES5代码。

2. DOM差异

  • 问题描述:不同浏览器对DOM的操作和渲染存在差异
  • 问题示例: 盒模型的差异, 导致的 margin 和 padding 不同。
  • 解决方法
    • 全局的样式初始化
    • 简化或避免DOM操作,从根本上解决问题。

3. 事件处理差异

  • 问题描述:旧版IE浏览器使用IE事件模型,而其他浏览器使用W3C标准事件模型。
  • 解决方法
    • 不同的事件模型在事件注册, 事件解绑, 事件对象都存在差异
    • 如果需要兼容旧版IE使浏览器,就需要用条件注释或特性检测添加额外的兼容逻辑
  • 举例:
    • IE 下, event 对象有 x , y 属性,但是没有 pageX , pageY 属性
    • Firefox 下, event 对象有 pageX , pageY 属性,但是没有 x,y 属性 .

4.最佳实践

  • 避免使用特定的浏览器API:这些扩展或API可能在其他浏览器中不可用,从而导致兼容性问题。
  • 使用现代的开发工具和框架:这些工具和框架通常已经处理了大部分的兼容性问题,并提供了丰富的文档和社区支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/52147.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简化登录流程,助力应用建立用户体系

随着智能手机和移动应用的普及,用户需要在不同的应用中注册和登录账号,传统的账号注册和登录流程需要用户输入用户名和密码,这不仅繁琐而且容易造成用户流失。 华为账号服务(Account Kit)提供简单、快速、安全的登录功…

一文5000字从0到1使用Jmeter实现轻量级的接口自动化测试

接口测试虽然作为版本的一环,但是也是有一套完整的体系,有接口的功能测试、性能测试、安全测试;同时,由于接口的特性,接口的自动化低成本高收益的,使用一些开源工具或一些轻量级的方法,在测试用…

怎么解决小程序的异步请求问题

解决小程序的异步请求问题通常涉及对异步操作的有效管理,以确保数据的正确加载和显示。在小程序中,最常见的异步操作包括网络请求、文件操作等。以下是一些解决小程序异步请求问题的方法: 使用Promise: 小程序中的wx.request接口…

【Kotlin设计模式】Kotlin实现工厂模式

前言 工厂模式(Factory Pattern)是一种创建型设计模式,提供一个创建对象的接口,不暴露对象的创建过程。它将实例化对象的任务交给子类或具体实现,从而使得客户端代码与具体类解耦。 工厂模式主要分为以下三类&#xf…

图像处理之:Video Processing Subsystem(一)

免责声明: 本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下,作者不对因使用本文内容而导致的任何直接或间接损失承担责任,包括但不限于数据丢失、业务中断或其他经济…

ucharts图表滚动

背景&#xff1a; 使用ucharts绘制折线图&#xff0c;当数据项多的时候&#xff0c;横坐标显示的文字会重合&#xff0c;故想到滑动 项目代码使用的是原生的代码&#xff0c;而非ucharts的组件&#xff1a; <template><view><canvas canvas-id"chartsLi…

各类软件历史版本的下载地址

postman,notpad等 https://www.filehorse.com/software-developer-tools/https://www.filehorse.com/software-developer-tools/

pdf查看密码

pdf有两种密码方式&#xff0c;一种是打开后进入文件内容页面后需要密码才能进行修改等操作&#xff0c;网上有很多方式进行移除密码操作&#xff0c;第二种是打开就需要密码&#xff0c;我这里简单记录一个暴力破解的方式&#xff0c;仅供参考 import PyPDF2 import itertools…

FreeRTOS学习:内存管理

FreeRTOS内存管理简介 在使用 FreeRTOS 创建任务、队列、信号量等对象的时候&#xff0c; FreeRTOS 一般都提供了两种方法&#xff0c; 动态方法创建&#xff1a;自动地从 FreeRTOS 管理的内存堆中申请所创建对象所需的内存&#xff0c;在对象被删除后&#xff0c;又可以将这…

day33(mysql57主从从+mycat读写分离+java项目结合mycat数据库+lvs_dr轮询调用java项目)

1.设置主从从mysql57服务器 &#xff08;1&#xff09;配置主数据库 [rootmsater_5 ~]# systemctl stop [rootmsater_5 ~]# setenforce 0 [rootmsater_5 ~]# systemctl disable Removed symlink /etc/systemd/system/multi-user.target.wants/# ls anaconda-ks.cfg mysql-5.7…

C语言家教记录(七)

C语言家教记录&#xff08;七&#xff09; 导语字符串字面量变量读写字符串操作函数惯用法数组 结构联合枚举总结与复习 导语 本次授课的内容如下&#xff1a;字符串&#xff0c;结构体、联合体、枚举 辅助教材为 《C语言程序设计现代方法&#xff08;第2版&#xff09;》 字…

二刷代码随想录训练营Day 38|322. 零钱兑换、279.完全平方数、139.单词拆分

1.零钱兑换 视频讲解&#xff1a;动态规划之完全背包&#xff0c;装满背包最少的物品件数是多少&#xff1f;| LeetCode&#xff1a;322.零钱兑换_哔哩哔哩_bilibili 代码随想录 代码&#xff1a; class Solution { public:int coinChange(vector<int>& coins, int …

VA水封特点及优势

水封是工业应用中至关重要的组件&#xff0c;起到防止液体泄漏并确保机械设备顺利运行的作用。在众多类型的水封中&#xff0c;VA水封因其独特的特性而广受欢迎。那么&#xff0c;VA水封究竟有哪些特点使其在特定场景中特别有效呢?本文将从设计、材料构成和性能优势等多个角度…

每天一个数据分析题(四百九十七)- 序列模式挖掘

序列模式挖掘 (sequence pattern mining &#xff09;是指挖掘相对时间或其他模式出现频率高的模式&#xff0c;典型的应用还是限于离散型的序列。下列哪个选项不属于序列模式的时限约束&#xff1f; A. 最大跨度约束 B. 主键约束 C. 最小间隔和最大间隔约束 D. 窗口大小约…

Qt实现圆型控件的三种方法之设置样式表

前言 最近在研究绘制各种形状的控件&#xff0c;这里专门挑出圆形的控件进行记录&#xff0c;其它形状的也大差不差&#xff0c;会了圆形的之后其它的也类似。 正文 这里我挑出Label来进行举例。 通过设置样式表 (QSS) 这种方法简单且适用于不需要自定义绘制的场景。就是要…

【OpenFeign】OpenFeign指定url方式调用

OpenFeign一般是结合注册中心一起使用的&#xff0c;也就是可以通过提供服务的名称而不是url来完成对目标服务的访问。但是出于本地调试的需要&#xff0c;或者考虑到一些简单的服务可能并不需要依赖注册中心&#xff0c;所以本篇我们就讲解一下OpenFeign直接通过目标服务的url…

vue2项目 预渲染 Unable to prerender all routes 错误排查与解决方案

前言 今天在做我的Vue2项目的SEO优化时&#xff0c;我采用了prerender-spa-plugin与vue-meta-info的一套官网前端SEO预渲染方案。 但是&#xff0c;在打包时&#xff0c;报错Unable to prerender all routes。尝试了很多种网上方案&#xff0c;都没有成功&#xff0c;最后从源…

基于vue3和audio封装的简易音频播放器

样式如图所示 <template><div class"audio-player"><div class"player_top" flex-ac flex-justify-between ><div class"fileName genericTitle" fs-28 l-height-32 height-64 pr-42 flex-ac><span class"t…

维护和升级LabVIEW程序

在维护和升级LabVIEW程序时&#xff0c;需要全面考虑代码的现状和未来的需求。以下是各个方面的详细注意事项&#xff0c;以确保程序能够在稳定性和性能方面得到提升。 1. 理解现有代码: 深入代码分析: 仔细阅读现有的代码&#xff0c;了解其逻辑结构、数据流、和控制流程。关注…

中国大模型平台市场份额最新排名Top5!场景化应用昭示新蓝海

8月21日&#xff0c;IDC&#xff08;国际数据公司&#xff09;首次发布了《中国大模型平台市场份额&#xff0c;2023&#xff1a;大模型元年 —— 初局》。数据显示&#xff0c;2023年中国大模型平台及相关应用市场规模达17.65亿元人民币。 在过去的2023年&#xff0c;行业对于…