第十七天Web前端面试题

1,怎样添加、移除、复制、创建、查找节点

添加:appendChild(),insertBefore() 。

移除:insertBefore()

删除:removeChild()

创建:createTextNode

复制:cloneNode()

查找:1.根据元素的id来查找  document.getElementById(elementId);

2.根据元素的class属性 document.getElementsByClassName(className);

3.根据元素(即标签)的标签名 document.getElementsByTagName(tagName);

4. 根据选择器secletor,(这个与标签名有些类似)

      document.querySelector("");  是在DOM树下找到的第一个与之匹配的元素节点

      document.querySelectorAll(""); 是在DOM树下全部与之匹配的元素节点

添加

appendChild() : 向节点的子节点列表的末尾添加新的子节点。添加节点

第十七天Web前端面试题_第1张图片

insertBefore() : 在指定的子节点之前添加一个节点。插入节点。它也可以插入/移除 已存在的元素。

第十七天Web前端面试题_第2张图片
插入节点

移除节点


第十七天Web前端面试题_第3张图片

createTextNode:创建一个节点

复制 cloneNode() 复制节点并返回复制的节点 


2,在JavaScript中什么是伪数组?如何将伪数组转化为标准数组

首先,伪数组不是一个数组,它是对象类型,下面是鉴定方法,伪数组就类似于下面的 lis

第十七天Web前端面试题_第4张图片

如何辨别别伪数组

1,具有length属性

2,按索引方式存储数据

3,不具有数组的push,pop等方法

怎样将伪数组转换成真数组

1、Array.from() 方法

为true

2、sArr.slice() 当参数为空时将把整个数组(或者伪数组)中的内容作为一个新数组返回。

3、Array.prototype.slice.call( 数据 )

4、 声明一个空数组,通过遍历伪数组把它们重新添加到新的数组中

3,jQuery的事件委托on、live、delegate之间有什么区别

事件委派(委托)

事件委托就是利用冒泡的原理,把事件加到父元素或祖先元素上,触发执行效果。

事件委托优点 

提高JavaScript性能。事件委托可以显著的提高事件的处理速度,减少内存的占用。

时间委派写法

$(父元素).on('click','子元素选择器',function(){

    //代码块

});

区别在哪里?

live 把事件委托交给了document(根节点),document 向下去寻找符合条件的元素(), 不用等待document加载结束也可以生效。

delegate可指定事件委托对象,相比于live性能更优,直接锁定指定选择器;

on事件委托对象选填,如果不填,即给对象自身注册事件,填了作用和delegate一致。

band只能给调用它的时候已经存在的元素绑定事件,不能给未来新增的元素绑定事件,存在局限性。

4,描述一次完整的http请求过程(输入url敲回车发生了什么)

1.当开始在浏览器输入网址时,浏览器就已经开始通过历史记录或者书签,找到已经输入的字符串对应的url了,然后智能提示,补全url

2。浏览器查找域名的 IP 地址。请求一旦发起,浏览器首先要做的事情就是解析这个域名,一般来说,浏览器会首先查看本地硬盘的 hosts 文件,看看其中有没有和这个域名对应的规则,如果有的话就直接使用 hosts 文件里面的 ip 地址。如果在本地的 hosts 文件没有能够找到对应的 ip 地址,浏览器会发出一个 DNS本地DNS服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移动。查询你输入的网址的DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果,此过程是递归的方式进行查询。如果没有,本地DNS服务器还要向DNS根服务器进行查询。本地DNS服务器继续向域服务器发出请求,在这个例子中,请求的对象是.com域服务器。.com域服务器收到请求之后,也不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器,你的域名的解析服务器的地址。最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用户查询时,可以直接返回结果,加快网络访问。

3、浏览器向 web 服务器发送一个 HTTP 请求。在通过DNS域名解析后,获取到了服务器的IP地址,在获取到IP地址后,便会开始建立一次连接,这是由TCP协议完成的,主要通过三次握手进行连接:

第一次握手: 建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;

第二次握手: 服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手: 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

4、浏览器向服务器发送HTTP请求

5、服务器返回一个 HTTP 响应,浏览器接收响应

服务器在收到浏览器发送的HTTP请求之后,会将收到的HTTP报文封装成HTTP的Request对象,并通过不同的Web服务器进行处理,处理完的结果以HTTP的Response对象返回,主要包括状态码,响应头,响应报文三个部分。

状态码主要包括以下部分

  1xx:指示信息–表示请求已接收,继续处理。

  2xx:成功–表示请求已被成功接收、理解、接受。

  3xx:重定向–要完成请求必须进行更进一步的操作。

  4xx:客户端错误–请求有语法错误或请求无法实现。

  5xx:服务器端错误–服务器未能实现合法的请求。

  响应头主要由Cache-Control、 Connection、Date、Pragma等组成。

  响应体为服务器返回给浏览器的信息,主要由HTML,css,js,图片文件组成。

6、页面渲染。如果说响应的内容是HTML文档的话,就需要浏览器进行解析渲染呈现给用户。整个过程涉及两个方面:解析和渲染。在渲染页面之前,需要构建DOM树和CSSOM树。

5,http状态码有哪些

1**(信息类):表示接收到请求并且继续处理

100  Continue  继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息


2**(响应成功):表示动作被成功接收、理解和接受

200  OK        正常返回信息

201  Created    请求成功并且服务器创建了新的资源

202  Accepted  服务器已接受请求,但尚未处理


3**(重定向类):为了完成指定的动作,必须接受进一步处理

301  Moved Permanently  请求的网页已永久移动到新位置。

302  Found      临时性重定向。

303  See Other  临时性重定向,且总是使用 GET 请求新的 URI。

304  Not Modified 自从上次请求后,请求的网页未修改过。


4**(客户端错误类):请求包含错误语法或不能正确执行

400  Bad Request  服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。

401  Unauthorized 请求未授权。

403  Forbidden  禁止访问。

404  Not Found  找不到如何与 URI 相匹配的资源。


5**(服务端错误类):服务器不能正确执行一个正确的请求

500  Internal Server Error  最常见的服务器端错误。

503  Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。

6,自我介绍

7,项目介绍

8,后台管理系统权限你是如何实现的?

1.定义静态路由表(无需权限的使用)

2.定义权限路由表(和后台返回的权限进行匹配用)

开始登录判断登录是否成功,(成功后将返回的登录token值存储到本地里,用导航守卫进行判断本地是否存在返回的这个token值)没有成功继续登录,

成功的话判断是否已经获取了用户的权限列表,没有获取重新获取权限列表,

获取到了将权限数据存储到vuex中,

(vuex中的数据是公共数据,我们在写组件时任何一个地方都可能用到这个数据,所以将这个权限数据存储到vuex中,方便使用),

然后将vuex中的权限数据和定义好的需要访问权限的路由表进行对比,

(在设置路由的组件中设置name和获取的权限列表中的路由一样),

生成当前账户对应的权限路由表,

通过addRoutes方法动态添加路由规则,

就可以生成可访问的侧边栏菜单

9,为什么要离职?

10,你要求15k,我们公司给不了你那么多,你该怎么答?

你可能感兴趣的:(第十七天Web前端面试题)