工作同一进程下的线程可以共享什么执行任务而不干扰页面互动吗?

事件循环核心原理我们随手一搜能找到一大堆,大多数人只是知其然而不知其所以然,看到别人写的就死记硬背,一段时间之后又忘得差不多了,包括我,所以今天这篇文章的目的就是真正地理解、吃透,我们要知道自己写的代码是如何运行的,而不只是应付面试官。

JavaScript 是一种单线程的编程语言,只有一个调用栈,决定了它在同一时间只能做一件事。在代码执行的时候,通过将不同函数的执行上下文压入执行栈中来保证代码的有序执行。在执行同步代码的时候,如果遇到了异步事件,js 引擎并不会一直等待其返回结果,而是会将这个事件挂起,继续执行执行栈中的其他任务。因此JS又是一个非阻塞异步并发式的编程语言。

既然说了要让大家一篇文章全部搞懂,那我们就从头开始捋,一个名词一个名词地去抠,JS是单线程的,那什么是线程呢,首先从进程和线程开始讲起。

进程与线程的区别和联系

当我们启动某个程序时,操作系统会给该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,这样的运行环境就叫做进程

而线程是依附于进程的,在进程中使用多线程并行处理能提升运算效率,进程将任务分成很多细小的任务,再创建多个线程,在里面并行分别执行

  • 进程与进程之间完全隔离,互不干扰,由于进程之间是相互独立的,所以一个进程崩溃不会影响其他进程,如浏览器每一个标签页就是一个独立的进程,关闭其中一个标签页别的标签页并不会受到影响。
  • 线程之间的数据是共享的,一个进程可以有多个线程(一个进程至少有一个线程),当一个进程有多个线程时,每个线程都有一套独立的寄存器和堆栈信息,而代码、数据和文件是共享的
  • 一个进程中的任意一个线程执行出错,会导致这个进程崩溃
  • 当一个进程关闭之后,操作系统会回收该进程的内存空间

以大家熟悉的Chrome的内核为例,他不仅是多线程的,而且是多进程的

最新的Chrome浏览器包括:浏览器主进程GPU进程网络进程渲染进程,和插件进程

  • 浏览器进程: 负责控制浏览器除标签页外的界面,包括地址栏、书签、前进后退按钮等,以及负责与其他进程的协调工作,同时提供存储功能
  • GPU进程:负责整个浏览器界面的渲染
  • 网络进程:负责发起和接受网络请求
  • 插件进程:主要是负责插件的运行,因为插件可能崩溃,所以需要通过插件进程来隔离,以保证插件崩溃也不会对浏览器和页面造成影响
  • 渲染进程:负责控制显示tab标签页内的所有内容,核心任务是将HTML、CSS、JS转为用户可以与之交互的网页,排版引擎Blink和JS引擎V8都是运行在该进程中,默认情况下Chrome会为每个Tab标签页创建一个渲染进程

浏览器打开一个页面至少需要主进程、GPU、网络和渲染进程,后续如果再打开新的标签页的话,已经创建好的浏览器进程,GPU进程,网络进程是共享的,不会重新启动,默认情况下会为每一个标签页配置一个渲染进程,但是也有例外,比如同一站点的页面间跳转就可能重用渲染进程。

我们作为前端最关心的就是渲染进程,那仔细来看一下渲染进程。

上面已经提到渲染进程负责控制显示tab标签页内的所有内容,核心任务是将HTML、CSS、JS转为用户可以与之交互的网页,排版引擎Blink和JS引擎V8都是运行在该进程中,默认情况下Chrome会为每个Tab标签页创建一个渲染进程,某个选项卡崩溃,其他选项卡并不会受影响。

  • GUI渲染线程:GUI(图形用户界面),该线程负责渲染页面,解析html和CSS、构建DOM树、CSSOM树、渲染树、布局计算、和绘制页面,重绘重排也是在该线程执行。
  • JS引擎线程:一个tab页中只有一个JS引擎线程(单线程),负责解析和执行JS。这个线程就是负责执行JS的主线程,"JS是单线程的"就是指的这个线程。大名鼎鼎的Chrome V8引擎就是在这个线程运行的。需要注意的是,这个线程跟GUI线程是互斥的。互斥的原因是JS也可以操作DOM,如果JS线程和GUI线程同时操作DOM,结果就混乱了,不知道到底渲染哪个结果。这带来的后果就是如果JS长时间运行,GUI线程就不能执行,整个页面就感觉卡死了。
  • 计时器线程:指setInterval和setTimeout,因为JS引擎是单线程的,所以如果处于阻塞状态,那么计时器就会不准了,所以需要单独的线程来负责计时器工作。
  • 异步http请求线程:这个线程负责处理异步的ajax请求,当请求完成后,他也会通知事件触发线程,然后事件触发线程将这个事件放入事件队列给主线程执行。
  • 事件触发线程:定时器线程其实只是一个计时的作用,他并不会真正执行时间到了的回调,真正执行这个回调的还是JS主线程。所以当时间到了定时器线程会将这个回调事件给到事件触发线程,然后事件触发线程将它加到任务队列里面去。最终JS主线程从任务队列取出这个回调执行。事件触发线程管理着一个任务队列,事件触发线程不仅会将定时器事件放入任务队列,其他满足条件的事件也是他负责放进任务队列,如鼠标点击事件等。

setTimeout、DOM或者 HTTP请求这部分其实并不在 v8 引擎中,这些属于webAPIs,即浏览器的API,不是js引擎提供的。

所谓的事件循环,或者说js能够实现异步非阻塞特性的基础就是因为多线程设计的存在。

用户启动某个应用程序会建立一个或多个进程,如浏览器的tab标签页,一个进程中的任务被划分到多个线程处理,有GUI渲染线程,JS引擎线程,网络线程等,JS的单线程即是指浏览器渲染进程中的JS引擎线程(因为只有一个JS引擎线程)。

了解了JS的单线程特性之后,我们来思考几个问题。

javaScript为什么会是单线程的语言?

JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。
在《javaScript高级程序设计》一书中有一个很好的解释:如果JS是多线程语言,那么假如当多个线程同时操作同一个DOM的时候,浏览器该如何渲染?浏览器该听哪个线程的指令?渲染结果是否会超出预期?基于这个特性,JS必须只能是单线程语言。

为了利用多核CPU的计算能力,HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程完全受主线程控制,且不得操作DOM。所以,这个新标准并没有改变JavaScript单线程的本质。

JavaScript并不是一行一行的分析并执行代码的,所有的 JS 代码在运行时都是在执行上下文中进行的。执行上下文是一个抽象的概念,JS 中有三种执行上下文:

  • 全局执行上下文,默认的,在浏览器中是 window 对象,并且 this 在非严格模式下指向它
  • 函数执行上下文,JS 的函数每当被调用时会创建一个上下文
  • Eval 执行上下文,eval 函数会产生自己的上下文,这里不讨论

执行上下文在执行栈(调用栈)中被以后进先出的顺序执行。当引擎第一次遇到 JS 代码时,会产生一个全局执行上下文并压入执行栈,每遇到一个函数调用,就会往栈中压入一个新的函数执行上下文。引擎执行栈顶的函数(执行上下文),执行完毕,弹出当前执行上下文,并等待垃圾回收,全局上下文只有唯一的一个,它在浏览器关闭时出栈。

  • 栈,是一种数据结构,具有先进后出的原则。JS 中的执行栈就具有这样的结构。
  • 递归函数对函数的每次递归调用都会创建一个新的执行上下文,这意味着每次函数递归时,都需要更多内存来创建新上下文。
  • 同步任务: 指的是在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务。可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是处于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。
  • 异步任务:不进入主线程、而进入"任务队列"(task queue)的任务,只有"任务队列"通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行。

举个例子:你在烧水的时候还可以去洗菜切菜,因为烧水你只需要打开开关然后等水自己烧开提醒你就好了,不需要一直等着烧水什么都不做,这里的烧水就是异步任务。

为什么是异步、并发、非阻塞的?

我们在页面中通常会发大量的请求,获取后端的数据去渲染页面。因为浏览器是单线程的,试想一下,当我们发出异步请求的时候,阻塞了,后面的代码都不执行了,那页面可能出现长时间白屏极度影响用户体验

所以JS采取了"异步任务回调通知"的模式,而实现这个“通知”的,正是事件循环,当遇到异步任务时,就将这个任务交给对应的线程,当这个异步任务满足回调条件时,对应的线程又通过事件触发线程将这个事件放入任务队列,然后主线程从任务队列取出事件继续执行。

  • 基于JS的用途是浏览器脚本语言,用于操作DOM与用户进行交互,为了避免多个线程同时操作DOM导致渲染结果超出预期,所以JS被设计为一个单线程的语言。
  • 开发时会有很多耗时的异步任务,如果都在主线程中阻塞,那会极度影响用户体验,所以JS是异步、并发、非阻塞的。
  • JavaScript代码的执行过程中,依靠函数调用栈来搞定函数的执行顺序。

说了这么多,终于轮到我们的主角了,下面有请任务队列和事件循环登场。

事件循环与任务队列是JS中比较重要的两个概念。这两个概念在ES5和ES6两个标准中有不同的实现。

任务队列是一个事件的队列,所谓任务是WebAPIs返回的一个个通知,也可以理解成消息的队列、回调队列,里面存放异步任务的回调,各个异步线程调用webAPI执行完后通过事件触发线程把回调函数放入任务队列,表示相关的异步任务可以进入“执行栈”了,等待被主线程读取

  • 一个事件循环中可以有多个任务队列(task queue),一个任务队列便是一系列有序任务(task)的集合

浏览器包含3类事件循环:Window (用于运行网页内容的浏览器级容器,包括实际的 window,一个 tab 标签或者一个 frame。)事件循环、Worker 事件循环、Worklet 事件循环

  • 队列里的每个任务都有一个任务源(task source),源自同一个任务源的 task 必须放到同一个任务队列,从不同源来的则被添加到不同队列。

  • 同一个任务队列中的任务必须按先进先出的顺序执行,但是不保证多个任务队列中的任务优先级,具体实现可能会交叉执行,进入任务队列的是他们指定的具体执行任务(回调本身)

ES5中的事件循环,如图:

  • 函数调用栈:即执行栈。
  • WebAPIs: 浏览器的接口,上面所说的浏览器的对应线程会使用这些接口处理,把它们放到相应的任务队列中。
  • 任务队列们: 主线程有多个任务队列,同源的任务被放入在属于自己的任务队列。

"任务队列"遵循先进先出的原则,排在前面的事件,优先被主线程读取。主线程的读取过程基本上是自动的,只要执行栈一清空,"任务队列"上第一位的事件就自动进入主线程执行。

主线程从"任务队列"中读取事件,这个过程是循环不断的,所以整个的这种运行机制又称为Event Loop(事件循环)。

  1. 主线程开始执行script代码,同步代码直接执行,遇到异步任务源就将它挂起交给对应的异步线程,自己继续执行同步任务
  2. 异步线程调用相应API处理,满足回调条件后,将异步回调事件放入任务队列
  3. 主线程的执行栈中的同步任务都执行完毕后,就来读取任务队列中的异步任务回调事件
  4. 主线程不断循环上述流程

到了ES6 的标准,由于出现了 Promise ,ES5 时代的"同步任务"与"异步任务"已经没有办法解释其中的原理,因此出现了 task 队列与 job 队列之分。

事件循环由宏任务和在执行宏任务期间产生的所有微任务组成。宏任务队列可以有多个,微任务队列只有一个,完成当下的宏任务后,会立刻执行所有在此期间入队的微任务。

这种设计是为了给紧急任务一个插队的机会,否则新入队的任务永远被放在队尾。微任务使得我们能够在重新渲染UI之前执行指定的行为,避免不必要的UI重绘。

TIPS: 其实并没有宏任务队列一说,人家原名就叫任务队列(Task Queue)。首先要说明宏任务其实一开始就只是任务(task),因为ES6新引入了Promise标准,同时浏览器实现上多了一个microtask微任务概念,作为对照才称宏任务,至于宏任务队列,为了便于理解和区分大家就这么叫了。

进入执行栈等待主线程执行的主代码块,包括从异步队列里加入到栈的,如setTimeout()、setInterval()的回调,其中不含异步队列中的微任务如Promise.then回调。

  • 宏任务是浏览器规定的(W3C)

  • 浏览器为了能够使得JS内部宏任务与DOM任务能够有序的执行,会在一个宏任务执行结束后,在下一个宏任务执行开始前,对页面进行重新渲染(GUI线程接管渲染,更新DOM树,重新绘制)

  • 异步任务可能是宏任务也可能是微任务,而宏任务可能是异步代码也可能是同步代码,被挂起后放到任务队列的是异步的宏任务,同步宏任务会直接执行

  • 宏任务队列可以有多个,微任务队列只有一个

Q:有很多小伙伴不理解为什么“script(整块代码)”是宏任务

一个任务就是指计划由标准机制来执行的任何 JavaScript,如程序的初始化、事件触发的回调等。 除了使用事件,你还可以使用 setTimeout() 或者 setInterval() 来添加任务。

由此可以得出结论,宏任务包含js主代码块,但是有一个争议存在,就是js主代码块是否进入宏任务队列中,或者说任务队列是否只存放异步任务回调关于这个问题,目前主要存在两种看法,

  1. script(整块代码)是宏任务(同步),首先被放入宏任务队列中,一个事件循环从宏任务队列开始,开始执行时宏任务队列中只有script(整块代码)任务,遇到同步代码直接入执行栈执行,异步代码放入对应的任务队列。
  2. 没有把 script(整块代码)放入宏任务队列,而是直接被主线程压入执行栈执行,只有异步任务才会被挂起并放入任务队列。

我个人其实更倾向于第二种说法,因为几乎所有文章都指出任务队列是消息队列、回调队列,我是实在没有找到script(整块代码)是怎么被放入或者是以什么形式被放入任务队列的相关说明,但其实这两种说法在实际代码运行表现上都是一致的,所以你怎么理解并不影响后续的事件循环流程,大家如果找到更官方更明确的说法欢迎交流,解惑。

可以理解是在当前宏任务执行结束后立即执行的任务(宏任务的小跟班),也就是说,在当前宏任务后,下一个宏任务之前,在重新渲染之前

宏任务->所有微任务->渲染,宏任务->所有微任务->渲染 ,…

  • 执行宏任务的过程中如果遇到微任务,就把微任务放到微任务队列,这个过程由主线程维护,而非事件触发线程
  • 当执行到script脚本的时候,js引擎会为全局创建一个执行上下文,在该执行上下文中维护了一个微任务队列,这个微任务队列是给 V8 引擎 内部使用的,所以你是无法通过 JavaScript 直接访问的。

任务队列和微任务队列的区别很简单,但却很重要:
1.当执行来自任务队列中的任务时,在每一次新的事件循环开始迭代的时候运行时都会执行队列中的每个任务。在每次迭代开始之后加入到队列中的任务需要在下一次迭代开始之后才会被执行.
2.每次当一个任务退出且执行上下文为空的时候,微任务队列中的每一个微任务会依次被执行。不同的是它会等到微任务队列为空才会停止执行——即使中途有微任务加入。换句话说,微任务可以添加新的微任务到队列中,并在下一个任务开始执行之前且当前事件循环结束之前执行完所有的微任务

  • 宏任务队列一次循环执行一个宏任务,后面的宏任务下个循环执行,微任务队列一次循环执行所有微任务,即清空微任务队列
  • 微任务可以添加新的微任务到队列中,中途插队执行
  • 宏任务中的事件放在宏任务队列中,由事件触发线程维护;微任务的事件放在微任务队列中,由js引擎线程(主线程)维护

了解了宏任务和微任务的概念之后,我们来补充一下ES6事件循环的具体流程:

  1. 首先,javascript整体代码被作为宏任务放入执行栈中执行,所有同步代码先执行,执行过程中,当遇到任务源时,判断是宏任务还是微任务
  2. 如果是宏任务,加入到宏任务队列中,如果是微任务,加入到微任务队列中
  3. 同步代码执行完成后,执行栈空闲,检查微任务队列中是否有可执行任务,如果有,依次执行所有微任务队列中的任务
  4. 渲染UI,开始下一轮循环
  5. 检查宏任务队列是否有可执行的宏任务,如果有,取出队列中最前面的那个宏任务,加入到执行栈中开始执行,然后重复以上步骤。直到宏任务队列中所有任务执行结束

任务队列可以放置定时器回调事件,但是需要注意的是,setTimeout()只是将事件插入了"任务队列",必须等到当前代码(执行栈)执行完,主线程才会去执行它指定的回调函数。要是当前代码耗时很长,有可能要等很久,所以并没有办法保证,回调函数一定会在setTimeout()指定的时间执行。

假设我们定义了一个2s的定时器,那么该定时器的执行流程如下:

  1. 遇到setTimeout,将它交给定时器线程
  2. 定时器线程开始计时,2秒到了通知事件触发线程
  3. 事件触发线程将定时器回调放入事件队列,异步流程到此结束
  4. 主线程如果有空,将定时器回调拿出来执行,如果没空这个回调就一直放在队列里。

所以,如果在定义了定时器之后,我们又进行了非常耗时的同步代码运算,那即使到了2s,同步代码也会阻塞定时器回调事件的执行,因此,此时回调执行的时间必然是不准确的了,所以再次强调,写代码时一定不要长时间占用主线程

事件循环(Event Loop) 是让 JavaScript 做到既是单线程,又绝对不会阻塞的核心机制,也是 JavaScript 并发模型的基础,是用来协调各种事件、用户交互、脚本执行、UI 渲染、网络请求等的一种机制,具体的管理方法由它所处的运行环境决定,目前JS的主要运行环境有两个,浏览器和Node.js,这两个环境的事件循环机制还有些区别,Node.js的事件循环我之后会另开一篇文章细说。

  1. 事件循环是让 JS 做到既是单线程,又可以异步并发不会阻塞的核心机制。
  2. 浏览器是不仅是多进程而且是多线程的,如渲染进程中有GUI渲染线程、JS引擎线程、计时器线程、HTTP请求线程、事件触发线程,事件循环就是依靠浏览器底层的多线程实现,所谓JS的单线程指的就是浏览器渲染进程中的JS引擎线程,因为只有一个JS引擎线程,所以是单线程,也被称为主线程。
  3. 主线程执行JS代码的过程中,依靠执行栈来管理执行任务的顺序,遵循后进先出的原则,同步任务直接入栈执行,异步任务被挂起待完成后被放入任务队列,
  4. 任务队列有宏任务队列和微任务队列的区别,宏任务队列中存放宏任务,如setTimeout、setInterval、DOM事件等,微任务队列中存放微任务,如Promise的then回调等。
  5. 当执行栈的任务执行完成后会去读取任务队列中的任务,优先执行微任务队列中的所有任务,微任务队列清空后,重新渲染UI,开始下一轮循环,检查宏任务队列是否有可执行的宏任务,如果有,取出队列中最前面的那个宏任务,加入到执行栈中开始执行,重复以上步骤就是事件循环。

21、静态分析是运行程序后进行调试?
您的答案: 标准答案: B

22、安卓反编译后会出现$符号字节码表示是匿名内部类?

您的答案: 标准答案: A

23、反编译安卓应用后,一般应该先查看哪一个smali文件的代码?

A、 编译程序打开控制台

B、 打开匿名类smali文件

C、 打开加密解密smali文件

您的答案: 标准答案: D

24、在整个工作中,无权限程序1发送广播到程序2,有权限的程序2不能让程序1下载文件。()

您的答案: 标准答案: B

25、哪个选项不是利用Activity劫持对系统进行恶意攻击的?

A、 遍历运行中的程序

B、 恶意程序启动带标志的钓鱼试Activity覆盖正常的Activity

C、 用户在伪造的界面上进行操作

D、 查杀恶意程序发送的信息

您的答案: 标准答案: D

26、程序加载的时候有两种视图,分别是链接视图和执行视图。

您的答案: 标准答案: A

27、Dex文件结构是一个.class集合,它会把.class里变量、符号和字符串放在池子里面,通过索引来使用,来压缩文件大小。()

您的答案: 标准答案: B

您的答案: 标准答案: A

D、 基于代码指令执行检测

您的答案: 标准答案: B

您的答案: 标准答案: C

31、Method ids索引是一个相对于前一个索引的增量,例如:第一个方法是0,第二个方法相对于第一个方法偏移1,就是1。第三个方法相对于第二个方法偏移是1,其实还是1,意思是往下递加。

您的答案: 标准答案: A

32、Dex加密使用shell的Dex替换原始的Dex,把原始的Dex当成资源或者附加数据进行隐藏。()

您的答案: 标准答案: A

您的答案: 标准答案: B

您的答案: 标准答案: A

35、下面对名称替换的概念性说法有误的是?

A、 把程序里面有意义的类、方法和字段替换无意义随机文本

B、 无意义的随机文有自动还原方法

您的答案: 标准答案: B

您的答案: 标准答案: B

37、在安卓逆向中经常用到的ADB全称是什么?

您的答案: 标准答案: B

38、以下哪些功能不是ADB的常用功能?

您的答案: 标准答案: D

39、以下命令中哪个是(使用ADB)安装apk的正确命令?

您的答案: 标准答案: A

31、计算机病毒的会造成哪些危害?

B、 计算机用户的伤害

D、 程序和数据的破坏

您的答案: 标准答案: D

32、在Windows 32 位操作系统中,其EXE文件中的特殊表示为?

您的答案: 标准答案: B

33、能够感染EXE、COM 文件的病毒属于?

您的答案: 标准答案: C

34、下列描述不正确的是?

A、 不存在能够防治未来的所有病毒的发病毒软、硬件

B、 现在的杀毒软件能够查杀未知病毒

C、 病毒产生在前,反病毒手段相对滞后

D、 数据备份是防治数据丢失的重要手段

您的答案: 标准答案: B

35、下列预防计算机病毒的注意事项中,错误的是?

A、 不使用网络,以免中毒

B、 重要资料经常备份

D、 尽量避免在无防毒软件机器上使用可移动储存介质

您的答案: 标准答案: A

36、什么是敲竹杠病毒?

A、 对电脑设置开机密码类,再提供密码索要费用的木马病毒

B、 盗取数据信息的病毒

C、 破坏计算机运行的病毒

您的答案: 标准答案: A

37、在OD工具调试中,JE跳转不成立,不改变病毒运行顺序的情况下,可以把ZF标志位修改为1。

您的答案: 标准答案: A

38、EAX寄存器保存的是操作字符串的地址信息。

您的答案: 标准答案: A

39、病毒屏蔽杀毒软件后可以用改文件名的方法来进行绕过。

您的答案: 标准答案: A

40、注册表映像劫持的路径是?

您的答案: 标准答案: C

A、 检索系统快照中遇到的第一个进程的信息

B、 搜索一个文件或子目录名匹配一个特定名称的目录

C、 获取进程信息为指定的进程、进程使用的堆、线程建立一个快照

D、 函数终止指定进程及其所有线程

您的答案: 标准答案: C

42、每个函数都有自己的栈帧,每个函数都是利用自己的栈帧空间保存全局变量与函数的调用关系。()

您的答案: 标准答案: B

43、如果能控制进程的执行流程,不能够执行想要执行的指令,达到我们目的的指令序列就叫做shellcode。()

您的答案: 标准答案: B

44、下面是漏洞代码,分析的结果:创建一个ba数组,将ba内容加密,修改ba内容,为ba解密。()

您的答案: 标准答案: B

45、缓冲区溢出漏洞的原理,它就是因为我们输入了过长的字符,而缓冲区本身又没有有效的验证机制,导致过长的字符将返回地址覆盖掉了

您的答案: 标准答案: A

您的答案: 标准答案: A

您的答案: 标准答案: A

您的答案: 标准答案: A

49、32位的无符号整数可以表示的整数范围是:0-2的16次方-1。

您的答案: 标准答案: B

50、在操作系统中安装全局钩子以后,只要目标进程符合我们所设定的条件,全局钩子的DLL文件会被操作系统自动或强行地加载到该进程中。

您的答案: 标准答案: A

1、企业常见身份标识技术有ID、用户名、AD域控、行为管理设备、账号、LDAP。()

您的答案: 标准答案: A

2、通过观景、入口、设施社区布局、照明等条件模式来预防犯罪。()

您的答案: 标准答案: A

3、在车库内、楼梯间和电梯使用玻璃窗能让犯罪者打消作案心里想法。()

您的答案: 标准答案: A

4、TOGAF框架需求管理迭代步骤方法正确的是():

A、 架构愿景,业务架构,信息系统架构,技术架构,机会及解决方案,迁移规划,实施治理,构架变更管理

B、 预备阶段,架构能力管理,架构愿景,业务架构,信息系统架构,技术架构,机会及解决方案,迁移规划,实施治理,构架变更管理

C、 信息系统架构,技术架构,机会及解决方案,迁移规划,实施治理,构架变更管理

D、 构架变更管理,实施治理,迁移规划,机会及解决方案,,技术架构,信息系统架构

您的答案: 标准答案: A

5、Zachman企业框架方向和设计都是采用纵横坐标。()

您的答案: 标准答案: A

6、Zachman模型不是基于人来开发的一个模型框架。()

您的答案: 标准答案: B

7、SABSA模型内容不包括的层次是():

您的答案: 标准答案: C

8、SABSA模型纵横坐标定义错误的是():

A、 纵坐标:上下文,概念层,逻辑层,物理层,组件层,运营层

B、 横坐标:什么,为什么,过程,谁,地点,时间

C、 纵坐标:业务连续性,风险管理,服务和支持,管理和支持,平台安全,日程表

D、 横坐标:数据结构,标准,工具,标识、功能、ACL,过程和协议,顺序

您的答案: 标准答案: C

9、SABSA模型不是基于安全架构开发的一个模型和方法论。()

您的答案: 标准答案: B

10、CobiT是一个IT实践帮助模型,也是指导、IT管理标岗、控制和参考模型。()

您的答案: 标准答案: A

11、第一代防火墙技术是基于电路层流量

您的答案: 标准答案: B

12、数据通过防火墙传输是发生在哪层

您的答案: 标准答案: C

13、防火墙术语中Trust指的是

您的答案: 标准答案: B

14、集成防火墙类似于UTM

您的答案: 标准答案: A

15、防火墙的简单包过滤工作相关说法正确的是

A、 防火墙会检查数据区是否有恶意数据

B、 防火墙会建立连接状态表用于保持连接

D、 防火墙对应用层控制较强

您的答案: 标准答案: C

16、防火墙包过滤规则中,21端口用于FTP数据包的传输

您的答案: 标准答案: B

17、CPU指令类型包括进程和线程

您的答案: 标准答案: A

18、分层级设计的操作系统中,0层控制哪方面

您的答案: 标准答案: C

19、微内核架构中,核心在微内核,其它在客户端服务器端

您的答案: 标准答案: B

20、系统安全架构中属于终端防护的是

您的答案: 标准答案: A

21、操作系统安全保护的核心是系统应用程序及数据库功能

您的答案: 标准答案: B

22、Linux系统中对文件的权限控制属于哪类信息安全模型

您的答案: 标准答案: D

23、以下哪类模型采用了分层级的设计

您的答案: 标准答案: C

24、状态机模型描述了一种无论处于何种状态都是绝对安全的系统

您的答案: 标准答案: B

25、人在互联网中的角色呈现多样性这个说法正确吗

您的答案: 标准答案: A

26、视频中以下哪项不是舆情分析需要的知识储备?

您的答案: 标准答案: D

27、舆情是指社会公众对于网络上的某些事件和话题在现实中所进行的行为这个说法正确吗

您的答案: 标准答案: B

28、企业和政府中的舆情分析体系包括信息监测这个环节吗?

您的答案: 标准答案: A

29、在进行舆情事件分析时首先考量的是所在组织的利害关系这个说法对吗

您的答案: 标准答案: A

30、在案例中相关企业应当快速回应避免对品牌造成伤害这个说法正确吗

您的答案: 标准答案: A

31、监测系统的作用在于海量信息的筛选这个说法正确吗?

您的答案: 标准答案: A

32、舆情分析工作中可以根据情况自己进行决策执行这个说法正确吗

您的答案: 标准答案: B

33、研究舆情事件中参与者的身份构成重要吗

您的答案: 标准答案: A

34、下面哪些步骤是舆情管理中不必要的?

您的答案: 标准答案: C

35、组织在舆情事件出现后的协同要根据组织架构中各个部分的职责和职能进行协同这个说法正确吗

您的答案: 标准答案: A

36、单个维权和群体维权对于舆情工作的区别只是在于数量这个说法正确吗

您的答案: 标准答案: B

37、这次事件后国家食品药品监督管理总局针对社会关心的疫苗安全问题发布科普知识予以回应,这是一种舆情处理吗?

您的答案: 标准答案: A

38、课程中的组织设计的管理考核是指划定舆情工作任务量化目标这个说法正确吗?

您的答案: 标准答案: A

39、管理者除了对舆情部门的管理还必须包括对自身信息的管理这个说法正确吗

您的答案: 标准答案: A

40、领导能力只包括政策解读和决策对应两种能力这个说法正确吗?

您的答案: 标准答案: B

41、分析研判包括对信息产生的后果的预测这个说法正确吗

您的答案: 标准答案: A

42、舆情工作的技术环节重点在于信息的收集和过滤这个说法正确吗

您的答案: 标准答案: A

43、视频中从哪个角度分析网民对快播案件的态度?

您的答案: 标准答案: B

44、视频中提出的分析报告中网民主要的年龄段是多少?

您的答案: 标准答案: C

45、网站登记备案归以下哪个部门管理?

您的答案: 标准答案: B

46、监测系统的最终目标在于什么?

您的答案: 标准答案: D

47、关键字监测和敏感词发现的目的在于过滤不相关信息这个说法正确吗

您的答案: 标准答案: A

48、棱镜计划是只收集美国公民手机的隐私数据这个说法正确吗

您的答案: 标准答案: B

49、监测系统用户管理中的审批功能是为了保障信息安全这个说法正确吗?

您的答案: 标准答案: A

50、监测系统的重点在于信息收集能力,而不在于信息关联能力这个说法正确吗?

您的答案: 标准答案: B

1、下列哪项不是信息安全的定义?

A、 数据安全,确保数据不会被非法入侵者读取或破坏

B、 程序安全,重视软件开发过程的品质及维护

C、 系统安全,维护计算机系统正常操作

D、 环境安全,管理员不能用弱口令

您的答案: 标准答案: D

2、下列哪项不是正确的防止被骗操作?

A、 在淘宝购买东西应该使用旺旺交流

B、 商家发送的发票文件,直接打开

C、 商品多次修改价格,应该提高警惕

D、 对商家发送的文件进行查杀

您的答案: 标准答案: B

3、下列选项中对DES加密算法描述不正确的是?

A、 以64位为分组对数据进行加密

B、 其密钥长度为56位

C、 运用相同算法进行加密解密

D、 DES加密算法为最安全的加密算法之一

您的答案: 标准答案: D

4、下列关于标准防火墙的描述错误的是?

A、 防火墙安全规则遵循从上到下匹配原则,一旦有一条匹配,剩余的规则就不匹配了

B、 所有的规则都没有匹配到,数据包将丢弃

C、 安全过滤规则主要包含源、目的地址和端口

D、 防火墙的主要功能是防止病毒等恶意程序的传输

您的答案: 标准答案: D

31、计算机病毒的会造成哪些危害?

B、 计算机用户的伤害

D、 程序和数据的破坏

32、在Windows 32 位操作系统中,其EXE文件中的特殊表示为?

33、能够感染EXE、COM 文件的病毒属于?

34、下列描述不正确的是?

A、 不存在能够防治未来的所有病毒的发病毒软、硬件

B、 现在的杀毒软件能够查杀未知病毒

C、 病毒产生在前,反病毒手段相对滞后

D、 数据备份是防治数据丢失的重要手段

35、下列预防计算机病毒的注意事项中,错误的是?

A、 不使用网络,以免中毒

B、 重要资料经常备份

D、 尽量避免在无防毒软件机器上使用可移动储存介质

36、什么是敲竹杠病毒?

A、 对电脑设置开机密码类,再提供密码索要费用的木马病毒

B、 盗取数据信息的病毒

C、 破坏计算机运行的病毒

37、在OD工具调试中,JE跳转不成立,不改变病毒运行顺序的情况下,可以把ZF标志位修改为1。

38、EAX寄存器保存的是操作字符串的地址信息。

39、病毒屏蔽杀毒软件后可以用改文件名的方法来进行绕过。

40、注册表映像劫持的路径是?

A、 检索系统快照中遇到的第一个进程的信息

B、 搜索一个文件或子目录名匹配一个特定名称的目录

C、 获取进程信息为指定的进程、进程使用的堆、线程建立一个快照

D、 函数终止指定进程及其所有线程

42、每个函数都有自己的栈帧,每个函数都是利用自己的栈帧空间保存全局变量与函数的调用关系。()

43、如果能控制进程的执行流程,不能够执行想要执行的指令,达到我们目的的指令序列就叫做shellcode。()

44、下面是漏洞代码,分析的结果:创建一个ba数组,将ba内容加密,修改ba内容,为ba解密。()

45、缓冲区溢出漏洞的原理,它就是因为我们输入了过长的字符,而缓冲区本身又没有有效的验证机制,导致过长的字符将返回地址覆盖掉了

49、32位的无符号整数可以表示的整数范围是:0-2的16次方-1。

50、在操作系统中安装全局钩子以后,只要目标进程符合我们所设定的条件,全局钩子的DLL文件会被操作系统自动或强行地加载到该进程中。

1、下列哪项不是信息安全的定义?

A、 数据安全,确保数据不会被非法入侵者读取或破坏

B、 程序安全,重视软件开发过程的品质及维护

C、 系统安全,维护计算机系统正常操作

D、 环境安全,管理员不能用弱口令

2、下列哪项不是正确的防止被骗操作?

A、 在淘宝购买东西应该使用旺旺交流

B、 商家发送的发票文件,直接打开

C、 商品多次修改价格,应该提高警惕

D、 对商家发送的文件进行查杀

3、下列选项中对DES加密算法描述不正确的是?

A、 以64位为分组对数据进行加密

B、 其密钥长度为56位

C、 运用相同算法进行加密解密

D、 DES加密算法为最安全的加密算法之一

4、下列关于标准防火墙的描述错误的是?

A、 防火墙安全规则遵循从上到下匹配原则,一旦有一条匹配,剩余的规则就不匹配了

B、 所有的规则都没有匹配到,数据包将丢弃

C、 安全过滤规则主要包含源、目的地址和端口

D、 防火墙的主要功能是防止病毒等恶意程序的传输

B、 规则强度为101,不允许TCP连接,禁止所有主机对198.78.46.8的www服务进行访问

C、 匹配顺序为101,允许TCP连接,所有主机对198.78.46.8的www服务进行访问

D、 匹配顺序为101,允许TCP连接,禁止禁止所有主机对198.78.46.8的www服务进行访问

6、下列那些SMTP命令是用来发送邮件的Envelop的?

7、下列关于信息安全保障的描述错误的是?

A、 信息安全保障的是核心业务,信息安全保障是为了支撑业务的正常运行

B、 信息系统安全的保障是在整个信息系统的生命周期中

C、 要确保信息系统的保密性、完整性、和可用性

D、 信息安全保障策略的制定没办法考虑到地震、海啸等大自然的不可抗力

8、下列对于下一代防火墙的描述错误的是?

A、 将访问控制对象从网络层、传输层延伸到应用层

B、 下一代防火墙能够识别应用和内容

C、 下一代防火墙可以限制用户是否能在上班时间访问娱乐社交软件

D、 下一代防火墙已经丢弃了传统防火墙的工作模式

9、下列关于KDC的描述错误的是?

A、 KDC是秘钥分发中心

B、 网络中所有客户机和服务器都信任KDC,并使用KDC验证用户身份

C、 KDC是由认证服务和票据授予服务组成

D、 认证服务的作用主要是生成两个主题之间通信的票据

10、下列哪项不是防火墙常见的工作方式?

11、下列选项中关于ACL规则的匹配原则描述不正确的是?

A、 防火墙安全规则遵循从上到下匹配的原则

B、 如果所有的规则都没有匹配到,数据包将被丢弃

C、 安全过滤规则只包含源、目的地址和端口

D、 防火墙安全规则匹配时一旦有一条匹配,剩余的都不再进行匹配

12、下列选项中关于防火墙的透明部署方式描述错误的是?

A、 内外网在一个网段内

B、 优点是直接串联到链路上,不改变原有的网络IP地址配置

C、 缺点是像玻璃一样,屋内屋外一览无余

D、 透明模式即用户可以访问到网络安全设备

A、 打开并监听本地端口31337,等待主机连接

D、 使用的是反向连接方式反弹shell

14、下列选项中最复杂的密码是____。

15、下列关于Netcat的操作的描述错误的是____。

A、 nc -G 追踪连接可用于网络排查

B、 -o 会将显示的内容输出到一个指定文件

C、 -h 打开nc的帮助文档

A、 打开并监听本地端口31337,等待主机连接

D、 使用的是反向连接方式反弹shell

17、下列哪些功能不是netcat能做到的?

A、 在两台主机之间通信

B、 在两台主机之间传输文件

D、 漏洞扫描以及利用

18、下面对于"nc 80"的描述错误的是?

A、 连接 开放的80端口

B、 可以获取一些关于主机的信息

C、 可以发送http请求包来访问网站

19、使用____命令检测目标主机的端口开放情况。

D、 扫描结果会包含主机操作系统信息

21、只进行主机存活探测,使用____命令。

22、密码术中永恒的两大原则是____。

23、下列关于DES算法描述不正确的是____。

C、 适用于加密大量数据的场合

D、 加解密的密钥相同

24、下列选项中不属于密码对信息的保护的是____。

25、下列____不属于单钥体制的密码系统。

我要回帖

更多关于 同一进程下的线程可以共享什么 的文章

 

随机推荐