前端——笔试

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内
      • 使用场景:把异步操作和定时器放到一起,如果定时器先触发,认为超时,告知用户。

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}}'));
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值