“40道高频区块链面试题”——我的一些看法

最近看到了一篇文章如下:

超强攻略!40道高频区块链面试题大放送,年底跳槽看过来!

地址我也贴出来吧,https://mp.weixin.qq.com/s/3Fa2XG4R11QDfMSAaBCngw

哦,CSDN的地址也出来了,https://blog.csdn.net/Blockchain_lemon/article/details/102714417

看完之后学到了很多东西,但是也有一些问题的回答和我所想的不同,为了有一些面试的感觉,我在看这些题的时候并没有看任何资料,全是靠自己脑子里的东西,想到什么就写什么,当然,原答案本身就是一个很好的参考。在这里记录一下,以后想明白了再回来改。走过路过的大佬们要是有什么意见或者建议可以给直接评论提呀~~~

问题1:你认为区块链技术中的区块意味着什么?

原答:区块链由所有金融交易的信息组成。一个块只不过是一个记录列表。当这些列表相互结合时,它们被称为区块链。例如,一个组织有100个分类账簿,其中的组合被称为区块链,单个分类账将被视为一个区块。

:在比特币区块链之中,区块链是由区块组成,区块是由区块头和区块体组成,区块体之中包含着一些交易。从整体来看,区块是组成区块链的关键数据结构。区块链是分布式记账本之一,但是分布式记账本不是区块链。分布式记账本不一定都是链式结构。

问题2:为什么区块链是一种值得信赖的方法
原答:有很多原因,区块链可以被信任。第一个原因是它与其他商业应用程序有良好的兼容性,因为它是开源的。其次是它的安全性,因为它是为了在线交易而开发的,所以开发人员在保证安全性的同时也特别关注它的数据同步。由于其拥有的业务类型无关,所以在选择的时候区别链很容易地被考虑。

:一方面,区块链的信任源于对密码的信任,再深就是源于对数学的信任。在不考虑量子计算的情况下,当前的区块链用到的密码学技术都是基于各种数学难题,在常规的计算机的能力下破解的时间都是几十年起步,这是在数学上的可信。这个可信使得对区块链的更改只能是分叉或者是删了重做。因此需要另一方面的可信,还是以比特币举例,这种公有链是由分布在全球各地的相对独立的节点来共同维护的,不存在一个中心化的角色进行控制,使用PoW来进行共识,这点用到了博弈论还是什么原理我也不太懂的内容来确保存在分布式地管理。这个方面的可信确保了很难出现分叉或者是重做。

问题3:区块链中是否有可能从网络中删除一个或多个区块?
原答:当然可以,如果只考虑该在线分类帐的特定部分的时候。借助默认选项和过滤器,可以轻松完成此任务,而不需要付出太多。

:我不太了解工程方面的东西,但是在论文方面已经出现了基于变色龙哈希实现的可更改(可擦写)的区块链的文章,实现了更改历史中的区块或者交易而不影响整个链的技术。所以可能删除。

问题4:你对区块链了解多少?
原答:这是一种实际上为比特币设计的技术,后来因为监控和记录网络上所有金融交易而带来的多种好处而获得了大量的推广。这是一种值得信赖的方法,目前情况下有很多组织正在使用它。由于一切都是十分安全的,并且它是一种开源方式,所以从长远来看,它可以轻松获得大家的信任。

:emmmmmm,区块链源于比特币,但是现在区块链技术本身已经从各个方面逐步发展起来,比如性能,安全,监管等方面,并应用到很多领域,比如金融,溯源等,而且还在向更多的领域去探索。东西有点杂,现在还无法组织起来。数据结构层,网络层,共识层,应用层,去匿名,隐私保护(混币,同态,零知识),各种攻击,防御,比特币,以太坊,Hyperledger项目,EOS,Libra,BATJH的区块链项目,BSN,支付通道,交易所,balabala。

问题5:区块链方法如何识别区块?
原答:在线分类帐中的每个块基本上都包含一个哈希指针,该指针指向它之前的块并形成链接,块中包含交易数据和时间戳。

:识别区块?原答案是在写怎么找区块?还是以比特币为例,每个区块都是由区块头和区块体组成。区块头之中有一块是放前一个区块的Hash,有一块是放自己的Hash,通过这些Hash实现了区块之间的连接。

问题6:你认为一个区块的安全性究竟是什么?
原答:网络上的所有用户都不能修改块。因此它提供了极好的安全级别。除此之外,每个区块都使用加密技术进行保护,这是另一项措施。因此,不需要担心块中存在的数据的安全性和安全性。

:一个区块的安全性。不考虑那个变色龙哈希的话,就是区块自身的存在和区块自身的不变。存在就是指这个区块应当是在全节点上存在着,存在某个硬盘上面。不变就是指这个区块的内容是不可篡改的,这个区块中的交易也都是已经验证过的了,不会因为某种攻击使得这个交易失效。

问题7:在组织中使用区块链技术是否有网络特定的条件?
原答:使用它没有特定的条件。但是,网络必须是有关协议下的对等网络。它实际上很简单地验证了新块,并帮助组织在不投资第三方应用程序的情况下保持同步。

:我不理解什么是“在组织中使用”和“网络特定的条件”。

问题8:什么是加密?它在区块链中的作用是什么?
原答:数据安全始终很重要。加密基本上是一种帮助组织保持数据安全的方法。在这种技术中,数据在被发送者发送到网络之前被编码或者在一定程度上被改变。唯一的接收器可以理解如何对其进行解码。在区块链中,这种方法很有用,因为它增加了区块的整体安全性和真实性,并有助于保护区块的安全。

:加密是一种对数据的处理方式,使得数据由一种含有明确信息的状态(明文)进入到一种无法取得任何信息的状态(密文)。区块链中的加密主要是用到了Hash和签名。Hash是一种单向的加密,将明文转换成密文(Hash值),同时可将这个密文压缩至某个长度固定的比特数,比如256bit。而且好的Hash的一个性质就是很难找到两个不同的明文成为一个密文,所以区块使用Hash值作为标识即难以篡改也难以替代。签名则是用到了非对称加密,私钥(自己保存)对数据签名,公钥(公开)对数据验证,这样只要私钥不泄露的情况下,大家可以对你的数据进行确权。比特币中的交易都需要自己的签名,这样才能通过验证,实现转账。

问题9:一旦写入数据块后,是否可以修改数据?
原答:不,这是不可能的。如果需要进行任何修改,组织只需删除所有其他块的信息。这是因为没有其他方法,数据在使用这种方法时必须非常谨慎。
 

我:本来是不可以的,但是可以通过硬分叉的方式实现修改。除此之外,有个前提是这个区块链用的是一种变色龙哈希,变更之后所有的节点都接受这个新的内容。

 

问题10:区块链中可以保存哪些类型的记录?有什么限制吗?

原答:区块链方法中没有任何类型记录的限制。目前,世界各地的许多组织正在使用这种方法,事实是医疗交易记录,与组织相关的事件,管理活动,交易处理,身份管理以及文件记录都是常见的可以使用区块链的记录类型。而且记录保存并不仅限于这些应用程序。

:除了原答案,我还要补充一点关于限制的内容。比特币区块链的交易大小是有限制的,也就是说,每个交易中存的记录是有大小限制的。以太坊的合约是要占用Gas的,计算需要,存储也需要,所以受限于gas。而Fabric的交易的大小好像是99MB吧,好像代码里面可以改,但是这又会牵扯到多少代码的更改我就不知道了。

 

问题11:什么是双重支出?

原答:这是与数字货币有关的主要问题之一。事实上,这是一个数字通证被多次使用的条件,因为通证通常由易于克隆的数字文件组成。它只会导致通货膨胀,组织不得不承受巨大的损失。区块链技术的主要目标之一是尽可能地消除这种方法。

:原答案写的好专业,我表达不出来这种程度的内容。双重支出一般就是指双重花费,也就是常说的双花攻击。数字货币不像是实体货币那种,只会在现实世界中存在唯一一个实体。数字货币的本质也是一段代码,所以当我花费一个数字货币的时候,是把一段代码给别人。我也可以把同样的代码给另外的人,所以数字货币可以重复出现,这就影响了这种数字金融的。。不知道说什么词。反正,数字货币研究时就要好好注意双重支出这个问题。

 

问题12:解释盲签名的重要性以及它如何有用?

原答:它实际上是一种数字签名形式,密码学的一个重要组成部分,其中所有信息在实际考虑或签署之前都是盲目的。这是经过验证的方法,通常在作者和签署方都不同的隐私相关协议中考虑。数字货币设计是最常见的例子之一。

:盲签名通过对要签署的数据进行盲化处理再签名,这样签名者不知道里面的内容,验签者验签之后还能取得里面的内容。盲签名在很多方案里面都是用来保护隐私。

 

问题13:什么是密钥分享?区块链技术有什么好处吗?

原答:众所周知的事实是,数字交易中的安全问题非常重要。密钥分享是一种类似的方法。在区块链技术中,这是一种将密钥密或个人信息划分为不同单元并将其发送给网络上的用户的方法。原始信息只能在分配了密钥的参与者同意将他们与其他人结合在一起时才能结合使用。它可以在区块链技术中提供多种与安全相关的好处。

:密钥分享也是一种秘密分享。原答案解释的很好了。现在主要是用可验证的秘密分享。n个人一起分享一个秘密,每人获得一个份额,当集齐至少t个份额之后即可恢复秘密。每个人都可以验证自己的份额是不是真的份额。少于t个份额就不能恢复秘密。秘密分享一般是用在密钥管理方面。关于区块链的密钥管理方面可以借助秘密分享。

 

问题14:超级账本是什么?区块链支持吗?
原答:超级账本只不过是一种特殊的账本,为给人们提供服务的企业而设计。没有严格的服务上限,企业可以通过超级账本进行管理。区块链拥有专门用于处理超级账本的算法。事实上,它减少了许多与此相关的问题。

:超级账本一般是指Hyperledger项目,是Linux基金会组织发起的,其中有很多企业都参与了,比如IBM,微软,Intel等。Hyperledger是一个区块链的,我不知道这个名词是什么,反正涵盖了区块链的很多方面,包括链,链的测试,查看区块链的浏览器,CA等很多。Hyperledger中最出名的还是Fabric,这是最早,发展最好的一个项目。除此之外还有基于可信硬件SGX的Swatooth。这个项目是面向企业的区块链,更适合去做联盟链或者私链。

 

问题15:命名区块链项目实施中涉及的步骤?
原答:这个过程共涉及六个步骤,它们是:

  1. 需求识别

  2. 筛选并确认需求

  3. 区块链项目开发

  4. 安全性的可行性研究

  5. 实施

  6. 控制和监测项

:不知道。

 

问题16:你所知道区块链的好处是什么?

原答:它鼓励安全的在线交易,这是它最大的好处之一。基本上,作为一个密切关注所有交易记录的分布式分散账本,它不会让记录被任何人改变,这增强了安全性。除此之外,参与者和企业主可以始终确保最终的成本审计。区块链始终可以保证的一件事是每个区块或单元只能传输一次,这样可以消除双重支出问题。

:主要是提供一个可信的环境。利用它分散存储,不可篡改,永久保存(maybe)的特性来提供一个可信的信息存储。然后企业或者什么的可以利用这些信息实现溯源等业务,可以提高安全性,减少企业成本等。

 

问题17:将区块链数据库中存在的两种记录命名为?
原答:这些记录是块记录和交易记录。这两个记录都可以轻松访问,最好的方式是可以将它们彼此集成,而无需遵循复杂的算法。

:不知道

问题18:你了解的信息威胁有哪些?
原答:目前情况下信息面临很多威胁。由于互联网在线交易的增加,许多黑客已经变得活跃,正在采用新方法来破解包含财务信息的数据和服务器。主要的威胁是软件攻击,身份盗窃,信息勒索以及破坏。除此之外,特洛伊木马,蠕虫和病毒也是麻烦的创造者。

:答案好像是针对网络安全和信息安全给出的比较通用的内容。我想再讲一点关于区块链面临的安全问题。针对区块链,有很多攻击。就拿公链来说吧。在数据方面,所有的数据都是公开永久保存的,所以一些非法数据也会存在其中并沿着区块链网络而传播。比特币的去匿名化的研究也有很大的进展了,在一定程度上可以推测出一个账号在做什么的时候,这个账号就会失去隐私,很多事情都会暴露在大众的目光之下。在网络方面,有eclipse攻击,攻击者控制目标所能连接的所有比特币网络入口,给他传假内容,目标在无法判断正确的情况下只能接受这个假消息。共识层,PoW有51%算力攻击,PoS和DPoS有中心化的趋势,BFT的恶意节点数量超了阈值就凉了。

 

问题19:信息泄漏对组织可能造成什么挑战?
原答:信息泄露可以极大地降低组织的声誉。除此之外,这可能是组织承受巨大损失的原因。许多未能实施安全协议来保证其数据安全的组织已经失去了客户的信任,并且正在努力争取再次获得相同的声誉。如果不关注在线交易安全,任何组织的总体利润可降低80%。

:得看这个被泄露的信息的价值量了吧。组织一个普通员工的信息泄露和组织的boss的信息泄露完全是两个层次的挑战。

 

问题20:有那些可以使用区块链技术的组织?
原答:可以考虑这种方法的商业类别没有严格的上限。事实上,几乎所有的企业都在进行在线或财务交易,而这些交易需要他们顺利的执行完整的流程。大型公司,金融机构,私营企业,政府部门乃至国防组织都可以非常轻松地信任这项技术。

:有能力的组织都可以使用区块链,但是是否使用区块链不是看组织牛不牛逼,是看业务有没有需求。要先评估使用区块链的必要性,经济开销,收益如何,一旦区块链出了问题,将会是什么级别的挑战,会对组织带来哪些危害。我觉得公司用区块链也是为了赚钱。而政府啊,军事部门啊,可以使用区块链来增强安全性,这种部门虽然也要考虑收益,但是安全占的比重肯定要大。

 

问题21:什么是信息处理?与此相关的关键挑战是什么?
原答:这些信息通常在网络上共享。在通过网络实际发送之前,需要将其改变为适合频道标准的格式(频道是发送者和接收者之间的链接)。在发送端和接收端进行信息转换所做的工作通常被认为是信息处理。信息处理所面临的最大挑战就是在这段时间保护它。另一个挑战是处理批量信息会对性能造成限制。

:通信方面的内容?对信息处理就是对信息进行编码和解码,挑战就是容错能力,性能,安全之类的吧。

 

问题22:BIP代表什么?
原答:这意味着比特币改善建议。

:见过很多次这个名词,但是具体含义不了解。

 

问题23:区块链中的哪些关键原则有助于消除需要遵循的安全威胁?
原答:是的,在时间方面需要遵循一些原则。他们是:

  1. 审计

  2. 保护应用程序

  3. 确保测试和类似的方法

  4. 数据库安全

  5. 连续性计划

  6. 数字劳动力培训

所有这些原则都是基本的,并且易于实施。它们有助于使交易记录有用。

:没懂问题。我的理解是区块链中遵循哪些原则可以消除安全威胁。我也总结不出来。我认为类比特币这些区块链,也就是涉及到发币的,适合采用比特币这种验证币的来源的验证规则。。。。不知道有什么原则,答案也没看懂。

 

问题24:区块链技术的基础是什么?
原答:它使信息能够在用户之间分发而不被复制。

:这个答案反而让我迷惑了。区块链的技术基础有很多,比如密码学基础,分布式计算的基础等,在共识方面还涉及到博弈论等内容,在发币的区块链之中还涉及到金融学的内容。区块链是一个由多种技术融合而诞生的技术。

 

问题25:区块链是不可破坏的分类账吗?
原答:根据开发商的说法,区块链分类帐不能损坏。

:如果把区块链看作是一种分布式数据库,那么现有的关于分布式数据库的保护方案也差不多都能适用于区块链。

 

问题26:什么是安全策略?
原答:安全策略定义了系统上确切需要确保的内容。它根据一些核心协议绑定网络用户,他们都必须同意并遵循以提高整体安全性。当涉及到组织的信息或财务记录时,多个安全策略的实施不止一个。

:答得好。我不知道。

 

问题27:在确保交易记录时,您将如何处理风险管理?
原答:它基本上是一个查找组织的财务记录的威胁和所有漏洞的过程。对付这种做法最好的办法是立即采取正确的对策。另一种方法是注意备份计划。根据信息的价值,可以简单地考虑购买新风险管理软件等更多方法。信息的主要风险来自黑帽黑客。

:不懂。

 

问题28:请列出区块链中用户可以考虑的普通类型的分类帐?
原答:这些是:

  1. 集中式分类账

  2. 分散式分类帐

  3. 分布式分类帐

:看了答案,我更好奇不普通的分类账是什么。

 

问题29:区块链分类账与普通分类账的区别?
原答:第一个,其实最主要的区别是区块链是一个可以非常容易分散的数字分类帐。这种方法出错的几率远远低于普通分类账中的错误率。普通账本就是用手或人工努力准备的,而区块链自动执行所有任务。你只需要以适当的方式配置它,并遵循所有的指导原则。

:普通分类账的存储形式可以是各种各样的,区块链分类账就是特指以区块组成链来分散存储的分类账。

 

问题30:分布式数字分类帐用于在BlockChain中记录交易。系统依赖于什么?

原答:它依赖于网络节点。

:这个依赖,我不知道是指哪个方面。系统的安全性?系统的可用性?

 

问题31:陷门函数的功能是什么,为什么它是区块链所需要的?

原答:一个陷门函数是在一个方向上容易计算但难以在相反方向的计算,除非你有特殊的信息。陷门函数是必不可少的公共密钥加密,所以他们常用在blockchain发展代表思想的地址和私有密钥。

:陷门函数一般都是指一种单向函数,在没有这个陷门的情况下,容易实现原数据到新数据的转换,很难实现新数据到原数据的转换。而陷门就是将后面的很难变得简单。非对称加密就是一种单向陷门函数。基于非对称加密的签名算法是区块链所需要的,这可以实现数据的确权。但是关于Hash函数,就不适合有陷门。

 

问题32:比特币实现中的交易和块是如何加密的?

原答:比特币块不以任何方式加密:每个块都是公开的。阻止修改和保证数据完整性的是一个称为块哈希的值。块的内容是使用在比特币的一种特殊Hash函数来处理,它的实现和得到的值包含在区块链中。

:没加密,都公开。

 

问题33:解释为什么区块链需要通证。

原答:代币/通证用于实现状态之间的变化。当有人做交易时,这是一种状态的改变,代币从一个地址移到另一个地址。除此之外,交易可以包含额外的数据和状态的变化来改变数据,来做这一个不变的定义区块链的唯一途径。从技术上讲,区块链不需要代币为其主要业务,但没有他们,其他方式需要引进管理链状态和验证交易。

:不了解通证。

 

问题34:对等网络(P2P)网络中对等体是如何工作的?

原答:当一个新的节点启动时,它对网络一无所知,因为没有中央服务器。通常开发人员提供可信节点的列表,这些节点直接写入可用于初始对等点发现的代码中。

:不了解。

 

问题35:如何验证检查一个块是有效的?

原答:网络上的每个完整节点都进行块验证。当一个新的块被宣布时,接收它的每个节点都会执行一个检查列表。两个最重要的检查是工作证明(如果一个块提供足够的工作要包含在链中)和所有事务的有效性(每个事务必须是有效的)。

:1.检查这个块的工作量证明,2.检查所有交易的有效性。

 

问题36:一个ScriptPubKey是什么?解释如何使用P2SH地址就可以了。

原答:一个是所谓的锁定ScriptPubKey脚本。它出现目的是阻止交易的输出,在输出过程中必须满足。

P2SH是一种特殊类型的地址,代替复杂的锁定脚本的hash值。当一个试图花费输出的交易稍后显示时,除了解锁脚本之外,它还必须包含与哈希匹配的脚本。

:不了解。

 

问题37使用脚本,编写一个redeem script脚本,允许用户仅在用户知道魔术数字1234567时才使用输出。

OP_EQUALVERIFYscriptPubKey: 1234567 OP_EQUALVERIFYscriptSig: 1234567

:不会

 

问题38:使用脚本,编写一个redeem script脚本,允许任何人在一次老化后最少花费30天的时间。

scriptPubKey: "30d" OP_CHECKSEQUENCEVERIFY OP_VERIFYscriptSig: empty

:不会。

 

问题39:什么是挖矿?

原答:挖矿是在区块链网络达成共识的过程。挖矿有两个目的。首先,它在生成的块中创建新的代币。其次,它通过向网络提供工作证明,包括分布式计费中的交易;也就是说,证明所生成的块是有效的。

:挖矿就是矿工去计算一个value,这个value满足当前比特币的一个规则。这个value不好算,比特币设置的是大约10分钟才能计算出来,但是好验证。这是共识的一个精巧之处,谁挖到了谁就有记账权。大家都竞争,就可以实现去中心化。只是现在出现了矿池,使得算力集中了起来,现在只能说是多中心化。除了记账权,还有发币,挖矿挖矿,矿值钱啊,挖到的人就可以获得新的比特币,除了新币还有一些矿渣,也就是这个块中的交易们上交的交易费。

 

问题40:什么是软分叉?

原答:在分类帐中的块包括以建立最长链的方式,即具有最大累积难度的链。分叉是有两个候选块竞争形成最长的区块链,两个矿工发现工作问题的证明方法在很短的时间内没有同步对方的情况。造成网络分割,因为某些节点得到块从矿工#1和而另外一些得到矿工#2。

分叉通常在一个块中得到解决,因为这种情况再次发生的概率变得非常低,因为下一个块出现,所以很快有一个新的最长链,将被认为是主要的。

(注:这种叉不同于硬叉,这是一些开发商决定创建一个不向后兼容的改变到区块链协议,导致两个永远不同区块链。)

:答案讲得好。

你可能感兴趣的:(区块链)