常问以太坊区块链开发技术岗位的试题,附参考答案。

前言

前段时间公司一直在搞以太坊,现阶段在做EOS,总结之前以太坊开发的相关知识,同时汇总了各方以太坊面试题,梳理在此,以备不时之需,需要的朋友请自取,哈哈。

智能合约

基本概念、Solidity开发语、去中化 应用DApp、web3.js开

发库等。

以太坊

问:以太坊的有价通证叫什么?

答:以太(ETH:Ether)

问:Wei和以太有什么区别?

答:Wei是一个面额,像美分到美元或便士到磅。 1 ETH

=10^18 Wei

问:以太坊的平均出块时间是多少?

答:约14秒

问:以太坊的平均块大小是多少?

答:约2KB,实际值取决于具体情况。

问:以太坊是否支持脚本? 如果是这样,支持什么类型的脚

本?

答:是的。 它支持智能合约

问:你如何得到以太?

答:有多种法: 

1.成为一名矿工

2.其他货币换取

3.使用以太Faucet,例如

https://faucet.metamask.io

4.接受别人的赠送

问:以太从哪里来的?

答:在2014年预售中⾸次创建了6000万个。另外,在挖出新块

时也会生成以太。

问:什么是节点?

答:一个节点本质上是⼀台连接到⽹络的计算机,它负责处理交

易。

问:你熟悉多少种以太坊网络?

答:有三种类型的网络 - 实时网络(主),测试网络(如

Ropsten和Rinkeby)和私有网络。

问:与以太坊网络交互的几式有哪些?

答:可以使用电子钱包或DApp

问:你可以“隐藏”一个以太坊交易吗?

答:不可以。所有交易对每个人都是可见的。

问:交易记录在哪里?

答:在公共账本上。

问:这些网络的ID是什么?

答:Live(id = 1),Ropsten(id = 3),Rinkeby(id =

4),Private(由开发人员分配)

问:我可以在Rinkeby测试⽹络中挖⼀些以太,然后转移到Live

网络吗?

答:不可以。不能在不同的以太坊⽹络之间传递以太。

问:为什么需要私有网络?

答:有很多原因,但主要是为了数据隐私、分布式数据库、权限

控制和测试。

问:简单地解释下工作量证明。

答:它实际上是矿工为了证明自己的工作量并验证交易而对一个

计算密集型问题的求解。

问:以简单的方式解释权益证明。

答:区块的创建者是根据节点所持有的财富和股权随机选择的。

它不是计算密集型的。

问:以太坊使用什么共识模式?

答:截止2018年初,它使用工作量证明,但今后将切换到权益

证明。

问:用什么来对交易进行签名?

答:用户的私钥。

问:丢失私钥后还能恢复以太坊账户吗?

答:可以,可以使用助记词组。

以太坊节点软件(Geth)

问:有哪些方法可以连接到一个以太坊节点?

答:IPC-RPC、JSON-RPC和WS-RPC。

问:那么Geth是什么?

答:Geth是以太坊的客户端。

问:连接到geth客户端的默认方式是什么?

答:默认情况下启用IPC-RPC,其他RPC都被禁用。

问:你知道geth的哪些API?

答:Admin、eth、web3、miner、net、personal、shh、

debug和txpool。

问:选项-datadir有什么作用?

答:它指定了区块链的存储位置。

问:什么是geth的“快速”同步,为什么它更快?

答:快速同步会将事务处理回执与区块一起下载并完整提取最新

的状态数据库,而不是重新执⾏所有发生过的交易。

问:选项--testnet是做什么的?

答:它将客户端连接到Ropsten网络。

问:启动geth客户端会在屏幕上输出大量文字,应该如何减少输

出信息?

答:可以将--verbosity设置为较低的数字(默认值为3)

问:如何将自定义javascript文件加载到geth控制台中?

答:通使用--preload选项传入js文件的路径。

问:geth客户端的帐户存储在哪里?

答:在keystore目录中。

问:为了进行交易,需要对账户进行什么操作?

答:必须先解锁该账户 - 可以传入账户地址或账户序号来解

锁。 也可以使用--password选项传入一个密码文件, 其中包

含每个账户的密码。

问:你提到了一些有关账户序号的内容。 什么因素决定账户的

序号?

答:添加帐户的先后顺序。

智能合约和Solidity

问:什么是智能合约?

答:这是用多种语言编写的计算机代码。 智能合约存在于以太

坊网络上,它们根据预定规则执行动作,规则是由 参与者在这

些合约中商定的。

问:智能合约可以使用哪些语言编写?

答:Solidity,这是最常用的语言,也可以使用Serpent和LLL。

问:什么是Metamask?

答:Metamask是可以帮助用户在浏览器中与以太坊网络进

行交互的工具

问:Metamask使用哪个以太坊节点?

答:它使用infura.io

问:访问智能合约的状态是否免费?

答:是的,查询状态不是交易。

问:为什么需要gas?

答:由于矿工在他们的机器上执行合约代码,他们需要gas来覆

盖执行合约代码的成本。

问:是不是gas的价格决定了交易什么时候被处理?

答:即是,也不是。 gas价格越高,交易成功的可能性就越大。

尽管如此,gas价格并不能保证更快的交易处理。

问:交易中的gas使用量取决于什么?

答:这取决于合约所用的存储量、指令(操作码)的类型和数

量。 每个EVM操作码都对应⼀个固定的gas工量。

问:交易费是如何计算的?

答:gas用量*gas价格(由调用方指定gas价格)

问:如果智能合约的执行成本低于调于方指定的gas用量,用户

是否得到退款?

答:是的

问:如果智能合约的执行成本高于指定的gas用量,会发生什么

情况?

答:用户不会得到退款,并且一旦所有的gas用完,执行就会停止,合约也不会改变。

问:粗略的说,EVM有哪些组成部分?

答:内存区域、堆栈和执行引擎。

问:什么是Remix?

答:开发,测试和部署合约的在线⼯具。 适合快速构建和测试

轻量级合约,但不适合更复杂的合约。

问:在Remix中,可以连接哪些节点?

答:可以使用Metamask连接到公共节点、也可以链接到使用

Geth搭建的本地节点,或者在Javascript VM中模拟的内存节

点。

问:什么是DApp,它与App有什么不同?有什么不同?

答:App通常包含一个客户端,这个客户端会与一些中心化的资

源(由一个组织拥有)进行通信, 通常客户端通过一个中间层

连接到中心化的数据层,如果中心化的数据层中的信息丢失,不

能很轻松地恢复。 DApp表示去中心化应用程序。 DApps通过

智能合约与区块链⽹络进行交互。 DApp使用的数据驻留在合约

实例中。 中心化数据可能比去中心化数据更容易受到破坏。

DApps和web3

问:DApp的前端是否局限于某些技术或框架?

答:不受限制。可以使⽤任何技术来开发DApp的前端,比如

HTML,CSS,JS,Java,Python...

问:前端用什么库连接后端(智能合同)?

答:Web3.js库。

问:在DApp的前端需要哪些东西才能与指定的智能合约进行交

互?

答:合约的ABI和字节码。

问:ABI有什么作用?

答:ABI是合约的公开接⼝描述对象,被DApps用于调用合约的

接⼝。

问:字节码有什么作用?

答:节点上的EVM只能执行合约的字节码。

问:为什么要使用BigNumber库?

答:因为Javascript不能正确处理⼤数。

问:.call和.send有什么区别?

答:.send发送交易并支付费用,而.call查询合约状态。

问:这样发送1个以太对吗:

.send({value:1})?

A:不对,这样发送的是1 wei。 交易中总是以wei为单位。

问:那么为了发送1个以太,我必须将这个值乘以10^18?

答:可以使用

web3.utils.toWei(1,'ether')。

你可能感兴趣的:(常问以太坊区块链开发技术岗位的试题,附参考答案。)