首页 > 字节基础架构日常实习 一二三面+hr面
头像
Crazy_Diamond
编辑于 2021-09-16 16:05
+ 关注

字节基础架构日常实习 一二三面+hr面 内部员工回复

9.16更新醉汉题的两种证明
--------------------------------------------------------------------
9.13 offer
———————————————————————
9.10又想起一点,继续更新。官网状态面试已完成。
———————————————————————
9.8更新了一些想起来的内容与Hr面
———————————————————————
本人写Java的,虽然字节用Golang但是还是问了很多Java的内容,现在基本只记录一些印象深刻的题和算法,其他都是八股。

一面8.31 1h 主要问基础:
查找大量数据之间的几行数据怎么做快(走索引)
B树和B+树的区别,为什么不用B树做索引(可以从IO,连续读取,查找稳定几个方面答)
Redis持久化机制
RDB fork的子进程干了啥
Aof重写Fork的子进程在干嘛
Redis集群cluster模式
哨兵为啥要三个(拜占庭容错)
Spring IOC AOP和用到的设计模式
同一包下相同类不同版本怎么加载(ClassLoader+Class类)
类加载机制,双亲委派
其他都是些Java八股,忘的差不多了,写了三道算法题,两道智力题
1.二叉树右视图
2.快排
3.链表反转

1.烧绳子,一根绳子烧完1h,计时1h15min(先拿两根,一根烧一头一根烧两头,两头烧的绳子烧完时30min,此时点燃一头烧的绳子的另一头,烧完后45min,然后再拿一根绳子两头烧+30min)
2.醉汉坐飞机,100个座位随机找一个坐,最后一个人能坐到正确位置的概率(没答上来,面试官引导说只有两个座位呢?答曰1/2,如果三个座位呢?答1/3*1+1/3*1/2+1/3*0=1/2,当时觉得很神奇)
给个代码的证明
public class Main {
    public static void main(String[] args) {
        int correct = 0;
        for(int i=0;i<1000000;i++){
            if (function()){
                correct++;
            }
        }
        System.out.println("循环1000000次正确率: "+(double)correct/1000000);
    }
    public static boolean function(){
        int[] seat = new int[100];
        Arrays.fill(seat,-1);
        //醉汉0开始坐
        int random = (int)(Math.random()*100);
        seat[random]=0;
        //正常人1开始坐
        for(int i=1;i<100;i++){
            //如果自己的位置没人坐就直接坐下
            if(seat[i]==-1){
                seat[i]=i;
            }else{
                //否则重新找一个没人的位置坐
                random=(int)(Math.random()*100);
                while(seat[random]!=-1){
                    random=(int)(Math.random()*100);
                }
                seat[random]=i;
            }
        }
        return seat[99] == 99;
    }
}
//循环1000000次正确率: 0.49979
数学证明,使用递归的思想



二面9.3 1h 问题深入一点:
MySQL索引
线程池参数和任务执行流程
ThreadLocal
TCP状态
Docker怎么打包成镜像
K8s相关
Nginx负载均衡怎么做,有哪几种方法,怎么实现的
hash节点宕掉了怎么办(病急乱投医,答了取模哈希挂了server少了就定位全错,换成一致性哈希)
分布式相关,一致性哈希(没具体学过但是好像和学过的分布式中的DHT是一样的,答了chord算法,FingerTable以及资源定位的流程)

算法: 01组成的字符串,求01连续并个数相等的子串个数,如001110 有0011,01,10,01,双指针来做,比较巧妙

三面9.7 45min 问项目问实习:
介绍实习中的项目,聊了聊天
Docker怎么分配资源 (只会docker run配置参数不知道具体实现,然后就问了cgroups)
Linux cgroups (Linux的物理资源隔离机制)
K8s (只知道是负责容器编排)
项目中有用过mongo,问Mongo怎么加索引,答没加过
MySQL 索引
B树和B+树 (答了存储位置,关键字和指针的个数,顺序查找,磁盘IO等等)
Redis底层数据结构 (sds与C的char数组区别,有什么优势; quicklist ziplist; skiplist时间复杂度,为什么不用红黑树)
Redis 热key (虽然只是听说过但是他让我联想,最后答出了主从复制集群,读从机)
Java stream 字符流字节流 (没用过)

算法题: Maximum Volume 依旧双指针

面完收到hr面通知

Hr面9.8 25min:
公司介绍
面试体验
跨考经历
城市选择
多久入职
学习方法
业余爱好

总的来说算法题不难(相较暑期来说),字节面试八股相对来说不多,会根据简历来提问,每个人的问题大相径庭,目的是想了解你知道的知识知道的有多深,如果你能结合一些课程知识让面试官知道你不是背的,会比较加分。最重要的是联想其他的知识,如集群和分布式的理论知识,知道命名,容错,一致性等概念基本上能回答所有集群相关的问题,如Kafka,Elasticsearch等组件的容错机制(副本,切片)与Hdfs几乎一致。总的来说面试官水平很高,自己也有些运气成分。

更多模拟面试

全部评论

(22) 回帖
加载中...
话题 回帖