有赞面经

周末面了有赞,面试前说一天会走完流程三面,可惜我能力不足,没走到hr面,一面时候问的都是基础知识,二面真是迄今为止面的最惨一次,可以说是处处都是漏洞,二面面试官是leader既视感,被问得想当场钻到地里,不过收获还是挺大,我自己的表现像一个小学生,的确没有程序员的样子,也让我意识到工程思维的重要性,不过总是在二面挂,还真是挺难受的,如何养成工程思维看待问题,的确需要多多学习,经历,希望下次能有所进步,以下是我答的不好和没答上来的问题:
1.http only的作用和使用场景
首先XSS攻击是跨站脚本攻击,当在cookie中设置HTTPonly属性,js脚本将无法获取cookie信息,所以可以有效预防XSS攻击
如何设置?

response.setHeader("Set-Cookie", "cookiename=value; Path=/;Domain=domainvalue;Max-Age=seconds;HTTPOnly");

2.http1.0与http2.0的区别

为什么问这个问题?因为HTTP请求影响用户体验,而决定HTTP网络请求的因素有:带宽和延迟
而HTTP1.0到HTTP2.0之间经历了HTTP1.1
HTTP1.1的改变主要体现在:①缓存处理,加入了Etag、If-Match等缓存头 ②带宽优化与网络连接的使用 ③错误通知的管理,新增了24个状态错误码
④Host头的处理 ⑤长连接,开启keep-alive
Http2.0的新特性:①新的二进制格式,HTTP1.0的解析式基于文本的,所以现在更加方便健壮
②多路复用,连接共享,一个request对应一个id
③header压缩,避免重复header的传输,又减少了所需要的传输大小
④服务端推送,又server push功能

3.HTTP与HTTPS区别,HTTPS与TCP/IP区别?
HTTP属于应用层 https是传输层
HTTP只能对自己能控制动请求实体进行加密
https是在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器与服务器之间加密通信,他的作用就是对数据加密,并建立一个信息安全通道,来保证传输过程中的数据安全;对网站服务器进行真实的身份验证
HTTP与https的区别
https是加密传输协议,HTTP是明文传输
https需要用到SSL证书,HTTP不用
https比http更加安全,对搜索引擎更友好
https标准端口号是443,http是80
应用层负责包装数据,包装成请求报文

tcp/ip负责传输数据,tcp提供可靠的字节流服务(大数据分割成小的数据进行管理传输)
为啥要进行三次握手?(这个也被问了好久,面试官意思是HTTPS已经保证安全了为啥还要用tcp/ip)
tcp/ip三次握手的目的是数据包的发送与接受同步
保证严谨性,因为很有可能出现网络不好的情况,浪费接口
如果正常情况下,第一次握手,发送端给接收端发了一包数据,说明发送端已经准备就绪,第二次握手接收端给发送端回了一包数据,说明接收端是准备就绪的,现在发送端和接受端都准备就绪了,完全就可以确认双方都在线,并且可以传输数据了呀,为啥还要进行三次。因为三次握手是更严谨的,考虑了异常情况的,比如,第一次握手,发送端给接收端发送了一包数据,结果恰巧网络不好,等了好几秒数据还没到接收端,此时发送端放弃了,不准备继续通讯了,自己去玩了,等了一分钟,接受端收到了,然后就回了一包数据,此时第二次捂手结束,如果这时就默认连接成功的话,其实发送端已经不在了,白白浪费了一个接受端的资源,所以三次握手更严谨
也可以从双方都产生的初始的序列号角度说

四次挥手断开连接:(客户端,服务器,服务器,客户端)
1、B端发送断开请求
2、S端发送ACK确认收到B端断开请求
3、将S端的数据处理完毕后发送可以断开FIN给B端
4、B端发送确认收到请求断开连接
socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)

4.cookie是什么?
Cookie技术是通过在请求和响应报文中写入Cookie信息来控制客户端的状态,Cookie会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去,服务端发现客户端发送过来的Cookie以后,会去查这是哪个客户端发送过来的,然后得到之前的状态信息。

5.如何对返回的数据进行压缩?
HTTP压缩,在HTTP协议中,可以对内容进行编码,例如采用gzip这样的编码,达到压缩目的,也可以使用琪头大编码把内容搅乱或者加密,来防止未授权的第三方看到文档的内容。
浏览器发送一个请求(request)给web服务器,支持一个压缩格式如(gzip),服务端会将原来的源码压缩之后,通过http响应(response)信息返回给web浏览器,浏览器接收之后,显示出来。
记住header里面的Content-Encoding属性

6.为什么用sessionStorage?存在安全风险吗?
sessionStorage的特点是存取方便,不是一次性选择完所有要导入的数据而是把选择的数据暂时保存的页面中,可以用sessionStorage,要添加key的值
cookie的弊端:
cookie在每个浏览器及版本的数量都不同
大小受限制,一般在4kb
安全性低,例如CSRF攻击
有些状态不可能保存在客户端
每次访问都要传送cookie到服务器,浪费带宽
有路径的概念,限制访问路径

document.cookie="name=value;domain=域名;path=/;expires=过期时间;secure"

用seesionStorage会减少客户端和服务器端的交互,节省流量,可以快速显示,不用与服务器端交互,安全性高,但仍然担心伪造问题

6.CPU读取数据的顺序(自己挖坑说懂一点计网结果,gg…)
cpu读取数据的顺序是按照堆栈的顺序顺序执行的,栈中的顺序是按优先级排,cache叫做高速缓冲存储器,是集成在CPU中存取速度最快的,一级缓存,二级缓存,其次是内存,也就是主板上插的内存条,速度最慢的是外存。

7.Vue中v-for渲染为啥要添加key属性?
从两点回答
①v-for渲染数据时候会默认使用“就地更新”原则,不会把所有的标签全部重新删除和重建,只会重新渲染数据,直到数据渲染完为止,而加入key,可以提高渲染效率,不会改变原有的数据与元素,而是创建新的元素,再把新的数据渲染进去。
②为了高效地更新虚拟DOM,vue中在使用相同标签名元素的过渡切换时,也会使用到key属性,其目的也是为了让vue可以区分它们。
对象循环加key,数组循环没有必要加key(当普通数组无法匹配时,可以加key)

8.vue为什么用vdom?vdom一般在什么场景下用?vdom与jQuery获取dom节点的比较?
jQuery中的dom更新,若更新n个节点会更新n-1次,浪费性能.
vdom是为了解决浏览器性能问题设计的,他会将所有的更新西安反映在Vnode上,操作内存中的vnode速度显然会快,将最终的js对象映射到真实的dom
vdom 的真正意义是为了实现跨平台,服务端渲染,以及提供一个性能还算不错 Dom 更新策略。vdom 让整个 mvvm 框架灵活了起来
diff算法是深度优先遍历,将每一个差异记录。

9.如何让JS代码写在里面如何不堵塞?
方法一:用onload函数
window.onload = function() {
//要执行的JS代码
}
方法二:jQuery的ready方法
$(document).ready(function() {
// 要执行的代码
});

的确好多盲区,希望下次能够过二面吧!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值