【字节跳动校招提前批】后端面经-已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
#字节跳动校招提前批##字节跳动##校招##Java工程师##面经#
查看23道真题和解析