前端面试计网、HTTP协议,操作系统(自留,持续更新)

参考:
https://juejin.cn/post/6844903590058786824
https://space.bilibili.com/327247876
https://blog.csdn.net/qq_38128179
https://www.bilibili.com/video/BV18f4y1H7Zu
https://blog.csdn.net/weixin_45070175/article/details/118559272
https://www.jianshu.com/p/26879146d865

文章目录

      • 一、计网
        • 1.ajax,fetch,axios是什么,优缺点?
        • 2.跨域方式有哪些?特点是什么?
        • 3.TCP三次握手四次挥手,握手哪次最容易被攻击?
        • 4.HTTP报文结构,头有哪些字段?
        • 5.TCP/IP五层模型?网络OSI七层模型有哪些?TCP是哪一层,这层还有什么协议?
        • 6.http1.0和http1.1和http2的区别,http3?
        • 7.GET和POST区别?
        • 8.http和https有什么区别?https实现原理?(SSL/TLS)
        • 9.localStorge,SessionStorage,cookie,session,token都是什么?
        • 10.什么是JWT?(Json Web Token)
        • 11.indexDB和localStorage区别?
        • 12.http缓存有哪些?
        • 13.TCP和UDP有什么区别?
        • 14.TCP如何保证可靠传输的?
        • 15.从浏览器输入url后都经历了什么?浏览器渲染页面的流程?
        • 16.回流reflow和重绘repaint?
        • 17.CDN缓存是什么?
        • 18.DNS是什么?
        • 19.xss和csrf是什么,如何防范?(前端安全)
      • 二、操作系统
        • 1.进程和线程的区别
        • 2.进程间通信的方式
        • 3.死锁
        • 4.页置换算法
        • 5.浏览器的多进程

一、计网

1.ajax,fetch,axios是什么,优缺点?

1)ajax
ajax指异步的javascript和XML,是一个技术统称,特点就是局部刷新页面、不需要重载整个页面。ajax通过js操作浏览器提供的XMLHttpRequest构造函数表示网页请求,以此来进行网络通信。
ajax内部有这么几个需要注意点函数和参数:

open(请求方法,url,是否异步):定义请求
send(请求体):发送请求
readyState:相当于客户端的状态码
readyState属性值的变化会触发**onreadystatechange()**回调函数,因此使用onreadystatechange监视readyState属性的变化。
0:未调用open方法
1:调用了open方法,未调用send方法
2:发送了请求还未收到响应
3:收到部分响应
4:响应都接收完毕

function ajax(url){
   
    //1.由于js自身没有网络沟通能力,因此需要创建浏览器提供的XMLHttpRequest
    let xhr = new XMLHttpRequest();
    //2.接着定义请求,用open()方法填写请求类型,URL和是否异步
    xhr.open('get',url,true);
    //3.用onreadystatechange()监控readyState属性值变化
    xhr.onreadystatechange = () =>{
   
        if(xhr.readyState===4){
   //如果readyState等于4就表示收到所有响应了
            if(xhr.status===200){
   //收到所有响应不代表成功接收文件,可能文件不存在了,因此要判断状态码
                console.info("响应结果",xhr.response);
            }
        }
    }
    //4.用send()方法发送请求
    xhr.send(null);
}

2)fetch
fetch是基于es6提出的promise的发送网络请求的API,因为使用了promise,因此链式调用,不会产生回调地狱。

fetch默认发送请求方法是GET方法:

function fetchmethod(url){
   
    fetch(url)
        .then(response=>{
   //收到服务器传来的响应
            if(response.ok){
   
                //如果响应状态为ok成功,则将响应转换为js可以操作的json对象
                response.json();
            }
            throw new Error("错误提示");//失败则抛出异常
    	})
    	.then(data => console.log(data));//得到想要的信息
}

fetch如果发送POST请求,就需要设置第二个参数(一个配置对象):

你可能感兴趣的:(http,前端,http)