文章

前端八股错题本

项目的之后再说,先看看偏八股类的错题。

项目基础

Cookie、localStorage、sessionStorage 区别

https://www.yuque.com/xiumubai/doc/rutss7kh6e08f0dp#gX9Cr

  • Cookie:为解决“服务端无法判断网络中的两个请求是否是同一用户发起”的问题。是最早的本地存储方式,也是一种纯文本文件。每次发起 HTTP 请求都会携带 Cookie。

    HTTP Cookie(也叫 Web Cookie 或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据。

    浏览器会存储 cookie 并在下次向同一服务器再发起请求时携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器——如保持用户的登录状态

    Cookie 使基于无状态的 HTTP 协议记录稳定的状态信息成为了可能。

    —— Using HTTP cookies - MDN - Mozilla)

    特性:

    • 有安全问题。(如有的网站通过 CV Cookie,不用输入账号用户名 & 密码就能登录。)

    使用场景: Cookie和session结合使用。

  • LocalStorage:为解决“Cookie 不能存储较大信息”的问题(Cookie 只能存 4 kb,而 LocalStorage 可存储 5 mb)。

  • SessionStorage

  • IndexDB

……

凭证管理揭秘:Cookie-Session 与 JWT 方案的对决 - 肖卫卫 - 博客园

JWT 和 Cookie-Session 只是对授权信息存储的主体(客户端,服务端)不同,各有优势,合适场景不同,不存在谁比谁要先进的问题。

如果更深入 session 在服务器端的管理,可以看看 Java 相关:

彻底理解cookie,session,token - 知乎

JWT

JWT 是什麼?一次搞懂JWT 的組成和運作原理(按照顺序读完,否则会懵!)

pinia

CORS 及 跨域问题

预检请求是什么?(必看)🌟🌟🌟

https://www.yuque.com/xiumubai/doc/rutss7kh6e08f0dp#IV6Lw


JavaScript 基础

JS 闭包

基础概念:首先 JavaScript 中,函数内部可以直接读取全局变量。

但与此同时(反过来),函数外部不能读取到函数内部的局部变量。

  • 如何在函数外部读取函数的内部变量:将函数内部的变量 / 函数值 return 出去(即所谓“通过闭包”)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function outer() {
  let counter = 0;

  function inner() {
    counter++;
    return counter;
  }

  return inner;
}

let fn = outer();
console.log(fn()); // 1
console.log(fn()); // 2
console.log(fn()); // 3

关于为何 JS 中可以 return 函数

https://www.reddit.com/r/learnjavascript/comments/ttsfa8/what_does_it_mean_to_return_function_inside/?tl=zh-hans


各种专业文献上的”闭包”(closure)定义非常抽象,很难看懂。我的理解是,闭包就是能够读取其他函数内部变量的函数。

由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成”定义在一个函数内部的函数”。

所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

—— 学习Javascript闭包(Closure) - 阮一峰的网络日志

普通情况下,函数内部作用域的变量,到了函数外部就会被销毁。

闭包就是:一个函数“记住”了它被创建时的作用域环境,即使这个作用域已经结束。 所以我们可以通过返回的函数来间接读写原本“外部访问不到”的局部变量。

有了大概印象后——接下来,来看看 mdn 的解释:

闭包是由捆绑起来(封闭的)的函数和函数周围状态词法环境)的引用组合而成。

换言之,闭包让函数能访问它的外部作用域。在 JavaScript 中,闭包会随着函数的创建而同时创建。

——https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

JS 异步

JavaScript异步

JS 事件循环

JS 的单线程、多任务


计网基础

HTTP 状态码

HTTP 状态码分为 1xx、2xx、3xx、4xx、5xx 五大类。开发中我最常遇到的有:200、201、301/302、304、400、401、403、404、500、502、503、504。

其中印象比较深的是:

  • 404,经常要写一个 404 页面。

  • 502,它经常在我开 VPN 连校园网时出现,代表网关没能拿到上游服务的有效响应。

https://www.yuque.com/xiumubai/doc/dzkl2dmxnyu6c7st#OdNZh

  • 2xx:请求处理成功
  • 3xx:重定向
  • 4xx:客户端错误
  • 5xx:服务器错误

TCP & UDP 区别

https://www.yuque.com/xiumubai/doc/dzkl2dmxnyu6c7st#OtiXD

本文由作者按照 CC BY 4.0 进行授权