3

JavaScript

this指向

https://www.cnblogs.com/pssp/...

call、Apply、Bind

https://www.cnblogs.com/pssp/...

原型、原型链

{
    function Person(){}
    Person.prototype.name = '小明'
    let person = new Person()
    console.log(person.__proto__ == Person.prototype) // true
    console.log(Person.prototype.constructor == Person) // true
    // 顺便学习一个ES5的方法,可以获得对象的原型
    console.log(Object.getPrototypeOf(person) === Person.prototype) // true
    console.log(person.name) // '小明'
    console.log(person.__proto__.name) // '小明'    
}

读取对象的某个属性时,JavaScript 引擎先寻找对象本身的属性,如果找不到,就到它的原型去找,如果还是找不到,就到原型的原型去找。如果直到最顶层的Object.prototype还是找不到,则返回undefined。如果对象自身和它的原型,都定义了一个同名属性,那么优先读取对象自身的属性,这叫做“覆盖”。

注意,一级级向上,在整个原型链上寻找某个属性,对性能是有影响的。所寻找的属性在越上层的原型对象,对性能的影响越大。如果寻找某个不存在的属性,将会遍历整个原型链。

作者:废柴码农
https://www.jianshu.com/p/30a...

class类

{
    class Animal {
        constructor(name,age){
            this.name = name
            this.age = age
        }
        sleep(){
            return 'zZZ~'
        }
    }
    Object.assign(Animal.prototype,{
        todo(){
            console.log('bark')
        },
        type: 'dd'
    })
    let cat = new Animal('cat','3')
    
    class Bird extends Animal{
        constructor(name,age){
            super(name,age)
        }
        fly(){
            console.log('flying...')
        }
    }
    let maque = new Bird('麻雀',1)
    maque
}

https://es6.ruanyifeng.com/#d...

异步

https://github.com/ElemeFE/no...
① Promise
② Async/await

宏任务和微任务

macro-task(宏任务):包括整体代码script,setTimeout,setInterval
micro-task(微任务):Promise,process.nextTick
企业微信截图_15734528813336.png

console.log('1');

setTimeout(function() {
    console.log('2');
    process.nextTick(function() {
        console.log('3');
    })
    new Promise(function(resolve) {
        console.log('4');
        resolve();
    }).then(function() {
        console.log('5')
    })
})
process.nextTick(function() {
    console.log('6');
})
new Promise(function(resolve) {
    console.log('7');
    resolve();
}).then(function() {
    console.log('8')
})

setTimeout(function() {
    console.log('9');
    process.nextTick(function() {
        console.log('10');
    })
    new Promise(function(resolve) {
        console.log('11');
        resolve();
    }).then(function() {
        console.log('12')
    })
})
// 输出:1,7,6,8,2,4,3,5,9,11,10,12

Promise比setTimeout()先执行。因为Promise定义之后便会立即执行,其后的.then()是异步里面的微任务。而setTimeout()是异步的宏任务。
https://blog.csdn.net/zlzbt/a...
https://zhuanlan.zhihu.com/p/...

let 和 var 区别,const

var不能用于定义常量;var可以重复声明变量;var存在变量提升;var不支持块级作用域

正则

https://juejin.im/post/596594...

什么是跨域请求? 如何允许跨域?

向不同 host 的请求被称作跨域请求 ,可以通过设置 CORS headers 即 Access-Control-Allow- 系列来允许跨域

cookie 与 session 的区别? 服务端如何清除 cookie?

主要区别在于, session 存在服务端, cookie 存在客户端. session 比 cookie 更安全. 而且 cookie 不一定一直能用 (可能被浏览器关掉). 服务端可以通过设置 cookie 的值为空并设置一个及时的 expires 来清除存在客户端上的 cookie.

module.exports 与 exports 的区别解释

exports 是一个引用,直接赋值给它,只是让这个变量等于另外一个引用,所以 只有通过 module.exports 才能真正修改到 exports 本身

并行、并发

并发 (Concurrent) = 2 队列对应 1 咖啡机.
并行 (Parallel) = 2 队列对应 2 咖啡机. node.js 并行可以通过cluster实现
https://www.jianshu.com/p/078...
https://github.com/ElemeFE/no...

ES6/7/8

https://www.jianshu.com/p/390a65d7a353

其他

https://github.com/HerbertKarajan/Fe-Interview-questions

TypeScript

Css

https://github.com/haizlin/fe-interview/blob/master/category/css.md

Vue

插槽

其他

https://www.cnblogs.com/wangking/p/9598899.html

Web

https://github.com/HerbertKarajan/Fe-Interview-questions/tree/master/21-Front-end-Interview-questions

HTML + CSS + JS + ES6 + Webpack + Vue + React + Node + HTTPS + 数据结构与算法 + Git

https://github.com/biaochenxuying/blog/blob/master/interview/fe-interview.md

Docker、zookeeper 、rabbitmq/kafka、socketio、cluster、redis、postgresql


liuoomei
175 声望18 粉丝

走出舒适区,外面的风景格外迷人!


下一篇 »
消息队列