2022-02-27 12:01:27
快手前端实习面试常见问题及解答如下:
自我介绍及基础信息相关浮动布局:将三个元素都设置为向左浮动,然后通过设置合适的宽度(如每个元素宽度为 33.33%)和边距来实现三列布局。不过浮动布局可能会影响文档流,需要清除浮动。示例代码如下:
visibility: hidden:元素不可见,但仍然占据文档流中的空间,即其他元素会把它当作仍然存在一样进行布局。
display: none:元素不可见,并且不占据文档流中的空间,就好像该元素不存在一样,其他元素会重新布局。
opacity: 0:元素不可见,但仍然占据空间,并且可以响应鼠标事件(如点击等),只是视觉上看不到。
相对定位(position: relative):元素相对于其原本在文档流中的位置进行定位,通过设置 top、right、bottom、left 属性来调整其位置,但原本的空间仍然会被保留。
绝对定位(position: absolute):元素相对于最近的已定位(即 position 值不是 static 的元素)祖先元素进行定位,如果找不到已定位的祖先元素,则相对于初始包含块(通常是视口)进行定位。绝对定位的元素会脱离文档流,不占据原本的空间。
作用域:var 是函数作用域,在函数内部声明的变量在整个函数内部都有效;let 和 const 是块级作用域,只在声明所在的代码块(如 if 语句块、for 循环块等)内有效。
变量提升:var 声明的变量会进行变量提升,即在声明之前就可以访问到该变量(值为 undefined);let 和 const 声明的变量不会进行变量提升,在声明之前访问会报错(暂时性死区)。
重复声明:var 可以重复声明同名变量;let 和 const 不允许重复声明同名变量。
赋值:var 和 let 声明的变量可以重新赋值;const 声明的常量一旦赋值后不能重新赋值(对于对象类型的常量,其属性可以修改)。
触发重排的情况:当 DOM 元素的几何属性(如宽度、高度、位置等)发生变化时,浏览器需要重新计算元素的几何属性,然后重新布局页面,这个过程会触发重排。例如,改变元素的宽度、添加或删除可见的 DOM 元素、改变元素的字体大小等。
触发重绘的情况:当 DOM 元素的外观属性(如颜色、背景色、边框样式等)发生变化,但不影响元素的几何属性时,浏览器只需要重新绘制元素的外观,而不需要重新布局页面,这个过程会触发重绘。例如,改变元素的颜色、背景图片等。重排一定会触发重绘,但重绘不一定会触发重排。
URL 编码:用于对 URL 中的特殊字符进行编码,以确保 URL 的合法性和安全性。例如,空格会被编码为 %20。
Base64 编码:常用于在需要以文本形式传输二进制数据(如图片、音频等)时,将二进制数据编码为 ASCII 字符序列。
HTML 实体编码:用于在 HTML 文档中表示特殊字符,如 < 编码为 <,> 编码为 >,以避免这些字符被解析为 HTML 标签。