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

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

作者: V_爱一世春秋 | 来源:发表于2018-11-13 12:53 被阅读0次

    前言

    前段时间公司一直在搞以太坊,现阶段在做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')。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/ynbkfqtx.html