面试官非常nice,但是我估计gg了。电话面试,我在公司后门的小树林接的电话。(O(∩_∩)O哈哈~)
一开始面试官问什么时候接触的java,在开发过程中看过哪些java的源代码。
我回答了HashMap,spring-security,spring-oauth2,然后就开始了HashMap的上课。。
我回答了HashMap调用put方法的原理,包括如果计算HashCode值,调用hash()时的hashCode值高16位和低16位进行异或运算,(hashMap长度-1)&hash()运算。什么时候插入链表,什么时候插入红黑树等等。
面试官反问了几个问题:1、为什么要高16位和低16位进行异或运算?2、为什么要重写hashCode方法?这里我和面试官反复扯了好几次(equals为true hashCOde值不一样的情况hashMap执行了什么操作?)3、Collections.SychronizedMap方法 和ConcurrentHashMap有什么区别?4、如果是你你会怎么来写HashMap保证它是线程安全的?5、如果有1000000条数据丢入HashMap,要如何初始化这 个HashMap。6、为什么要使用红黑树,红黑树相对于链表有什么优化?好吧,我真的开始晕了。。。
HashMap问完了,接下来问了线程池。如何创建线程池?
答:ThreadPoolExecutor
问:有哪些参数?
答:回答了有哪些参数,各个参数代表什么意义,线程池如何管理这些线程的。
线程问完了,问了JVM相关的知识。这个没看过的真的就不知道怎么回答了。
技术上就问了这些,然后就问了平时有看什么书,在哪方面有特别深入的研究等等。
总体上来说,侧重基础知识,基础知识一定要掌握得很好。