主页 > imtoken用什么id下载 > 快问快答,以太坊技术求职面试终极必答题
快问快答,以太坊技术求职面试终极必答题
本文约5400字+以太坊私钥是多少位,阅读(观看)需31分钟
Q:以太坊的价值代币是什么?
答案:(以太坊)
Q:Wei 和 ETH 有什么区别?
A: 魏是一种面额,比如美分兑美元或便士兑英镑。 1 ETH = 10¹⁸ 微
问:以太坊的平均出块时间是多少?
答:14秒
问:以太坊的平均区块大小是多少?
答:大约2KB。
问:以太坊支持脚本吗? 如果是这样,什么类型的脚本?
答:是的。它支持智能合约
问:你如何获得ETH?
答:有几种方法:
1.成为矿工
2.交易其他货币
3.以太网分路器如
4. 从他人那里接收以太币
问:ETH从哪里来?
A:2014年预售首发6000万。 此外,ETH 是在开采区块时创建的。
问:什么是节点?
答:节点本质上是一台连接到网络的处理交易的计算机。
问:您熟悉多少个以太坊网络?
A:网络分为三种类型——实时网络(主要)、测试网络(例如 Ropsten 和 Rinkeby)和私有网络。
问:与网络交互的方式有哪些?
A:您可以使用电子钱包或DApp
问:你能“隐藏”一笔交易吗?
答:不可以。所有人都可以看到所有交易。
Q:交易记录在哪里?
答:在公共分类账上。
问:这些网络的 ID 是什么?
答案:Live(id=1)、Ropsten(id=3)、Rinkeby(id=4)、Private(开发者分配)
问:所以我可以在 Linkoby 中挖一些 Ether,然后将它们转移到 Live 网络,对吗?
答:不,您不能在网络之间传输以太网。
问:为什么要有专用网络?
A:原因有很多,但主要是因为数据隐私、分布式数据库、访问控制和测试。
Q:如何方便的查看交易和区块的详细信息?
A:使用像 etherscan.io 或 live.ether.camp 这样的区块链浏览器
问:私有网络呢?
答:您可以使用开源浏览器客户端,例如
Q:区块链的共识是什么?
答:遵循特定协议(如以太坊)验证交易(创建区块)的过程。
Q:区块链中常用的两种共识模型是什么?
答:工作证明和利益证明。
问:用简单的方式解释工作量证明。
A:这实际上是矿工为了生成工作证明和验证交易而必须解决的难题。
问:用简单的方式解释股权证明。
A:区块的创建者是根据财富和年龄(stake)随机选择的。 它不是计算密集型的。
问:以太坊使用什么共识模型?
A:截至 2018 年初,它使用工作量证明,但将切换到股权证明。
问:如何使用以太币?
A:使用钱包或geth cli
问:用什么来签署交易?
答:用户的私钥。
Q:私钥丢失后可以找回以太坊账户吗?
答:是的,您可以使用 12 个字符的助记符。
Q:连接节点有哪些方式?
答:IPC-RPC、JSON-RPC 和 WS-RPC。
问:那么 Geth 是什么?
答:Geth 是 Ethereum cli 客户端。
问:连接到 geth 客户端的默认方式是什么?
A: IPC-RPC 默认是开启的,其他的 RPC 都是关闭的。
问:你知道哪些 geth API?
答:Admin, eth, web3, miner, network, personal, debug 和 txpool。
问:您可以使用哪些 RPC 通过网络连接到 geth 客户端?
A:可以使用JSON-RPC和WS-RPC通过网络连接geth客户端。 IPC-RPC 只能连接到同一台机器上的 geth 客户端。
问:如果你传递选项 -rpc 启用哪些 RPC?
答:JSON-RPC。
问:默认启用哪些 RPC API?
答:eth、web3 和 net。
问:如何为 JSON RPC 启用管理 API?
答案:通过使用选项 -rpcapi
问:选项-datadir 有什么作用?
A:它指定了区块链的存储位置。
问:geth 的“快速”同步是什么,为什么更快?
答:Fast Sync 不是一次处理整个区块链一个链接并重放所有发生的交易,而是下载交易收据和区块并获取整个最新状态数据库。
问:测试网有什么用?
答:它将客户端连接到 Ropsten 网络。
问:启动 geth 客户端会在屏幕上转储大量输出。 你会如何降低噪音?
A:通过将详细程度设置为较低的数字(默认为 3)
问:如何使用 IPC-RPC 将一个 geth 客户端连接到另一个客户端?
A: 首先启动一个 geth 客户端,复制它的管道位置,然后用相同的 datadir 启动另一个 geth 客户端并通过 -append 到管道位置。
问:如何将自定义 javascript 文件加载到 geth 控制台?
答:通过传递 -preload 和文件路径。
问:geth 客户帐户存储在哪里?
答:在密钥库目录中。
Q:您为了交易与账户有什么关系?
答:您必须解锁帐户 - 通过传递帐户地址或索引。 您还可以指定一个密码文件,其中所有密码都驻留在每个帐户中。
问:你提到了一些关于索引的事情。 什么决定了账户指数?
A:您添加帐户的顺序。
Q:可以用geth挖矿吗?
A:是的,通过——我的选择。
问:什么是“etherbase”?
答:这是接收挖矿奖励的账户,即索引为0的账户。
问:那么什么是智能合约?
答:这是用多种语言编写的计算机代码。 网络上存在智能合约。 他们执行规则并执行行动以太坊私钥是多少位,并且由参与者在这些合同中进行谈判。
Q:智能合约可以用什么语言编写?
答:Solidity,这是最常用的语言,Serpent和Lisp Like Language
问:智能合约用例示例?
答:在买卖双方场景中,买方在智能合约中存入资金,卖方看到存款并发货,买方收到货物并放行付款。
问:什么是 Metamask?
答:Metamask 是一个工具,可以帮助您在浏览器中轻松地与以太坊网络进行交互
问:Metamask 使用哪个节点?
答:它使用 infura.io
问:Metamask 不支持什么?
A:挖矿和合约部署。
Q: 执行合同是免费的吗?
答:不是,调用一个合约方法是一个事务。
Q:访问智能合约状态是免费的吗?
A:是的,查询状态不是交易。
问:谁来执行合同?
答:矿工。
Q:为什么在智能合约上调用方法需要花钱?
答:有些方法不会修改合约的状态,没有其他逻辑,除了返回一个值外,都是免费的。
除了使用 ETH 作为支付方式之外,调用改变状态的方法也会产生成本,因为它们需要 gas 才能执行。
问:为什么更准确地说是有气?
答:由于矿工在他们的机器上执行合约代码,他们必须通过执行调用者请求的代码来承担他们的成本。
Q:gas价格是在交易处理的时候确定的吗?
回答:是和不是。 gas价格越高,交易挖矿的可能性就越大。 尽管如此,天然气价格并不能保证更快的交易处理。
问:一笔交易中的gas用量取决于什么?
A: 这取决于存储量、指令类型和数量(可选代码)。 每个 EVM 可选代码都有固定数量的气体。
问:交易费用是如何计算的?
答:使用的gas * gas price(调用方指定)
Q:如果智能合约的执行成本低于指定的gas,用户会得到退款吗?
答:是的
问:如果智能合约的执行成本高于指定的 gas 会怎样?
A:用户没有得到退款,一旦所有gas用完并且合同没有改变,执行就会停止。
问:谁为智能合约调用付费?
答案:调用合约的用户。
Q:运行智能合约代码的节点有哪些?
答:EVM——以太坊虚拟机。 EVM 遵循作为以太坊协议一部分的 EVM 规范。 EVM 只是节点上的一个进程。
问:EVM 需要什么才能运行智能合约?
A:需要合约的字节码,通过Solidity等更高级的语言编译生成。
问:更高级别的 EVM 部件是什么?
答:内存区、栈和执行引擎。
问:什么是混音?
A:用于开发、测试和部署合约的在线工具。 它非常适合快速构建和测试轻量级合约,但不适合更复杂的合约。
Q:在混合中,你可以连接哪些节点?
答:您可以使用 Metamask 连接到公共节点,使用 Geth 中的本地节点,以及 Javascript VM 中的模拟内存节点。
问:什么是 DApp,为什么它与普通应用程序不同?
答:应用程序通常由与某些集中资源(由组织拥有)通信的客户端组成。
有一个中间层连接到集中式数据层。 如果集中数据层中的信息丢失,则无法(轻松)恢复。
DApp 代表去中心化应用程序。 DApps 通过智能合约与网络交互。 他们使用的数据驻留在合约实例中。
集中式数据比分散式数据更容易受到损害。
Q:DApp的前端是否受限于任何技术/框架?
答:不。您可以使用任何您想要的东西,例如 HTML、CSS、JS、Java、Python,等等。
问:用于连接后端(智能合约)的前端是什么?
答:Web3 API 库。
问:为了与 DApp 中的合约进行交互,你需要什么?
答:合约的ABI和字节码。
问:ABI 有什么用?
答:ABI是对DApp调用合约的合约公共接口的描述。
问:什么是字节码?
A:每个节点上的EVM都需要字节码来执行合约代码。
问:为什么要使用 BigNumber 库?
答:因为 Javascript 不能正确处理大数字。
Q:为什么在Web DApp代码的开头需要一直检查web3 provider是否设置?
答:因为 Metamask 注入它并用它自己覆盖其他 web3。
问:为什么使用版本 web3 js 1.x 而不是 0.2xx?
答:主要是因为它使用 promises 而不是异步调用的回调,这在 javascript 世界中是首选。
Q: 如何在 web3 1.x 中列出帐户?
答案:web3.eth.getAccounts。
问:.call 和 .send 有什么区别?
A:.send发送交易并支付费用,.call查询合约状态。
问:像“.send({value: 1})”这样发送以太币可以吗?
答:没有,你发1。交易总是用wei。
问:所以为了发送 1 个以太币,我必须从这个值中减去 10?
答:可以使用util方法web3.utils.toWei(1, 'ether')
Q:调用“.send()”时需要说明什么?
答:您必须指定“发件人”为发件人地址。 其他一切都是可选的。
问:web3.eth.sendTransaction() 的唯一功能是将以太币发送到特定地址,这是正确的吗?
答:不是,你也可以调用合约方法。
问:你知道以太坊的可扩展性解决方案吗?
答:第 2 层协议。 可能的解决方案是状态通道和等离子。
问:Solidity 是静态的还是动态的?
答:它是静态类型的,这意味着类型在编译时是已知的。
问:Solidity 中 Java“类”的功能等价物是什么?
A:这是合同。
Q:什么是合约实例?
答:合约实例是区块链上部署的合约。
问:给我一些 Java 和 Solidity 之间的区别。
答:Solidity支持多重继承,但不支持重载。
问:您必须首先在 Solidity 文件中指定什么?
A:Solidity编译器的版本,指定为^0.4.8。 这是必要的,因为它可以防止在与其他版本编译时引入不兼容错误。
问:合同内容是什么?
答:主要由存储的变量、函数和事件组成。
问:有哪些类型的功能?
A:有构造函数、回退函数、常量函数和修改合约状态的函数。
问:如果我将多个合约定义放入单个 Solidity 文件中,会出现什么错误?
答:将多个合约定义放入单个 Solidity 文件中是完全没问题的。
Q:这两个合约可以通过哪些方式进行交互?
A:合约可以调用、创建和继承其他合约。
问:当您尝试部署包含多个合约的文件时会发生什么?
A:编译器只会部署该文件中的最后一个合约,所有其他的将被忽略。
问:如果我有一个大项目,是否需要将所有相关合同保存到一个文件中?
A:可以使用import语句导入文件,
导入“./MyOtherContracts.sol”;
Q:只能导入本地文件吗?