美文网首页vue面试题前端开发
第十七天Web前端面试题

第十七天Web前端面试题

作者: 小程要谦虚 | 来源:发表于2019-07-29 12:14 被阅读8次

    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() : 向节点的子节点列表的末尾添加新的子节点。添加节点

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

    插入节点

    移除节点

    createTextNode:创建一个节点

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

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

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

    如何辨别别伪数组

    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状态码有哪些

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

            200  OK         正常返回信息

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

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

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

            302  Found       临时性重定向。

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

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

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

            401  Unauthorized 请求未授权。

            403  Forbidden   禁止访问。

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

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

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

    6,自我介绍

    7,项目介绍

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

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

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

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

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

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

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

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

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

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

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

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

    9,为什么要离职?

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

    相关文章

      网友评论

        本文标题:第十七天Web前端面试题

        本文链接:https://www.haomeiwen.com/subject/oljkrctx.html