qugemingzizhenmafan / blog

0 stars 0 forks source link

面试-补充记忆 #16

Open qugemingzizhenmafan opened 2 years ago

qugemingzizhenmafan commented 2 years ago

缓存

强缓存(根据响应头处理后续请求是否拿缓存而不再经过服务器)

Expires

失效时间,跟本机时间比较

Cache-Control(优先级高于 Expires)

qugemingzizhenmafan commented 2 years ago

箭头函数

跟普通函数区别

qugemingzizhenmafan commented 2 years ago

EventLoop(事件循环)

循环顺序

qugemingzizhenmafan commented 2 years ago

原型 & 原型链

原型 prototype

最开始设计 js 的时候,不想引入类的概念,只有构造函数,但不能共享共有属性方法,所以引入 prototype 共享共有属性方法。

原型链

函数的原型链对象constructor指向函数本身,原型对象除了有原型属性外,为了实现继承,还有一个原型链指针proto,该指针是指向上一层的原型对象,而上一层的原型对象的结构依然类似。因此可以利用proto一直指向Object的原型对象上,而Object原型对象用Object.prototype. proto = null表示原型链顶端。(如此形成了js的原型链继承)

继承

原型链问题

qugemingzizhenmafan commented 2 years ago

call apply bind

改变函数的 this 指向

qugemingzizhenmafan commented 2 years ago

HTML & CSS

html5

HTML5的语义化指的是合理正确的使用语义化的标签来创建页面结构

优点

优先级

!important 内联样式(1000) ID选择器(0100) 类选择器/属性选择器/伪类选择器(0010) 元素选择器/伪元素选择器(0001) 关系选择器/通配符选择器(0000)

带!important 标记的样式属性优先级最高; 样式表的来源相同时:!important > 行内样式>ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性

盒模型 & box-sizing属性

盒模型包括 content + padding + border + margin

CSS实现三角

width、height 为 0,四个 border 设置长度,三个是透明色,一个带有颜色。

qugemingzizhenmafan commented 2 years ago

JS、TS、ES6

数据类型

基本类型

number,string,boolean,null,undefined,symbol

引用类型

object,function

判断类型

var && let && const

var

变量提升,var a = 1; 相当于 var a;a = 1;

相等

作用域和作用域链

作用域

变量与函数的可访问范围

new运算符的实现机制

Promise

console.log('script start')
let promise1 = new Promise(function (resolve) {
    console.log('promise1')
    resolve()
    console.log('promise1 end')
}).then(function () {
    console.log('promise2')
})
setTimeout(function(){
    console.log('settimeout')
})
console.log('script end')
// 输出顺序: script start->promise1->promise1 end->script end->promise2->settimeout

防抖节流

防抖

function debounce(fn, delay) {
    let timer = null;
    return function (...args) {
        clearTimeout(timer);
        timer = setTimeout(() => fn(...args), delay); 
    }
}

节流

function throttle(fn, delay) {
    let lastTime = 0;
    return (...args) => {
        const nowTime = Date.now();
        if (nowTime - lastTime > delay) {
            fn(...args);
            lastTime = nowTime;
        }
    }
}
qugemingzizhenmafan commented 2 years ago

工作用到的ES6新语法