​1.序

马上春招了,分享一波干货。腾讯、百度、阿里、京东、快手、斗鱼、华为、海康威视等面试过程。昨天分享了斗鱼,今天来看看字节。

在面试之前给大家看看我的简历以及个人简介部分,因为面试过程与自己的简历有很大关系。面试官往往会结合简历以及个人简介来问。

<mark>个人简历+项目介绍+简历模板</mark>:梦想成真-----项目自我介绍

<mark>个人简介+自我介绍(视频讲解)</mark>:一字一句教你面试“个人简介”

2.字节跳动面试过程

2.1自己1面 (部门:直播开发、时间:70分钟)

1概率

设甲先抛。设甲胜率为x。则第一次甲抛了反面后,乙胜率为x,从而甲胜率+乙胜率=x+0.5x=1,从而x=2/3。

2 握手方式
12n个人围成一圈, 两两握手, 形成n条握手的线段, 线段没有交点, 一共多少种握手方式?

#include <iostream>
#include <cstring>
#include <cstdio>
#include <math.h>
#include <map>
#include <queue>
#include <algorithm>
#define mem(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
typedef long long LL;
const LL mod=1e9+7;
using namespace std;
const int N=1e2+100;
int a[N][N];
//a[i][0]存的是第i个数字的长度,a[i][1]是数字的最低位,a[i][ a[i][0] ]是数字的最高位
void init()
{
   
    mem(a,0);
    a[0][0]=1;
    a[0][1]=1;
    a[1][0]=1;
    a[1][1]=1;
    for(int i=2; i<=100; i++)
    {
   
        int z=4*i-2,r=0,p;
        a[i][0]=a[i-1][0];
        for(int j=1; j<=a[i][0]; j++)//乘以(4*i-2)
        {
   
            p=a[i-1][j]*z+r;
            a[i][j]=p%10;
            r=p/10;
        }
        while(r)
        {
   
            a[i][++a[i][0]]=r%10;
            r=r/10;
        }
        z=i+1,r=0;
        for(int j=a[i][0]; j>=1; j--)//除以(i+1)
        {
   
            p=(r*10+a[i][j])/z;
            r=(r*10+a[i][j])%z;
            a[i][j]=p;
        }
        while(a[i][a[i][0]]==0) a[i][0]--;//去掉最高位的0
    }
}
int main()
{
   
    init();
    int n;
    while(~scanf("%d",&n)&&n!=-1)
    {
   
        for(int j=a[n][0]; j>=1; j--)
            printf("%d",a[n][j]);
        printf("\n");
    }
}

3随机数生成方式
现在有一个随机数生成器, 1/3概率生成1, 2/3生成0, 如何基于这个生成器, 得出一个1/2概率是0, 1/2概率是1的生成器?

初看确实有点头晕,也没什么思路。但是仔细想想为什么生成0和1的概率均为1/2,我们可以看成是生成0和1的概率是均等的。这样想之后,似乎就没那么不好理解了。

原始的随机数生成器,生成0 的概率为p,生成1的概率为1-p,那么怎么构造才能使得生成0和1的概率相等呢。或者说有两个独立的事件的概率是相等呢?

这样来做一下,让该随机数生成器生成两个数,那么序列是00,01,10,11概率分别为 pp,p(1-p),(1-p)p,(1-p)(1-p)

很明显,这四种情况中存在两个独立的事件概率是相等。也就是01和10,那么我把01看成是0,10看成是1,那么他们输出的概率均为p(1-p),其他的情况舍弃。这样就得到了0和1均等生成的随机器了。

思维在扩展一下,生成1,2,…n的概率分别是1/n,也就是均等的。那么我们可以想怎么生成一个序列,里面有n个独立时间,概率是相等。而且我们能够猜测到这些概率的形式为 px*(1-p)y,如果要相等,那么x必须等于y.这样就说明了序列中0和1的个数是相等的。而且这样的情况必须有多与n个才行。

数学表示就是 C(2x,x) >=n ,我们只需要知道x就能够知道序列要多长了。而且中间必定有超过n个概率为{p(1-p)}^x不相等序列。

问题就可以解决了。

其实卡我的问题是,丢掉那些多余的,只要n个等概率的序列,是否真的是等概率的(最终输出)。
4 http的问题
影响http的最大请求数

一篇让你彻底了解HTTP 的前世今生

5302 303区别

一篇让你彻底了解http请求报文和响应报文的结构

6数字在排序数组中出现的次数

剑指offer --数字在排序数组中出现的次数

7MVCC

https://blog.csdn.net/weixin_41563161/article/details/104871827(binlog redolog MVCC)

https://blog.csdn.net/weixin_41563161/article/details/105763848(MVCC的实现)

https://blog.csdn.net/weixin_41563161/article/details/105722700(Innodb中的事务隔离级别和锁以及MVCC之间的关系)

8java实现开根号

【offerMe–刷题必备】java如何实现开根号的运算

9输入url会怎么样

程序员必考—http\https的连接过程

10 索引的底层

https://blog.csdn.net/weixin_41563161/article/details/102610132(B树 B+树 红黑树详解)

https://blog.csdn.net/weixin_41563161/article/details/104163948(b树和b+树的区别)

https://blog.csdn.net/weixin_41563161/article/details/105483950(B+树分裂)

https://blog.csdn.net/weixin_41563161/article/details/105165346(索引)

https://blog.csdn.net/weixin_41563161/article/details/103553313(数据库索引怎么实现的)

https://blog.csdn.net/weixin_41563161/article/details/102859171(普通索引和唯一索引,应该怎么选择?)

https://blog.csdn.net/weixin_41563161/article/details/102457643(深入浅出索引)

11 如何实现事务的呢

https://blog.csdn.net/weixin_41563161/article/details/101111928(最全事务)

https://blog.csdn.net/weixin_41563161/article/details/102852150(事务到底是隔离的还是不隔离的?)

2.2 字节跳动二面(40分钟)

1 项目

个人简历:梦想成真-----项目自我介绍

2 N阶台阶,每次走一步或两步,计算共有多少种走法,并将每种走法打印出来。
直达链接:字节算法题–N阶台阶,每次走一步或两步,计算共有多少种走法,并将每种走法打印出来。

3.字节跳动面试感受

字节面试是很难的,尤其是每一面都要A题,基本A不过就要凉凉。

一定要有一个特别突出的地方让面试官对你有好印象,字节很重视有自己的特色,比如某一门很精通,或者你会什么小众的技术。

字节有很多次面试机会,所以多面试,而且每一场面试都尽量表现好,即使你知道这场面试不能通过,但是还是要努力。

字节面试之前希望大家多A leetcode以及总结常考题目。

本公众号分享自己从程序员小白到经历春招秋招斩获10几个offer的面试笔试经验,其中包括【Java】、【操作系统】、【计算机网络】、【设计模式】、【数据结构与算法】、【大厂面经】、【数据库】期待你加入!!!

1.计算机网络----三次握手四次挥手
2.梦想成真-----项目自我介绍
3.你们要的设计模式来了
4.震惊!来看《这份程序员面试手册》!!!
5.一字一句教你面试“个人简介”
6.接近30场面试分享
7.你们要的免费书来了