2024年前端最新2024 最新 Web 前端经典面试试题及答案——CSS篇(2),1-3年前端开发工程师面试经验分享

ES6

  • 列举常用的ES6特性:

  • 箭头函数需要注意哪些地方?

  • let、const、var

  • 拓展:var方式定义的变量有什么样的bug?

  • Set数据结构

  • 拓展:数组去重的方法

  • 箭头函数this的指向。

  • 手写ES6 class继承。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

微信小程序

  • 简单描述一下微信小程序的相关文件类型?

  • 你是怎么封装微信小程序的数据请求?

  • 有哪些参数传值的方法?

  • 你使用过哪些方法,来提高微信小程序的应用速度?

  • 小程序和原生App哪个好?

  • 简述微信小程序原理?

  • 分析微信小程序的优劣势

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

性能差,使用 resst.css 文件,会把使用到和使用不到的样式文件都加载进来,出现代码冗余,所以被一起企业已经抛弃了。

normalize 与 reset.css 一样,是一个样式的重置库。主要是为了增强跨浏览器渲染的一致性。

四、网页中应该使用奇数还是偶数的字体?为什么呢?


答案是:偶数。

原因:

  • 偶数让文字在浏览器上更好看。

  • ui 给前端的设计图一般都是偶数,这样不管布局也好,转换 px 也好,会方便一些。

感兴趣了,大家找一个左右对称的文字,比如"中"、“十”设置一个偶数一个奇数,观察下。

五、css 优先级算法,如何计算?


总结性地回答:

选中且设置 !important 的 > 权重高的 > 权重相同位置靠后的 > 来自继承的。

如果两组选择器都定位到同一元素,且对同一属性设置不同的样式,则需要分别计算两组选择器的权重来确定优先级。

一个选择器的优先级可以由四部分计算得分:

  • 千位:如果声明在 style 的属性里,则该部分得一分。

  • 百位:选择器包含 id 选择器,则该位得一分。

  • 十位:选择器包含类、属性选择器和伪类,则该位得一分。

  • 个位:选择器包含标签、伪元素选择器,则该位得一分。

面试题:

爱学习的前端人

答案是:蓝色!

六、css 盒模型是啥?


网页中每个元素都占有一定的空间,可以看成盒子,这个盒子的组成有:外边距、元素的边框、元素的内边距、元素的内容,这四个部分一起构成了盒子模型。

css 的盒子模型分为两种:标准盒子模型和 IE盒子模型。

6.1、两种盒子模型的区别:

标准盒子模型的内容有:margin、border、padding、content。

它的 width 一般只包含内容,不包含 padding border 和 margin 。盒子的大小会以内容优先,自动扩展,子元素可以撑开父元素。

(标准)盒子总宽度 = margin + border + padding + width

IE盒子模型的内容有:margin、content (padding + border + content )

IE 盒子中子元素无法撑开父元素的盒模型,元素的宽度实际上包含了 content 、padding 和 border 。所以:

(IE)盒子总宽度 = margin + width

6.2、通过 css 如何转换呢?

使用 box-sizing 属性可以任意转换盒子模型。具体的属性值有:

1、content-box :定义盒子为标准盒子模型,也是默认值。

2、border-box :定义盒子为 IE 盒子模型。

3、inherit :规定从父元素继承 box-sizing 属性的值。

通过 box-sizing 属性,可以将标准盒子模型和 IE 盒子模型之间进行任意转换。

七、一个盒子不给宽高,水平垂直居中方式有几种?


共有 6 种方式,分别为:

  1. flex 布局。实现方式为 display:flex 、align-item:center 和 justify-content:center 。

  2. flex 布局的另外一种实现方式是 display:flex 和 margin:auto。

  3. grid 布局其中一种实现方式为 display:grid 、align-item:center 和 justify-content:center 。

  4. grid 布局另外一种实现方式是 display:grid 和 margin:auto。

  5. table-cell。实现方式为 display:table-cell 、vertical-align:middle 和 text-align:center 。

  6. translate + 绝对定位 。实现方式为相对和绝对定位相结合,绝对定位的元素添加 left:50%、 top:50% 和 transform:translate(-50% , -50%)。

八、css 中的单位有哪些?以及它们之间的区别。


css 中的单位共有 15 种。它们可分为两大类:

绝对长度:cm、mm、in、px、pt、pc。

相对长度:ex、ch、em、rpx、rem、vw、vh、vmin、vmax、% 。

它们之间的介绍以及区别:

1、px:像素,是网页内常用的单位,也是基本单位。常听到的电脑像素是 1024*768 ,表示的就是水平方向 1024 个像素点,垂直方向 768 个像素点。

2、rpx:是微信小程序解决自适应屏幕尺寸的尺寸单位,微信小程序规定的屏幕宽度为 750rpx 。rpx 单位可以根据屏幕进行自动适应。

3、em:默认字体大小的倍数。1em 的值并不是固定的,需要根据父级元素字体大小确定。

场景1:字体设置 font-size:2em ,字体大小继承父级元素的字体大小(默认大小是16px)的2倍。

场景2:元素的 width:2em ,这里默认的字体大小是自身元素的字体大小,所以宽度是自身元素字体大小的 2 倍。

4、rem:是相对于根元素 html 。这就意味着,我们只需要设置根元素字体大小,就可以把整个页面进行按比例调整。移动端适配这种方法挺常见的。

5、% :百分比一般来说都是相对于父级元素的。

css 的新单位:

6、vw:view width 的简写。 1vw 代表浏览器视口宽度的 1% 。如:浏览器的宽度为 1200px ,则 1vw = 12px。

7、vh:view height 的简写。1vh 代表浏览器视口高度的 1% 。如浏览器高度 900px ,则 1vh = 9px。

8、vmin:相对单位,当前 vw 和 vh 中较小的一个值 ,其中较小的被分为 100 份 。

9、vmax:当前 vw 和 vh 中较大的一个值 。其中较大的值被分为 100 份。

如浏览器视口大小为:1200*900px ,则 1vmax = 900/100 = 1px。兼容性差,所以用的比较少。vmin 同理。

cm、mm、in(英寸)、pt(点)、pc(派卡)这些单位在 CSS 中基本不怎么使用。

九、如何实现 0.5px 边框?


实现方法有 4 种,分别为:

**9.1、**利用缩小视觉上是 0.5px 。

实现:给容器设置伪元素,设置绝对定位,宽高是 200% ,边框为 1px ,然后缩小元素为50%,视觉上实现 0.5px 。

特点:兼容性较好,能够使用圆角,推荐使用。

**9.2、**利用线性渐变实现。

实现:给容器设置伪元素,设置绝对定位,高度为 1px ,添加背景为线性渐变,一半有颜色,一半没有颜色,视觉上只有 0.5px 。

特点:适合设置一条边框,无法展示圆角。

**9.3、**用阴影实现。

实现:用阴影代替边框,设置阴影为:box-shadow: 0 0 0 0.5px #000 。

特点:使用方便,也能够正常展示圆角,但是兼容性一般。

**9.4、**直接设置 box-width:0.5px 。

特点:使用方便,但是兼容性差。

十、什么是响应式图像?


在响应式的流行下,很多 web 应用兼容手机平板电脑,其中最头疼的就是图片了,不同平台使用一张高清图,不但浪费流量,还影响加载速度,所以就有了响应式图像,根据分辨率、设备像素比、屏幕方向等来加载合适的图片,在保证图片清晰的情况下,让图片尽可能小。

解决方案:

  • 媒体查询:该方案只适用于根据大小设置不同的背景图片,对于动态图片,如 banner 和 产品图等,处理起来显的无能为力。

  • srcset:可以设置通过不同的 DPR 或者不同的 屏幕分辨率,选择对应的或者大小最接近的图片。

  • sizes:告诉浏览器图片的实际显示尺寸, html 解析时浏览器能够自动算出需要请求的对应图片

十一、height 与 line-height 的区别


接下来我们就细细分析下它们之间的区别有哪些?

  • 定义不同:line-height 设置每行文字所占的高度,height 元素自身的高度。就是你理解的行高和高度。

  • 同为高度时,表示的意义不同。对于块级元素,设置 line-height 时,高度会被内容自动撑开,此时 高度 就是行高和几行内容共同决定的,即:height = line-height * 行数,而 height 设置的是一个固定值,与内容无关。

  • 使用对象不同:line-height 一般是针对字体来设置,height 与 line-height 相同时,文字会垂直居中,height 是设置元素高度的。

  • 使用范围不同:line-height 针对有文字的任意元素,height 针对块级元素,行级元素会失效。

  • 数值大小关系:line-height 与 height 同时设置时,它们之间的大小关系,对布局的影响:line-height = height 时,单行文字居中,多行文本会超出元素范围。或 line-height > height 时,文本会溢出元素范围。

十二、css 绘制三角形


绘制三角形在项目中非常常见,总是记不住绘制的时候到底哪个是有颜色的,其他的透明,今天给大家总结一个规律。

下图是一个大小为0,设置了四个不同颜色的边框的正方形:

可以归纳出:

方向朝下的三角形,上边框有颜色,其他三个边框为透明色。

方向朝上的三角形,下边框有颜色,其他三个边框为透明色。

方向朝左的三角形,右边框有颜色,其他三个边框为透明色。

数据结构与算法

这一块在笔试、面试的代码题中考核较多,其中常考的数据结构主要有:数组、链表、队列、栈、Set、Map、哈希表等,不同数据结构有不同的方法以及储存原理,这些算是技术岗的必备知识。算法部分主要分为两大块,排序算法与一些其他算法题

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

排序算法根据考频高低主要有:快速排序、归并排序、堆排序、冒泡排序、插入排序、选择排序、希尔排序、桶排序、基数排序、Timsort这十种,这类考核点要么是算法的时间、空间复杂度、稳定度,要么是直接手写代码,故在理解算法原理的同时,对JS语言版的排序算法代码也要加强记忆。

  • 二叉树层序遍历
  • B 树的特性,B 树和 B+树的区别
  • 尾递归
  • 如何写一个大数阶乘?递归的方法会出现什么问题?
  • 把多维数组变成一维数组的方法
  • 知道的排序算法 说一下冒泡快排的原理
  • Heap 排序方法的原理?复杂度?
  • 几种常见的排序算法,手写
  • 数组的去重,尽可能写出多个方法
  • 如果有一个大的数组,都是整型,怎么找出最大的前 10 个数
  • 知道数据结构里面的常见的数据结构
  • 找出数组中第 k 大的数组出现多少次,比如数组【1,2, 4,4,3,5】第二大的数字是 4,出现两次,所以返回 2
  • 合并两个有序数组
  • 给一个数,去一个已经排好序的数组中寻找这个数的位 置(通过快速查找,二分查找)

复杂度、稳定度,要么是直接手写代码,故在理解算法原理的同时,对JS语言版的排序算法代码也要加强记忆。

  • 二叉树层序遍历
  • B 树的特性,B 树和 B+树的区别
  • 尾递归
  • 如何写一个大数阶乘?递归的方法会出现什么问题?
  • 把多维数组变成一维数组的方法
  • 知道的排序算法 说一下冒泡快排的原理
  • Heap 排序方法的原理?复杂度?
  • 几种常见的排序算法,手写
  • 数组的去重,尽可能写出多个方法
  • 如果有一个大的数组,都是整型,怎么找出最大的前 10 个数
  • 知道数据结构里面的常见的数据结构
  • 找出数组中第 k 大的数组出现多少次,比如数组【1,2, 4,4,3,5】第二大的数字是 4,出现两次,所以返回 2
  • 合并两个有序数组
  • 给一个数,去一个已经排好序的数组中寻找这个数的位 置(通过快速查找,二分查找)

[外链图片转存中…(img-EH8BnfK1-1715573254689)]

  • 11
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值