关于区块链存证部分的试题
- 发票是如何存的?是由谁(用户 or 维护者)来存的?
- 发票上链时,交易是由用户签名的吗?
- 存的都是什么类型的数据?有看过现实的发票的一些数据字段吗?
- 是发票的所有信息上链?还是部分上链?
- 发票的源数据怎么存?
- 怎么确保源数据跟链上的数据相对应?怎么通过链上的数据找到源数据在哪?
- 如果说pdf被更改大小了呢,虽然内容没变,但是hash也是对不上的,还有必要存文件hash吗,换句话说还有必要存原文件吗?
- 存上去之后是哪方角色来更新报销进度的?除了更新报销进度之外没有其他功能了吗?
- 有没有发票的转交流程,发票在系统里是怎么流转的?(面试官:发票得经过很多部门)
- 后端收到前端传过来的发票数据,做完hash之后还有其他操作吗?就是直接构造交易上链吗?
Answer: 1面
- 深挖项目
- 以太坊的合约数据是怎样的储存形式(存在状态树里)
- 以太坊的状态是什么(状态由外部账户和合约账户的状态组成)
- 以太坊有哪些树(交易数、收据树、状态树)
- 为什么需要收据树(没答上来)
- 状态树是怎么存的状态(没答上来,一时间没想到回答MPT)
- 区块链里交易是怎么存的(MerkleTree)
- 介绍Merkletree的性质、优点,为什么用merkletree(实现快速验证交易,实现轻结点的扩展)
- 以太坊有对merkletree进行改进吗?(MPT,介绍了下mpt的结构,这时候想到是mpt存的账户数据)
- 为什么以太坊要将MT改进为MPT呢?(没答上来)
- 介绍比特币的UTXO
- 比特币查询账户余额每次只能从头开始遍历吗?有没有高效的方法?(我答了用一个kv映射从创世块开始记录每个地址的余额,每经过一个区块,就对余额进行更新操作)
- 区块链账户是怎么生成的(助记词->seed->私钥->公钥->地址)
- 以上过程助记词和私钥可互相生成吗,公钥和地址可互相生成吗?(这里我一时间忘了公钥怎么生成地址,误答公钥和地址可相互生成,实际上公钥是经过单向的hash函数生成地址,不可逆。)
- 数据库索引,hash索引与B+索引适用场景,为什么用B+树索引
- 主键和非主键与索引的关联?(innoDB主键一定是聚簇索引,非主键如果是索引的话,可能需要回表)
- 进程、线程、协程区别
- 协程间如何通信
- 口撕链表是否有环
- 堆排序、快速排序,时间复杂度以及分别适用什么场景
- 反问
|