• 腾讯实习电话面


    由于没有录音只记得一小部分,还有一部分是关于项目的。。。。。

    1. 设计模式

    参考:https://www.cnblogs.com/pony1223/p/7608955.html

    https://www.cnblogs.com/pony1223/p/7608955.html

    2.从url到页面呈现

    输入url-->找缓存,如果没有-->查询DNS服务器得到服务器的IP--->建立TCP连接--->发送HTTP请求--->服务器解析请求,返回HTTP报文--->浏览器渲染页面

    2.1   DNS域名解析具体原理

    1.浏览器缓存:浏览器会按照一定的频率缓存DNS记录。

    2. 操作系统缓存:如果浏览器缓存中找不到需要的DNS记录,那就去操作系统中找。

    3. 路由缓存:路由器也有DNS缓存。

    4. ISP的DNS服务器:ISP是互联网服务提供商(Internet Service Provider)的简称,ISP有专门的DNS服务器应对DNS查询请求。

    5. 根服务器:ISP的DNS服务器还找不到的话,它就会向根服务器发出请求,进行递归查询(DNS服务器先问根域名服务器.,然后再问顶级域名服务器,之后是权威域名服务器,二级域名服务器,直到查询到IP地址,浏览器接收到IP地址后将其存入缓存以便下次使用)。

    2.2   TCP三次握手

    首先客户端发起会话请求,SYN=1,ACK=0,seq=J;

    服务端收到请求后,确认建立会话,将SYN=1,ACK=1,ack=J+1,seq=K并将自己所能接受的最大字节传送给客户端;

    客户端收到后,检查ACK标志位(确认位)是否为1,以及ack(确认序号)是否正确,正确后设置自己的最大传输字节,然后向服务端发送数据确认,此时ACK=1,ack=K+1,服务端收到后检验seq以及ack的值,正确则成功建立会话,后面继续通信。

    2.3   浏览器渲染

    HTML是个树形结构,浏览器根据这个html来构建DOM树,再构建DOM树过程中间如果有遇到js脚本和外部JS连接,会停止构建DOM树来执行和下载相应的js代码,因此JS代码推荐写在HTML代码后面。之后根据样式构建CSSOM树,构建完之后与DOM合并为渲染树,之后进行布局,布局主要是确定各个元素的位置和尺寸,之后是渲染页面。(因为html文件中会含有图片,视频,音频等资源,在解析DOM的过程中,遇到这些都会进行并行下载,浏览器对每个域的并行下载数量有一定的限制,一般是4-6个,当然在这些所有的请求中我们还需要关注的就是缓存)

    3.TCP四次挥手

    第一次:客户端发送连接释报文,报文中FIN=1,seq=u,并且停止发送数据此时客户端进入终止等待1阶段。

    第二次:服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,seq=v,此时服务器进入关闭等待阶段。客户端收到服务器的确认请求后,进入终止等待2阶段,等待服务器发送连接释放报文。

    第三次:服务器将最后的数据发送完毕后,向客户端发连接送释放报文,此时服务器进入最后确认状态,等待客户端确认。

    第四次:客户端收到服务器连接释放报文后,发出确认,此时客户端进入了时间等待阶段,等待2MSL时间后关闭,服务器只要收到客户端发生的确认后就关闭。

    4.性能优化

    详细参考:https://www.cnblogs.com/xiaohuochai/p/9178390.html

    降低请求量:合并资源,减少HTTP 请求数,minify / gzip 压缩,webP,lazyLoad。

    加快请求速度:预解析DNS,减少域名数,并行加载,CDN 分发。

    缓存:HTTP 协议缓存请求,离线缓存 manifest,离线数据缓存localStorage。

    渲染:JS/CSS优化,加载顺序,服务端渲染,pipeline。

    5.前端安全性的了解

    参考:https://segmentfault.com/a/1190000014839133?utm_source=index-hottest

    (1) XSS:XSS是前端谈论最多的安全问题,是通过在你的输入文本当中或者这HTML标签当中插入js脚本进行攻击,比如会在你的a标签或者img标签之前插入一些脚本文件就能攻击到你的网站,所有在用HTML去切入到div的时候一定要注意,或者长串的字符串嵌入到a标签的时候。

    解决办法:

    1. 浏览器禁止页面的JavaScript访问带有set-cookie:httpOnly属性的cookie
    2. 如果要使用HTML进行转换内容的时候,写代码时改为innerText而不用innerHTML,或者把<script><iframe>等标签替换掉;
    3. 对一些切入标签的字符串进行转义

    (2)CSRF也称为跨站请求伪造,其实就是对网站中的一些表单提交行为被黑客利用。比如你的网站登录的时候存到cookie的一些个人信息,当你访问黑客的网站有一段相同代码隐藏div,但你点击的时候就会导致你的网站被登出或者被登录,就是在对别的网站就行操作的时候会对你之前访问的网站发送请求。

    解决办法:

    1.增加token验证.因为cookie发送请求的时候会自动增加上,但是token却不会,这样就避免了攻击

    2.Referer验证。Refer首部包含了当前请求页面的来源页面地址。

    3. 验证码

    CSRF攻击过程中,用户在不知情的情况下构造了网络请求,添加验证码后,强制用户必须与应用进行交互。但是网站不可能把所有的操作都加上验证码

    (3)点击劫持:点击劫持是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。

    解决方法:X-Frame-Options HTTP响应头是用来给浏览器指示允许一个页面能否在<frame>、<iframe>、<object>中展现的标记。有三个可选值:

    1. DENY:浏览器会拒绝当前页面加载任何frame页面(即使是相同域名的页面也不允许)
    2. SAMEORIGIN:允许加载frame页面,但是frame页面的地址只能为同源域名下的页面
    3. ALLOW-FROM:可以加载指定来源的frame页面(可以定义frame页面的地址
  • 相关阅读:
    subprocess使用小方法
    POJ3694 Network
    pickle 两个使用小方法
    软件补丁问题(SPFA+位运算)
    auto_ftp_sh
    幸运数字 容斥
    python调用脚本或shell的方式
    奇技淫巧
    运算符
    条件循环控制
  • 原文地址:https://www.cnblogs.com/mlebk/p/12515642.html
Copyright © 2020-2023  润新知