条条大路通罗马,罗马就是TreeMap。
一、我从集合溜达过来
1、第一面试官:java的集合类都有哪些?
答:回答list,set,map巴拉巴拉。
2、第一面试官:HashMap的内部结构是什么样的?
答:回答数组链表红黑树巴拉巴拉。
3、第一面试官:那HashMap是可以排序的么?
答:好行不能哎,因为它都叫hash了。
4、第一面试官:那java中可排序的Map有哪些?
答:不知道。
第一面试官:我了解你了,你可以回去了。。。
二、我从redis的芬芳里奔出
1、第一面试官:redis用过么?
答:sure
2、第一面试官:redis都有哪些数据结构?
答:5种基本的,四种不常用的巴拉巴拉。
3、第一面试官:等等,你说的zset是什么?
答:有序的set,可以做排行榜用什么的。
4、第一面试官:它底层什么结构?
答:我们只说最常见的,就是个跳表。
5、第一面试官:java中类似的Set有没有?
答:不太清楚呢。
第一面试官:我了解你了,你可以回去了。。。
三、只想谈Map
1、第一面试官:你用LinkedHashMap干什么用?
答:我用它做过简单的LRU。
2、第一面试官:它能根据Key排序么?
答:可以的吧,都做LRU了。
3、第一面试官:你没搞明白我的意思,我是说可以通过指定的规则排序么?
答:好像不可以哎。
4、第一面试官:那有没有可排序的Map?
答:我先把所有key放list里,然后sort这个list,然后遍历list输出。
5、第一面试官:我是问有没有现成的api。
答:不知道。
6、第一面试官:我了解你了,你可以回去了。
我从配置文件里走来
7、第一面试官:了解properties么?
答:了解,它继承了Hashtable,是线程安全的。
8、第一面试官:我问的是配置文件,你知道怎么翻译成yml么。
答:遍历解析,然后存在多层的hashmap中。
9、第一面试官:有没有更优雅的方式?比如存在树中。
答:我不太明白,你是指二叉树还是红黑树?
10、第一面试官:你好像刚才谈到红黑树。java中有没有实现?
答:hashmap链表长度超过8好像就是红黑树。
11、第一面试官:还有没有其他的地方?
答:不知道。
第一面试官:我了解你了,你可以回去了。
四、我从多线程走来
1、第一面试官:知道线程安全的map么?
答:Hashtable吧,不过都推荐用ConcurrentHashMap。
2、第一面试官:线程安全的可排序的Map知道么?
答:ConcurrentSkipListMap吧。
3、第一面试官:额,还有其他方式么?
答:好像没有了吧。
4、第一面试官:你不会使用Collections.synchronizedMap改造TreeMap啊
答:...
第一面试官:我了解你了,你可以回去了。。。
五、我从分布式存储强行过来
1、第一面试官:怎么快速判断一个key再分布式存储中存在?
答:Bloom过滤器?
2、第一面试官:很不错,那怎么快速排序这些key呢?
答:使用索引最快吧。比如b+tree等。
3、第一面试官:要是我是coordinate节点,没有具体的存储怎么办?
答:那就再内存里排序。
4、第一面试官:java中有没有可以排序的这种集合?
答:ArrayList这种都是可以的啊。
5、第一面试官:拿到你还要把key数据再取一次么?不能放在Map里么?有没有可排序的Map?有现成的就方便的多啊。
答:我明白你的意思了。没有。
第一面试官:我了解你了,你可以回去了。。。
六、我就是想问
1、第一面试官:TreeMap了解么?
答:了解。树形的Map。
2、第一面试官:底层什么结构?
答:树和哈希。
3、第一面试官:什么树,什么Hash啊。讲的明白点。
答:TreeMap中的Tree,HashMap中的Hash啊。
4、第一面试官:你到底了解TreeMap么?
答:了解啊。就是树形的Map。
第一面试官:如果你没有其他问题,那你稍等一下。。。
七、怕怕的
1、第一面试官:TreeMap用在哪些场景?
答:这个我很清楚,不过我负责设计了公司的大部分技术架构,很久没有动代码了。
2、第一面试官:那你简单说下最基本的集合有哪些吧。
答:知道,比如TreeMap这种我就经常用。有几个同事使用的时候,掉进了几个陷阱,还是我帮忙指出的。你有没有其他项目管理方面的问题?
3、第一面试官:等等等等,我对你说的陷阱问题非常的好奇,能简单介绍一下么?
答:这个也非常容易理解,一些不适合TreeMap的使用场景,是要避免去使用的。针对这些场景,我们有idea的代码插件,还有solar这种工具进行代码扫描,发现也是很简单的。对了,您熟悉vscode么,我可以给你讲一下插件开发。
4、第一面试官:...我只想知道你到底了解TreeMap不。
答:我刚才不是说了么,TreeMap是基本集合的一种,有许多常见的陷阱。不过可以在项目管理中规避掉,这就是方法论的合理应用。
5、第一面试官:如果你没有其他问题,那你稍等一下。
你很幸运
6、第一面试官:知道java中可排序的Map有哪些么?
答:TreeMap。从内部结构来看,TreeMap 本质上就是一棵“红黑树”,而 TreeMap 的每个 Entry 就是该红黑树的一个节点。
第一面试官:你明天可以来上班了!!!
八、End
我就是想知道TreeMap是红黑树,这么简单的答案还要我教你么?我就是中国第一TreeMap面试官,这就是我过去的故事。
网友评论