计算机是如何工作的 (程序猿基础知识)

news2024/9/27 12:16:21

文章目录

  • 1.计算机的发展史
  • 2. 冯诺依曼体系 (Von Neumann Architecture)
    • 冯诺依曼简介 (计算机的祖师爷)
  • 3. CPU基本工作流程
    • 3.1 逻辑门
    • 3.2 门电路(Gate Circuit)
    • 3.3 算数逻辑单元 ALU (Arithmetic & Logic Unit)
      • 3.3.1 进制的理解
      • 3.3.2 算数单元(Arithmetic Unit)
      • 3.3.3 逻辑单元(Logic Unit)
      • 3.3.4 ALU符号
    • 3.4 寄存器(Register)和内存(RAM)
    • 3.5 控制单元 CU(Control Unit)
    • 3.6 CPU的核心参数
      • 3.6.1 核心数
      • 3.6.2 频率
    • 3.7 CPU执行指令(Instruction)的流程
      • 3.7.1 指令表
      • 3.7.2 执行指令基本流程
  • 4. 编程语言(Program Language)
    • 4.1 程序(Program)
    • 4.2 早期编程
    • 4.3 编程语言的发展
  • 5. 操作系统(Operating System)
    • 5.1 操作系统的定位
  • 6. 进程和任务(Process/Task)
    • 6.1 进程的概念
    • 6.2 进程的管理
  • 7. 内存分配⸺内存管理(Memory Manage)
  • 8. 进程间通信(Inter Process Communication)

1.计算机的发展史

计算的需求在人类的历史中是广泛存在的,发展大体经历了从一般计算工具到机械计算机到目前的电子计算机的发展历程。
人类对计算的需求,驱动我们不断的发明、改善计算机。目前这个时代是“电子计算机”的时代,发展的潮流是:更快速、更稳定、更微型。
推荐书籍: 《计算机简史》

2. 冯诺依曼体系 (Von Neumann Architecture)

要点1
现代的计算机, 大多数遵守冯诺依曼体系结构
在这里插入图片描述

  • CPU中央处理器: 进行算术运算和逻辑判断
  • 存储器: 分为外存和内存, 用于存储数据(使用二进制方式存储)
  • 输入设备: 用户给计算机发号施令的设备
  • 输出设备: 计算机给用户汇报结果的设备
    针对存储空间
    硬盘>内存>>CPU
    针对数据访问速度
    CPU>>内存>硬盘

冯诺依曼简介 (计算机的祖师爷)

冯·诺依曼(John von Neumann,1903年12月28日-1957年2月8日), 美籍匈牙利数学家、计算机
科学家、物理学家,是20世纪最重要的数学家之一。冯·诺依曼是布达佩斯大学数学博士,在现代计算机、博弈论、核武器和⽣化武器等领域内的科学全才之一,被后人称为“现代计算机之父”、“博弈论之父”.
在这里插入图片描述

3. CPU基本工作流程

接下来, 我们用一个从无到有的过程, 一步步搭建一个CPU出来, 可以借助这个过程理解CPU, 内存等计算机主要部件的工作原理.

3.1 逻辑门

电子开关 – 机械继电器(Mechanical Relay)
在这里插入图片描述
通过电子开关,我们可以实现 1 位(bit) 的看似无用的逻辑运算,但至少它工作起来了,不是么。
怎么使用电子开关组合出真正有用的逻辑组件,我们接来下会做进⼀步的学习了解。
以后的真空管、晶体管的实质也是完成类似的工作,只是物理原理更加复杂,我们就不带着大家做深入了解读了。

3.2 门电路(Gate Circuit)

接下来, 我们学习如何使用电子开关构建一些有用的部件 – 门电路. 可以实现1位(bit)的基本逻辑运算.
在这里插入图片描述
在这里插入图片描述

3.3 算数逻辑单元 ALU (Arithmetic & Logic Unit)

ALU是计算机中进行算数, 逻辑运算的核心部件, 是计算机的数学大脑. 接下来, 我们用上面构建的逻辑门来完成自己的一个ALU, 去学习理解它的工作模式, 以便作为我们进一步理解现代计算机原理的基石.
在这里插入图片描述

3.3.1 进制的理解

在这里插入图片描述
在这里插入图片描述

3.3.2 算数单元(Arithmetic Unit)

算数单元, 负责计算机里的所有数字操作, 比如四则运算, 当然它能做的远远不止这些. 接下来带大家实现一个8位 (bits) 的加法器 (adder) , 来掩饰整个过程, 其他运算器不做讲解了.
在这里插入图片描述
在这里插入图片描述
至此,⼀个 8 位(bits) 加法器就被我们从无到有制作了出来。算术单元的操作当然远不止这些,通过继续组合逻辑门,算数单元可以做到加减乘除甚至更多的算术运算,但⼀个加法器作为演示已经足够了。实际上,乘法器和除法器的制作难度是要高于加、减法器的,有兴趣可以尝试做更多的了解。

3.3.3 逻辑单元(Logic Unit)

逻辑单元主要用来进行逻辑操作,最基本的操作就是 与、或、非操作,但不只是⼀位(bit)数的比较。
在这里插入图片描述

3.3.4 ALU符号

经过我们的努力,通过基本的逻辑门电路,我们⼀步步地做出了⼀个 8 位(bits) ALU,甚至比 Intel 74181 还要强大,Intel 74181 只是⼀个 4 位(bits) ALU(😀)。当然现代的计算机中的 ALU 部件非常强大,复杂度远远超过了我们的想象,32 位 甚至 64 位基本已经普及全球了。但无论如何,再复杂的ALU 也是芯片工程师像我们这样,一层又一层, 一步又一步地将其抽象出来的。ALU 是第⼀次将人类历史上的数学和逻辑学学科有机地结合起来,可以视为人类智慧发展的现代巅峰.
在这里插入图片描述

3.4 寄存器(Register)和内存(RAM)

光有ALU还是远远不够的, 我们无法为ALU提供存储的部件, 所以接下来, 我们利用门电路简单说明下存储的制作. 注意, 虽然图中没有明显的表示出来, 但这些存储都是要求必须保持通电状态的, 也就是这些存储都是易失的(volatile)
在这里插入图片描述
中间我们隐藏了一些实现细节, 最后的效果是: 失能线置位时, 输入为1, 保存1; 输入为0, 保存0. 使能线不位置时, 则写入无效.
我们可以利用门锁,构建我们需要的寄存器和内存。
在这里插入图片描述
内存的构建要比这个复杂一点,但基本原理一致。如此构建的内存被称为 RAM(Random Access Memory),可以支持 O(1) 时间复杂度访问任意位置的数据,这也就是我们数组下标访问操作是 O(1)
的硬件支持。

在这里插入图片描述

3.5 控制单元 CU(Control Unit)

我们现在有 ALU、存储了,但这还是不足以让我们的计算机工作起来,我们需要有⼀个部件来指挥ALU 进行何种的运算,而这个部件就是控制单元(CU)。
在这里插入图片描述
在这里插入图片描述

3.6 CPU的核心参数

要点2

3.6.1 核心数

在这里插入图片描述
上面图片的方框数可以认为是核心数, 如图所示是一个十六核的CPU.
早期的CPU都是单个核心, 随着时代的发展, 我们对CPU的处理速度要求越来越高, 此时, 就需要让CPU的集成度更高, 包含更多的运算单元才能算的更快. 这样就要求运算单元就要小(CPU制成工艺, 如5nm等). 此时经典力学就失效了, 开始进入量子力学的 领域了. 对工艺的挑战就越来越大.
此时, 提出多核心的理念.

3.6.2 频率

在这里插入图片描述

CPU的运算速度使用频率来描述, 可以简单理解成1秒可以执行多少条指令(并不严谨), 如上面速度可以理解成CPU一秒计算约34亿次.
CPU的频率是根据任务量动态变化的, 随着频率的提升, 消耗的电量更高, 发热也更多. 为了保护CPU不会因过热而烧掉, 会进行自动降频.

3.7 CPU执行指令(Instruction)的流程

要点3

3.7.1 指令表

首先,我们先介绍下我们需要到的指令(instruction)。
所谓指令,即指导 CPU 进行工作的命令,主要有操作码 + 被操作数组成。
其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是寄存器编号等。
指令本身也是一个数字,用二进制形式保存在内存的某个区域中。
我们使用编程语言写的程序最终都要翻译成"cpu 上执行的二进制指令", 指令就是cpu完成的任务的基本单位.
指令也是机器语言(二进制), 汇编语言. 机器语言和汇编语言是一 一对应的.
不同的cpu在微观下支持的指令是不同的, 如x86的指令和arm的指令, 这就造成了兼容的问题.
在这里插入图片描述
一个cpu能执行那些指令, 可以认为是cpu最初设计的时候就已经规定好了. 上面图片列了一些简化的指令.
8 bit的指令可以分为两个部分.
前 4bit 是操作码(opcode)表示指令是干啥的
后 4bit 是操作数 (类似于参数)
上面表格中寄存器名字AB是虚构的, 实际cpu寄存器的名字, 形如: eax, ebx, esp, ebp…)

3.7.2 执行指令基本流程

cpu中存在一个特殊的寄存器, “程序计数器”(在exe加载到内存后, 就会被系统自动设置好), 保存了接下来要从哪个内存位置来执行指令. 同时, 随着指令的执行, "程序计数器"的值也会随着更新, 默认情况下是+1的自增过程(按顺序执行指令), 如果遇到跳转类语句, 如(if, while, for, 函数调用…)会被设为其他值.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执行指令我们分为三个阶段
1)取指令, cpu从内存中读取到指令内容到cpu内部.(有专门的寄存器保存读取到的指令)
2)解析指令, 识别出指令的作用, 以及对应的功能和操作数
3)执行指令
每一个指令的执行都要经过上面的三个步骤, 而完成一个任务需要好几个上面的指令的执行. 如一个加法的过程就可能需要三个上面的指令, 看似很麻烦, 但是由于cpu算的很快(1秒可以进行十几亿次的上面的运算), 对于计算机来说花费的时间并不多.

4. 编程语言(Program Language)

4.1 程序(Program)

所谓程序,就是一组指令以及这组指令要处理的数据。狭义上来说,程序对我们来说,通常表现为一组文件。
程序 = 指令 + 指令要处理的数据。
在这里插入图片描述

4.2 早期编程

在这里插入图片描述
在这里插入图片描述
这是⼀个早先流传的趣味小故事,当然这件事不是真实的。但最早的电脑,要进行编程,是真的需要
⽤ 0、1进行编程的(Σ(っ °Д °;)っ)
下面图给大展示了 Altair 8800 计算机,是最早的⼀批微型电脑。用户需要控制开关,一个一个 bit的将程序录入该电脑中。
在这里插入图片描述
如果要求计算机的用户都必须使用二进制编程,那大家都要疯掉了,这可是⼀件门槛太高的事情了。所以编程语言应运而生了。

4.3 编程语言的发展

为了提升编程效率,最早创造了汇编语言的概念。其实汇编语言和机器语言(也就是指令)直接是完1` 全一 一对应的,只是相对于 0、1 这些数字,发明了一些帮助人类记忆和理解的符号将其对应起来,也就是我们上面看到的类似 LOAD_A、LOAD_B 等。程序员完成编程之后,需要使用汇编器(assembler)将汇编语言翻译成机器语言。
虽然汇编降低了程序员的记忆成本,但要求程序还是必须掌握计算机硬件的所有知识,而且随着计算机厂商越来越多,一次编写的程序往往只适用于于一类计算机。这个是远远不够的,所以更为高级的语言诞生了,高级语言屏蔽了硬件细节,让程序员可以站在更高的层面上思考自己的业务。这里以 C 语言为例,程序员完成程序的编写之后,需要使用编译器(compiler)和连接器(linker)将程序翻译成汇编语言,再借助汇编器变成最终的机器语言。
借助封装的思想,我们学习编程变得越来越容易。不过有利则有弊,高度的抽象,导致很多的程序员把计算机视为⼀个黑箱,完全无法理解自己的程序是如何工作起来的,希望我们大家不要做这种程序员。
我们使用的 Java 语言相对于 C 语言更高级一点,但基本抽象原理上没有太大的差异,我们暂时就不展开说明了。
在这里插入图片描述
注意:高级语言的一条语句(Statement)往往对应很多条指令(Instruction)才能完成。

5. 操作系统(Operating System)

要点4
操作系统是一组做计算机资源管理的软件的统称。目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。
不同的系统之间运行的程序是不同的(由于kpi不同, 程序并不兼容)

5.1 操作系统的定位

在这里插入图片描述
操作系统有两个基本功能:
1) 防止硬件被时空的应用程序滥用;给应用程序提供kpi, 让应用程序调用, 完成不同的功能.
2) 向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。

一个操作系统主要做下面两个事情
1)管理不同的硬件设备, 计算机能接入很多的设备, 如扫码枪, 医疗设备, B超超声机…
2)给软件提供稳定的运行环境, 现代的操作系统上都是同时要运行很多程序的, 希望在这些程序之间不能相互干扰. 某个程序出bug了, 不会影响到其他的程序.

6. 进程和任务(Process/Task)

每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了一个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之一。
进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程;同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。

6.1 进程的概念

要点5
进程就是我们电脑上正在执行的一些应用程序, (当说到一个应用程序的时候, 有两种状态, 没有运行时, 是一个exe文件, 躺在硬盘上; 运行的时候, exe就会被加载到内存中, 并且cpu执行里面的指令了. )
在这里插入图片描述
进程是操作系统进行资源分配的基本单位

6.2 进程的管理

要点6
由于系统上的进程很多, 所以需要去管理
1)描述 通过 结构体/类(主流系统都是通过C/C++实现的) , 把进程的各种属性表述出来
2)组织 通过数据结构, 将上面的多个结构体(描述)串联起来, 进一步进行各种的增删改查…
如Linux操作系统使用称为"PCB"这样的结构体来描述进程信息的. (PCB全称进程控制块), 简单的认为, 通过链表的方式将上述多个PCB串到一起, 创建进程(双击exe, 运行程序), 就相当于创建了一个PCB结构体, 销毁进程, 就是把PCB从连表上删除掉, 并且释放PCB这个结构体, 查看进程列表, 就是遍历这个连表, 依次显示相应的信息.
PCB是一个非常复杂的结构体, 里面包含的属性非常多, 下面就来了解一些关键的信息.
1.PID进程的标识符
同一时刻, 一个机器上的多个进程之间, PID是唯一的, 不会重复. 系统内内部的很多操作都是通过PID找到对应进程的.
在这里插入图片描述
2.内存指针 (一组)
描述进程依赖指令和数据都存在哪个区域
操作系统, 运行exe, 就会读取exe中的指令和数据, 加载到内存中. (内存地址)
从侧面表现出进程的执行需要一定的内存资源
3.文件描述表 (顺序表/数组)
描述了进程打开了哪些文件, 对应到硬盘上的数据
在进程中打开了某个文件, 就会在顺序表中添加一项, 方便读取
以下几条共同决定了进程的调度, 和我们日常的开发息息相关
要点7
操作系统进程调度的关键分时复用
当前的操作系统, 都是"多任务系统"同时可以运行多个进程的, 以前的操作系同, 称为"单任务系统", 同一时刻只能运行一个进程的.
对分时复用的理解: 某个时刻, cpu运行进程1, 运行一会, cpu运行进程2, 过一会运行进程3… 由于cpu运算速度和切换速度非常快, 肉眼察觉不到. 站在人的视角来看, 就相当于同时执行, “并发执行”.
并行执行: 现在有了多核cpu, 每个核心和核心之间, 微观上也能同时执行不同的进程.
并发或者并行, 都是操作系统内核统一调度的, 程序员/普通用户感知不到. 因此, 平时把并行和并发统称为"并发" , 对应的编程手法也称为"并发编程"
4.进程状态
就绪状态: 进程可以随时被调度到cpu上执行指令
阻塞状态: 进程无法调度到cpu上执行指令, 之所以阻塞, 是因为要进行一些其他操作, 比如 进行IO 操作 (读写硬盘或者读写网卡, 如scan输入, 需要用户进行输入时, 进程进入阻塞状态)
上面两种是主要的两种进程的状态, 其他的状态也有, 就不进行过多的讲述了…
5.进程优先级
优先级就是字面意思, 进程的先后顺序
6.进程的上下文
分时复用, 一个进程执行一会之后就要从cpu上调走, 过一段时间还会调度回cpu, 就要沿着上次执行的结果继续往后执行. 把之前执行的中间结果(各种cpu寄存器中的值) 保存起来, 以便 下次使用.
7.进程的记账信息
在优先级的加持下 可能会使不同的进程, 吃到的资源差异越来越大…
上面几个属性是用来支持并发执行调度过程的

7. 内存分配⸺内存管理(Memory Manage)

操作系统对内存资源的分配,采用的是空间模式⸺不同进程使用内存中的不同区域,互相之间不会干扰。

8. 进程间通信(Inter Process Communication)

如上所述,进程是操作系统进行资源分配的最小单位,这意味着各个进程互相之间是无法感受到对方存在的,这就是操作系统抽象出进程这⼀概念的初衷,这样便带来了进程之间互相具备”隔离性(Isolation)“。
但现代的应用,要完成一个复杂的业务需求,往往无法通过一个进程独立完成,总是需要进程和进程进行配合地达到应用的目的,如此,进程之间就需要有进行“信息交换“的需求。进程间通信的需求就应运而生。
现在在Java中最主要的进程间通信方式有且只有一个, 通过网络 (socket)
网络是⼀种相对特殊的 IPC 机制,它除了支持同主机两个进程间通信,还支持同一网络内部非同一主机上的进程间进行通信.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1920088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【错题集-编程题】买卖股票的最好时机(四)(动态规划)

力扣对应题目链接:188. 买卖股票的最佳时机 IV - 力扣(LeetCode) 牛客对应题目链接:买卖股票的最好时机(四)_牛客题霸_牛客网 (nowcoder.com) 一、分析题目 1、状态表示 为了更加清晰的区分买入和卖出,我们换成有股…

【从零开始实现stm32无刷电机FOC】【实践】【4/6 stm32高级定时器】

点击查看本文开源的完整FOC工程 在完成理论方面的准备后,是可以进行写代码实现了,但是stm32单片机提供了不少可以用于电机控制的硬件外设,充分利用这些硬件资源,可以减少代码量以及提高运行性能。 本文使用的stm32型号为喜闻乐见的…

天环公益首发原创开发进度网站 带后台

天环公益计划首发原创开发进度网站 带后台 后台地址是:admin.php 后台没有账号密码 这个没有数据库 有能力的可以自己改 源码下载:https://download.csdn.net/download/m0_66047725/89520358 更多资源下载:关注我。

位图 、Max Sum、滑动窗口

这篇博客主要总结一下,这两天刷的算法题: 判断字符是否唯一 题目意思很简单不再解读,拿到这道题,其实不难看出哈希表可以直接秒了,注意这是一道面试题,在oj上可以哈希表秒了,如果面试官要求不使…

如何连接到公司的服务器?

1.下载FileZilla FileZilla的下载与安装以及简单使用(有图解超简单)-CSDN博客 2.打开 3.输入主机 用户名 密码 端口 注:主机支持的协议类型: 4.连接成功 其他方式也有很多,比如通过cmd,html网页等等 3个…

Apache Doris + Apache Hudi 快速搭建指南|Lakehouse 使用手册(一)

作者:SelectDB 技术团队 导读:湖仓一体(Data Lakehouse)融合了数据仓库的高性能、实时性以及数据湖的低成本、灵活性等优势,帮助用户更加便捷地满足各种数据处理分析的需求。在过去多个版本中,Apache Doris…

下载动画人物

1、网址:动画 2、点击Characters 3、搜索人物 4、点击弹出的人物,弹出对话框选择USE THIS CHARACTER 5、下载 6、点击Animations,搜索walk 7、点击UPLOAD CHARACTER,看到男孩步行,选择In Place,点击下载&…

浅谈后置处理器组件提取器相关的Apply to

浅谈后置处理器组件提取器相关的Apply to 在Apache JMeter中,“提取器”(通常指的是正则表达式提取器、JSON路径提取器或CSS/JQuery提取器等)是用来从服务器响应中提取信息的重要组件。这些信息可以是cookies、session IDs、特定的文本或者任…

作业一:ER图 作业:二QQ项目思路 作业三:实现QQ的登录与注册界面

一、ER图 二、QQ项目思路:客户端功能,服务器端功能的实现 1.登录注册: 将基本信息如手机号码,验证码,还有已有的账号及账号相关信息等存入数据库中,登录方式为账号密码登录,还有忘记密码用邮箱…

023-GeoGebra中级篇-几何对象之圆锥曲线

圆锥曲线是解析几何中的重要部分,它们包括椭圆、双曲线、抛物线和圆。通过使用预先定义的变量(如数值、点和向量),我们可以动态地构建这些曲线的方程,并观察它们如何随变量的变化而变化。本文将介绍如何通过定义变量来…

TikTok 入局小游戏,小游戏出海赛道大热,开发者如何抢滩海外市场?

国内小游戏市场的竞争日益激烈,开发成本上涨、买量的投入成本飙升,对小团队和个人开发者的资金要求量高。除此以外,单款游戏从软著、备案、到认证所需要的时间和费用都大幅提升,也对小游戏市场造成重大影响。重压之下,…

旅游景区度假村展示型网站如何建设渠道品牌

景区、度假村、境外旅游几乎每天的人流量都非常高,还包括本地附近游等,对景区及度假村等固定高流量场所,品牌和客户赋能都是需要完善的,尤其是信息展示方面,旅游客户了解前往及查看信息等。 通过雨科平台建设景区度假…

[图解]分析模式-01-概述1

1 00:00:01,380 --> 00:00:01,770 好 2 00:00:02,340 --> 00:00:06,440 非常感谢大家能够来上我们 3 00:00:06,450 --> 00:00:07,960 分析模式高阶的课程 4 00:00:09,310 --> 00:00:13,440 这个内容之前在分析设计高阶 5 00:00:13,450 --> 00:00:17,840 也就…

客户反馈的智能分析:Kompas.ai如何转化用户声音为行动

客户反馈是企业改进产品和服务、提升客户满意度的重要资源。在数字化时代,如何有效收集和分析客户反馈,将其转化为实际行动,成为企业面临的挑战。Kompas.ai,一款智能客户反馈分析工具,正帮助品牌实现这一目标。 客户反…

nginx 正常访问,刷新404

问题描述: 部署完成前端服务,浏览器正常访问没有问题,但是F5刷新的时候,会提示404,丢失了资源。 解决办法: 在nginx配置中增加如下代码: try_files $uri $uri/ /index.html;

【Linux】进程间通信——命名管道和共享内存

目录 命名管道(named pipe) 命令行中使用 代码中使用 共享内存(shared memory) shmget ipcs命令 shmctl shmat/shmdt 简单通信 命名管道(named pipe) 之前我们说了匿名管道,但是匿名管道…

9717 取数对弈

首先,我们需要初始化两个数组,一个用于存储输入的数列a[],另一个用于动态规划过程中存储中间结果的二维数组dp[][]。dp[i][j]表示从数列的第i个数到第j个数时,当前玩家(甲方先手)能够获得的最大得分。 接下…

2023 N1CTF-n1canary

文章目录 参考n1canary模板类和模板函数make_unique和unique_ptrstd::unique_ptr示例: std::make_unique示例: 结合使用示例 operator->getrandom逆向源码思路exp 参考 https://nese.team/posts/n1ctf2023/ n1canary 模板类和模板函数 template &…

从汇编层看64位程序运行——栈帧(Stack Frame)入门

在《从汇编层看64位程序运行——程序中的栈(Stack)结构及其产生的历史原因》一文中,我们讲解了X86体系架构下,程序的栈结构的特点。本文将介绍另外一个非常重要的结构——栈帧。 A stack frame, often just called a ‘frame,’ is a section of the sta…

大众汽车入职SHL在线测评、英语口语、招聘笔试如何通过、考点分析|备考建议

大众汽车入职在线测验真题考点分析,通过技巧? 大众汽车集团(中国)在招聘过程中,认知能力测试是评估候选人是否适合某个职位的重要环节。候选人会收到带有线上测评链接的邮件,测评包括胜任力潜力测试(Compe…