前端面试题每日一学_7

今日一题:

下面能够校验字符串是否完全由字母、数字、下划线组成的正则表达式是?(多选题)
A^[a-zA-Z0-9_]+$
B^\w+$
C^(?:[a-zA-Z0-9_]+)$
D^[a-zA-Z0-9_]$

​ 答案和解析可在文章底部查看。

今日面试题:

1、HTML中meta标签的相关设置有哪些?

① 字符编码设置
<!-- 声明当前文档的字符编码 -->
<meta charset='utf-8'>
② 视口设置
<!-- 声明当前页面的视口设置 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=2.0,user-scalable=yes">

​ 其中width用于设置视口宽度,值可以是一个正整数,或者device-width(设备宽度);initial-scale用于设置初始缩放比例,值为一个数字,可以带小数;minimum-scale用于设置用户手动缩放的最小缩放比例,值为一个数字,可以带小数;maximum-scale用于设置用户手动缩放的最大缩放比例,值为一个数字,可以带小数;user-scalable=yes用于设置是否允许用户手动缩放,值为yes/no

③ 关键词设置
<!-- 声明当前页面的关键词,用于SEO -->
<meta name="keywords" content="语文, 数学, 英语">
④ 描述设置
<!-- 声明当前页面的描述,用于SEO -->
<meta name="description" content="这是一个实验页面">
⑤ 作者设置
<!-- 声明当前页面的作者 -->
<meta name="author" content="前端生活圈">
⑥ IE兼容设置
<!-- 声明当前页面的在IE中的兼容设置 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>

​ 上面的设置中,IE=edge用于设置IE浏览器使用最新的渲染引擎。为确保该标签在页面内容加载之前生效,要将该标签放在<head>标签的最前面。

⑦ 搜索引擎设置
<!-- 声明当前页面对搜索引擎的设置 -->
<meta name="robots" content="noindex, nofollow">

​ 在上面的设置中,name="robots"表明该标签时为搜索引擎爬虫提供指令;content提供具体指令,noindex用于设置搜索引擎不要索引当前页面,即不要将当前页面包含在搜索引擎的索引中。nofollow用于设置搜索引擎不要跟踪页面上的链接,即不要将页面上的链接进行索引。

noindex的相反设置为indexnofollow的相反设置为followindexfollow是页面的默认设置,noindexnofollow会影响页面的SEO,要慎重使用。

⑧ 刷新或重定向设置
<!-- 声明当前页面在指定时间后自动刷新 -->
<meta http-equiv="refresh" content="30">
<!-- 声明当前页面在指定时间后自动重定向 -->
<meta http-equiv="refresh" content="30; url=https://www.baidu.com">

​ 在上面的设置中,content="n"用于设置页面在n秒之后自动刷新;content="n; url=pageUrl"用于设置页面在n秒之后自动重定向到 pageUrl 这个地址。

⑨ 缓存设置
<!-- 声明当前页面的缓存机制 -->
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">

​ 在上面的设置中,http-equiv="pragma"已经被http-equiv="cache-control"所取代,但为了兼容旧版本浏览器,通常我们两者会同时设置。content设置具体的缓存机制,no-cache表示在使用缓存之前,必须向服务器进行请求验证,保证访问页面时获取的是最新的内容。

​ 除no-cache之外,还可以设置为:no-cache表示完全禁用缓存;max-age=<seconds>表示设置资源的缓存时间为seconds;public表示资源可以被任意一级缓存存储;private表示资源只能被用户缓存,不能被共享区域缓存(如:代理服务器);must-revalidate表示在资源过期后,必须向服务器验证资源的有效性;其他属性。

⑩ 其他设置

2、谈谈你对渐进增强和优雅降级的理解

​ 渐进增强(Progressive Enhancement)和优雅降级(Graceful Degradation)是两种不同的前端开发策略,用于处理不同设备和不同版本浏览器对网站功能和表现的支持问题,目标都是为了提升用户体验,但实现方法和侧重点有所不同。

① 渐进增强

​ 渐进增强是指从基础功能开始,逐步添加高级功能和样式的开发策略,核心思想是确保网站在低版本浏览器下也能正常工作,然后在高级浏览器中改进效果、交互和追加高级功能等,提供更好的用户体验。

​ 更适合需要确保广泛兼容性和无障碍性的项目。

② 优雅降级

​ 优雅降级是指从完整的高级功能开始,然后再针对低版本浏览器进⾏兼容,核心思想是首先开发功能齐全的版本,在高级浏览器中能获得最佳体验,然后在低版本浏览器中,削减掉一些效果、交互和高级功能等,保留网站的基础功能,确保网站仍能正常运行。

​ 更适合需要快速开发和发布的项目。

3、利⽤多个域名来存储⽹站资源有什么优缺点

优点:

① 绕过并行下载限制

​ 浏览器对同一域名的并行链接数量有限制(大约为6个左右),将资源分布在多个域名上,可以绕过限制,同时下载更多资源,提高页面架加载速度。

② 缓存优化

​ 将不同类型的资源(如图片、脚本、样式表等)分布在不同的域名上,可以根据类型和域名,设置不同的缓存策略,更有效地利用缓存机制,减少重复下载。

③ 负载均衡

​ 通过多个域名对应多服务器,可以将流量分散到不同的服务器上,减轻单个服务器的负载压力,提升系统稳定性和响应速度。

④ 灵活的CDN配置

​ 不同的域名可以使用不同的CDN配置,可以根据不同的资源设置不同的配置。例如,为视频资源设置专门优化视频加载的CDN。

⑤ 更安全

​ 将网站不同资源通过不同域名进行分隔,根据功能设置Cookie的作用域,可以更好的防范跨站脚本攻击(XSS)和跨站请求伪造攻击(CSRF)。

缺点:

① DNS查询延迟

​ 每个域名都需要进行DNS解析,相对于单域名,会增加额外的DNS查询时间,影响页面加载速度。

② 跨域问题

​ 可能会运发跨域资源共享(CORS)问题,需要额外进行配置。

③ 加载速度问题

​ 不同域名上的资源加载速度和稳定性可能不一致,影响页面效果和用户体验。

④ 增加成本

​ 每个域名都需要单独的SSL/TLS证书,多个域名需要维护多个DNS记录、SSL证书、服务器配置等,增加了运维成本和基础成本。

今日一题答案:ABC

​ 该题主要考察的是对正则表达式各类字符的掌握是否熟练。

解析:

A、 ^[a-zA-Z0-9_]+$

^ 表示匹配字符串的开始,[a-zA-Z0-9_] 表示匹配字母(大小写)、数字和下划线中的任意一种,+ 表示匹配一个或多个字符,$ 表示字符串的结束。符合题目要求。

B、^\w+$

^ 表示匹配字符串的开始,\w 是一个元字符,等价于 [a-zA-Z0-9_],表示匹配字母、数字和下划线,$ 表示字符串的结束。符合题目要求。

C、^(?:[a-zA-Z0-9_]+)$

^ 表示匹配字符串的开始,[a-zA-Z0-9_] 表示匹配字母(大小写)、数字和下划线中的任意一种,(?: ... ) 是一个非捕获组,和普通的括号 () 一样,但不捕获匹配的内容。这里用来明确分组但不影响匹配结果。符合题目要求。

D、^[a-zA-Z0-9_]$

^ 表示匹配字符串的开始,[a-zA-Z0-9_] 表示匹配字母(大小写)、数字和下划线中的任意一种,$ 表示字符串的结束。缺少+,只能匹配单字符,无法匹配多个字符,不符合题目要求。

请关注公众号,查看更多优质资源:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力的小朱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值