1.操作系统
- 多个进程操作同一个文件时,应该要考虑到文件的一致性问题
- 可通过文件在不同进程间进行数据传递和共享
- 操作系统会给每个进程分配独立的数据段和程序段,但是进程相互之间不可见,不可以通过全局变量来传递数据,一个进程也不能访问另一个进程的物理内存空间。
2.网络基础
- IP数据报 封装成 数据链路的帧,长度要求小于数据链路层的MTU值,因此要分片,目的主机收到分片后,对分片进行重组还原
- TCP
- 挥手:FIN ACK
- 连接:SYN ACK
3.编译和体系结构
- 访问寄存器的速度最快
- 中断
- 软中断:由当前正在运行的进程所产生的
- 硬中断:由硬件产生的,
- 处理中断:在CPU上,CPU中断当前正在运行的任务
- 在时间片轮询调度算法中,时间片越短则CPU利用率越低,时间片越短,说明其他进程要获得CPU,需要要中断,CPU不可以处理其他任务,利用率低。
4.树
- 最小深度:2^n -1= m(m是结点数) 2^10-1=1023
- 二叉树的度数 + 1 = 二叉树的节点数
- eg
- 0—n0 1—n1 2—n2
- n0 = n2+1
- 节点:n = n0+n1+n2
- 度数:n-1 = 2*n2 +n1
5.图
- 判断有向图是否有环:深度优先遍历和拓排序(广度优先遍历像树的层次遍历,可能多节点指向此节点,无法判断)
6.原型
function main() {
console.log('main excute!');
}
Function.prototype.before = function (fn) {
fn();
return main;
}
Function.prototype.after = function (fn) {
main();
fn();
}
main.before(function () {
console.log('before main excute!');
}).after(function () {
console.log('after main excute!');
});
//before main excute!
//main excute!
//after main excute!
function F1() {}
function F2() {}
F1.prototype = new F2();//此时构造函数已经指向了F2
F2.prototype = new F1();//构造函数指向了F1 F1指向F2
const f1 = new F1();
const f2 = new F2();
console.log(f1.constructor);//F2
console.log(f2.constructor);//F2
3.Promise
- Promise是什么,解决了什么?:Promise是异步编程的一种解决方案,比传统的解决方案—回调函数和事件—更合理和强大。解决了之前在请求回调产生的回调地狱,使得代码更加合理优雅,也更容易定位查找问题。
- Promise.all()和Promise.race()的区别?
- Promise.all()
- 使用:它接收一个数组作为参数,数组可以是Promise对象,也可以是其他值。只有promise会等待状态改变,当所有子Promise都完成,该Promise完成,返回值是全部值的数组。如果有任意一个失败,该Promise失败,返回值是第一个失败的子Promise的效果
- 应用场景:多个异步结果合并到一起
- Promise.race()
- 使用:和Promise.all()一样,但是不同的是,在第一个promise对象变为Fullfilled之后,并不会取消其他promise对象的执行。只是先完成的promise才会被后面的then处理。其他的promise还是在执行的,只不过是不会进入到promise.race后面的then内
- 使用场景:把异步操作和定时器放到一起,如果定时器先触发,认为超时,告知用户。
- Promise.all()
4.将{{…}}里面的内容替换成驼峰的形式
function fn(str) {
let arrStr = str.split('{{');
let newStr = arrStr[1];
let changeStr = '';
changeStr += newStr[0].toUpperCase();
for(let i = 1; i < newStr.length-2; i++) {
if(newStr[i] === ' ') {
changeStr += newStr[i+1].toUpperCase();
i++;
}else {
changeStr += newStr[i];
}
}
return arrStr[0].concat(changeStr);
}
console.log(fn('ssss {{absd nn ssCdd lllC}}'));