區塊鏈開發工程師待遇(第二期 2022秋招區塊鏈開發工程師技術面面經 騰訊)
歡迎加入GOLANG ROADMAP,一個年輕的Go開發者社區,目前是邀請注冊制,邀請碼:今日頭條。本篇面經中的面試題已收錄到社區企業題庫版塊。
騰訊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協程間如何通信
算法:口撕鏈表是否有環
堆排序、快速排序的時間復雜度以及分別適用什么場景
反問
二面(八股極少,基本全程聊項目)
項目深挖
為什么用區塊鏈?區塊鏈的創新點在哪?(靈魂發問)
技術難點
以太坊相比于比特幣的創新點
區塊鏈落地場景
反問
本篇面經中涉及的面試題已收錄進GOLANG ROADMAP企業題庫(搜索關注wx-gzh:GOLANG ROADMAP),可查看面試題解析和參與討論。