round1 一面
1、java有哪几种基本数据类型:https://www.jianshu.com/p/7703cc4cce75
2、如何计算6字节大小的整数能表示的范围?int4字节,long 8
3、java有哪些集合类?区别以及优缺点?https://www.jianshu.com/p/f96e86af2ec3
4、(重点)hashmap:1)put过程,2)什么时候扩容,3)如何扩容,4)如何解决hash冲突,5)如何减少hash碰撞(hashcode和低16位做异或运算)6)什么时候转成红黑树?7)时间复杂度
12345)put过程、扩容、hash冲突:https://www.jianshu.com/p/61f5a6ee050c
6)https://www.jianshu.com/p/211741ea97fe
5、红黑树特点、和AVL树的区别?
6、synchronized底层原理,jvm指令是什么?https://www.jianshu.com/p/7c5e28d839bb
7、(重点问了两次)java中锁,可重入锁的实现原理?https://www.jianshu.com/p/7c5e28d839bb
8、AQS是什么,内部实现?https://www.jianshu.com/p/d7ae4c8fe8f3
10、写个单例模式、分析下单例模式的并发问题,如何改进?https://www.jianshu.com/p/f5246fb69d8b
round1 二面:
1、redis有10000条缓存需要更新,该如何更新?
redis Pipeline https://www.jianshu.com/p/f66e9584154f
2、mysql索引结构,为什么用B+树不用红黑树?红黑树写慢
3、kafka生产、消费消息如何保证精准一次的?https://www.jianshu.com/p/f359f656b735
4、设计高可用的延迟消费队列?副本,ack,持久化
5、(重点)查询平均成绩>=60分同学的学号,姓名和平均成绩?
学生表: id (学号)name (名称) 考试表:student id(学号), course_ id(课程编号),score(分数)
![](https://img.haomeiwen.com/i9930763/a4001a7dabc7597b.png)
round2、一面
1、1)更新缓存策略,回答先删缓存再更新,继续问删完未更新那一刻,再次读会有脏数据问题如何处理。
2)如何先存数据再删缓存可能带来什么问题?
https://www.jianshu.com/p/7395764f2832
https://www.jianshu.com/p/02d4460ad24b
3)更新/删除失败怎么处理?重试,放队列,异步更新(上面)
2、缓存击穿 如何处理?https://www.jianshu.com/p/35abaa2c59ea
3、redis分布式锁,刚获取到锁,主节点宕机 数据未同步 如何保证不会同时存在多个锁?
https://www.jianshu.com/p/ebcd53ebad64
4、redis copyonwrite?
java:https://www.jianshu.com/p/1b26d3b63953
redis:https://www.jianshu.com/p/3c2e9d8cc34c
5、(重点)Redis rdb 数据丢失怎么处理?
开启 aof:https://www.jianshu.com/p/41a41c86c0cf
aof具体:https://www.jianshu.com/p/32731387f7c8
rdb具体:https://www.jianshu.com/p/17347b2455dd
6、定时调度是如何实现?
1)cron job调度表达式最好写在数据库或配置中心,当调度周期改变时 通知cronjob更新
2)Spring实现方法:@EnableScheduling、@Scheduled
7、Spring事务回滚底层实现?https://www.jianshu.com/p/3617dc4142b1 (最下)
9、(重点)说说对实物隔离级别理解,用自己的话说,不用背概念,不可重复读是怎么实现?
https://www.jianshu.com/p/8ffde011730b 实现:https://www.jianshu.com/p/42330b3f64f1
(重点)可重复读是否解决了幻读,幻读的含义?
没彻底解决,MVCC + Next-Key Locks https://www.jianshu.com/p/0f06c692a2fd
9、动态代理和静态代理的区别,反射为什么性能低?https://www.jianshu.com/p/72cb5ac1237e
10、做一个通用的系统设计,不同的客户,上传不同的数据(字段不同),但是要保证用户各个字段查询性能高,不同的客户有不同校验规则
11、如果用用户手机号当主键有什么不合理的地方?
换电话不方便,暴漏客户隐私,对于自增ID是无序的,插入操作带来的索引更新也会效率更低(数据位置变动)
12、为什么多路复用快?
https://www.jianshu.com/p/4bca399daca3
round3
1、kafka 为什么用zk,rocket mq用自研的NameServer?https://www.jianshu.com/p/ef212ea15520
2、mongo 两个点,距离近,但分别在连个不同的方块中怎么调整
3、多级缓存具体怎么实现,都放在哪个介质中?hashmap
算法
1、1143题 最大公共子序列: https://leetcode-cn.com/problems/longest-common-subsequence/
2、单链表,把所有奇数节点和偶数节点分别排在一起。注意,是节点编号的奇偶性,不是节点的值的奇偶性
输入: 1->2->3->4->5->NULL 输出: 1->3->5->2->4->NULL 示例 2:
输入: 2->1->3->5->6->4->7->NULL 输出: 2->3->6->7->1->5->4->NULL
https://leetcode-cn.com/problems/odd-even-linked-list/submissions/
3、给个数组里面只有0,1,计算出只包含1的最大矩形块的面积
https://leetcode-cn.com/problems/maximal-rectangle/?utm_source=LCUS&utm_medium=ip_redirect_q_uns&utm_campaign=transfer2china
4、比较版本号 https://leetcode-cn.com/problems/compare-version-numbers/solution/bi-jiao-ban-ben-hao-by-leetcode/
5、股票的买卖时机 https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/
II https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/
网友评论