途虎养车面试准备

1.url的组成和长度

协议、域名、端口号、资源路径、查询参数

 

 

 

2.浏览器地址栏输入url,到页面渲染经历哪些过程

  • 域名解析为ip地址
  • 主机向IP地址发送tcp请求,连接上主机
  • 发送http请求
  • 收到响应,把解析的结果渲染到浏览器页面上

 3.js与css在页面加载过程中如何阻塞页面的渲染

(1)请求html资源 (2)解析html生成DOM树 (3)遇到js则去下载,并执行 (4)遇到css则去下载,并解析css文件生成cssOM(5)根据DOM树和CSSOM生成渲染树让GPU渲染

*js会阻塞DOM树的解析过程,一旦遇到js脚本,则终止DOM树解析,去下载js脚本,之后立即执行js,最后继续DOM树解析

*css并不会阻塞DOM树的解析过程,遇到css文件,网络进程会下载css文件,不影响DOM树的解析,但会阻塞页面渲染

*css虽然不会直接阻塞dom树的解析过程,但如果在执行js脚本前,之前的css文件还没有加载完成,则会等待其加载完成后执行js,由于css下载较慢间接阻塞DOM解析过程

4.defer和async的区别

当浏览器碰到script脚本的时候:没有defer或async,浏览器会立即加载并执行指定的脚本

有async,加载和渲染后续文档元素的过程将和.js的加载与执行并行进行

有defer,加载后续文档元素的过程将和,js的加载并行进行,但是.js的执行要在所有元素解析完成之后,DOMContentLoaded事件触发之前完成。

 

 5.进程和线程的几种通信方式

进程:1.管道:是内核里面的一串缓存

    2.消息队列:例如:A进程给B进程发送消息,A进程把数据放在对应的消息队列后就可以正常的返回了,B进程需要的时候再进行读取数据。

    消息队列是保存在内存中的消息链表,在发送数据的时候,会分成一个独立的数据单元,消息体是用户自定的数据类型,消息的发送方和接收方约定好消息体的数据类型,所以每个消息体都是固定大小的存储块,不像管道的无格式的字节流数据,注意就是,消息队列中读取了消息体的话,内核就会把这个消息体删除

    3.共享内存:消息队列中的读取和写入的过程,都会有用户态和内核态之间的消息拷贝过程。共享内存的机制就是拿出一块虚拟化的地址空间来,映射到相同的物理内存中。这样这个进程写入东西,另外一个进程就可以看到了,大大提高了进程间通信的速度。

    4.信号量机制:用共享内存通信方式,带来新的问题,就是如果多个进程同时修改同一个共享内存,很有可能就冲突了。为了防止多进程竞争共享资源,而造成数据错乱,所以需要保护机制,使得共享的资源,在任意时刻只能被一个进程访问。信号量就实现了这一保护机制。

    信号量其实是一个整形的计数器,主要用于实现进程间的互斥与同步,而不是用于缓存进程间通信的数据。信号量表示资源的数量,控制信号量的方式有两种原子操作:一个是P操作,这个操作

posted @ 2022-12-15 23:24  baller  阅读(137)  评论(0)    收藏  举报