1.hashmap的原理
这个jdk1.7和1.8还不太一样,需要特地记忆一下
1.7相对1.8还算简单,因为有hash这个方法,需要对二进制运算熟悉
1.8涉及到了红黑树,也算是一种数据结构,避免被问数据结构答不出来,需要提前对红黑树是什么,他有什么好处做个了解
为什么java8要重新实现hashmap,因为java7的hashmap如果存在大量的hash碰撞,同一个下标的entry对象会形成一个链表,导致性能下降,而java8的红黑树的性能就要好很多,至于源码需要点击下面的链接
concurrentHashmap的原理,这个就算不问也是必须了解甚至是背诵的
2.jvm的一些知识
有多少说多少,至少要和jmm内存模型和多线程扯上边
java虚拟机内存由程序计数器,java虚拟机栈,本地方法栈,java堆,方法区,运行时常量池,直接内存组成(摘自深入了解java虚拟机),大概把各个部分说个清楚就行了,然后还有类加载机制,这个一般也是必问的。
3.多线程
volatile和synchronized的知识点,AbstractQueueSynchronizer的源码,内存可见性等,可以看《java并发编程的艺术》一书
4.spring异常处理。这个我在工作中遇到过,用的都是exceptionhandler注解,其实还有两种方式可用,但是优先级都没有注解高,分别是spring提供的异常处理类SimpleMappingExceptionResolver,还有一种是实现接口HandlerExceptionResolver,这个说的越多越好。
5.一些常用的linux命令
可以从安装linux虚拟机开始讲,安装完毕后由于防火墙是开启着的,需要iptables命令关闭防火墙,需要装命令的时候使用yum,需要下载的时候使用wget,需要安装软件使用rpm,一些find,pwd,ls,cd,mv,查看tomcat进程的命令也是必须要掌握的。然后一些java环境安装,tomcat安装,持续集成工具jenkins的安装和启动,这个如果实际操作过肯定是能说出来的,证明你在linux环境上正式做过事情
6.factorybean和beanfactory的区别
beanfactory:顾名思义是一个bean工厂,他负责生产管理bean,比如classpathxmlapplicationcontext,filesystemapplicationcontext,这两个类存储了applicationContext.xml里面的标签对象,有getBean方法,他可以通过类的classname或者bean名称获取相应的bean。
factorybean:是一个bean,但是他带有一些额外功能,他的getObject方法获取的对象可能是这个类里的一个成员变量,如果要获取该factorybean本身,必须要在getObject的参数前加一个&
(待完善)