zoukankan      html  css  js  c++  java
  • HTTP、浏览器面试题

    一、http和https的区别?

    ①HTTP是未加密的,明文的。https是http和ssl协议构建的加密的协议。

    ②https需要ca证书,费用较高。

    ③连接的端口不同 http是80端口号,https是443端口号。

    ④HTTP的连接时无状态的,gttps较安全。

    二、三次握手?

    ①为什么要进行三次握手?

    因为要使得双方都可以进行收发。

    第一次握手:C端向S端发送连接请求。

    第二次握手:S端确认收到C端发来的报文。

    第三次握手:C端确认S端收到了自己的报文,并且确定自己可以收到S端的报文。

    三、UDP和TCP的区别?

    ①TCP面向连接,提供可靠连接,面向字节流,只支持1对1连接

    ②UDP不面向连接,提供不可靠连接,面向保温,支持1对多,1对1。

    四、HTTP请求的HAED方式?

    类似与get,但是不同的时HEAD不返回具体的内容,只返回请求头。

    五、BOM对象?

    BOM:浏览器对象  location对象 、history对象、navigator对象

    location对象:

    ①location.href()  返回或设置当前文档的URL

    ②location.hash()  返回URL#之后的内容

    history对象:

    ①history.go(num)  前进或后退页数

    ②history.back()   后退一页

    ③history.foword()  前进一页

    navigator对象:

    ①navigator.userAgent -- 返回用户代理头的字符串表示(就是包括浏览器版本信息等的字符串)
    ②navigator.cookieEnabled -- 返回浏览器是否支持(启用)cookie

    六、http状态码

    ①1**  信息

    100:继续访问

    ②2** 成功

    200:请求成功

    201:已创建资源。

    202:已接受,但还没有处理

    ③3** 重定向

    301URL已转移

    ④4** 客户端错误

    401:请求语法错误

    402:没有权限

    403:禁止访问

    404:找不到页面

    ⑤5**  服务器端错误

    500:服务器内部错误

    503:超载或在维修

    七、cookie、localStorage、sessionStorage的区别?

    相同:都是存储在浏览器端

    ①存储大小不同

    cookie是4KB,session和local是5MB。

    ②生命周期不同

    cookie可设置过期时间,如果不设置就是页面级的。local是长期存储,除非手动删除。session是页面级存储,关闭页面则消失。

    ③请求参数不同

    cookie每次都会带http头,其他二者不需要

    ④实用性

    cookie没有自己的api需要开发人员自己进行封装 getCookie、setCookie。其他二者都有自己的api,setItem()、getItem()

    八、Doctype的作用?

    告诉浏览器应该用何种模式来解析文档。

    有严格模式,混杂模式。

    严格模式:W3C的标准模式。  混杂模式:浏览器自己的模式。

    九、addEventListener参数

    addEventListener(event,function,useCopture)

    event:事件    function:触发时执行的函数   useCopture:true为事件冒泡,false为事件捕获

    十、HTTP的缓存机制?

    ①根据HTTP响应报文的缓存标识符进行缓存      有强制缓存和协商缓存。

    强制缓存:浏览器缓存中存在缓存结果和标识符。

    协商缓存:强制缓存失效之后再向服务端发送请求的过程。返回304表示资源没有更新。返回200表示资源已更新。

    ②强制缓存的字段expires和cache-Control    协商缓存字段:last-Modified/If-Modified-Since   Etag/If-None-Match

    总结:强制缓存是优于协商缓存的,若强制缓存生效则直接用缓存,若失效则进行协商缓存。

    协商缓存由服务器端决定是否使用缓存。304继续使用缓存。200重新获取缓存。

    十一、POST和GET的区别?

    ①get的信息是在url中的,所以不安全,并且有长度限制。

    ②post的信息实在请求体内的,所以较安全,没有长度限制

    十二、在输入URL之后,页面会发生什么?

    ①过程:输入url→查看缓存(浏览器缓存、系统缓存、路由器缓存。若有缓存直接显示页面内容)→DNS服务器(解析出IP地址)→发起HTTP请求(TCP连接)→服务端进行响应→绘制页面

    ②详细过程:输入URL后,浏览器先查看缓存,若有缓存则直接显示页面内容。如果没有缓存则查询DNS服务器找到IP地址。然后浏览器向服务端发起HTTP请求、tcp连接。服务端返回请求结果。

    根据返回的结果解析文档,先解析HTML文档构建DOM树,遇到<link><style>标签构建CSSOM树,最后在结合DOM树和CSSSOM树生成Render渲染树。若在解析过程中遇到js文件就会停止DOM树的构建,直到js文件加载并解析完成后再继续DOM树的构建。因为js会改变DOM结构。

    ③重绘和回流:js代码可以修改和访问dom节点和css,所以再解析js的过程中会导致页面的重新布局和渲染。

  • 相关阅读:
    保持唯一性,请停止使用【python3 内置hash() 函数】
    彻底解决go get golang.org/x等包失败与VSCode golang插件安装失败问题
    Linux 任务后台运行软件【即:终端复用器】之---screen
    Ubuntu+uWSGI部署基于Django的API【鸿篇巨制,事无巨细】
    python慎用os.getcwd() ,除非你知道【文件路径与当前工作路径的区别】
    win下youtube-dl 【ERROR: requested format not available】选下载视频质量的坑--【值得一看】
    Mysql失败,异常pymysql.err.InternalError: (1366, "Incorrect string value: '\xF0\x9D\x90\xBF;......
    scrapy post payload的坑及相关知识的补充【POST传参方式的说明及scrapy和requests实现】
    mitmproxy--Cannot establish TLS with client (sni: e.crashlytics.com): TlsException("(-1, 'Unexpected EOF')",) 解决办法
    【GET TIPS】Chrome所见即所得的截图技巧
  • 原文地址:https://www.cnblogs.com/babilong/p/13765280.html
Copyright © 2011-2022 走看看