大鹏一日同风起,扶摇直上九万里。——李白《上李邕》
一、HTML篇
1.HTML标签和元素是一回事吗?
不是
HTML元素是由一个开始标签定义,一个结束标签结尾,中间可能存在内容。
例如:<h1>这是一个标题</h1> 这是一个元素;<h1></h1>是一对标签。
2.HTML中的属性是什么?
属性可以定义元素的特性
例如:<p align="center">定义属性</p>,这里的'align'是一个属性,该属性定义了段落内容居中显示。
3.HTML中的void元素是什么?
没有关闭标签或不需要关闭的标签就是void元素
例如:<br/> <img/> <hr/>
4.HTML元素中id属性和class属性有什么区别?=
HTML的每个元素可以存在多个class值,而id有且只有一个。且在不同元素中,一个id值有且只有一个。
5.multipart/form-data多部分表单数据是什么?
multipart/form-data是Content-Type属性的一种值。
用于将文件数据发送到服务端进行处理,需要在表单中进行文件上传时,就需要使用该格式。
Content-Type,一般是指用于网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定游览器将以什么形式、什么编码读取这个文件。
Content-Type常见属性值:
application/x-www-form-urlencoded:form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式application/json: JSON数据格式
6.语义化标签有哪些?
<header>:网页头部信息<footer>:网页尾部信息<nav>:网页的导航菜单<article>:一组信息<section>:文章信息<aside>:页面侧边栏信息
7.如何优化网站资源加载,提升网页打开速度?
CND托管:CND或内容交付网络是地理上分布的服务器,有助于减少延迟文件压缩:减少资源大小进行数据传输,达到减少网络交互时间的目的文件链接:减少HTTP调用数量缩小脚本:减少js和css文件的大小并行下载:在多个子域中托管资源有助于绕过所有现有游览器每个域6个资源的下载限制延迟加载:将非关键资源延迟加载
8.有哪些方式可以定位一个HTML元素?
- `static`:默认值,元素根据文档的正常流程定位
- `relative`:相对定位,元素根据文档的正常流程定位,并相对于其原始/正常位置定位
- `absolute`:绝对定位,此处元素相对于其父级元素定位。最终位置由上下左右值确定
- `fixed`:固定位置,和absolute相似,不同处是元素相对于<html>元素定位
- `initial`:这会将属性值重置为默认值
- `inherit`:元素继承其父级的属性
9.有多少种方式可以显示HTML元素?
- `inline`:可以将块元素显示为内联元素。元素的width和height值不会变
- `block`:可以将内联元素显示为块元素
- `inline-block`:类似inline,可以使用使用高度和宽度值
- `flex`:将容器和元素显示为弹性结构
- `inline-flex`:将flex容器显示为内敛元素
- `grid`:将HTML元素显示为网格容器
- `none`:隐藏HTML元素
10.'display:none'和'visibility:hidden'有什么区别?
display:none:该元素被隐藏,仍占用空间
visibility:hidden:也会被隐藏,但不会占用网页上任何空间
11.如何在HTML中指定链接并解释target属性?
HTML提供超链接<a>标签来指定网页中的链接,href属性用于指定链接,target属性用于指定我们要在哪里打开链接文档。target属性有以下值:
_self:默认值,在同一窗口或选项卡中打开文档_blank:在新窗口或选项卡中打开文档_parent:在父框架中打开文档_top:在全身中打开文档
12.链接标签'link'和'a'的区别?
`link`:链接标签,定义文档和外部资源之间的链接,是不可点击的
`a`:锚标签,创建一个指向另一个网站或者当前网页特定部分的超链接,是可点击的
13.对于脚本的使用位置有哪些规则?
- 库脚本或事件脚本放在
head部分 - 将不会在页面上写入任何内容的普通脚本放在
head部分 - 将在网页上呈现内容的脚本放在正文部分的底部
二、HTTP篇
1.什么是HTTP?
HTTP是超文本传输协议,是网络传输数据的协议。它是一个简单的请求-响应协议,通常运行在TCP之上。
工作原理过程如下:
- 客户与服务器建立连接
- 客户想服务器提出请求
- 服务器接受请求,并根据请求返回相应的文件作为应答
- 客户与服务器关闭连接
2.什么是HTTPS?
HTTPS是安全的超文本传输协议。
它是以安全为目的的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。
HTTPS在HTTP的基础上加入SSL。
HTTPS存在不同于HTTP的默认端口及一个加密/身份认证层(HTTP与TCP之间)。
它被广泛用于安全敏感的通信。例如交易支付等。
3.在HTTPS中,TLS/SSL如何加密HTTP请求和响应?
TSL使用公钥加密技术,公钥通过服务器的SSL证书与客户端设备共享。
当客户端打开与服务器的连接时,两个设备使用公钥锁定新的密钥(会话密钥),加密它们之间的后续通信。
这样子,所有的HTTP请求和响应都会使用这个密钥进行加密,任何截获通信都只会截获随机字符串。
4.HTTP的优点和缺点是什么?
优点:
HTTP可以用Internet上的其他协议实现,也可以在其他网络上实现HTTP页面存储计算机和Internet缓存中,因此可以快速访问- 与平台无关,允许跨平台移植
- 不需要任何运行支持
- 可以通过防火墙使用!全球应用是可能的
- 不是面向连接的,因此没有网络开销来创建和维护会话状态和信息 缺点:
- 没有隐私,任何人都可以看到通信内容
- 数据完整性和不安全性
- 任何拦截请求的人都可以获取用户名和密码
5.HTTPS的有点和缺点是什么?
优点:
- 在大多数情况下,通过
HTTPS运行的站点将进行重定向。所以即使输入http://,它也会通过安全连接重定向到https:// - 它允许用户执行安全的电子商务
SSL技术保护任何用户并建立信任- 一个独立的机构验证证书所有者的身份
缺点:
HTTPS协议无法阻止从游览器缓存的页面中窃取信息SSL数据只能在网络传输期间进行加密HTTPS会增加计算开销和网络开销,所以速度会比HTTP慢点
6.HTTP和HTTPS有什么区别?
| 范围 | HTTP | HTTPS |
|---|---|---|
| 含义 | 超文本传输协议 | 安全的超文本传输协议 |
| 安全 | 安全性低 | 安全性高 |
| 端口 | 默认80端口 | 默认端口443 |
| URL开头 | http:// | https:// |
| 应用场景 | 适合博客信息消费等网站 | 适合收集账号等网络信息和支付功能等网站 |
| 协议 | TCP/IP级别运行 | 没有单独的协议,基于HTTP运行,但是用了TLS/SSL技术加密连接 |
| 域名验证 | 不需要SSL | 需要SSL整数并由CA签名 |
| 数据加密 | 不使用数据加密 | 使用数据加密 |
| 搜索排行 | 不会提高搜索排名,搜索引擎不会优先考虑HTTP网站 | 有助于提高搜索排名,由于HTTPS是安全网站,搜索引擎会为HTTPS提供偏好 |
| 速度 | 速度快 | 相比速度慢,由于安全性增加计算开销和网络开销,所以速度会比HTTP慢点 |
| 漏洞 | 容易被黑客攻击 | 相对高度安全 |
| 运行层级 | 应用层 | 传输层 |
7.常见的HTTP方法?
GET:用于从服务器获取详细信息,基本上是只读操作POST:用于在服务器上创建资源PUT:用于更新服务器上的资源DELETE:用于删除服务器上的资源PATCH:用于修改服务器上的资源OPTIONS:获取服务器上支持的资源选项列表
8.常见的HTTP状态码有哪些?
- 1**:信息响应
- 2**:成功响应
- 3**:重定向
- 4**:客户端错误
- 5**:服务端错误 最常用状态码如下:
- 200:成功
- 400:可能由于验证错误或者缺少输入数据引起
- 403:当前用户无权访问资源
- 404:资源方法不可用
- 500:服务器在运行该方法时抛出异常
9.GET和POST的区别是什么?
本质上都是TCP链接,并无区别,但由于HTTP的规定以及游览器的限制,导致它们在应用过程中会有所不同,具体不同如下:
POST更安全,不会作为url的一部分,不会被缓存、保存在服务器日志、游览器记录中POST发送的数据量更大,而GET的url有长度限制POST比GET慢GET用于从服务器获取详细信息,基本上是只读操作,POST用于在服务器上创建资源
10.为什么GET比POST更快?
POST请求包含更多的请求头,这个速度影响微乎其微,主要是因为POST在真正接收数据之前会先将请求头发送给服务端进行确认,确认后再真正发送数据。
POST请求过程:
- 游览器请求
tcp连接(第一次握手) - 服务器答应进行
tcp连接(第二次握手) - 游览器确认,并发送
pots请求头(第三次,这个报文比较小,所以http会再此时进行第一次数据发送) - 服务器返回100 Continue响应
- 游览器发送数据
- 服务器返回200 OK响应 GET请求过程:
- 游览器请求
tcp连接(第一次握手) - 服务器答应进行
tcp连接(第二次握手) - 游览器确认,并发送
pots请求头(第三次,这个报文比较小,所以http会再此时进行第一次数据发送) - 服务器返回200 OK响应 也就是说,get的总消耗是post的2/3左右