2022年最火热区块链面试问答

2022年最火热区块链面试问答

FinTech 社区 FinTech社区 2022-05-11 19:56

收录于合集#区块链32个

大家好,我是Lucy@FinTech社区,今天的文章将和大家分享20 个区块链面试问答。欢迎添加以下微信:fintech78加入Web 3社群,提认知,攒人脉,求职招聘!

Image

 

面向初级开发人员的区块链面试问
 

我们按照开发人员的资历对区块链面试问题进行分类。您打算聘请初级开发人员吗?考虑以下面试问题:

 

问题 1:

区块链上允许的各种记录类型是什么?

答:区块链允许两种类型的记录,如下:

 

交易记录:这些是交易记录,例如从一个地址到另一个地址的加密货币支付交易。

区块记录:一个区块记录可能包含多个交易记录和区块标识符。

 

让我们以比特币区块链网络为例。该网络上已确认的区块包含以下内容:

 

A magic number that always has only one value

“Blocksize”;

“Blockheader”;

 Transaction counter;

 

“Blockheader”包含以下内容:

 

Block version number;

“hashPrevBlock”: A hash of the header of the previous block, created using the SHA-256 hash algorithm;

“hashMerkleRoot”: A hash of all the transactions in the current block in “Merkle Trees”;

Current block timestamp;

Bits;

 “Nounce”

 

请注意,新块包含对前一个块的引用。你可以把这个数据库想象成一个区块链,这就是我们称这种技术为“区块链”的原因。

 

所有这些区块都可以作为数字账本提供给比特币区块链上的所有节点。您可以将其视为分布式账本。这就是为什么我们将区块链称为“分布式账本技术”。

 

问题 2:

解释比特币区块链上的交易验证过程。

答:比特币是供用户发送/接收这种加密货币的公共区块链网络。任何匿名/假名的人都可以加入这个 P2P 网络。

 

比特币区块链网络有一个“创世”区块,这是该网络上的第一个区块。比特币块是一种数据结构。它包含交易数据,即包含在该块中的交易的详细信息。

 

它也有一个标题。该块包含一些加密哈希值。一个哈希值与该块中的所有交易有关。另一个是指向前一个块的哈希指针,它建立了块之间的链接。

 

比特币网络有“矿工”,他们处理交易验证过程。用户提交新交易。这些交易最初进入一个称为“mempool”的池中。

 

一个“矿工”拿起其中一些交易并尝试创建一个新块。此过程涉及解决密码难题。这个难题是一个难题,但是,它是可以解决的。矿工们反复尝试寻找这个难题的答案。

 

这个过程具有竞争力,因为矿工在创建新区块时会获得一小部分比特币的奖励。矿工经常使用带有 GPU 的计算机。这提供了更多的计算能力,并增加了成功的机会。

 

这个过程被称为“比特币挖矿”。它是计算密集型的,因此,比特币矿工的能源费用很高。一旦矿工解决了难题,他/她就会将其广播到整个网络。所有矿工都可以看到解决方案。这种共识算法被称为“工作证明”(POW)。

 

这种去中心化的过程可以防止黑客操纵比特币区块。操纵比特币网络实际上是不可能的,因为黑客需要控制这个大型网络的大部分。这使得比特币高度安全。

 

Image

 

问题三:

“工作量证明”(POW)共识算法如何防止“双花”?

答:我们以比特币区块链网络为例进行说明,但是其他使用 POW 算法的区块链的概念是相同的。加密货币是“数学数字货币”,而不是可以物理交换的东西。它们作为计算机上的记录存在,并且有人可以更改它们。

 

如果一个人更改了比特币交易的收件人地址,那么这笔钱就会转给其他人。这笔钱早先花掉了。但是,有人操纵了一笔交易以再次花费它。这就是所谓的“双花”。

 

一个比特币区块包含该区块中交易的加密哈希。如果您更改交易数据,则需要再次运行散列算法。

 

比特币块还包含对前一个块的哈希引用。如果您更改此块,则需要更改其哈希值。下一个块将包含该块的哈希,您也需要更改它。

 

如果您不更改这些哈希值,那么异常将立即出现。比特币网络是一个透明的网络。每个矿工都会看到异常。

 

比特币网络使用 POW 算法。它涉及解决密码难题。这是一个难题,许多矿工竞相解决它。该算法涉及繁重的计算。由于网络的透明性,每个矿工都会注意到正在发生的事情。

 

人们发现在这种设置中很难更改块的数据和散列。一旦你改变了一个区块和它的哈希值,你需要改变下一个区块来反映这一点。这会产生另一个异常,您需要更改后续块来解决它。

 

执行这条链是不切实际的,因为网络上的所有矿工都看到了这些不寻常的活动。这就是 POW 防止双花的方式。

 

问题 4:

哪些功能使以太坊

或比特币等公共区块链网络不腐败?

答:以下特性使得操纵比特币和以太坊等公共区块链网络变得非常困难:

 

这些网络是分散的 P2P 网络。他们没有一个中央管理员,并且这些网络上的所有节点都具有相同的权限。一个人不能凌驾于他人之上。

这些网络是分布式账本。所有节点都有所有交易记录。即使有人关闭了一个节点,其他节点仍然可用。外部参与者无法关闭这些网络。

持有比特币或以太币(以太坊网络的原生加密货币)的用户使用加密货币钱包。这些钱包使用数字签名。这些数字签名使用非对称加密,其中包括一个公钥和一个私钥。用户可以公开公钥。他们需要对私钥保密,从而为所有实际目的保护他们的钱包。

这些公共区块链网络是透明的。所有矿工都可以看到每一项活动,这使得操纵非常困难。

这些网络中的交易验证过程使用“工作证明”(POW)共识算法。这需要“矿工”,即交易验证者使用他们验证的交易创建新区块。他们需要解决一个难度适中的密码难题,而且他们是在竞争激烈的环境中完成的。他们需要在操纵这个网络之前让大多数矿工加入,这是不切实际的。

操作现有块需要在透明环境中更改其数据。它还需要更改加密哈希,因为没有它就会出现异常。随后的块具有对该块的引用。黑客需要更改后续区块以避免异常,并且这个过程必须继续进行。这在透明的环境中是不切实际的。

 

问题 5:

提供在区块链中使用密码算法的示例。

答:比特币区块链网络中的两个例子展示了密码算法为何以及如何帮助区块链网络。
 

 

示例 #1:数字签名

 

比特币用户使用加密货币钱包来持有比特币。用户可能会从其他人那里收到比特币,因此,他们需要有一个数字地址。他们的加密货币钱包有一个公共地址。我们也称它为“公钥”。

 

用户需要授权交易。只有他们应该能够授权自己的交易,而钱包为此提供了“私钥”。用户需要保护它并保密。只要他们保护他们的私钥的秘密,他们就可以保证他们的加密货币安全。

 

公钥和私钥是相互链接的。可以从私钥导出公钥。但是,不能从公钥中导出私钥。那是因为私钥应该保密。

 

钱包为此使用非对称加密。这利用加密算法来保护私钥的机密性。这些算法非常强大,拥有当今可用计算资源的黑客将需要数十亿年的时间才能破解它们。这里的加密算法允许用户独家控制授权他们的交易。

 

示例 #2:加密哈希函数

 

Image

 

比特币区块链上的一个区块有一个标题。标头包含几条信息,其中包括前一个块的哈希。这在两个区块之间建立了联系,给人以链条的印象。

 

如果黑客试图更改现有区块怎么办?他/她必须在更改区块后更改区块的加密哈希。没有它就会有异常,而比特币网络的透明性将使每个人都能发现它。

 

每当您对一条数据运行加密哈希函数时,您都会得到一个加扰的值。无法从哈希中重新创建输入值。对输入值的任何更改都会产生完全不同的哈希值。

 

因此,黑客最终会为更改的区块创建一个完全不同的哈希值。该块在后续块中有一个散列引用。黑客现在需要更改后续块以反映新的哈希值。如您所见,他/她必须为所有后续块继续此过程!

 

比特币网络上的“矿工”会立即注意到这些操纵活动。这使得几乎不可能破解比特币区块链。

 

问题 6:

是什么让使用区块链

成为一种值得信赖的方法?

答:传统商业/组织环境中的信任概念在很大程度上取决于人际信任。如果 A 知道 B 在诚信方面有着无可挑剔的记录,那么 A 会信任 B。
 

 

区块链从根本上改变了这种方法。它依赖于 A 不需要明确信任 B 的前提。相反,B 的凭证将在数学上得到证明。这些证书将接受所有人的审查。这种透明度将提供信任因素。

 

区块链的以下特性使之成为可能:

 

公共区块链网络对所有人开放。任何人都可以加入此类网络并查看所有记录。

 

公共区块链网络上的所有节点都具有平等的权限,因此不能操纵其他节点。

 

区块链是一种分布式账本。所有交易在所有节点上都可用,因此,关闭一个节点不会破坏网络。

 

数字签名、加密哈希函数和共识算法等安全措施使区块链网络上的记录不可变。这使黑客远离。

 

区块链符合开源标准。任何人都可以查看代码,从而进一步提高透明度。

 

私有区块链网络不同于公共区块链。它们只允许受信任的方加入网络,但是,它们实施了严格的透明度和安全措施。

 

问题 7:

为什么有些加密货币使用“默克尔树”?

答:比特币和其他几种加密货币使用“默克尔树”的概念。“默克尔树”是一种具有特定特征的数据结构。一些区块链网络使用它来安全地编码数据,此外,这有助于有效地编码数据。
 

 

像比特币这样的区块链网络将交易的加密哈希存储在一个块中。该哈希值有助于网络上的矿工验证交易数据的真实性。但是,矿工不使用此哈希来重新创建原始交易。

 

此过程的工作方式如下:

 

加密散列函数为每笔交易创建散列。

 

两个交易的哈希值被组合在一起,哈希函数在这个组合上运行。这会创建另一个哈希。

然后组合两个这样的二级哈希。加密散列函数在这个组合上运行,产生另一个散列。

这个过程一直持续到为整个块创建一个哈希为止。

 

当我们在视觉上表示它时,它看起来像一棵树。这就是为什么我们称它为“默克尔树”。用户无需下载整个区块链即可验证一笔交易。整个区块链网络可以非常大,使用“Merkle Tree”可以更轻松地进行验证。

 

问题 8:

区块链网络有哪些不同类型?

答:区块链网络有3种类型,分别是:
 

 

1

公共区块链网络

 

任何人都可以加入这些区块链网络。所有参与者都可以查看所有交易和区块,此外,所有节点在这些网络上具有同等的权限。这些网络可能会根据其设计使用不同的共识算法。加密货币使用公共区块链网络,例如比特币和瑞波币。

2

私有区块链网络

 

这些网络只允许受信任的参与者加入。我们也称它们为“许可”区块链。企业大多使用这种类型的区块链网络,因为它们只能允许受信任的方查看记录。因此,我们也将这些区块链网络称为“企业区块链”。Hyperledger Fabric 是创建企业区块链网络的流行框架。

3

联盟区块链网络

 

这些网络只允许特定节点控制共识过程。所有其他参与者都可以查看分布式账本。瑞波币就是这种网络的一个例子。

 

问题9:

提供流行的公共区块链平台的例子?

答: “区块链平台”一词是指可以创建区块链应用程序的平台。既有公共区块链平台,也有企业区块链平台。

 

流行的公共区块链平台示例如下:

 

Image

 

ETH;

NEO;

EOS

RSK(Rootstock);

Cardano(ADA)。

 

以太坊是最受欢迎的公共区块链平台。

 

问题 10:

以太坊区块链上的智能合约是什么?

答:以太坊允许用户将以太币发送给其他用户。然而,以太坊也允许开发者创建应用程序。它为此提供了“以太坊虚拟机”(EVM)。EVM 是以太坊上智能合约的运行时环境。

 

智能合约是具有以下特征的代码片段:

 

它们是开源的。

它们包含“If-Else-Then”语句,以根据预定义的条件引导程序的控制。

智能合约允许用户根据预定义的条件将加密代币转移给另一个用户。

它们是自治的,即它们在满足触发条件时自动执行。

智能合约存储在区块链上。您无法在部署后对其进行修改。

智能合约执行的输出存储在区块链上,因此它们的执行是不可逆的。

 

问题 11:

解释被称为“DApps”

的区块链应用程序的特征

答: “ DApps”或“去中心化应用程序”是使用区块链平台创建的应用程序。它们具有以下特点:

 

这些是开源应用程序。

可以使用任何技术创建 DApp 的前端,但是,后端必须由智能合约组成。

DApp 必须在去中心化的区块链网络上运行。

DApp 必须使用使用已建立的加密标准创建的加密令牌。

DApp 必须将数据存储在去中心化的区块链上,并且该过程必须遵循既定的加密标准。

没有一个用户可以控制 DApp 中使用的大多数加密令牌。

只有在用户社区就这一改变达成共识后,才能改变 DApp。

 

面向中级开发人员的区块链面试问答
 

如果您打算聘请中级区块链开发人员,请使用以下面试问题:

 

问题 12:

提及一些最流行的密码算法

答:几种流行的密码算法如下:

 

SHA-256;

RSA;

Triple DES;

Ethash;

Blowfish.

 

请注意,比特币区块链网络使用 SHA-256 算法。

 

问题 13:

解释你在 Solidity 文件中编码的第一件事。

答:Solidity 是在以太坊平台上编写智能合约的专有语言,它有自己的语法和约定。程序员必须在代码开头提及 Solidity 版本号。

 

Image

 

这有助于在使用另一个版本的 Solidity 编译程序时消除与兼容性相关的错误。开发人员还应该提及他们程序的版本号,这是一个很好的编程习惯。

 

问题 14:

您可以使用哪些云计算平台

来托管企业区块链网络?

答:您完全自己创建一个企业区块链,或者,您可以使用像Hyperledger Fabric这样的企业区块链框架。

Image

与以太坊等公共区块链平台不同,您需要托管您的企业区块链网络。著名的云计算提供商为此提供了“区块链即服务”(BaaS)平台。

 

一些流行的 BaaS平台如下:

 

“AWS 上的区块链”;

“微软 Azure 区块链”;

“IBM 区块链平台”。

 

这些 BaaS 平台管理基础设施方面,因此,您可以专注于应用程序开发。

 

问题 15:

以太坊区块链网络有哪些不同类型?

答:我们有以下 3 种以太坊区块链网络:

 

1

主网络

 

这是主要的以太坊区块链网络。以太 (ETH) 是该网络上的原生加密货币,所有交易都需要 ETH。我们也称这个网络为“主网”。程序员在这个网络上部署以太坊智能合约。

2

测试网络

 

这些是用于测试智能合约的以太坊网络。开发人员不需要花费真正的 ETH 在这些网络上运行智能合约。一些例子是 Ropsten、Rinkeby、Kovan 等。

3

私有以太坊网络

 

以太坊允许组织实施私有区块链。组织将在其本地基础设施上运行此类网络。或者,他们可以将它们部署在他们选择的云平台上。

 

问题16:

提供一个智能合约验证工具的例子

答:智能合约部署后不能修改。这会带来风险,您需要重点关注代码的质量。
 

 

测试可以提供帮助。这还不够,因为测试无法找到所有错误。您需要验证智能合约。智能合约的手动验证需要大量时间,这使得验证工具变得很重要。

 

微软提供“ Verisol ”,一种智能合约验证工具。该名称代表“Solidity 验证器”,它在数学上验证智能合约是否会按预期工作。微软也将其作为 Azure Blockchain Workbench 的一部分提供。

 

资深区块链开发者面试题
 

在采访高级区块链开发人员时,请查看以下问题:

 

问题 17:

以太坊上的“Gas”是什么?

答:您需要在以太坊主网上支付费用才能执行任何智能合约。智能合约部署也需要支付这笔费用。我们称之为“气体”。

 

“Gas”以 ETH 的分数来衡量,称为“gwei”。交易的“Gas”取决于交易所需的存储量,此外,它也取决于代码。复杂的操作需要更多的“气体”。

 

问题 18:

解释您将如何使用

以太坊生态系统工具

开发和部署以太坊智能合约。

答:您可以使用多种工具开发和部署以太坊智能合约。一种常见的方法如下:

 

使用testRPC,一种用于以太坊开发的流行区块链客户端。

使用 MetaMask,一种通过智能合约与以太坊区块链通信的工具。

连接到 Ropsten 测试网络以测试您的智能合约。

使用 Solidity 编程语言和 Remix IDE(“集成开发环境”)编写智能合约。

使用 MetaMask 获取 Ropsten 测试 ETH,并将您的智能合约部署到 Ropsten。

测试智能合约。

使用“eth-lightwallet”,一种用于持有以太币的加密货币钱包。设置您的私钥和公钥。

使用流行的以太坊 JavaScript API Web3js。您可以使用它与本地或远程以太坊节点进行交互。按照 Web3js的Github说明进行配置。

安装Truffle,这是一种流行的测试和部署智能合约的工具。

使用“truffle deploy”命令在以太坊主网上部署你的智能合约。

 

问题 19:

您将如何在 Hyperledger Fabric 上

部署以太坊智能合约?

答:Hyperledger Fabric 是一个企业区块链框架。它允许您编写“链码”,即 Fabric 术语中的智能合约。在 Hyperledger Fabric 上部署以太坊智能合约可能很困难,但是,有这方面的教程。

 

这涉及以下内容:

 

在您选择的 BaaS 平台(例如 AWS)上安装 Hyperledger Fabric 框架。

安装所需的工具,例如:

cURL:将文件从一台服务器传输到另一台服务器的工具;

Docker:创建包并部署它们的容器;

编程语言:Fabric 允许使用 Golang 或 Node.js 进行编码。

安装二进制文件、示例和 Docker 映像。

安装 Fabric “以太坊虚拟机” (EVM) 链码。

配置 Fabric EVM 链码。

使用 Remix IDE 编写 Solidity 智能合约。

使用相关指南在 Fabric 上编译、测试和部署智能合约。

 

问题 20:

如何使用 Node.js 创建区块链应用程序?

答: Hyperledger Fabric,流行的企业区块链框架,允许您使用Node.JS创建区块链应用程序。采取以下步骤:

Image

选择一个 BaaS 平台,例如“IBM Blockchain Platform”。

在您选择的 BaaS 平台上安装 Hyperledger Fabric 框架。

熟悉Hyperledger Fabric Node.js SDK(“软件开发工具包”)。

 

遵循您选择的 BaaS 平台的文档。不同的 BaaS 平台遵循其约定和标准来使用它们开发区块链应用程序。例如,如果您选择此平台,则需要遵循IBM Blockchain Platform 文档。

 

按照上述文档创建、测试和部署您的区块链应用程序