首页 > 【字节跳动校招提前批】后端面经-已offer
头像
小烈111
编辑于 2020-07-07 21:22
+ 关注

【字节跳动校招提前批】后端面经-已offer

其实早就在6月24日就面完三面啦!端午后hr给我审批offer了😂,今天审批貌似通过了,所以来写一下面经啦

一面:
1. 从浏览器敲入baidu.com到回车的过程中发生了什么
2. client 如何通过ip地址找到目标机器(路由转发)
3. 了解arp吗
4. http和https的区别
5. redis有哪些数据结构? 如何用这些数据结构实现一个发布订阅的功能?
6. kafka为什么快?好处在哪?(主要是实习中用到了kafka)
7. 字符串压缩算法了解过吗?
8. threadlocal知道吗,如果让你实现一个类似的功能你如何实现?(当时不记得threadlocal了,然后面试官给了我个场景,让我实现以下。。我说用map然后key是thread的地址,value是存储变量)
9. 100w个数据求出前100大的数据
10. 手撕单例模式,双重判断
11. 单例模式为啥要用volatile,volatile的原理
12. jvm的数据结构?堆的结构?minor gc的算法?年轻代gc后没死的对象放哪?如何才能进入老年代,没进入老年代的从from to区间中的存放过程是怎样的(复制算法)?
13. 12m的对象放入年轻代10m的堆中会发生什么?(主要看老年代是否够大)
14. OOM后如何定位问题在哪?

算法题:
小红吃n天汉堡,要求每天吃的汉堡数目不一样,而且要尽可能多吃,且尽可能少吃牛肉汉堡。每天鸡肉汉堡供应数目a[i],牛肉汉堡供应数目b[i]。求至少要吃多少牛肉汉堡?(这题没写出来,面试官真是一点提示也不给啊。。。)

7.7 更新
import java.util.*;


public class Solution {
    /**
     * 
     * @param n int整型 
     * @param a int整型一维数组 
     * @param b int整型一维数组 
     * @return long长整型
     */
    class Node {
        public int chick;
        public int beef;
        public long total;
        public Node(int chick, int beef, long total) {
            this.beef = beef;
            this.chick = chick;
            this.total = total;
        }
    }
    public long EatingHamburger(int n, int[] a, int[] b) {
        Node[] nodes = new Node[n];
        for (int i = 0; i < n; i ++) {
            nodes[i] = new Node(a[i], b[i], a[i] + b[i]);
        }
        Arrays.sort(nodes, (o1, o2) -> Long.compare(o2.total, o1.total));
        long maxBurgeOneDay = nodes[0].total;
        PriorityQueue<Node> queue = new PriorityQueue<>((o1, o2) -> o2.chick - o1.chick);
        long ans = 0;
        int pos = 0;
        //每天吃个个数不相同,那么肯定是从eatBurgersArray = [maxBurgeOneDay, ...., q] maxBurgeOneDay > q, 且len(eatBurgersArray) = n
        //这里表示从一天能吃最大maxBurgeOneDay汉堡,以最小步长往后走,如果能吃到就吃,这样就可以吃到最大总数
        //例如sum [5,4,3,2] 肯定大于sum [5, 3, 1, 0]
        for (long i = maxBurgeOneDay; i > 0; i--) {
            //如果pos天的汉堡供应总数,大于今天该吃的汉堡数i,那么第pos天就肯定可以吃到i个汉堡,所以入队
             while (pos < n && nodes[pos].total >= i) {
                 //队列里所有的node当天都能供应i个以上汉堡,而且鸡肉多的node牛妹肯定最喜欢,所以优先出队
                 queue.add(nodes[pos]);
                 pos++;
             }
             if (!queue.isEmpty()) {
                 Node t = queue.poll();
                 long todayBeef = Math.max(i - t.chick, 0L);
                 ans += todayBeef;
             }
        }
        return ans;
    }
}


二面:
主要是问项目
1. redis的缓存穿透问题如何解决?
2. 在实习时数据库性能优化你做了什么工作?
3. 了解grpc吗?
4. 你是如何测试dubbo dfs thrift三种rpc性能的,简单说说。(还和我讨论了下不同序列化方式对性能影响)
5. 你是如何解决你实习过程中full gc问题的
6. 从浏览器敲入baidu.com到回车的过程中发生了什么
7. left join 和 inner join的区别
算法题:
1. leetcode 二叉树右视图(我用bfs写的,其实也可以用dfs;我说我做过,然后面试官说那就快点写完进入下一题吧😂

2. o表示住户,x表示快递柜地点。输出每个用户到快递柜的最近距离
输入:
o o o
o x o
o x o
输出
2 1 2
1 0 1
1 0 1

三面:
没面技术了
你最大优点是啥
你这几年来成就感最大的事情是啥
最大压力是啥
拿到offer后准备这一年干嘛
愿意来北京吗? 答:no

最后hr还是定了上海,祝大家秋招顺利
over

更多模拟面试

全部评论

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

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐