面试题

2019-02-24  本文已影响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文件

上一篇下一篇

猜你喜欢

热点阅读