面试官:请讲解parseInit和toString方法

175期题目

1. 请讲解parseInit和toString方法
2. js 中如何实现一个类?怎么实例化这个类?
3. 说下 URL 和 URI 的区别?

174期问题及答案

1. 什么是单点登录,以及如何进行实现?

单点登录(Single Sign-On,简称SSO)是一种身份验证和授权机制,允许用户在多个相关但独立的系统中使用一个集中的身份认证,而不需要在每个系统中都输入不同的用户名和密码。SSO的目标是提供用户友好的身份验证体验,同时减少用户管理的复杂性。

在实现SSO时,前端的工作主要涉及用户界面的设计和与身份认证服务进行交互。以下是实现SSO的一般步骤:

  1. 选择SSO协议: SSO可以通过多种协议实现,如OAuth、OpenID Connect、SAML等。选择一个适合你系统的协议。

  2. 身份提供者(IdP)的集成: 在系统中选择一个系统作为身份提供者,负责管理用户身份验证信息。这通常是一个专门的身份认证服务。

  3. 前端登录页面设计: 创建一个统一的前端登录页面,该页面将与身份提供者进行交互以验证用户身份。用户在该页面上输入其凭证。

  4. 与身份提供者进行交互: 使用选定的协议,前端通过与身份提供者进行交互来验证用户的身份。这可能涉及到重定向用户到身份提供者的认证页面,然后返回授权令牌或身份信息。

  5. 本地存储令牌或会话: 一旦用户被认证,前端需要在本地存储令牌或会话信息,以便在用户访问其他系统时免登录。

下面是一个简单的示例,使用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中,===== 都是用于比较两个值是否相等的操作符,但它们之间有一些关键的区别。

  1. 类型比较:

  • == 进行松散(不严格)比较。它会在比较之前尝试进行类型转换,将两边的值转换为相同类型,然后再比较。这种类型转换可能导致一些意外的行为。

  • === 进行严格比较。它不会进行类型转换,只有在值和类型都相同时才被认为相等。

示例:

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
  • 当比较 nullundefined 时,== 会返回 true,而 === 会返回 false,因为它们的类型不同。

  • 对于 NaN 的比较,== 无法准确判断,而 === 可以。

推荐使用:

  • 通常推荐使用 ===,因为它更为严格,避免了因类型转换而引起的不确定性和错误。

  • 在某些特定情况下,可能需要使用 ==,但需要理解其行为,并确保不会导致预期之外的结果。

总体而言,为了避免意外的类型转换和提高代码的可读性,推荐使用 === 进行比较。

3. 为什么推荐将静态资源放到cdn上?cdn的原理是什么

将静态资源放到 CDN(Content Delivery Network)上有几个主要的优势,而 CDN 的原理涉及内容缓存、分发节点等方面:

为什么推荐将静态资源放到 CDN 上:

  1. 加速访问速度: CDN通过在全球范围内部署分布式的缓存节点,使用户可以从离他们更近的地方获取静态资源。这减少了网络延迟,从而提高了页面加载速度。

  2. 降低服务器负载: 静态资源(如图片、样式表、脚本等)通常不会频繁变化。通过将这些资源放在 CDN 上,可以减轻主服务器的负载,使其更专注于处理动态内容和业务逻辑。

  3. 提高可用性和稳定性: CDN通常有多个分发节点,当一个节点不可用时,请求可以被自动重定向到其他可用节点。这提高了整体系统的可用性和稳定性。

  4. 减少带宽成本: CDN提供了高效的数据传输,可以通过缓存和压缩等技术减少数据传输的总量,从而减少带宽成本。

  5. 增强安全性: 一些 CDN 提供了安全性增强功能,如 DDoS 攻击防护、SSL 加密等,有助于保护网站免受各种网络攻击。

CDN 的工作原理:

  1. 缓存机制: CDN 的核心原理之一是缓存。CDN节点会缓存静态资源的副本,并根据用户的地理位置从最近的节点提供这些资源。

  2. DNS解析: 当用户请求访问一个网站时,CDN 使用全球分布的 DNS 服务器,将用户的请求路由到最近的 CDN 节点。

  3. 内容分发: 一旦请求到达 CDN 节点,它将检查是否有所需资源的缓存副本。如果有,它将直接提供缓存的内容。如果没有,它将请求原始服务器,然后将内容缓存并提供给用户,同时将副本存储在该节点。

  4. 负载均衡: CDN 节点之间通过负载均衡确保请求被分配到最适合的节点,以提供最佳性能。

总的来说,CDN通过在全球分布的节点上缓存静态资源,以及通过智能的负载均衡和全球就近访问的原则,使用户能够更快速、可靠地获取网站的静态资源。

因为微信公众号修改规则,如果标星或点在看,你可能会收不到我公众号文章的推送,原创不易,请大家将本公众号星标,看完文章后记得点下赞或者在看,谢谢各位!

学习不打烊,充电加油只为遇到更好的自己,每天早上9点纯手工发布面试题,每天坚持花20分钟来学习与思考,在千变万化,类库层出不穷的今天,不要等到找工作时才狂刷题,提倡每日学习。

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值