印客学院
用户9618
分享
3. HTML(57题)
输入“/”快速插入内容
3.
HTML
(57题)
用户9618
用户9618
用户9084
用户9084
用户9254
用户9254
2月4日修改
1.
什么是 DOM 和 BOM?
参考答案:
DOM(Document Object Model)和 BOM(Browser Object Model)是 JavaScript 中常用的两个概念,用于描述浏览器中的不同对象模型。
1.
DOM(Document Object Model):
◦
DOM 是表示 HTML 和 XML 文档的标准的对象模型。它将文档中的每个组件(如元素、属性、文本等)都看作是一个对象,开发者可以使用 JavaScript 来操作这些对象,从而动态地改变页面的内容、结构和样式。
◦
DOM 以树状结构组织文档的内容,其中树的根节点是
document
对象,它代表整个文档。
document
对象有各种方法和属性,可以用来访问和修改文档的内容和结构。
2.
BOM(Browser Object Model):
◦
BOM 是表示浏览器窗口及其各个组件的对象模型。它提供了一组对象,用于访问和控制浏览器窗口及其各个部分,如地址栏、历史记录等
。
◦
BOM 的核心对象是
window
对象,它表示浏览器窗口,并且是 JavaScript 中的全局对象。
window
对象提供了许多属性和方法,用于控制浏览器窗口的各个方面,如页面导航、定时器、对话框等。
◦
BOM 还提供了其他一些对象,如
navigator
(提供浏览器相关信息)、
location
(提供当前文档的 URL 信息)、
history
(提供浏览器历史记录)、
screen
(提供屏幕信息)等。
总的来说,DOM 是用于访问和操作网页文档的对象模型,而 BOM 是用于控制浏览器窗口及其各个组件的对象模型。在 JavaScript 编程中,开发者通常会同时使用 DOM 和 BOM 来完成各种任务,如操作网页元素、导航控制、事件处理等。
2.
简单描述从输入网址到页面显示的过程
参考答案:
很多大公司面试喜欢问这样一道面试题,输入URL到看见页面发生了什么?
简单来说,共有以下几个过程:
•
DNS解析
•
发起TCP连接
•
发送HTTP请求
•
服务器处理请求并返回HTTP报文
•
浏览器解析渲染页面
•
连接结束
下面我们来看看具体的细节。
DNS解析
DNS解析实际上就是寻找你所需要的资源的过程。假设你输入
www.baidu.com
,而这个网址并不是百度的真实地址,互联网中每一台机器都有唯一标识的IP地址,这个才是关键,但是它不好记,乱七八糟一串数字谁记得住啊,所以就需要一个网址和IP地址的转换,也就是DNS解析。
DNS解析其实是一个递归的过程。
输入
www.google.com
网址后,首先在本地的域名服务器中查找,没找到去根域名服务器查找,没有再去com顶级域名服务器查找,,如此的类推下去,直到找到IP地址,然后把它记录在本地,供下次使用。大致过程就是.-> .com ->
google.com
. ->
www.google.com
.。
(最后这个.对应的就是根域名服务器,默认情况下所有的网址的最后一位都是.,为了方便用户,通常都会省略,浏览器在请求DNS的时候会自动加上)
DNS优化
既然已经懂得了解析的具体过程,我们可以看到上述一共经过了N个过程,每个过程有一定的消耗和时间的等待,因此我们得想办法解决一下这个问题!
•
DNS缓存
DNS存在着多级缓存,从离浏览器的距离排序的话,有以下几种: 浏览器缓存,系统缓存,路由器缓存,ISP服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。
•
DNS负载均衡
比如访问
baidu.com
的时候,每次响应的并非是同一个服务器(IP地址不同),一般大公司都有成百上千台服务器来支撑访问。DNS可以返回一个合适的机器的IP给用户,例如可以根据每台机器的负载量,该机器离用户地理位置的距离等等,这种过程就是DNS负载均衡。
发起TCP连接
TCP提供一种可靠的传输,这个过程涉及到三次握手,四次挥手。
三次握手