【笔试题】-【日常记录】
1. 操作系统
1.1 进程&&线程
做个简单的比喻:进程=火车
,线程=车厢
线程在进程下行进(单纯的车厢无法运行)
一个进程可以包含多个线程
(一辆火车可以有多个车厢)
不同进程间数据很难共享(一辆火车上的乘客很难换到另外一辆火车,比如站点换乘)
同一进程下不同线程
间数据很易共享(A车厢换到B车厢很容易)
进程
要比线程消耗更多的计算机资源(采用多列火车相比多个车厢更耗资源)
进程
间不会相互影响,一个线程挂掉将导致整个进程挂掉(一列火车不会影响到另外一列火车,但是如果一列火车上中间的一节车厢着火了,将影响到所有车厢)
进程
可以拓展到多机,进程最多适合多核(不同火车可以开在多个轨道上,同一火车的车厢不能在行进的不同的轨道上)
进程
使用的内存地址可以上锁,即一个线程
使用某些共享内存时,其他线程
必须等它结束,才能使用这一块内存。(比如火车上的洗手间)-“互斥锁”
进程
使用的内存地址可以限定使用量(比如火车上的餐厅,最多只允许多少人进入,如果满了需要在门口等,等有人出来了才能进去)-“信号量”
1.2 操作系统的基本特征
操作系统是管理计算机硬件资源和软件资源的最基本的系统软件, 四大特征:共享性,并发性,虚拟性,异步性
1.3 负载均衡算法
-
轮询算法:各个服务节点被访问的概率也基本相同,也主要应用在各个服务节点性能差异不大的情况下。
-
加权轮询算法:在轮询算法基础上的改进,可以通过给每个节点设置不同的权重来控制访问的概率,因此主要被用在服务节点性能差异比较大的情况。比如经常会出现一种情况,因为采购时间的不同,新的服务节点的性能往往要高于旧的节点,这个时候可以给新的节点设置更高的权重,让它承担更多的请求,充分发挥新节点的性能优势。
-
负载最低优先:由于复杂度和不可控制原因,实际应用还是很少的
-
hash类算法:因为它能够保证同一个客户端的请求始终访问同一个服务节点,所以适合服务端节点处理不同客户端请求差异较大的场景。比如服务端缓存里保存着客户端的请求结果,如果同一客户端一直访问一个服务节点,那么就可以一直从缓存中获取数据。
2 html
2.1 background和bgcolor
body标签的两个属性background和bgcolor,其中background
只能写url
表示背景图像,bgcolor
写背景颜色
2.2 head的子标签
在HTML中,一般来说,只有6个标签能放在head标签内。
(1)title标签
(2)meta标签
(3)link标签
(4)style标签
(5)script标签
(6)base标签
3 CSS
3.1 Canvas 和 SVG 区别
Canvas
画布,利用JavaScript
在网页绘制图像
SVG
用来定义用于网格的基于矢量的图形,基于可扩展标记语言XML
。
Canvas
场景:
Canvas
提供的功能更原始,适合像素处理,动态渲染和大数据量绘制。(位图,逐像素渲染,适合游戏)
- 功能:功能简单,2D绘图API
- 特点:像素,只能脚本驱动,不支持事件处理器
- 支持:主流浏览器,IE9+
SVG
适用场景:
SVG
功能更完善,适合静态图片展示,高保清文档查看和打印的应用场景。(矢量图,适合大型渲染区域的应用程序,比如地图,SVG由于DOM操作 在复杂度高的游戏应用中 会减慢渲染速度。所以不适合在游戏应用)
- 功能:功能丰富,各种图形,滤镜,动画等
- 特点:失真,XML,CSS,持事件处理器
- 支持:主流浏览器,IE9+,其他SVG阅读器
4 网络
4.1 CDN工作基本原理
CDN的用途
1、提高用户访问的速度。
2、减轻源站服务器的压力。
3、提升网站的稳定性和安全性。
三、CDN的原理
1.用户向浏览器输入www.web.com这个域名,浏览器第一次发现本地没有dns缓存,则向网站的DNS服务器请求;
2.网站的DNS域名解析器设置了CNAME,指向www.web.51cdn.com,请求指向了CDN网络中的智能DNS负载均衡系统;
3.智能DNS负载均衡系统解析域名,把对用户响应速度最快的IP节点返回给用户;
4.用户向该IP节点(CDN服务器)发出请求;
5.由于是第一次访问,CDN服务器会向原web站点请求,并缓存内容;
6.请求结果发给用户。
原理:当用户访问加入CDN服务的网站时,域名解析请求将最终交给全局负载均衡DNS进行处理,全局负载均衡DNS通过一组预先定义好的策略,将当时最接近用户的节点地址提供给用户,使用户能够得到快速的服务
缓存的寻找过程:
- 浏览器向CDN节点请求数据时,CDN节点会判断缓存数据是否过期(
Cache-control: max-age
) - 若缓存数据并没有过期,则直接将缓存数据返回给客户端;
- 否则,CDN节点就会向服务器发出回源请求,从服务器拉取最新数据,更新本地缓存,并将最新数据返回给客户端。