本篇面经中的面试题已收录到社区企业题库版块。

腾讯CDG 腾讯区块链

一面

  • 深挖项目20min
  • 以太坊中有哪些树(交易树、收据树、状态树)
  • 为什么需要收据树(将交易执行过程中的一些特定信息编码为交易收据,方便对交易进行零知识证明、索引和搜索)
  • 以太坊里的状态是什么,状态树怎么存的状态(账户状态包括balance、nonce、codeHash、storageRoot,使用Merkle Patricia Trie即MPT存的账户状态)
  • 以太坊的合约数据的储存形式(还是MPT。合约账户中的storage root,对应账户的storage trie)
  • 比特币里的交易是怎么存的(Merkle Tree,MT)
  • 介绍Merkle Tree的性质、优点,为什么用Merkle Tree存(实现SPV、Merkle Proof)
  • 为什么以太坊要将MT改成MPT(这个问题比较复杂,建议读者去B站北大肖臻老师的区块链课中寻找答案)
  • 介绍比特币的UTXO
  • 比特币查询余额只能从头开始遍历整条链吗,有没有高效方法(创建UTXOSet缓存)
  • 比特币地址是怎么生成的(助记词 <-> seed -> 私钥 -> 公钥 -> PubKeyHash <-> address, 其中<->表可双向转换,->表单向转换,最后的PubKeyHash转换为address的时候用的是base58编码,base58编码的原理即辗转相除法)
  • 数据库索引,hash索引与B+树索引的适用场景,为什么用B+树索引
  • 主键与非主键和索引的关系(InnoDB主键一定是聚簇索引,非主键如果是索引的话,查询可能需要回表)
  • 进程、线程、协程的区别
  • Golang协程间如何通信
  • 算法:口撕链表是否有环
  • 堆排序、快速排序的时间复杂度以及分别适用什么场景
  • 反问

二面(八股极少,基本全程聊项目)

  1. 项目深挖
  2. 为什么用区块链?区块链的创新点在哪?(灵魂发问)
  3. 技术难点
  4. 以太坊相比于比特币的创新点
  5. 区块链落地场景
  6. 反问
本篇面经中涉及的面试题已收录进GOLANG ROADMAP企业题库(搜索关注wx-gzh:GOLANG ROADMAP),可查看面试题解析和参与讨论。

GOLANG_ROADMAP
17 声望7 粉丝

GOLANG ROADMAP专注Gopher学习与求职之路。