前端科举面经-HTML篇

前端面试-HTML篇

  • 什么是http?
  • http和https有什么区别
  • https的加密过程?
  • http2.0有什么改进?
  • src和href的区别
  • 对html语义化标签的理解?
  • script标签中defer和asyc的区别?
  • 举出几个常见的行内、块级元素
  • 什么是webworker?
  • iframe的优缺点?
  • 介绍一下tcp三次握手
  • fetch等某些请求会发送两次请求的原因?
  • 浏览器缓存机制
  • 在浏览器输入url到渲染页面的过程
  • get和post的区别
  • 对于跨域的理解.以及如何解决
  • form表单可以跨域吗? 为什么

4.22记录

什么是http?

http 是超文本传输协议,它是一个浏览器和服务器之间必须遵守的一个标准. 它是一个无状态的应用层协议
所谓的无状态就是协议对于事物处理没有缓存, 在一次请求和返回数据的过程中不会缓存任何信息. 也就是说对于第二次请求获取同样的数据也需要重新发起请求,重新获取数据.

http和https有什么区别

Https是基于http的基础上加上了ssl/tls安全协议的一个安全版本的超文本传输安全协议.
Https的默认端口是443
http的默认端口是80
Https需要ca证书 费用较高
Https建立连接的开销更大
Https网站更有利于SEO,在浏览器中排名更高

https的加密过程?

首先由浏览器发起请求
客户端收到请求返回公钥
浏览器验证公钥的有效性
验证通过之后会生成一个对称密钥
浏览器使用公钥加密对称加密密钥发送给服务器
服务器使用私钥解密密钥得到对称密钥
然后双方使用对称密钥来加密解密和传输信息

http2.0有什么改进?

最大的改进是二进制分帧, 它可以把一次请求拆分成很小的数据包,多个请求可以拆分成多个数据包进行传输.然后由服务端根据数据包的index进行拼接,得到每一个完整的请求,这也是http2.0实现多路复用的基础.也就是基于一次连接同时发送多个请求.

还有一个头部压缩算法,
在http1.0中可以将请求体通过GZIP压缩来达到减少体积的目的,其实在日常开发中可以看到每个请求的请求头是很多很大的,而且一般来说请求头都不会变.http2.0会基于每个请求头字段建立一个hash表,如果头部字段不变,则只会传递请求头的hash序号.

还有一个服务器端推送 但是区别于websocket http2.0的服务器端推送又有一定的局限性,比如请求一个html结构,然后就是请求html对应的css资源,js字段等,然后又会重新发送请求,而http2.0就会预判这类请求并主动推送.

src和href的区别

Src是加载对应的资源到文档对应的位置,是一个引入的关系,这个过程中会阻塞其他资源的加载.直到当前资源加载完成.
Href是在当前文档和目标资源中间建立一个链接,是一种引用的关系.不会阻塞其他资源的加载过程.
这就是为什么在html结构中我们可以把js资源放在页面尾部,css资源放在页面顶部来实现性能优化.

对html语义化标签的理解?

通俗的来说就是根据内容来选择合适的标签,而不是一味的选择 div 去开发.
主要的好处 第一, 是代码结构更加清晰明了, 第二 语义化标签更容易做SEO
主要的语义化标签 header、nav、aside、main、footer等等

3、html中docType的作用
它的主要作用是告诉浏览器以一种什么标准去解析html结构.主要有两种方式.
第一种是标准模式 css1combat,它是规定以浏览器支持的最高标准去解析html.
第二种是兼容模式 backupcombat,它是以一种向后兼容的模式去解析html.

script标签中defer和asyc的区别?

因为script资源的加载会阻塞浏览器构建dom,两者都是为了异步加载js资源的标签属性,两者的不同点在于async会加载之后马上执行,script的执行顺序和编码顺序无关,defer会在加载完成之后,页面渲染完成之后再执行,是有序的
defer(推迟)异步加载 + 推迟执行 async(异步) 异步加载

举出几个常见的行内、块级元素

行内 span、img、a(link标签)、b(强调标签)、input
块级标签 div、ul、li、h系列标签、p标签

什么是webworker?

由于js是单线程的特性,在执行一些高开销或者搞延迟的任务时容易造成页面渲染阻塞,webworker是一种独立于主线程的之外的独立运行js线程。可以单独去执行一些高开销的任务然后将结果传回主线程。webworker并不是说js就具备了多线程的能力,只是浏览器提供了一个多线程的环境去给js执行任务。

iframe的优缺点?

iframe是一种在文档中内嵌其他文档内容的一个原生的h5标签。
他的优势是(其实没啥优势,主要是它的能力赋予了它一定的适用场景)
比如他形式的特殊性可以用来嵌入网页广告。
第二个是它可以和主页面通信,所以可以用来做微前端解决方案,比如腾讯开源的无界方案就是基于iframe的。

缺点
iframe的结构不利于浏览器做SEO。
主页面的onload事件会等所有iframe的onload执行之后才执行,所以iframe会阻塞主页面的onload事件
irame和主页面共享连接池,浏览器对相同域的并行请求有数量限制,所以iframe会影响主页面的并行请求数量。

介绍一下tcp三次握手

浏览器和服务器建立可靠连接之前需要发送三个请求包,第一个由浏览器发送给服务器,证明浏览器有正常发送请求包的能力,服务器收到返回响应包,证明服务器有正常响应和发送请求包的能力,最后浏览器收到响应包,证明浏览器也有正常响应请求的能力,通过三个请求包来确保双方都有建立可靠连接的能力.

fetch等某些请求会发送两次请求的原因?

一般会在跨域的情况发生除了get之外的一些复杂请求,浏览器会先发送一个options请求来确认服务端是否有处理其真正请求的能力再发送真正的请求.

浏览器缓存机制

浏览器在发送请求之前会检查请求头字段中的expire字段来判断是否使用本地缓存,如果没有过期的话则使用本地缓存,状态码为200.如果没有命中本地缓存则发送请求到服务器,由服务器判断协商缓存相关参数etag,last- modified,如果使用缓存就返回304状态码,如果没有命中缓存就返回最新的数据同时写入本地缓存.

在浏览器输入url到渲染页面的过程

首先将URL通过DNS解析成对应的IP地址,然后向此ip地址发送三次握手建立连接,向服务器发送请求获取响应数据,根据响应数据构建dom树和css对象模型树,然后加载页面所需要的静态资源完成页面渲染.

get和post的区别

Get请求是将参数拼在url上,有长度限制,而且明文的,不太安全
post请求通过requestbody传输,安全性较高

对于跨域的理解.以及如何解决

跨域是浏览器的一个安全策略,如果请求接口和当前url的协议,域名、或者端口不同则视为跨域,请求发到跨域的服务端会报出跨域错误.

常见的跨域配置有 jsonp,它是利用某些html标签不受同源政策限制的特性来实现跨域的
Cros跨域,服务端设置相应头 accept-control-allow-origin实现跨域
postmessage实现iframe跨域
Nginx配置代理跨域

form表单可以跨域吗? 为什么

答 可以, form表单是提交到其他域,但是不能拿到其他域的数据,浏览器认为这是安全的,而ajax请求是可以拿到其他域的响应数据的,所以是受同源政策限制的.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/568043.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring与SpringBoot在配置读取方式上的区别

1. 问题说明 将Springboot项目中自定义的一个扩展工具类移植到Spring框架项目中的时候发现一个问题。在springboot中application.yml中的配置内容可以从Environment中获取,但是在spring中context:placeholder对应的配置文件中的配置却无法从Environment中获取。为了…

Power BI 如何创建页面导航器?(添加目录按钮/切换页面按钮)

Power BI 中页导航是什么? 在Power BI中,页导航(Page Navigation)是指在报告中创建多个页面(页),然后允许用户在这些页面之间进行导航的功能。 如下图所示,页导航的选项和报告中的…

每日两题 / 438. 找到字符串中所有字母异位词 238. 除自身以外数组的乘积(LeetCode热题100)

438. 找到字符串中所有字母异位词 - 力扣&#xff08;LeetCode&#xff09; 记录p串每个字符出现次数 维护与p串等长的滑动窗口&#xff0c;记录其中每个字符的出现次数 每次滑动后将当前次数与p串的次数比较即可 class Solution { public:vector<int> findAnagrams(s…

软件项目经理需要具备这 11 个能力

当前软件开发技术更新换代越来越快&#xff0c;各种项目实施管理思想也日新月异&#xff0c;作为一个软件项目经理&#xff0c;需要具备这 11 种能力&#xff1a; 1. 项目管理能力 了解项目管理的基本原则和方法&#xff0c;包括制定项目计划、资源分配、风险管理、问题解决和…

JAVA:Kettle 强大的开源ETL工具

请关注微信公众号&#xff1a;拾荒的小海螺 1、简述 Kettle&#xff08;Pentaho Data Integration&#xff09;&#xff1a;强大的开源ETL工具Kettle&#xff0c;又称作Pentaho Data Integration&#xff0c;是一款流行的开源ETL&#xff08;Extract, Transform, Load&#x…

【Unity实战】值得关注的Addressable新特性

如果您是最近起的Unity项目且有用到Addressable作为内容管理&#xff0c;你可能需要注意一下1.21.15版本的变化&#xff1a; [1.21.15] - 2023-08-03 Fixed an issue where using binary catalogs causes a crash on Android with ARM7.DownloadDepedenciesAsync no longer l…

基于RT-Thread的智能家居助手

一、项目简介 智能家居助手主要基于RT-Thread开发的&#xff0c;该系统主要分为语音子系统&#xff0c;环境监测子系统&#xff0c;智能控制子系统&#xff0c;智能网关子系统&#xff0c;音乐播放器&#xff0c;云端以及应用软件七大部分。语音子系统可通过语音进行人机交互来…

Spring是如何解决循环依赖的

简介 所谓循环依赖指的是&#xff1a;BeanA对象的创建依赖于BeanB&#xff0c;BeanB对象的创建也依赖于BeanA&#xff0c;这就造成了死循环&#xff0c;如果不做处理的话势必会造成栈溢出。Spring通过提前曝光机制&#xff0c;利用三级缓存解决循环依赖问题。 变量描述single…

[lesson49]多态的概念和意义

多态的概念和意义 函数重写回顾 父类中被重写的函数依然会继承给子类 子类中重写的函数将覆盖父类中的函数 通过作用域分辨符(::)访问父类中的同名成员 多态的概念和意义 面向对象中期望的行为 根据实际的对象类型判断如何调用重写函数父类指针(引用)指向 父类对象则调用…

CentOS配置JDK8环境并安装配置neo4j

1. 工具安装 1. 安装wget yum install -y wget2. 安装vim yum install -y vim-enhanced2. 配置JDK 1. 安装JDK 先到官网下载jdk8的压缩包&#xff0c;点我传送&#xff0c;并将压缩包上传到虚拟机的/usr/local目录下。 cd /usr/local # 进入 /usr/local目录 tar -zxvf jdk-…

裤裤带你一起学C语言内存函数啦!

目录 1.memcpy的使用和模拟实现 2.memmove使用和模拟实现 3.memset函数的使用 4.memcmp函数的使用 内存函数在<string.h>库中&#xff0c;我们使用内存函数必须先引入<string.h>头文件 1.memcpy的使用和模拟实现 memcpy的函数原型如下&#xff1a; void * m…

MLLM | Mini-Gemini: 挖掘多模态视觉语言大模型的潜力

香港中文、SmartMore 论文标题&#xff1a;Mini-Gemini: Mining the Potential of Multi-modality Vision Language Models Code and models are available at https://github.com/dvlab-research/MiniGemini 一、问题提出 通过更高分辨率的图像增加视觉标记的数量可以丰富…

likede 表记录

order微服务 tb_order 表负责记录当前的订单信息 tb_order_collect 表记录当前点位的营收情况 由XXL-JOB通过es进行统计 tb_order_month_collect 表记录一个月供应商的收支情况 通过tb_order_collect 进行统计 production微服务 tb_job 补货警戒值的设置 &#xff08;目前来…

4.23学习总结

一.NIO(一) (一).简介: NIO 是 Java SE 1.4 引入的一组新的 I/O 相关的 API&#xff0c;它提供了非阻塞式 I/O、选择器、通道、缓冲区等新的概念和机制。相比与传统的 I/O 多出的 N 不是单纯的 New&#xff0c;更多的是代表了 Non-blocking 非阻塞&#xff0c;NIO具有更高的并…

路由引入,过滤实验

实验拓补图 实验目的&#xff1a; 1、按照图示配置 IP 地址&#xff0c;R1&#xff0c;R3&#xff0c;R4 loopback口模拟业务网段 2、R1 和 R2 运行 RIPv2,R2&#xff0c;R3和R4运行 OSPF&#xff0c;各自协议内部互通 3、在 RIP 和 oSPF 间配置双向路由引入,要求除 R4 上的…

Docker容器:镜像与容器命令管理

目录 一、镜像管理命令 1、搜索镜像 2、获取镜像 3、镜像加速下载 4、查看下载的镜像文件信息 5、查看下载到本地的所有镜像 6、获取指定镜像的详细信息 7、为本地的镜像添加新的标签 8、删除镜像 8.1 删除指定的镜像 8.2 批量删除多个镜像 9、导出镜像与导入镜像 …

Docker 基本认识

一 国内&#xff1a; 中国电信天翼云 提供包括云主机在内的全方位云计算服务&#xff0c;侧重于安全合规和企业级服务。 利用电信的网络优势&#xff0c;提供稳定可靠的基础设施服务。 中国联通沃云 提供包括云主机在内的多项云计算服务&#xff0c;适合不同行业和场景。 …

Linux——web服务配置

一、HTTP概念 HTTP请求报文&#xff1a;客户端发送给服务器的消息&#xff0c;用于请求特定资源或执行特定操作。HTTP请求报文由 请求行、请求头部和请求正文三部分组成。 请求方法&#xff1a; HTTP 请求方法是指客户端与服务器通信时&#xff0c;客户端所请求执行的动作。常…

docker内实现多机多卡分布式训练

docker内实现多机多卡分布式训练 1. 多台docker宿主机网络配置2. 创建overlay 网络3. 注意 1. 多台docker宿主机网络配置 https://docs.docker.com/network/overlay/ 这里需要创建overlay网络使得多台宿主机的容器可以通过网络连接 初始化swarm集群&#xff0c;并设置主节点&a…

架构师核心-云计算云上实战(云计算基础、云服务器ECS、云设施实战、云上高并发Web架构)

文章目录 云计算基础1. 概念1. 云平台优势2. 公有云3. 私有云4. IaaS、PaaS、SaaS 2. 云设施1. 概览2. 核心组件 云服务器ECS1. ECS介绍1. 简介2. 组件3. 概念4. 图解5. 规格6. 场景 2. ECS服务器开通1. 开通服务器2. 连接服务器 3. 云部署准备1. 1Panel介绍2. 安装1Panel3.安全…
最新文章