面试题

作者: 站着瞌睡 | 来源:发表于2019-02-24 06:31 被阅读0次

    1. https的密钥是怎样交互的

    https是http+tsl/ssl,客户端和服务端在数据传输过程中都会通过ssl/tsl加密,以前是采用的ssl协议,现在采用tsl协议,这是构建在TCP协议之上的加密通道:

    https交互分八个过程

    (1)客服端发起https请求
    
    (2)服务端配置证书:采用https必须有一套数字证书,可自己制作生成也可以第三方公司的,自己制作的需要客服端受信任操作,所谓数字证书就是一对公钥和私钥
    
    (3)传送证书:就是把数字证书也就是公钥传送给客户端,包含颁发机构信息,过期时间
    
     (4)接收证书:客户端查看证书是否有效,如果有效生成一个随机值(私钥)并用证书对其加密
    
     (5)传送加密信息:就是传送随机值的加密信息
    
     (6)服务端解析加密信息:把加密的随机值解密出来
    
     (7)服务端传送加密的数据:向客服端传送用私钥(随机值)加密的信息
    
     (8)客服端解密信息:用私钥解密服务端传过来的加密数据
    

    2.requestAnimationFrame 和 setTimeout 的区别(宏任务和微任务)

    (1)requestAnimationFrame是由系统判断执行时间的,一次间隔只执行一次事件,不会丢帧,而setTimeout是有事件队列决定执行时间,所以容易丢帧,造成动画卡顿
    
    (2)当页面被隐藏或者最小化的时候,setTimeout还在继续执行,而requestAnimationFrame停止执行,requestAnimationFram做个优化
    

    宏任务:script主程序代码,setTimeout, setInterval,setImmediate, I/O,UIrending

    微任务:process.nextTick,promise,object.observer,mutationObserver

    3.es6和commonjs的区别

    (1)es6是值引用,import变量是只读的,
    

    4.['1','2','3','4'].map(parseInt);

    ['1', '2', '3', '4'].map(function(item,index,arr){
        return parseInt(item, index)
    })
    

    [1,NAN,NAN,NAN]

    5.web攻击方式,dos,crsf,xss,sql注入,如何防护

    (1)dos攻击是通过大流量造成网络堵塞的攻击,在网络层进行防护
    
    (2)crsf攻击跨站请求伪造,是引导用户进入第三方网站,向被攻击的网站发起请求,只能使用登录状态不能获取,防护手段token校验
    
    (3)xss攻击跨站脚本攻击,在url上,form表单,img,a植入攻击脚本,当客服端对攻击脚本执行的时候发起攻击,分存储型,反射,dom三种,服务端过滤,html代码转义,纯前端渲染
    

    6. 如何让一个元素左右间距20px,宽度是高度的50%居中

    7. Function.prototype.bind

    Function.prototype.bind = function(o){
        if(typeof this !== 'function') {
            console.warn('this is not a function')
        }
        var self = this;
        var args = [];
    
        for (var i=1; i<arguments.lenght;i++){
            args.push(arguments[i])
        }
        var fn = function () {
            var params = new Array().slice.call(arguments)
            self.apply(this instanceof this ? this:o, args.concat(params))
        }
        
    
        fn.prototype = Object.create(self.prototype)
    
        return fn;
    }
    

    8. 如何计数图片中黑点的个数

    9. 二叉树的左视图数字

    ---------1--------

    -----2--------3----

    --4-----5---6-----7

    ----------------------8

    输出结果是:1,2,4,8


    面试二

    1. vue组件间的通信

    2. vuex的使用

    3. 前端的内存管理,内存泄漏的处理

    4. threejs什么方法可以释放内存,删除对象指针不可取

    5. 前端使用require,怎么知道a.js依赖b.js,c.js

    6. require的动态加载,例如点击按钮的时候才加载js(打包的按需加载)

    7. v-for的key的作用

    8. http的post请求的报文

    9. o = new fn(), o.add(1).add(2).add(3), +o怎么输出结果(考虑的是类型转换的方法重写)

    10. 输出小于N的素数

    11. 一个数组,输出相加等于20的三个数字,a+b+c=20,输出a,b,c

    12. 无限加载列表,太多会出现加载慢的情况,怎么解决

    13. 滚动到一定位置,导航吸顶怎么好的实现

    14. 优惠券满10减5,满20减10。。。作为规则rule,rule的数据格式自己定义,实现一个价格total=25,应支付金额pay=

    15. canvas怎么实现元素的鼠标事件

    16. canvas和svg有什么不同,在不同的场景中如何选择使用哪一个

    17. webpack的plugin和loader有什么不一样

    18. 用require或者import怎么实现动态按需加载,比如当我点击按钮才加载js文件

    相关文章

      网友评论

          本文标题:面试题

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