Contents

面试记录

面试记录

Contents

==yzb学长==:

腾讯IEG-光子工作室群-区块链研发工程师

  • 一面面经 1、自我介绍 2、20分钟项目面,比如FISCO BCOS中的交易有哪些字段、整个交易需要签名,那么签名用的是什么加密算法, 整体流程是怎样签名的,属性加密的原理是什么,同态加密原理呢,零知识证明呢?(这里寄了,只知道用法,但是具体原理还真不太清楚) 3、FISCO用的是PBFT,那么PBFT算法的时间复杂度是多少(O(n²)) 4、PBFT整体流程是怎样的? 5、为什么PBFT的容错率是3f+1?(现场口述推导) 6、你是怎样学习区块链知识的呢?(最开始看综述文章,后面看一些关于Bitcoin、Eth、Fabric的官方文档即白皮书黄皮书,然后是github,再就是各种各样的博文) 7、接着上述问题:你有看过哪些白黄皮书,有对哪一部分很深入的研究吗?(最开始看的是e-money的那篇文章,然后是bitcoin白皮书,然后是eth黄皮书,提到了UTXO的构造原理) 8、以太坊相比于比特币UTXO有什么区别?(以太坊有三棵树来维护状态,分别是交易树、收据树和状态树,然后每棵树的数据结构和内容分别是什么) 9、数据库知识了解吗?能说一下数据库索引的相关知识吗(为什么MySQL的InnoDB用的B+树,有什么优点) 10、对汇编原理有了解吗?(这个问的比较纳闷,答了下本科学的是微机原理,是以8086作为蓝本研究的,它的指令集相对X86、ARM、RISE-V指令集简洁很多,因为受限于CPU和寄存器等大小和性能) 11、你的编程语言怎样?(java和C++双修) 12、手撕代码:①快速排序(6min,问了下它的最优/坏时间复杂度,什么场景下最优/坏,怎么样避免最坏:先循环判断一遍是否是有序的);②链表k个一组反转(15min,这个确实不太好写,思路比较简单但是代码细节比较多,用的滑动窗口+双指针); 13、反问:对我有什么学习上的建议吗?(可以多看看白皮书,深究一下源码,这样对区块链各个过程都会有更加深入的理解);然后两个人就学术界和工业届区块链的发展形式发表一下看法,都觉得要想研究区块链应该是去看公链的知识,而国内的联盟链研究走偏了,很多研究都是抄的fabric。

  • 腾讯-二面 备注:如果有项目,一定要提前准备好项目的各个方面,不仅仅局限于自己做的方向,比如:项目的核心竞争力,整个项目做了哪些东西,为什么要做这些东西,自己在项目里面负责哪一部分,这一部分为什么要这么做等等。同时上一面没有答的比较好的部分后续一定要去看一看熟悉一下,面试官会写面评,后面的面试官可能会基于面评进行拓展提问。

  1. 深挖项目(15min):项目一定一定要非常熟悉,同时没做的部分不要写上去,除非是很熟悉过程和做了哪些东西。逻辑要连贯,为什么,怎么做。(比如之前紫金山实验室车联网那个项目,我提到项目用区块链做分布式身份认证,面试官问我为什么要用区块链做,不用区块链的话原来的技术是怎样实现身份认证的,效果如何,用了区块链有没有改善呢)。
  2. solidity会导致哪些安全问题?(比如精度问题、未检查的外部调用、循环攻击、堆栈溢出等)
  3. 如何使用智能合约产生随机数?(这里其实有个方法叫VRF是可以解决的,一般来说正常产生随机数是根据一个随机源seed,然后根据伪随机代码产生随机数;但是由于智能合约是公开可见的,也就导致了攻击者可以看到伪随机函数具体用的是哪个,再根据随机源就可以计算出这个随机数是什么。因此需要保证随机源是随机获取的,比如说通过一个外部链接连接到一个随机数产生网站,以此来获得随机源,这样每次调用合约产生的随机数都不一样)。
  4. 了解ERC20、ERC721、ERC1155吗?(ERC721实际上就是NFT(感谢瑞伟学长的指导,前两天杰伦的NFT刚被盗,这个真的是问到脸上了),说了下ERC20和ERC721的区别(最大的区别是Token数量不同))
  5. 【承接上个问题】杰伦的NFT被盗你知道是因为智能合约的什么漏洞问题导致的吗?(俺木晓得呀)
  6. 有木有关注以太坊比较有名的几个项目?(开放)
  7. 以太坊交易池中,交易是根据什么来进行排序的?(根据交易发起者预先估计的gasPrice来进行一定规则的排序)
  8. 那么交易费用是如何计算出来的,包含了哪两个部分?(交易费用=Gas*Gas Price,一个Gas Price就是单价,以太坊默认的Gas Price是1wei)
  9. 以太坊交易流程是咋样的?(上链前业务数据处理+业务打包上链+调用合约,这个问题很重点,需要仔细琢磨了解整个过程,在这就不展开了)
  10. 以太坊虚拟机工作流程?(如果只普通的转账交易,核实后直接去修改世界状态树中的账户状态即可;如果是合约,则进行解释器等一系列操作)
  11. 你了解其他的共识算法吗(POS,POA,DPOS等常见的)
  12. POA基本原理说一下呗(POA是以太坊可选的共识,可惜自己只知道大概的过程,就说了一下)
  13. 你平时有用到其他的加密算法吗(专利+毕设用了)
  14. 你本科毕设中客户端和服务端是如何进行安全通信的?(因为面试官问我本科毕设做的啥,本科毕设自己写了个多并发的物联网设备通信,这里直接说和TLS的过程是一样的,双方验证好身份,协商加密算法好后,客户端生成对称密钥后,用服务器的公钥加密对称密钥传给服务器,之后双方依据这个对称密钥进行通信)
  15. 客户端怎么生成公钥的(用的AES 密钥,客户端生成了一个256bit的密钥,根据一些助记词生成的)
  16. 反问:部分业务是啥(机密),你觉得我的表现如何(公司有规定,机密)

牛客网,提前批

2023/03/17 杨老师 阿里一面

image-20230317172147261

==2023/04/27 百度一面 (60 min)==

  1. 自我介绍
  2. 项目介绍
  • 项目中遇到的难点?怎么解决的?
  • 项目中用到了哪些中间件?对中间件的理解?
  • 职业规划?以后想做哪个方向?
  1. Go 基础
  • Go 有哪些引用类型?
  • GMP 模型底层原理,调度原理?
  • defer 执行顺序?return func() 和 defer 三者执行顺序?
  • return func() 的情况下,怎么统计该函数的执行用时?
  • return 返回值之后,是否还可以被修改?
  1. 常见八股(开始吟唱…)
  • url输入到输出的过程?
  • udp、tcp 差别?
  • http 有啥字段?
  • get、post 有啥区别?
  • session、cookie 有啥区别?禁止cookie还能用session吗?怎么实现?
  • MySQL 有哪些索引?
  • 联合索引应用场景?为什么要建联合索引?
  • 知道回表查询吗?什么时候会触发回表查询?
  • 忘了…
  1. docker和linux
  • 了解docker吗?用过,但不了解。
  • 了解linux吗?用过,但不了解。
  1. 算法(只能用记事本)
  • 括号匹配;
  • 股票买入卖出(稍微有点改动,没完全写出来)。
  1. 反问
  • 主要做啥业务?
  • 实习生进去之后干点啥?
  • 之后还会有面试嘛?
  1. 后续
  • 2023/04/28 下午 约二面

==2023/05/08 百度二面 (60 min)==

已凉。

==2022/05/18 腾讯一面 (70 min)==

  1. 项目组介绍,反问
  2. 手撕:大数乘法。。。没写过,最后讲了思路
  3. Go 基础
  • 线程、协程有啥区别?
  • GMP 模型?
  • Goroutine 之间怎么通信?
    • 一般用 Channel,讲了 Channel 的底层原理
  • Channel 可以不关闭吗?不关闭会发生啥?
  • Goruotine 会泄露吗?比如 Goroutine 占满了?
  • string 和 []byte{},怎么转换?
    • 讲了两种,一种会触发拷贝,一种是用 unsafe
  • unsafe 具体得怎么操作?
    • 忘了。。。
  • 为什么要进行内存对齐?
  • 结构体是怎么进行内存对齐的?结构体成员顺序不同,结构体的大小会不同吗?
  1. 计算机网络
  • 三次握手?为啥要三次握手?能两次吗?会出现啥问题?
  • seq 的选取有啥讲究吗?
  1. 操作系统
  • epoll 了解吗?
  • 和 select、poll 有啥区别?那有啥改进?
  • ET 和 LT?(这个只大概讲了下)
  1. RAFT
  • RAFT 是强一致性的吗?
  • RAFT 怎么保证的强一致性?
    • 讲了选主、日志复制
  • RAFT 选主时,每个节点有几票?
    • 这个记不清了,原本答的只有一票,后来想了想ZAB是一票,又改成能投多票了。。。无语!
  • RAFT 出现多个主节点咋办?平票咋办?
  • 那这个倒计时是咋生成的?咋随机的?都有哪些节点要随机生成?
    • 这个麻了,我忘了
  1. Redis
  • Redis 是咋保证集群的一致性的?
    • 讲了主从复制:全量复制和增量复制
  • Redis 会丢失数据吗?
    • 这个讲了持久化,真可恶,应该是讲集群间的数据丢失的。。。
  1. Mysql
  • MySQL 都有哪些事务隔离级别?
  • 默认用哪个?
    • 这个答的可重复读。
  • 会出现啥问题?幻读是啥?
  • MySQL 索引用过吗?联合索引怎么用?
    • 这个答了索引失效的问题
  • 使用联合索引时,字段能跳过吗?需要按序吗?
  • 怎么看MySQL语句用没用到索引?
    • 答了explain
  • explain 真的会去数据库xxx查看吗?
    • 不知道。
  1. Linux
  • 都用过啥命令
    • ss、netstat、ps。。
  • 怎么查询解析url的过程?
    • 这个不造。
  1. 开源项目
  • 有看过开源的项目代码吗?有做过开源贡献吗?
    • 看过groupcache、gin、orm,麻油贡献
  1. 结束咯 ~
  • 凉!!!