很好的前端笔试题,知识点考察的也都挺到位的
# 浏览器内核
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