携程线下面
一面
刚开始聊了下我的研究方向
1.给一个数组,怎么去重,然后延伸到hashmap的底层原理,扩容。
2.说说堆和栈有什么区别,都是干什么用的,然后问堆不会有并发安全问题?从堆给对象分配内存怎么保证线程安全?
3.说说堆排序和归并排序,扩展到4亿的整数,怎么获得前100 大的数?
4.说说项目中的缓存击穿,缓存穿透,缓存雪崩,怎么解决的?
5.说说项目中的秒杀的超卖,一人一单,高并发你是怎么解决的?
6.一般解决线程的安全性你都用什么方法解决?(cas,synchronized,threadlocal)
7.你的项目中有用到ThreadLocal吗?
8.写一个sql统计每天的点赞率
二面
1.你项目中全局唯一id 是怎么设计的?
2.你还知道其他全剧唯一id 的生成方案吗?为什么不用雪花算法呢?
3.什么是分布式锁?分布式锁是怎么加的?
4.多线程的场景有哪些?什么时候用到多线程?
5. complete able future了解吗?(我扯了一下作用还有futuretask)
6. complete able future怎么放到线程池的?
7.写下代码,两个线程交替打印,一个打印1一个打印2
8.写代码,给一个数组,把偶数放到前面,分析时间复杂度
9.说说LRU怎么实现,需要用到哪些数据结构
10.说说redis的缓存淘汰策略
11.假设写了个复杂的sql,怎么看性能好不好?
12.模糊查询like能走索引吗?
13.你查redis的时候是一条一条查数据的吗?会不会有性能问题?怎么解决?
14.设置缓存过期时间的命令是什么?查看过期时间的命令是什么?
15.java中long占几个字节?表示最大值是多少?是怎么算的?
16.字符串常量存在哪里?垃圾回收发生在哪里?如果发现full gc很频繁,怎么排查原因?