最近面试拿了不少公司的实习offer,只要是面试的都经过了。css
接下来就分析下面试题,也能给本身一个提高吧,以便后续的面试更轻车熟路些,题目没什么顺序,想起什么写什么,还有我面试过程当中的一些小套路。web
估计要写好多,天天写几道题,并且有些经验性的东西也不容易写出来面试
这篇写的都是相似一些概念性的理论东西。canvas
先说为何要作防抖和节流,针对一些会频繁触发的事件,像scroll、resize,若是正常绑定事件处理函数的话,可能在很短的时间内屡次连续触发事件,十分影响性能。浏览器
因此,针对这种事件要作防抖或者节流处理。缓存
1.防抖安全
作法就是限制下次函数调用以前必须等待的事件间隔。服务器
实现方法就是维护一个定时器,规定事件后触发函数,规定时间内触发的话,就会取消以前的计时器而且从新设置计时器,这样一来,只有最后一次操做能触发。cookie
2.节流网络
节流只容许一个函数在规定的时间内触发一次。
它和防抖最大的区别就是,节流函数无论事件触发多频繁,都保证事件处理函数只在规定的时间内触发一次;防抖只是最后一次事件才会触发事件处理函数。
好比在页面无限加载的场景下,咱们须要用户在滚动页面时,每隔一段事件发送一次异步请求,而不是用户在中止页面滚动时发送异步请求。因此这种场景,就适合用节流来实现。
两种实现方式:
时间戳:容易理解,当高频事件触发时,第一次应该当即执行事件处理函数,而后再怎么频繁触发事件,也都是会等到规定的时间间隔后才执行一次。
定时器:当触发事件的时候,设置一个定时器,再触发事件的时候,若定时器是存在, 就什么都不作;知道规定时间后,定时器执行事件处理函数,而后定时器被清空,这样就能够设置下一个定时器。
这个东西能说好多,面试要求简洁,就写个总结的答案,我推荐谢希仁的《计算机网络》第六版。
1.TCP是面向链接的运输层协议;UDP是无链接的,即发送数据以前不须要创建连接,所以减小了开销和发送数据的时延。
2.TCP提供可靠交付的服务,经过TCP链接传送的数据,无差错、不丢失、不重复、而且按时到达;UDP使用最大努力交付,即不保证可靠性交付,所以主机不须要维持复杂的链接状态。
3.TCP面向字节流,TCP中的“流”指的是流入到进程或从进程流出的字节序列;UDP是面向报文的,发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。
4.UDP没有拥塞控制,所以网络出现的拥塞不会使源主机的发送速率下降,符合不少实时应用(如IP电话、实时视频会议等)的要求。
5.每一条TCP链接只能有两个端点,每一条TCP链接只能是点对点的;UDP支持一对1、一对多、多对一和多对多的交互通讯。
6.UDP的首部开销小,只有8个字节,比TCP的20个字节的首部短。
7.TCP提供可靠的全双工通讯,TCP容许通讯双方的应用进程在任什么时候候都能发送数据;UDP是不可靠信道。
红字标记的必定要说出来
一、建立Document对象,开始解析web页面。解析HTML元素和他们的文本内容后添加Element对象和Text节点到文档中。这个阶段document.readyState = 'loading'。
二、遇到link外部css,建立线程加载,并继续解析文档。
三、遇到script外部js,而且没有设置async、defer,浏览器加载,并阻塞,等待js加载完成并执行该脚本,而后继续解析文档。
四、遇到script外部js,而且设置有async、defer,浏览器建立线程加载,并继续解析文档;对于async属性的脚本,脚本加载完成后当即执行。(异步禁止使用document.write())
五、遇到img等,先正常解析dom结构,而后浏览器异步加载src,并继续解析文档。
六、当文档解析完成,document.readyState = 'interactive'。
七、文档解析完成后,全部设置有defer的脚本会按照顺序执行。(注意与async的不一样,但一样禁止使用document.write());
八、document对象触发DOMContentLoaded事件,这也标志着程序执行从同步脚本执行阶段,转化为事件驱动阶段。
九、当全部async的脚本加载完成并执行后、img等加载完成后,document.readyState = 'complete',window对象触发load事件。
十、今后,以异步响应方式处理用户输入、网络事件等。
在分辨率比较高的屏幕,例如ip6/6s/mac等机器上,由于canvs绘制的是位图,因此会致使模糊,解决方法是根据屏幕分辨率修改canvas样式代码中的宽和高与canvas的width和height属性的比例
1.从数据生命周期上来讲
2.从数据存储方面来讲
3.从与服务器端通讯方面
4.从易用性方面来讲
CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,经过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,下降网络拥塞,提升用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
CDN的基本原理是普遍采用各类缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工做正常的缓存服务器上,由缓存服务器直接响应用户请求。
CDN网络是在用户和服务器之间增长Cache层,如何将用户的请求引导到Cache上得到源服务器的数据,主要是经过接管DNS实现,这就是CDN的最基本的原理
因此好处就能总结出来了:
2.为了实现跨运营商、跨地域的全网覆盖
3.保障网站安全
4.异地备援
5.节约成本
简单,找到枢轴,左右分治再递归就行了
function qucikSort (arr) { if (arr.length <= 1) { return arr } var num = Math.floor(arr.length / 2) var numVal = arr.splice(num, 1) var left = [] var right = [] for (var i = 0; i < arr.length; i++) { if (arr[i] < numVal) { left.push(arr[i]) } else if (arr[i] > numVal) { right.push(arr[i]) } } return qucikSort(left).concat(numVal, qucikSort(right)) }
1.块级元素的特色:
2.内联元素的特色:
常见的块级元素:address、center、div、dir、from、h1-h六、hr、ol、ul、li、table、p、pre、menu 等
常见的内联元素:a、b、br、em、font、i、img、input、label、select、span、strong、textarea
注: 设置了float或者position值为absolute和fixed都会使原来的内联元素变成块级元素