bigo java后端开发 二面凉经(进三面了)
复盘一下 bigo java后端开发 二面凉经
2. 讲最有挑战性的一个项目(怕被怼不敢讲秒杀系统,讲了一个学校的项目)
3. 项目中有没有网络连接超时的现象。答没有,因为真个系统都是局域网。
4. 项目中的身份认证是怎么做的。项目相关问题。
5. 说一说常用的 linux 的命令。答 cat, ls, cd, mkdir, 看cpu占用率用top, 查看进程用 ps, 搜索文件用 find。
6. 说几个 java 中的不可变对象。答 final 修饰的对象,String 等。追问有没有不可变的数组,回答应该有。
7. 不可变对象是线程安全的吗?答不是,傻了,,,
8. 单例模式懒汉式中除了双重检测还有啥?答synchronized锁,追问还有吗?答没了,还差个volatile
9. try_catch_finally 的 finally 里面加 return 可以吗?答可以。
10. 软引用和弱引用了解吗,区别以及使用场景。
11. JIT了解吗?什么时候使用。答出现重复频次高的代码比如while循环里面等。
12. 举一个不是线程安全的例子。答new对象的过程。
13. ThreadLocal了解吗?原理是啥?答是一个map。追问ThreadLocal中的引用是什么引用类型,盲猜强引用,答错了。。。
14. 说一说线程池的一些参数?然后说说线程增加的过程。
15. 线程池的拒绝策略有哪些?答四种。
16. 怎么把一个任务加入线程池?答了一个execute,还差submit。
17. 那execute和submit的区别?答不知道,返回future,,,
18. CountDownLatch和CyclicBarrier的区别和使用场景?CountDownLatch底层实现?
19. 怎么实现mysql数据库的乐观锁?答不知道,其实秒杀中查询库存可以加一个版本号字段实现乐观锁,没想起来。
20. 在spring事务中如果调用rpc可能会出现什么问题?答rpc会阻塞,导致业务执行慢,没答到点子上,其实是可能导致数据库连接无法正常关闭导致连接池耗尽。
21. 说一下聚簇索引和索引覆盖?
22. 索引失效的场景?答了联合索引最左匹配原则,还有索引参与计算。
23. 问mysql的隔离级别。read committed 和 repeatable read 的区别。答能不能解决不可重复读。追问还有吗?
24. 给了一个 sql ,delete from table where id = 8; 问 假设 repeatable read 隔离级别下并且 id 是主键,会加什么锁?答 record lock。
那 id 是普通索引,会加什么锁?答 next-key lock。那如果 read committed 隔离级别下并且 id 不是索引呢?答 table lock。
25. Mybatis中的 $ 和 # 的区别?
26. 用过kafka吗?答没有,用过rabbitmq。
27. 知道rabbit如何创建网络通信吗?答不知道,应该是在tcp基础上封装了自己的协议。其实是 amqp 协议。
28. 业务上怎么防止 kafka/rabbit 消息的重复消费呢?答rabbitmq有ack机制,其实他想问的是kafka的幂等性。
29. 问 tcp 如何保证不丢包?答超时重传,序列号,拥塞控制,流量控制啥的。被说太笼统了让我好好看细节,,,
30. 问了一个网络安全的东西,答不知道,连名字都没听过。
31. 那就问了RSA和AES算法的区别?答AES是对错加密,RSA是非对称加密。加密算法懂得不多。
算法题
给出一个字符串数组,返回所有互为“换位词(anagrams)”的字符串的组合。(换位词就是包含相同字母,但字母顺序可能不同的字符串)
备注:所有的输入都是小写字母
例如:
输入["tea","nat","ate","eat","tan"]
返回
[["ate", "eat","tea"],["nat","tan"]]
我的解法是 字典序排序一下,然后 HashMap<String, List<String>> 存字典序相同的字符串的列表,输出即可。
反问环节
1. 你觉得秒杀系统中有哪些重要的地方呢?面试官答:防止超卖,限流,缓存和数据库的一致性等等。
2. 你觉得为了实现消息队列的高可用,怎么防止消息丢失? 面试官答: kafka靠broker副本机制实现高可用。kafka发送端的消息丢失,有应答机制。kafka官方保证只要接受端不挂接收端消息永不丢失,,,
#面经##校招##BIGO##Java工程师#