字节跳动实习-测开(凉经)
上个周面的了,补一下面经。
一面 12.12 1h
- 自我介绍
- UDP和TCP的区别
- HTTP和HTTPS的区别
- 三次握手的细节,什么时候客户端会重传请求,多少秒传一次(下次组织一下语言,说的有点乱)
- 常用的集合类
- JVM垃圾回收机制
- MySQL底层什么实现的?B+树的特点?还有哪些树?为什么不用其他树?
- 了解unique key吗?可以解决幂等性……,又聊了聊项目中如何做的幂等性,有哪些保障幂等性的方法。
- 索引索引什么?(没听懂想问啥,说了说创建索引的原则和聚簇索引)
- Nginx经常配置什么部分?说了说在项目中如何配置的。
- Redis在项目中用来什么?怎么做?缓存从哪里查数据?为什么不使用LocalCache?什么场景用LocalCache?(一些细节,结合你的项目来问)
- 项目中QPS怎么测试的?
- 手撕:
- 三道SQL题(多表联查、排序、limit、模糊查询)太久没写SQL了,但还是凭记忆写出来了,以后一定要抽时间练练
- 计算根号2的值,不能使用库函数,保留2位小数(当时直接写的模拟,答案不对,他说了时间复杂度太高,考虑一下其他的查询,说了二分法,他觉得可以,但是已经很久了,就没再让我写了,唉,没做过类似的,菜😭😭😭)
二分方法:
// 计算根号2的值,不使用库函数,保留两位小数 public class Sqrt { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Sqrt demo = new Sqrt(); double n = sc.nextDouble(); int m = sc.nextInt(); // 2 2 System.out.printf("%.2f", demo.mySqrt(n, m)); } /** * 每组输入只有1行,包括有一个正实数和一个n正整数m,其中1 <= n <= 32, 1<=m<=2^n * * @param n * @param m * @return */ private double mySqrt(double n, int m) { double pre = 0, l = 0, r = n; // 迭代精准度,取决于题目对精度的要求 double eps = 1e-12; // 在精准度范围内,进行搜索(浮点数的二分搜索) while (r - l > eps) { double t = 1; double mid = (l + r) / 2; // 对mid乘m次 for (int i = 0; i < m; i++) { t *= mid; } // 在对t的值和n进行判断,来决定左右边界的移动 if (t > n) r = mid; else l = mid; // 记录前一个搜索的值 pre = mid; } return pre; } }
其他方法:ChatGPT说牛顿插值法来解决
- 说说红包满减的测试用例设置:开始理解歪了,说的不够开阔,面试官一直引导,后面提醒了一下我可以从数据库和异常方面来说。总之说的磕磕绊绊的。
- 说说用过哪些测试工具?
- 你对测开的看法?
- ……其他问题记不太清楚了
反问:
- 多久有结果(1~3天)
- 测开进去开发多还是测试多(看个人的发展意向)
全程面试官都会看你简历来问你,不会问你没写的。字节很重视coding能力,需要准备一下。不会会引导你,总结体验不错。
二面 12.15 1h
- 自我介绍,介绍项目
- 你做项目的流程?
- 项目中Redis怎么用的?为什么用它,用他的理由?
- Redis的数据类型
- Redis持久化机制
- 阻塞Redis的原因有哪些?
- MySQL左连接、右连接、内连接的区别?
- MySQL的锁机制,又聊了聊悲观锁乐观锁那些
- MySQL创建表(说了说创建表的原则)
- ==和equals的区别
- 多态的特性,不只是简单的说说重写和重载,聊了很久,面试官一直让我举例生活中的例子,在说说怎么实现的,反正就问的比较深入,并说我不能只看书上讲的😂
- final关键字什么情况下需要使用,每种情况下的好处
- 如果让你测试项目中的抢购模块,怎么测试?
- 算法题:************,很常见的题,但是面试官一直聊有什么优化的地方,也就是不需要重复计算的地方,优化到最优。
- ……中间又聊了聊其他问题,记不太清楚了
反问:
- 开发和测试占比?4:1
- 多久有结果?1~2天,可能还需要三面
三面 12.16 1h多
抓住项目问了很久很久,问的很深。主要从提高QPS,性能优化的角度来问你。也就是Redis和MQ问的很多。
- 项目为了提高性能,做了什么优化和改进?
- 你为什么使用Redis?存了哪些数据?为什么要存这些数据,不存其他的?数据过多不会有问题吗?有什么淘汰策略,用的啥?为啥使用LFU?LRU和LFU有什么区别?缓存击穿、穿透、雪崩?
- 为什么不用Spring的多线程,而是使用Executors自己配置?有什么好处?
- 为何使用MQ?怎么用的?MQ的消息丢失(三种情况)?如何保序?
- 怎么保存信息在线程上下文使用的?就是问ThreadLocal,原理是什么?和CurrentHashMap的区别?
- 项目中遇到的困难?
- 手撕:128. 最长连续序列(O(n)复杂度,用Set即可),并写出你需要测试的所有数据,能写多少写多少
- 有些项目细节实在记得不清楚了,问的很广,开始一直get不到面试官想问啥。
过几天问了下结果,HR说盘点了一下需求,暂时不招实习生了,想招全职的,应该是婉拒吧😂。
发下面经攒攒人品
#字节日常实习##测开实习##凉面##24届实习##24实习#