JS常遇面试题

论坛 期权论坛 期权     
前端小白六六锅   2019-7-27 14:56   4074   0
一   数组去重的方式
   这里只列举出来两总经常用到的数组去重方法:
   JS 遍历数组去重法
   ES6数组去重法   如下图代码:



二   前端优化方法
    1 减少HTTP请求次数
    2 减少DNS查找次数
    3 避免跳转
    4 可缓存的AJAX
    5 推迟加载内容
    6 预加载
    7 减少DOM元素的数量
    8 根据域名划分页面内容
    9 把样式表至于顶部
    10 避免使用CSS表达式
    11 使用外部的JS和CSS
    12 用link代替@import
    13 避免使用滤镜
    14 把脚本至于页面底部
    15 剔除重复脚本

三 JavaScript闭包了解么

        闭包即为函数,但是我们通常所说的闭包是指有权访问并操作别的函数作用域中变量的函数。一般表现形式为函数中返回函数。通常我们开发中就会有很多的闭包比如定时器、事件监听、IIFE等。

四 前端跨域都有哪些解决方案

        js的前端跨域很多,通常我们给出方案并且应该简述优缺点,比如方式有,jsonp、document.domain+iframe、window.name+ifram、location.hash+iframe、postMessage跨域、CORS跨域、websocket跨域、node代理跨域以及NGINX代理等方式。其中对于我们常用的可以张开说明,比如CORS跨域中简单请求和非简单请求的header字段,access-control-allow-origin、access-control-allow-headers、access-control-allow-method等常规head字段说明。

五 JavaScript中的继承

        1、Es6中我们直接可以使用extends关键字去继承,通过重写super完成继承,但是在es5中,才是应该去主要细说的。
        2.原型继承的核心为父类的实例作为子类的原型。优点:非常纯粹的继承关系、简单易用、父类新增的原型方法原型属性子类都可以访问到。缺点:要为子类新增属性和方法,必须要放到new Animal()之后,不能放到构造器中,来自原型对象的引用类型被所有实力共享,创建子类,无法向构造函数传参。
        3.构造函数继承核心:使用父类构造函数来增强子类的实例优点:解决了共享引用类型的问题,可以在构造函数里面传参,可以实现多继承。缺点:实例不是父类实例,只能继承父类的属性和方法,不能继承父类原型的方法和属性、无法实现函数的复用。
        4、组合继承的核心:通过调用父类的构造,继承父类的属性并保留参数的有点,通过父类的实例作为子类原型,实现函数复用。优点:可以继承属性和方法以及原型上的属性和方法、即是子类实例也是父类实例、不存在属性共享的问题、函数可复用。缺点:调用了两次构造函数,生成了两份实例。
        5、寄生组合继承核心:砍掉父类的实例属性,这样,在调用两次父类的构造时候,就不会初始化两次实例方法和属性,避免组合继承的缺点
es6 extends继承,ES5中的继承,实质上是先创建子类上的this,然后再将父类方法添加到this上,es6则是先创建父类的实例方法(必须调用super),然后在用子类构造函数修改this。没有调用super,是没有this的。

六 TCP三次握手

    第一次握手:建立连接。客户端发送连接请求报文,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器确认。
    第二次握手:服务器收到SYN报文段。对报文段进行确认,然后给客户端发送SYN+ACK报文段,此时服务器进入SYN_RECV状态。
    第三次握手:客户端收到服务器的SYN+ACK报文段。然后向服务器发送ACK报文段,这个报文段发送完成后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。
完成三次握手之后,客户端就可以跟服务器端开始传送数据。

   
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:5
帖子:1
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP