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年前端面试题集锦 的相关文章

随机推荐

  • (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 严格等于比较的是值和类型 对象除外 只要值和