区块链面经(含Java后台内容)

(很想跟其他人一样用很唬人的标题,什么“:阿里P8面试指南”、“两年经验一举拿下头条40k offer”、“看完碾压腾讯面试官的面经”,但那样太没道德了,哈!)

先说下本人情况,本人2018年本科毕业找工作找的是java后台,去了在某行业龙头公司后转做区块链相关的开发工作。因为做区块链,所以对区块链的发展比较关注,也逐渐形成了自己对区块链的一些认识。从19年年初开始,对国内区块链的发展感到非常沮丧(因为国内绝大部分的区块链项目都是炒概念、搞噱头,并没有什么实际意义,什么区块链发票、区块链合同,其实并没有什么实际用途。这么说肯定有很多人想骂我,以后我会写博客描述我自己的观点,请持续关注),在今年年4月份(2020年4月),我决定裸辞。在家期间按照我对区块链的理解,搞了一个猪肉溯源的区块链项目,后来在10月份的时候准备找工作,准备了挺久,11月份开始正式找工作,算下来其实有半年没有在公司上班,所以找工作的时候心态很差,不过幸亏有女朋友陪着。

我找工作的时候主要找两个方向:java后台开发和区块链开发。跳槽和没工作找工作差别还是比较大的,而且我投的都是大厂,因为大厂招聘流程比较慢,所以等待的过程其实很焦虑,想起找工作的时候区块链面经根本都找不到,所以我决定写一下我面试过程中一些面试题,希望对找区块链相关的小伙伴有帮助。如果各位看完感觉没什么用也正常,毕竟每个人的经历和公司对岗位的要求都不一样,仅做参考。

最开始面了两个银行。俩银行都是国企,那时候还没有什么面试经验,技术问题答的还可以,但是有些非技术问题答的不是很好,但是也都通过了前面的面试,后来因为招聘进度太慢我自己主动要求终止面试。这两个银行就不细分了:

1、pbft。三个阶段、各个阶段作用、为什么3f+1等。

2、Hyperledger fabric共识过程

3、fabric如何升级版本

4、之前公司是怎么用的fabric、为什么觉得这样用不符合区块链的思想?你怎么理解的?

5、fabric读写集相关(没答上来)

6、你做的猪肉溯源的项目怎么回事?怎么用的区块链,如何避免之前公司存在的问题?

7、如果你来了我们这,发现我们这也有之前公司的问题,怎么办?直接走吗?(国企比较关注稳定性的问题)

8、docker、kubernetes相关的一些问题。

9、其他的记不太清了,不过感觉技术面难度不大。

后面面了几个大厂的java后端:

1、ThreadLocal。答:ThreadLocal.Map,环形数组,线性探测、弱引用、内存泄漏等。

2、JVM内存划分及各个区域作用。答:年轻代、老年代、永久代等,最好是按照jdk7和jdk8分版本说,如果说出TLAB这类细节,印象会好很多。

3、sychronized的原理。答:jdk6之前是重量级锁,1.6之后进行了优化,引入偏向锁、轻量级锁、重量级锁,锁消除等等。偏向锁、轻量级锁、重量级锁加锁以及锁的升级(LockRecord等以及对象头信息中的MarkWord)过程,底层实现。(之前看过这一块的源码,所以都没什么问题)

4、AQS。CountDownLatch、CyclicBarrier等如何实现的。答:。。。

5、HashMap原理:答:分版本说。实现方式、底层数据结构、扰动处理、扩容方式、rehash方式

6、CMS过程。我是结合G1说的。CMS:7个过程过程,并发回收三色标记有什么问题,CMS如何解决的:基于强三色不变式的增量更新,卡表、写屏障及其工作工程。G1:过程,基于弱三色不变式的SATB,SATB和G1的写屏障。CMS和G1的写屏障的异同。

7、ZGC?答:不会。

8、算法题。

9、HashMap不安全,用什么?ConcurrentHashMap怎么实现的?答:分版本说。

10、说一下zookeeper的zab。答:。。。

11、Redis跳表、Map的rehash。常规问题。

12、聚簇索引和非聚簇索引。

13、mysql事务、索引什么的。

14、volatile。答:可见性和有序性。可见性实现原理:CPU的lock,JMM。。。高速缓存。。。有序性实现原理:内存屏障(注意区别CMS和G1的写屏障)种类及各自作用。

15、IO多路复用。答:有三种,select、poll、epoll分别是怎么实现的,select:fdset,... poll:pollfd... epoll:eventpoll(红黑树和就绪链表)以及发生调用时操作系统的执行过程。

16、线程池相关。各参数含义,不同线程池区别,开发一般怎么构建线程池之类的。

17、记不清了。

很多问题其实面试官问的很浅,就只是看你知不知道,我说的比较深,面试官看你知道的多就会多问。

不过也发生了比较恶心人的事情:

某国内一线互联网大厂,面试官从头到尾嘻嘻哈哈,面完以后,面试官说:我这边你没有什么问题,但是你有半年左右的时间没有在工作,最后HR那边可能通不过,到HR面看怎么处理了。结果挂了电话以后,面试官就直接把我挂了,给我内推的人看我挂了就不咋热情了,我就托朋友帮我看到底为什么挂。朋友说我的面试结果没法查看,别人挂了照样能查看面试的评价,但是我的点不进去,只能在外面看到两行:1、电商经验不足 2、英语水平不足。我真的是服气了,电商经验不足?你筛简历的时候干嘛去了,英语水平不足这个结论又是怎么得出来的?感觉很奇葩,不过也正常,不是母公司嫡出,从外面收购的公司,面试官素质参差不齐也正常。

下面是迅雷的面试。迅雷面试速度很快,不过可能跟部门和具体面试表现有关,我当天去当天就完事了。面试官的提问基本上是按照简历写的内容来的。

岗位说明:区块链开发,懂监控、docker、kubernetes优先。

一面:

1、说下Prometheus。答:是干什么的,有4个组件,分别干什么的。(面试官没问Prometheus的底层原理,建议大家可以去了解下:LSM树)

2、MerkleTree是什么,能干什么?答:。。。可以用来做文件下载校验文件,分多份,计算根节点,校验根节点hash值。

3、算法题。

4、猪肉溯源怎么解决链上数据是可信的?还有其他几个问题,这个参考性不大,不细写了。

5、上家公司。也不细写了。

6、Bass架构图。我只做了一点,所以就没画。

二面

1、go,Map底层实现。答:go还停留在语法层面。

2、ArrayList和LinkedList异同。ArrayList会一直扩容吗?答:最大Integer.MAX_VALUE,但是在达到这个值之前会在Integer.MAX_VALUE-8的时候卡一下。为什么卡一下?答:。。。(划重点,ArrayList如果能说出Integer.MAX_VALUE-8及其原因,是个不小的加分项)。

3、PBFT。

4、DPOS是什么?哪个公链用?

5、HTTP1.0/1.1/2.0啥区别?说了1.0和1.1,。

6、docker虚拟化原理:答:namespace、cgroups。docker镜像结构:一层一层的。为什么这种结构?

7、k8s有什么组件?有哪些资源?各种资源之间关系?Deployment和StatefulSet有什么区别?这种区别是怎么实现的?(怎么实现的没答上来。)

8、Prometheus在项目中是怎么用的?答:...

9、Ethereum的MPT。看过:忘了,知道MerkleTree...。以太坊还记得多少?答:还记得一些简单的概念,平时不用基本上都忘记了。

10、Mysql聚簇/非聚簇索引。为什么B+ Tree?B Tree太高?可以压缩啊,为什么不用B Tree?MyISAM和InnoDB索引区别。InnoDB怎么存储数据?(16K,主键、顺序存)

11、HTTP和WebSocket?HTTPS如何保证安全?不会websocket。

12、TCP四次挥手过程。描述的过程中也有提问。

13、项目介绍。k8s在里面怎么用的?有几个节点?区块数据怎么存储?是什么类型的PV?答:hostPath。你用hostPath的话,节点挂了怎么恢复?一定落到原来的node上吗?答:本地开发环境,挂了就挂了,这个项目就是用来当节点挂了以后在本地快速搭建的开发环境的。生产也是hostPath吗?答:生产是挂网盘。

14、Redis的string底层怎么实现的?一组SDS,SDS具体有什么内容?说了一两个字段。其他的不知道。

15、Pod挂了,在同一台机器上调度还是在另一台机器上调度?如果当前及其没资源了怎么办?

16、GRPC用了哪些技术?基本没答上来。

17、你有什么问题?

上面的问题除了写明没答上来的(7:statefulset底层怎么实现的、9:MPT、11:websocket、16:GRPC)那些之外,其他全都答上来了,面试全程很愉快,问的基本上就是任职要求里要求的,有的公司的面试官看你之前做过A就一直问A,完全不问本招聘岗位的内容,在这方面,迅雷和字节一面是做的最好的,先问本岗位要求的技能,考察没问题了再根据你的过往经历扩展提问。哦,对了,中午还跟一面面试官出去吃饭了。

下午就是跟HR谈,谈下来感觉不错。HR人很好。

 

还是那句话,这篇对你不一定有用,但其实区块链的面试题也无法就是那些:共识算法(PBFT、RAFT、ZAB、PAXOS,其中PBFT问的比较多)、具体区块链技术(超级账本、以太坊)、项目经验、你对区块链的理解、分片、跨链、零知识证明、密码学,后面这几个属于加分项(但是如果你不会就别说你会),至于Mysql、网络相关的这些问题,基本上不管是什么技术岗位,都是差不多的,所以基础很重要。同时提醒各位一句:一面一般是了解为主,所以通过了一面不要就觉得:不过如此。不然二面、三面可能会让你大跌眼镜,因为二面有二面的难度、三面有三面的难度,不要用一面的心态和难度去进行二面、三面的面试。

最后,祝大家找工作顺利。

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青草绿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值