阿里一面凉经
突袭的电话,让我猝不及防,整个面试过程就三十几分钟,别人都一个多小时,最后评价也不是很好,我太菜了~
1.从hashmap里面get一个元素的底层过程
2.hashmap的get最坏情况的时间复杂度(红黑树之前是ON,变成红黑树就为logn)?为什么使用红黑树而不使用普通平衡树?(没答上来)?
3.concurrentHasmap的get在并发情况下需要加锁吗?那么获取size的时候呢?(没回答上来,回答get不需要加锁,但是他说了是在多线程情况下,我就以为要加锁,被带偏!!源码是没加锁,但是会有标志信息。)4.线程的几种状态?新建、就绪、运行、阻塞(等待阻塞(调用swait),同步阻塞(就是锁阻塞),其他阻塞(调用sleep等))、死亡
5.mysql索引原理,什么是B+树(这个我没回答出来,忘了是搜索树还是平衡树了)
6.synchronized怎么实现同步代码的?(这个我理解错了,以为让我回答底层原理,其实就是平时开发的时候如何使用sycnronized实现同步的,就是同步代码块和函数的同步)
7.map同步的方式有哪些?(Collections的synchronizedMap方法和concurrentHashMap)。
8.redis如何做到分布式的?
9.spring了解吗?我说学过没看源码,直接就跳过了。