175期题目
1. 请讲解parseInit和toString方法
2. js 中如何实现一个类?怎么实例化这个类?
3. 说下 URL 和 URI 的区别?
174期问题及答案
1. 什么是单点登录,以及如何进行实现?
单点登录(Single Sign-On,简称SSO)是一种身份验证和授权机制,允许用户在多个相关但独立的系统中使用一个集中的身份认证,而不需要在每个系统中都输入不同的用户名和密码。SSO的目标是提供用户友好的身份验证体验,同时减少用户管理的复杂性。
在实现SSO时,前端的工作主要涉及用户界面的设计和与身份认证服务进行交互。以下是实现SSO的一般步骤:
选择SSO协议: SSO可以通过多种协议实现,如OAuth、OpenID Connect、SAML等。选择一个适合你系统的协议。
身份提供者(IdP)的集成: 在系统中选择一个系统作为身份提供者,负责管理用户身份验证信息。这通常是一个专门的身份认证服务。
前端登录页面设计: 创建一个统一的前端登录页面,该页面将与身份提供者进行交互以验证用户身份。用户在该页面上输入其凭证。
与身份提供者进行交互: 使用选定的协议,前端通过与身份提供者进行交互来验证用户的身份。这可能涉及到重定向用户到身份提供者的认证页面,然后返回授权令牌或身份信息。
本地存储令牌或会话: 一旦用户被认证,前端需要在本地存储令牌或会话信息,以便在用户访问其他系统时免登录。
下面是一个简单的示例,使用OAuth 2.0和OpenID Connect协议:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SSO Login</title>
</head>
<body>
<h1>SSO Login</h1>
<form id="loginForm">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
<button type="button" onclick="performSSOLogin()">Login</button>
</form>
<script>
function performSSOLogin() {
// Perform authentication with the Identity Provider (IdP)
// Redirect user to IdP's authentication page, receive tokens in response
// Store tokens in local storage or cookies for future requests
console.log('Performing SSO login...');
}
</script>
</body>
</html>
请注意,这只是一个简单的示例。实际中,你需要根据选定的协议和身份提供者的要求进行更详细的实现。此外,为了安全起见,通常还需要考虑使用HTTPS、安全存储令牌等措施。
2. js中==和===有什么区别?
在JavaScript中,==
和 ===
都是用于比较两个值是否相等的操作符,但它们之间有一些关键的区别。
类型比较:
==
进行松散(不严格)比较。它会在比较之前尝试进行类型转换,将两边的值转换为相同类型,然后再比较。这种类型转换可能导致一些意外的行为。===
进行严格比较。它不会进行类型转换,只有在值和类型都相同时才被认为相等。
示例:
var num = 5;
var str = "5";
console.log(num == str); // true,进行类型转换后比较
console.log(num === str); // false,不进行类型转换,类型不同
特殊情况:
console.log(null == undefined); // true
console.log(null === undefined); // false
console.log(NaN == NaN); // false
console.log(NaN === NaN); // false
当比较
null
和undefined
时,==
会返回true
,而===
会返回false
,因为它们的类型不同。对于
NaN
的比较,==
无法准确判断,而===
可以。
推荐使用:
通常推荐使用
===
,因为它更为严格,避免了因类型转换而引起的不确定性和错误。在某些特定情况下,可能需要使用
==
,但需要理解其行为,并确保不会导致预期之外的结果。
总体而言,为了避免意外的类型转换和提高代码的可读性,推荐使用 ===
进行比较。
3. 为什么推荐将静态资源放到cdn上?cdn的原理是什么
将静态资源放到 CDN(Content Delivery Network)上有几个主要的优势,而 CDN 的原理涉及内容缓存、分发节点等方面:
为什么推荐将静态资源放到 CDN 上:
加速访问速度: CDN通过在全球范围内部署分布式的缓存节点,使用户可以从离他们更近的地方获取静态资源。这减少了网络延迟,从而提高了页面加载速度。
降低服务器负载: 静态资源(如图片、样式表、脚本等)通常不会频繁变化。通过将这些资源放在 CDN 上,可以减轻主服务器的负载,使其更专注于处理动态内容和业务逻辑。
提高可用性和稳定性: CDN通常有多个分发节点,当一个节点不可用时,请求可以被自动重定向到其他可用节点。这提高了整体系统的可用性和稳定性。
减少带宽成本: CDN提供了高效的数据传输,可以通过缓存和压缩等技术减少数据传输的总量,从而减少带宽成本。
增强安全性: 一些 CDN 提供了安全性增强功能,如 DDoS 攻击防护、SSL 加密等,有助于保护网站免受各种网络攻击。
CDN 的工作原理:
缓存机制: CDN 的核心原理之一是缓存。CDN节点会缓存静态资源的副本,并根据用户的地理位置从最近的节点提供这些资源。
DNS解析: 当用户请求访问一个网站时,CDN 使用全球分布的 DNS 服务器,将用户的请求路由到最近的 CDN 节点。
内容分发: 一旦请求到达 CDN 节点,它将检查是否有所需资源的缓存副本。如果有,它将直接提供缓存的内容。如果没有,它将请求原始服务器,然后将内容缓存并提供给用户,同时将副本存储在该节点。
负载均衡: CDN 节点之间通过负载均衡确保请求被分配到最适合的节点,以提供最佳性能。
总的来说,CDN通过在全球分布的节点上缓存静态资源,以及通过智能的负载均衡和全球就近访问的原则,使用户能够更快速、可靠地获取网站的静态资源。
因为微信公众号修改规则,如果不标星或点在看,你可能会收不到我公众号文章的推送,原创不易,请大家将本公众号星标,看完文章后记得点下赞或者在看,谢谢各位!
学习不打烊,充电加油只为遇到更好的自己,每天早上9点纯手工发布面试题,每天坚持花20分钟来学习与思考,在千变万化,类库层出不穷的今天,不要等到找工作时才狂刷题,提倡每日学习。