2023年前端面试题集锦

2023-11-15

2023年又是行情惨淡的一年,为此我从 「枇杷村IT面试宝典」小程序里收集了一些题目,更多题目可以扫下方二维码查看
在这里插入图片描述

现做个总结如下:

1. 在JavaScript中, +0 === -0的结果是什么?

结果为true!
严格等于比较的是值和类型(对象除外),只要值和类型是一致的,则返回true。在数学中,+0和-0都是0,但是数字存储在内存中时,数字的符号是有单独区域存放的,严格比较在值为0的情况下忽略了符号的对比。这个在MDN中没有说明没有相关例子,但是通过编写代码测试,可知结果为true。后来ES6提供了Object.is方法来判断+0和-0的情况。

2. 移动端如何实现字体大小的响应式?

所谓字体大小的响应式,字体大小会跟随屏幕的大小而变化,这样就可以在大屏幕的移动设备上显示较大号的字体,小屏幕则显示较小号字体。从而提高用户使用体验。一般情况下,我们会采用vw单位来实现,所以必须要搞清楚vw单位的含义。

VW单位

每个屏幕的可视区域都是100vw,所以1vw代表的绝对尺寸是不一样的。可以用下面这张图来表示一下。
在这里插入图片描述

所以同样是1vw来表达字体大小,在可视区域较大的设备上,展示的字体大小就会大一些。这是字体响应式的基本原理。

通常编码使用px

一般情况下,我们还是会使用px来作为字体大小,然后整合postcss-px-to-viewport插件来自动将px转换为vw。如何转换,就需要在项目下通过.postcssrc.js文件进行配置。如下

module.exports = {
  plugins: {
    // to edit target browsers: use "browserslist" field in package.json
    autoprefixer: {},
    'postcss-px-to-viewport': {
      unitToConvert: 'px', // 需要转换的单位,默认为'px'
      viewportWidth: 375, // 设计稿宽度
      unitPrecision: 5, // 转换后需保留的小数位数
      propList: ['*'], // 需要转换的属性列表
      viewportUnit: "vw", // 默认转换为vw
      fontViewportUnit: "vw", // 字体转换为vw
      selectorBlackList: ['.ignore'],// 指定不转换为视窗单位的CSS选择器,可以是字符串,也可以是正则
      minPixelValue: 1, // 小于或等于1px时不转换为视窗单位
    }
  }
}

可以看到配置时有一个设计稿宽度,即viewportWidth属性,这里配置为375px,也就是说1vw = 37.5px,所以当我们写font-size:37.5px时,编译后则会转换为font-size: 1vw;

口语回答参考

字体响应式一般用vw来实现,不过写代码的时候一般会用px,因为如果要自己去将px换算成vw写的话编码速度肯定会很慢的。所以项目里也会整合自动转换的插件,比如postcss-px-to-viewport插件,项目编译或者打包后都会自动把px转为vw。

3. JavaScript中的原型是什么?一般用来做些什么事儿?

原型理解起来不复杂,就是要注意面试官问的是原型还是原型链。这里讲原型,原型链作为连炮问题分开说明可能会更合适些。原型就是prototype属性,搞清楚这个属性用来做什么的就行。
prototype属性
每个函数都拥有prototype属性,即原型属性,用于扩展函数实例的属性和方法。举个例子

function Person (name) {
  this.name = name
}
const zhangsan = new Person('张三')
const lisi = new Person('李四')
console.log(zhangsan) // 输出为 { name: '张三' }
console.log(lisi) // 输出为 { name: '李四' }

假定我们无法修改Person函数中的代码,但我们希望zhangsan和lisi对象都拥有sayHello方法。那么我们就需要扩展通过Person函数的prototype来扩展。扩展之后我们再来new对象。

Person.prototype.sayHello = function () {
  console.log('Hello, My name is ' + this.name)
}
const zhangsan = new Person('张三')
const lisi = new Person('李四')
zhangsan.sayHello() // 输出 Hello, My name is 张三
lisi.sayHello() // 输出 Hello, My name is 李四

可以看到zhangsan和lisi均拥有了sayHello方法,这样就完成了在不修改原函数的情况下扩展了函数实例的方法和属性。

__proto__属性

每个对象都拥有__proto__属性,用于指向构造函数的prototype或者父构造函数,以实现原型链结构(原型链请查看连炮问题)。在编码时并不常用,而且不推荐使用。下面是MDN为此发出的警告。
在这里插入图片描述

口语回答参考
就是prototype,用来扩展函数实例的属性和方法的。因为有些时候不能直接修改函数本身的代码,比如Vue,我们引进vue.js后不可能直接去改vue.js里头的代码,但是我们又想要让每一个Vue实例都有一个 d o w n l o a d 方法,那就可以通过 V u e . p r o t o t y p e . download方法,那就可以通过Vue.prototype. download方法,那就可以通过Vue.prototype.download来扩展。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2023年前端面试题集锦 的相关文章

  • createHTMLNotification() 替换

    我创建了一个 Chrome 扩展程序 其中使用createHTMLNotification 在所有内容之上显示一个窗口 然而 从 Chrome 28 开始 谷歌决定放弃createHTMLNotification 完全 为什么 谷歌 为什么
  • Jquery 悬停卡

    我在用着http designwithpc com Plugins Hovercard http designwithpc com Plugins Hovercard 但我不知道如何在悬停卡上声明 var 每个工作描述都有自己的 ID 当悬
  • 如何阻止直接访问我的 JavaScript 文件?

    我使用 Minify 来缩小并缓存所有脚本请求 我只希望我的用户能够访问 JavaScript 文件的缩小版本 缩小位于www example com min我的脚本位于www example com scripts 如何阻止直接访问doc
  • 在特定页面上执行 javascript 的正确“Rails”方式

    我试图在特定页面上运行 javascript 而我唯一的解决方案似乎是反模式 我有controller js内部生成的assets javascripts 我在用着gem jquery turbolinks 我的代码类似于以下内容 docu
  • 位置特征检测:固定

    我正在尝试找到一个脚本来检测设备是否放置position fixed元素相对于视口而不是整个文档 目前 标准桌面浏览器和 Mobile Safari 适用于 iOS 5 都是这样做的 而 Android 设备则相对于整个文档放置固定元素 我
  • 如何在没有 jQuery 的情况下删除 Javascript 中的元素

    我试图通过以下方式从 DOM 中删除 Div a 标签嵌套在其中 我想我正在寻找的是 jQuery 的纯 Javascript 版本 div remove 这是html设置 div a href Click me to remove the
  • 使用 Node.js 构建网站的最佳实践

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我想知道如何使用 Node js 从头开始 开发一个网站 我明白我怎么能possibly
  • 如何在React Native Android中获取响应头?

    您好 我想在获取 POST 请求后获取响应标头 我尝试调试看看里面有什么response with console log response 我可以从以下位置获取响应机构responseData但我不知道如何获取标题 我想同时获得标题和正文
  • 如何使用javascript确保元素仅在圆上朝一个方向移动?

    好吧 我承认我对三角学真的很糟糕 出于上下文的考虑 我将添加我在这里提到的问题中的内容 参考问题 https stackoverflow com a 39429290 168492 https stackoverflow com a 394
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • JavaScript 继承;调用和原型

    要在Javascript中实现继承 通常需要执行以下两个步骤 假设我有一个基类 Animal var Animal function name this name name 我现在想从中派生一个子类 Dog 所以我想说 var Dog fu
  • 如何使用角度材料在具有可扩展行的表格中创建嵌套垫表

    我有以下数据 id c9d5ab1a subdomain wing domain aircraft part id c9d5ab1a info mimetype application json info dependent parent
  • 计算三次贝塞尔曲线的弧长、曲线长度。为什么不工作?

    我正在用这个算法计算弧长 三次贝塞尔曲线的长度 function getArcLength path var STEPS 1000 gt precision var t 1 STEPS var aX 0 var aY 0 var bX 0
  • IE 中的 XPath 查询使用从零开始的索引,但 W3C 规范是从一开始的。我应该如何处理差异?

    问题 我正在转换目前仅适用于 Internet Explorer 的相对较大的 Javascript 代码 以便使其也适用于其他浏览器 由于代码广泛使用 XPath 我们做了一些兼容性功能以使事情变得更容易 function selectN
  • 聆听 Angular 2 中的元素可见性

    我正在为我的网络应用程序使用 Bootstrap 和 Angular 2 v4 我想监听指令中的元素以了解可见性变化 我的元素有一个可以隐藏其子元素的父元素hidden sm up我需要在每次隐藏或显示时触发一个函数 div hidden
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供

随机推荐

  • (20181206)在线计算GPS周、北斗周、周内日、年积日、简化儒略日

    介绍两个用于在线计算GPS周 周内日 年积日 简化儒略日的网站 网站一 http www gnsscalendar com 使用说明 网站二 http webapp geod nrcan gc ca geod tools outils ca
  • 根据相同主键,合并其他字段值,形成一条记录(oracle)

    将具有相同的主键INVT PROD ID值 其他列值CLAUSE MEMO CLAUSE TP CD BBCK DT使用 进行合并 形成一条记录 select INVT PROD ID MAX subStr CLAUSE MEMO 3 CL
  • Echarts折线图的部分修改

    x轴刻度的隐藏显示 xAxis axisTick show true false x轴的显示隐藏 xAxis axisLine show true false y轴去掉0刻度线 yAxis min 0 scale true axisLine
  • 基于openlayer4实现多个popu展示

    这个超出屏幕能自动平移 没有试 https blog csdn net qq 27186245 article details 82227282 https blog csdn net qq 27186245 article details
  • spring redis和缓存的应用

    spring redis和缓存的应用 1 在springboot项目中引入redis的包 即在pom xml文件中导入一下依赖 刷新maven可看见右侧依赖 2 使用缓存前在项目启动类 Demo1Application 中开启缓存 3 启动
  • 百度AI加速器-百度智能云千帆大模型平台专项首期开营

    9月2日 3日 百度AI加速器 百度智能云千帆大模型平台专项计划第一期加速营在百度大厦举办 经过为期一个月的招募 上海烯牛信息 北京谷器数据 北京烽火万家 上海知潜等15家AI创业企业入选并参与首期开营仪式 入营企业将获得百度智能云提供的一
  • xshell中文件操作的一些常见Linux命令

    1 文件操作的相关shell命令 文件名 执行这个文件 mv 文件名 文件位置 将文件移动到该位置 cp 文件1 文件2 复制文件1到文件2处 如果文件2没有会创 rm f 删除指定目录下的所有文件 rm rf filename 删除指定目
  • 计算机网络复习5----给主机配置IP地址

    在给主机配置IP地址时 哪一个能使用 A 29 9 255 18 B 127 21 19 109 C 192 5 91 255 D 220 103 256 56 答案为a 解析 B 127用于本地的回环测试不能 所以不能配置给主机 一旦出现
  • 掌握Python的X篇_27_Python中标准库文档查阅方法介绍

    前面的博文介绍了python的基本语法 模块及其导入方法 前人将各种方法封装成模块 库 函数供我们使用 如何去使用前人做好的东西 那就需要去查阅文档 今天就介绍python中官方文档的查阅方式 对于初学者而言 python自带的文档就已经足
  • Python入门最完整的基础知识大全【纯干货,建议收藏】

    前言 作为一个有着9年Python开发经验的老码农 今天我就为大家带来了Python的基础知识点 全篇干货 建议大家动动手指收藏起来 一定能够帮助你顺利入门Python 1 环境搭建 Python由荷兰数学和计算机科学研究学会的Guido
  • unity中,什么是万向锁?

    文章目录 一 介绍 二 解决unity万向锁的方法 一 介绍 在Unity中 万向锁 Gimbal Lock 是指使用欧拉角旋转时可能会出现的一种问题 导致物体的旋转变得不稳定或无法实现所期望的旋转 欧拉角旋转是通过绕三个轴 通常是x y和
  • 使用socket判断http请求或http响应的传输结束

    使用socket判断http请求或http响应的传输结束 先把header直到 r n r n整个地收下来 1 传输完毕就关闭connection 即recv收到0个字节 2 有内容 if Transfer Encoding chunked
  • 用户数据报协议UDP

    UDP的格式 载荷存放的是 应用层完整的UDP数据报 报头结构 源端口号 发出的信息的来源端口 目的端口号 信息要到达的目的端口 UDP长度 2个字节 16位 即UDP总长度为 2 16bit 2 10bit 2 6bit 1KB 64 6
  • lazyload ajax同步,jQuery lazyload 的重复加载错误以及修复方法

    分析代码也可以知道 最主要的原因是 写在页面上的 一经加载 就去向服务器申请图片地址 加载大图片 如果想实现原定的效果 则 写在页面上的待加载地址 必须不能是大图片的地址 而我们可以将真正的图片地址数据 存储在alt属性中 正确的例子如下
  • 批量转移(复制)文件夹内同类型文件(win10)

    1 打开cmd 2 批量转移 在cmd窗口中输入 move 空格 需要移动的文件后缀名所在的文件夹路径 需要移动的文件后缀名 空格 目标文件夹路径 例如 move E Pictures jpg E Work 3 批量复制 在cmd窗口中输入
  • ubuntu18.04的Android环境配置

    文章目录 1 安装Java jdk 2 安装Android studio 3 安装android sdk 4 安装 ndk 5 添加环境变量 1 安装Java jdk sudo apt get install openjdk 8 jre o
  • 获取文件夹中所有图片文件

    开发中常遇到要读取指定文件夹中的某一类文件 这时如果每次都以拼字符串地址的形式查找文件比较麻烦 分享两个读取指定文件夹中某一类文件的方法 以图片文件为例 1 以WWW方式进行加载 显示在RawImage上 2 以数据流形式读取文件 显示在R
  • 人工智能中的机器人教育

    现在有一种很普遍的思想 就是家长并不太关心孩子考的大学事都否是985和211 而且在意所录取的专业是否利于就业 格物斯坦温馨提示 这是一个很现实的问题 比如今几年兴起的人工智能专业 招生办的老师都说该专业毕业后平均月薪过万 而要学好这专业的
  • 入侵排查与响应-window和linux版

    目录 一 关于这方面的一些简单了解 1 我们的电脑为什么会被黑客入侵 2 黑客攻击的方式 二 window入侵排查 1 查看异常特征 2 系统账户安全 3 检测异常端口 进程 4 查看启动项 计划任务 服务 5 检查系统相关信息 三 lin
  • 2023年前端面试题集锦

    2023年又是行情惨淡的一年 为此我从 枇杷村IT面试宝典 小程序里收集了一些题目 更多题目可以扫下方二维码查看 现做个总结如下 1 在JavaScript中 0 0的结果是什么 结果为true 严格等于比较的是值和类型 对象除外 只要值和