字节交叉面试会考算法吗

Python015

字节交叉面试会考算法吗,第1张

会的。

1.字节跳动并不会特别关心候选人使用什么编程语言,逻辑很简单,你Java特别厉害,那转Go语言肯定不难。当然,如果你觉得难,那大概率也通不过后面的面试。

2.在整个的面试流程中,至少会有3轮技术面,并且每一轮面试都会考算法。不管你是工程师,还是架构师。

3.为什么要考这么多算法?其实核心是看候选人是不是足够聪明。和Netflix一样,字节跳动招聘工程师的必要条件就是聪明。

4.怎么考算法呢?一般会分两步,第一步是直接让你说思路,第二步是让你直接上手写代码。字节跳动的算法题一般对应的是LeetCode中级模式,要通过面试,你肯定得花时间好好准备。

5.写算法代码的时候,你可以用白板,也可以用电脑,都行。常见的模式是给你20分钟时间,让你写出来某道题的解法。当然,肯定是越快做出来越好,这能说明你的熟练程度。

拜占庭共识算法有一个前提:

安全节点数 R(eliable) 大于不安全节点数 E(vil)。而且理想情况下R方希望投票结果是统一的。

所以结合两个不等式

P >R/2 +E

P <R

得出

R >R/2 + E

这就可推测出

R + R/2 >R + E

(3/2) R >ALL(总节点数)

辣么 R >ALL(2/3)

所以当安全节点数 R(eliable) 大于总节点的(2/3)时,投出来的票才是可靠的

然后,祭出拜占庭投票的流程,以及算法模拟流程

其中D为发送请求端,R0 R1 R2 R3为服务端:

最后本来想自己写个实现的,但是Java实现太重量级了,贴个别人用Go语言实现的吧

https://github.com/bigpicturelabs/consensusPBFT