6.21笔试小结

1. 进程与线程

  • 进程是资源分配的基本单位

进程又拥有自己独立的资源,系统每创建一个进程就会为其分配一部分地址空间,由此进程与进程之间不会互相干扰

  • 线程是程序执行的基本单位

线程与CPU资源分配无关,多个线程共享同一进程的资源,使用相同的地址空间

  • 两者区别

(1)调度:进程是拥有资源的基本单位,线程是调度和分配的基本单位

(2)并发:进程和线程都可以并发执行

(3)资源:进程拥有系统资源,线程不拥有系统资源,但可以访问其所在的进程的所有资源

(4)开销:创建或回收进程时,系统都需要分配和回收资源,导致进程的开销比线程大得多

2. 进程之间通信的方式

  • 管道和有名管道

管道允许有亲缘关系的父子进程之间通信,有名管道允许无亲缘关系的进程间通信

  • 消息队列

消息队列是消息的链接表,对于有写权限的进程可以往消息队列添加新信息,对于有读权限的进程可以从消息队列中读取信息

  • 共享内存

多个进程可以访问同一内存空间,不同进程可以及时看到共享内存的数据更新,这种方式依赖于同步操作,例如互斥锁和信号量

  • 信号量

进程之间或同一进程下线程之间的同步和互斥手段,基于操作系统的 PV 操作(可以加减任意正整数),结合共享内存使用

同步:多个进程对资源的操作必须按照一定顺序进行
互斥:同一时间段只能有一个进程访问统一资源

  • 套接字

可用于网络中不同机器之间进程通信的一种通信机制

4. iframe阻塞页面load

iframe阻塞主页面加载过程

  • 主页面加载

  • 遇到iframe,加载iframe内容

  • iframe加载完成,主页面继续往下加载

  • 主页面load完成

解决办法

设置iframe内容为空,通过body标签绑定onload事件使用js来加载内容

  • iframe在主页面onload前加载
  • 由于iframe内容一开始是空的,iframe的onload事件立即触发
  • 主页面检测到iframe的onload事件,继续往下执行
  • 主页面内容加载完成

5. Object.assign()

后面的会覆盖前面的
Object.assign(target,...source);

6.localStorage设置过期时间

localStorage.setItem(key,JSON.stringify({
    data:Data.now(),
    val:value;
}))

7.translate会不会触发重新布局

不会,translate只会触发重组(图层的重新组合,在重绘之后进行)

8.meta中width=device-width的作用

自适应屏幕宽度device就是屏幕像素转化为CSS像素的值

9. setTimeout第三个参数

function test() {
    console.log(...arguments);//1 2 3 4
}
setTimeout(test, 100, 1, 2, 3, 4)

10. IIFE输出结果

var b = 10;
(function b() {
    b = 20;
    console.log(b);//[Function: b]
})();
console.log(b);//10

原因:自执行函数的函数变量无法进行赋值(内部机制,类似const定义的变量),在严格模式下会报错

var b = 10;
(function b() {
    "use strict"
    b = 20;
    console.log(b);
})();
console.log(b);
//结果 TypeError: Assignment to constant variable.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章