最近做的一些好的笔试题的总结

2023/8/7

很好的前端笔试题,知识点考察的也都挺到位的

# 浏览器内核

Trident, Blink, Webkit, Gecko都是流行的浏览器内核

# Http 协议

  • HTTP1.1 实现了持久连接和管线化操作以及主动通知功能,相比 HTTP1.0 有大福性能提升
  • post 请求一般用于修改服务器上的资源,对发送的消息数据量没有限制,通过表单方式提交
  • 可以通过 206 返回码实现断点续传

状态码 301 Moved Permanently 表示永久重定向,请求的资源已经被分配了新的 url, 以后就会用新,SEO 也会抓取新的 url

使用场景 👇

当想换个域名时,旧域名不用了,则当用户访问旧域名时就用 301 重定向到新的域名

302 Found 是临时重定向

使用场景 👇

  • 没有登录的用户访问网站时要重定向到登录界面
  • 比如网站有活动,那用户访问网站首页时,会先跳转到活动界面

# CSRF

CSRF获取不到用户的信息,也拿不到其他用户的 Cookie, 它只是借助用户权限,模拟用户发出请求,不能接收返回的内容

可以向站点注入恶意代码

# CSS 选择器

  • 类和伪类选择器的权重一样
  • 内敛样式的权重是最高 —— 不算 !important 声明
  • input: checked 选择每个被选中的 input 元素

# 原型

__proto__用来读取实例构造函数的原型对象

# webpack

  • file-loader: 把文件输出到一个文件夹中,在代码中通过相对 URL 去引入输出的文件
  • style-loader: 把 CSS 代码注入到 JavaScript 中,通过 DOM 操作去加载 CSS
  • css-loader: 加载 CSS,支持模块化,压缩,文件导入等特性
  • url-loader: 和 file-loader 类似,但是能在文件很小的情况下以 base64 的方式把文件内容注入到代码中

# 代码输出

class FunClass {
  count = 0;
  fun1 = () => {
    return () => {
      this.count++;
      var tempCount = this.count;
      setTimeout(() => {
        if (tempCount === this.count) {
          console.log("good");
        } else {
          console.log("bad", this.count);
        }
      }, 2000);
    };
  };
}

const obj = new FunClass();
const fun1 = obj.fun1();

setTimeout(() => {
  fun1();
}, 1000);

new Promise((resolve) => {
  fun1();
  resolve();
});

fun1();
fun1();

输出👇

3 秒后同时输出三个 bad 4,然后 1 秒后输出 good

bad 4
bad 4
bad 4
good

分析👇

  • 同步代码 new promise构造函数中的fun1(); this.count ++, tempCount = 1 放入宏任务一个 2s 后执行的 setTimeout

  • fun1(), this.count ++, tempCount = 2 放入宏任务一个 2s 后执行的 setTimeout

  • fun1(), this.count ++, tempCount = 3 放入宏任务一个 2s 后执行的 setTimeout

  • 宏任务代码 this.count ++, tempCount = 4, 放入宏任务一个 1s 后执行的 setTimeout

执行完毕

此时宏任务里的状态是四个 settimeout 执行时间分别是 2s 2s 2s 1s

1s 的得等前面的执行完了之后 过 1s 再执行

四个 settimeout 里的 tempCount 都是固定值了,但是因为里面访问的是 this.count, 最后一次访问后变成了 4

所以四个 settimeout 里的 this.count 都变成了 4

  • 输出: 2s 后输出 3 个 bad 4 过 1s 后输出 1 个 good

# 定位

  • 相对定位会提升元素的层级
  • 绝对定位,如果不设置偏移量,元素位置不发生任何变化,会提升元素的一个层级,同时,会使元素脱离文档流(行内元素会变成块元素,块元素会撑开内容)
  • 固定定位永远参考于浏览器的视口定位 —— 视口就是固定不动,不会随网页的滑轮滚动而滚动

#

  • IPv4 环回地址 127.0.0.1
  • IPv6 环回地址 0:0:0:0:0:0:0:1/128 或 ::1/128
  • CSS 的注释为 /**/
  • TCP 协议的端口号范围为 0-65535
  • 有向图的算法 Floyd Dijkstra, 无向图的算法 Prim Kruskal
How to love
Lil Wayne