年薪百万的技术面试都问啥?来收下这份必考题葵花宝典吧|套路

640?wx_fmt=gif


随着各大企业纷纷布局区块链,各行业对区块链人才求贤若渴,区块链从业者的待遇也是水涨船高。


动辄百万的年薪+通证激励,不知你是否已经蠢蠢欲动。不过区块链涉及的领域既多且杂,在面试中你不仅需要有牢固的知识储备,还需要一本“面试葵花宝典”以防万一。


话不多说,上干货。

作者 | John Baker

译者 | Guoxi


话说,区块链行业对人才的缺口越来越大,但由于区块链涉及的知识领域较为广泛,能找到真正有用的人才对每个企业来说都非常不易。


另一方面,由于区块链行业「待遇高」、「前途好」,很多人以次充好,做了几天开发就敢自成专家。那么真正的区块链人才究竟应该具备哪些知识?


作为想要在区块链领域发展的你,又该如何通过区块链企业的技术面试?俗话说知己知彼百战不殆,了解了企业的面试套路,才能迈出区块链的决胜的第一步。


640?wx_fmt=jpeg

本篇文章「套路满满」,营长将从各方了解到的企业常见的面试问题着手,从「区块链」、「智能合约」、「Solidity」、「DApp」、「Web 3.0、「核心技术」、「函数」等几个方面,列出在面试技术岗位中最常问的问题,并给出标准的技术解答


是月薪八千,还是百万年薪,就看你能记住多少了,营长只能帮你到这了~


640?wx_fmt=jpeg




01

区块链面试真经


(1)以太坊常见问题


问:在以太坊中,Wei和Ether(以太币)有什么区别?

答:Wei是以太币的最小面值,就好比说人民币的最小面值是分,英镑的最小面值是便士。 其换算关系为1以太币 =10^18Wei。


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

答:平均区块间隔时间为14秒,当然了这只是理论值,你可以在Etherscan

(https://etherscan.io/chart/blocktime)

中查到每日的平均区块时间间隔。


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

答:区块大小视情况而定,大约是2KB。不同于比特币使用区块大小来规定区块的交易量上限,以太坊使用燃料(gas)限制。燃料限制决定了每个区块中处理的交易量、存储/带宽的上限,因为交易和智能合约中函数的执行都要根据指令的复杂度多少来付出相应的燃料,所以使用燃料限制来约束区块大小是可行的。


燃料限制会随网络的波动和矿工的意愿变化,每个矿工都可以选择自己愿意接受的燃料价格。燃料价格就像是比特币中的交易费,只是这里的价格是最小单位燃料的价格,而不是每笔交易的价格。


想要算出一个区块中可以容纳多少笔交易,你不需要清楚地知道燃料的价格,只需知道平均每笔交易使用多少燃料并用整个燃料限制除以它即可。


去年以太猫的发行造成了以太坊网络的大拥堵,整个网络中充斥着大量未被处理的交易。在这种情况下矿工有两种选择。他们可以投票提高燃料限制来处理更多交易,也可以开始提高自己的燃料价格标准并拒绝处理燃料费用过低的交易。


与比特币一样,即使燃料价格很低的交易也可能会被处理加入区块链中,但矿工肯定会先处理完燃料价格高的交易再处理它。如果你的交易并没有那么紧急,设置一个很低的燃料价格也不是不可以,就像我们现实生活中的“花时间来节省金钱”。


如果有恶意用户持续地发起海量交易堵塞网络,全网的交易成本就会越来越高,直到这个恶意用户用完资金或者矿工赚足了交易费并决定扩大网络容量。


问:以太币是如何产生的?

答:2014年以太坊项目以众筹的形式创建并预售了6000万个以太币,除此之外,矿工挖矿也会生成新的以太币。


问:以太坊中的节点是什么?

答:从本质上来说,节点是一台连接到区块链、可以处理交易的计算机。


问:以太坊都有哪些网络?

答:以太坊共有三种类型的网络:以太坊主链(就是我们平时用的以太坊)、以太坊测试网络(如Ropsten和Rinkeby,供开发人员的学习和测试)和以太坊私有链(也叫以太坊私有网络,任何人都能用以太坊的代码部署自己的私有链)。


问:与以太坊网络交互都哪些方法?

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


问:你是否能在以太坊中“隐藏”一笔交易?

答:不能。以太坊区块链中所有的交易都是公开可见的。


问:以太坊的交易记录存放在哪里?

答:在公共可见的账本中,这个帐本通常被称为区块链。


问:以太坊主链已经很强大了,为什么还要使用以太坊私有链?

答:原因有很多,主要是因为数据涉及隐私,将数据库去中心化,权限控制和测试。


问:如何查看一笔交易或一个区块的详细信息?

答:你可以使用区块链浏览器,如etherscan.io或live.ether.camp。

 

问:如何查看私有链中一笔交易或一个区块的详细信息?

答:一些开源的区块链浏览器满足这种需求,如etherparty推出的区块链浏览器

(https://github.com/etherparty/explorer)。


问:区块链的共识过程是什么?

答:共识是按照特定的协议(如以太坊的协议)验证交易,将交易打包进区块并加入区块链的过程。


问:以太坊挖矿操作的工作原理是什么呢?

答:从原理上说,以太坊中的挖矿操作几乎与比特币相同。


640?wx_fmt=jpeg

“套路”


简单地说,就是对于每个包含交易的区块,矿工使用计算机反复且非常快速地试验谜题的答案,直到有一个矿工猜对谜题。


更具体地说,矿工将当前区块唯一的区块头元数据(包括时间戳和软件版本)和一个随机数(nonce value)作为哈希函数的输入,函数将返回一个固定长度、看起来像是由数字和字母随机组成的乱码,叫做哈希值。哈希函数的特性是不同输入对应不同的哈希值,因此矿工仅需改变随机数的值,就会得到一个完全不同的哈希值。


如果算出来的哈希值小于当前的目标值(挖矿难度),则这个矿工就挖出了一个区块,他会获得一些以太币奖励,然后通过向全网络广播该区块,其他节点可以验证该区块中的交易,验证通过后将该区块加入到本地区块链的副本中。也就是说,如果矿工B算出了一个哈希值,矿工A将立刻停止当前区块的哈希值计算,把B挖出的区块加入区块链中并开始新一轮的哈希值计算。


矿工们很难在这场算力竞争中作弊。为了得到迷题的答案,除了一个个试没有更好的办法,也没有伪造这些计算工作的可能,这就是该解谜方法被称为“工作量证明”的原因。


从另一方面来说,用户不需要来验证哈希值是否正确,因为每个节点都已验证过。


一般来说,每12到15秒就会有一个矿工挖出一个新区块。如果矿工解谜的时间开始出现更快或更慢的倾向,算法会自动调整问题的难度,以使矿工解谜的时间稳定在14秒左右。


矿工有一定几率能挖到新区块赚取以太币奖励,他们的赚钱能力取决于运气和他们投入的计算能力。


以太坊使用的工作量证明算法被称为“ethash”,它被设计的需要更多内存,从而增大了使用昂贵的ASIC矿机挖矿的难度,因为ASIC矿机的出现严重压榨了使用其他设备矿工的收益,以至于在比特币中唯一能盈利的挖矿形式就是使用这种定制化的芯片。


从某种意义上来说,ethash可能已经成功实现了这一目标,因为专用的ASIC矿机不能用于挖掘以太坊(至少目前还没有)。


此外,由于以太坊将要从工作量证明挖矿逐步过渡到权益证明挖矿,因而购买ASIC矿机可能不是一个明智的选择,因为一旦以太坊转向权益证明它必将被淘汰。


问:区块链中最常用的两种共识协议是什么?

答:工作量证明(PoW)和权益证明(PoS),业界也在不断涌现新的共识协议,比如说活动证明(Proof-of-Activity,PoA)。


问:请简述权益证明的工作原理。

答:权益证明就是根据持有货币的数量和时间随机选择区块的创建者,它不是计算密集型的挖矿形式。


问:以太坊使用哪种共识协议呢?

答:截至2018年初,以太坊使用工作量证明建立共识,但在未来它将转向权益证明。


活动证明在比特币的工作量证明中引入了一种新形式的激励结构,这种混合结构结合了工作量证明和权益证明。为避免系统出现恶性通货膨胀,应该停发新的加密货币,也就是说矿工的挖矿行为不再能拿到挖矿奖励。


这样系统中的加密货币数量就恒定了。在活动证明中,矿工使用工作量证明产生区块,加密货币的持有者通过权益证明签署区块,交易费将按比例分给矿工和签署该块的验证人。


问:签署一笔交易需要用到什么工具?

答:用户的私钥。


问:在私钥丢失后,用户是否还可以恢复以太坊帐户?

答:是的,用户可以使用12字助记词恢复。


问:用什么方法可以连接到以太坊节点?

答:IPC-RPC,JSON-RPC和WS-RPC(RPC指Remote Procedure Call,远程过程调用)。


问:以太坊中异常火爆的Geth是什么呢?

答:Geth是以太坊的一个命令行客户端。


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

答:默认情况下使用IPC-RPC,禁用其他所有的RPC。


640?wx_fmt=jpeg

问:Geth客户端中都有哪些API(Application Programming Interface,应用程序编程接口)?

答:Admin(管理员)、 eth(以太币)、web3、miner(矿工)、net(网络)、personal(个人)、shh、debug(调试)和 txpool(工具)。


问:你可以使用哪些RPC通过网络连接到Geth客户端?

答:你可以使用JSON-RPC或WS-RPC通过网络连接到Geth客户端。 IPC-RPC只能用来连接本地部署的Geth客户端。


问:如果你输入命令“--rpc”,启用的是哪一个RPC?

答:JSON-RPC。


问:默认情况下哪些RPC API是启用的?

答:eth(以太币)、 web3和net(网络)。


问:如何为JSON-RPC启用admin api?

答:输入命令“--rpcapi”。


问:命令“--datadir”有什么功能?

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


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

答: “快速”同步仅下载收款交易所在的区块,并拉取(pull)整个最近状态数据库,而不是像普通同步一样,下载整个区块链的数据并重放所有发生的交易。


问:命令“--testnet”有什么功能?

答:它将客户端连接到以太坊Ropsten测试网络。


问:启动Geth客户端会在屏幕上打印大量的输出信息,如果不想被这些繁杂信息干扰该怎么办?

答:使用“--verbosity”命令调低输出信息复杂度的值(默认值为3)。


问:如何使用IPC-RPC连接两个Geth客户端?

答:首先启动一个Geth客户端,复制其管道位置(pipe location),然后使用相同的数据文档存储目录(datadir)启动另一个Geth客户端,并使用”--attach”命令传递复制的管道位置。


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

答:输入”--preload”命令和文件的路径即可。


问:Geth客户端中帐户存储在哪里?

答:存储在密钥库(keystore)目录中。


问:如何使用给定的账户发起一笔交易?

答:首先你要在“--unlock

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值