书签 分享 收藏 举报 版权申诉 / 32

类型web前端最全面试题及答案含vuereact.docx

  • 文档编号:22847305
  • 上传时间:2023-04-28
  • 格式:DOCX
  • 页数:32
  • 大小:38.59KB

Clearfix方法:

上文使用.clearfix类已经提到

overflow:

auto或overflow:

hidden方法,使用BFC

8,你对csssprites的理解,好处是什么

是什么

雪碧图也叫CSS精灵,是一CSS图像合成技术,开发人员往往将小图标合并在一起之后的图片称作雪碧图。

如何操作

使用工具(PS之类的)将多张图片打包成一张雪碧图,并为其生成合适的CSS。

每张图片都有相应的CSS类,该类定义了background-image、background-position和background-size属性。

使用图片时,将相应的类添加到你的元素中。

好处:

减少加载多张图片的HTTP请求数(一张雪碧图只需要一个请求)

提前加载资源

不足:

CSSSprite维护成本较高,如果页面背景有少许改动,一般就要改这张合并的图片

加载速度优势在http2开启后荡然无存,HTTP2多路复用,多张图片也可以重复利用一个连接通道搞定

9,你对媒体查询的理解

是什么

媒体查询由一个可选的媒体类型和零个或多个使用媒体功能的限制了样式表范围的表达式组成,例如宽度、高度和颜色。

媒体查询,添加自CSS3,允许内容的呈现针对一个特定范围的输出设备而进行裁剪,而不必改变内容本身,非常适合web网页应对不同型号的设备而做出对应的响应适配。

如何使用

媒体查询包含一个可选的媒体类型和,满足CSS3规范的条件下,包含零个或多个表达式,这些表达式描述了媒体特征,最终会被解析为true或false。

如果媒体查询中指定的媒体类型匹配展示文档所使用的设备类型,并且所有的表达式的值都是true,那么该媒体查询的结果为true.那么媒体查询内的样式将会生效。

10,你对盒模型的理解

是什么

当对一个文档进行布局(layout)的时候,浏览器的渲染引擎会根据标准之一的CSS基础框盒模型(CSSbasicboxmodel),将所有元素表示为一个个矩形的盒子(box)。

CSS决定这些盒子的大小、位置以及属性(例如颜色、背景、边框尺寸…)。

盒模型由content(内容)、padding(内边距)、border(边框)、margin(外边距)组成

11,标准盒模型和怪异盒模型有什么区别

在W3C标准下,我们定义元素的width值即为盒模型中的content的宽度值,height值即为盒模型中的content的高度值。

因此,标准盒模型下:

元素的宽度=margin-left+border-left+padding-left+width+padding-right+border-right+margin-right

而IE怪异盒模型(IE8以下)width的宽度并不是content的宽度,而是border-left+padding-left+content的宽度值+padding-right+border-right之和,height同理。

在怪异盒模型下:

元素占据的宽度=margin-left+width+margin-right

虽然现代浏览器默认使用W3C的标准盒模型,但是在不少情况下怪异盒模型更好用,于是W3C在css3中加入box-sizing

12,谈谈对BFC的理解

是什么

书面解释:

BFC(BlockFormattingContext)这几个英文拆解

Block:

Block在这里可以理解为Block-levelBox,指的是块级盒子的标准

Formattingcontext:

块级上下文格式化,它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用

BFC是指一个独立的渲染区域,只有Block-levelBox参与,它规定了内部的Block-levelBox如何布局,并且与这个区域外部毫不相干.

它的作用是在一块独立的区域,让处于BFC内部的元素与外部的元素互相隔离.

如何形成

BFC触发条件:

根元素,即HTML元素

position:

fixed/absolute

float不为none

overflow不为visible

display的值为inline-block、table-cell、table-caption

作用是什么

防止margin发生重叠

两栏布局,防止文字环绕等

防止元素塌陷

13,为什么有时候人们用translate来改变位置而不是定位

translate()是transform的一个值。

改变transform或opacity不会触发浏览器重新布局(reflow)或重绘(repaint),只会触发复合(compositions)。

而改变绝对定位会触发重新布局,进而触发重绘和复合。

transform使浏览器为元素创建一个GPU图层,但改变绝对定位会使用到CPU。

因此translate()更高效,可以缩短平滑动画的绘制时间。

而translate改变位置时,元素依然会占据其原始空间,绝对定位就不会发生这种情况。

14,伪类和伪元素的区别是什么

是什么

伪类(pseudo-class)是一个以冒号(:

)作为前缀,被添加到一个选择器末尾的关键字,当你希望样式在特定状态下才被呈现到指定的元素时,你可以往元素的选择器后面加上对应的伪类。

伪元素用于创建一些不在文档树中的元素,并为其添加样式。

比如说,我们可以通过:

:

before来在一个元素前增加一些文本,并为这些文本添加样式。

虽然用户可以看到这些文本,但是这些文本实际上不在文档树中。

区别

其实上文已经表达清楚两者区别了,伪类是通过在元素选择器上加入伪类改变元素状态,而伪元素通过对元素的操作进行对元素的改变。

我们通过p:

:

before对这段文本添加了额外的元素,通过?

p:

first-child改变了文本的样式。

15,你对flex的理解

web应用有不同设备尺寸和分辨率,这时需要响应式界面设计来满足复杂的布局需求,Flex弹性盒模型的优势在于开发人员只是声明布局应该具有的行为,而不需要给出具体的实现方式,浏览器负责完成实际布局,当布局涉及到不定宽度,分布对齐的场景时,就要优先考虑弹性盒布局

 

JS篇

1,解释下变量提升

JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。

这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。

2,理解闭包吗

闭包是什么

MDN的解释:

闭包是函数和声明该函数的词法环境的组合。

按照我的理解就是:

闭包=『函数』和『函数体内可访问的变量总和』

闭包的作用

闭包最大的作用就是隐藏变量,闭包的一大特性就是内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后

基于此特性,JavaScript可以实现私有变量、特权变量、储存变量等

我们就以私有变量举例,私有变量的实现方法很多,有靠约定的(变量名前加_),有靠Proxy代理的,也有靠Symbol这种新数据类型的。

但是真正广泛流行的其实是使用闭包。

3,JavaScript的作用域链理解吗

JavaScript属于静态作用域,即声明的作用域是根据程序正文在编译时就确定的,有时也称为词法作用域。

其本质是JavaScript在执行过程中会创造可执行上下文,可执行上下文中的词法环境中含有外部词法环境的引用,我们可以通过这个引用获取外部词法环境的变量、声明等,这些引用串联起来一直指向全局的词法环境,因此形成了作用域链。

4,ES6模块与CommonJS模块有什么区别

ES6Module和CommonJS模块的区别:

CommonJS是对模块的浅拷贝,ES6Module是对模块的引用,即ES6Module只存只读,不能改变其值,具体点就是指针指向不能变,类似const

import的接口是read-only(只读状态),不能修改其变量值。

即不能修改其变量的指针指向,但可以改变变量内部指针指向,可以对commonJS对重新赋值(改变指针指向),但是对ES6Module赋值会编译报错。

ES6Module和CommonJS模块的共同点:

CommonJS和ES6Module都可以对引入的对象进行赋值,即对对象内部属性的值进行改变。

5,js有哪些类型

JavaScript的类型分为两大类,一类是原始类型,一类是复杂(引用)类型。

原始类型:

boolean

null

undefined

number

string

symbol

复杂类型:

Object

6,null与undefined的区别是什么

null表示为空,代表此处不应该有值的存在,一个对象可以是null,代表是个空对象,而null本身也是对象。

undefined表示『不存在』,JavaScript是一门动态类型语言,成员除了表示存在的空值外,还有可能根本就不存在(因为存不存在只在运行期才知道),这就是undefined的意义所在。

7,谈谈你对原型链的理解

这个问题关键在于两个点,一个是原型对象是什么,另一个是原型链是如何形成的

原型对象

绝大部分的函数(少数内建函数除外)都有一个prototype属性,这个属性是原型对象用来创建新对象实例,而所有被创建的对象都会共享原型对象,因此这些对象便可以访问原型对象的属性。

原型链

原因是每个对象都有?

__proto__?

属性,此属性指向该对象的构造函数的原型。

对象可以通过?

__proto__与上游的构造函数的原型对象连接起来,而上游的原型对象也有一个__proto__,这样就形成了原型链。

8,谈一谈你对this的了解

this的指向不是在编写时确定的,而是在执行时确定的,同时,this不同的指向在于遵循了一定的规则。

首先,在默认情况下,this是指向全局对象的,比如在浏览器就是指向window。

其次,如果函数被调用的位置存在上下文对象时,那么函数是被隐式绑定的。

再次,显示改变this指向,常见的方法就是call、apply、bind

最后,也是优先级最高的绑定new绑定。

用new调用一个构造函数,会创建一个新对象,在创造这个新对象的过程中,新对象会自动绑定到Person对象的this上,那么this自然就指向这个新对象。

9,那么箭头函数的this指向哪里

箭头函数不同于传统JavaScript中的函数,箭头函数并没有属于自己的this,它的所谓的this是捕获其所在上下文的this值,作为自己的this值,并且由于没有属于自己的this,而箭头函数是不会被new调用的,这个所谓的this也不会被改变.

10,async/await是什么

async函数,就是Generator函数的语法糖,它建立在Promises上,并且与所有现有的基于Promise的API兼容。

Async—声明一个异步函

配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
web 前端 全面 试题 答案 vuereact
提示  冰豆网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:web前端最全面试题及答案含vuereact.docx
链接地址:https://www.bdocx.com/doc/22847305.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2008-2022 冰点文档网站版权所有

经营许可证编号:鄂ICP备2022015515号-1

收起
展开