【字节跳动校招提前批】后端面经-已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工程师##面经#