昨天面试碰到这么几个问题

<bean id="classA" class="...">
<property name="C" ref="classC"/>
</bean>
<bean id="classB" class="...">
<property name="A" ref="classA"/>
</bean>
<bean id="classC" class="...">
<property name="B" ref="classB"/>
</bean>
Spring IOC发生以上情况,面试官问我Spring中如何创建这些类的对象,请问这要怎么答,当时直接回答死锁了,但不知怎么解决

还有个问题是hashmap在扩容时,另一个线程进行put操作会这样,如果再加一个线程进行get操作会怎么样?
#Java工程师#
全部评论
hashmap 在jdk1.8中多次的put和get方法后,感觉只会取null值,因为如果put导致扩容,使table为null。还会导致什么问题?目前就看出来着一个问题,jdk1.7中的死循环问题,这里应该不存在
点赞 回复 分享
发布于 2017-08-02 14:46
第一个问题:导致依赖循环注入问题,构造器注入的化,直接会抛异常,采用setter注入的化,如果scope=singleton的话,可以注入成功,因为singleton有缓存,如果scope = prototype,没有缓存,也会抛出循环依赖异常。
点赞 回复 分享
发布于 2017-08-02 12:55
第一个问题,应该是会导致注入不成功,bean在注入时,参数一定要比当前顺序先初始化成功。不然在这个情况下就会产生class A 注入失败,原因是clas C 未被初始化。解决的方法就是把注入方式改为setter方式单例,在bean的配置中加入scope="singleton"  
点赞 回复 分享
发布于 2017-08-02 12:44
void transfer(Entry[] newTable) { Entry[] src = table; int newCapacity = newTable.length; for (int j = 0; j < src.length; j++) { Entry<K, V> e = src[j]; if (e != null) { src[j] = null; do { Entry<K, V> next = e.next; int i = indexFor(e.hash, newCapacity); e.next = newTable[i]; newTable[i] = e; e = next; } while (e != null); } } 在这个方法里,将旧数组赋值给src,遍历src,当src的元素非null时,就将src中的该元素置null,即将旧数组中的元素置null了,也就是这一句: Java代码 if (e != null) { src[j] = null; 此时若有get方法访问这个key,它取得的还是旧数组,当然就取不到其对应的value了
点赞 回复 分享
发布于 2017-08-02 10:24

相关推荐

被普调的六边形战士很高大:项目经历貌似和专业或者求职方向没大关系?
点赞 评论 收藏
分享
03-21 08:46
已编辑
门头沟学院 C++
一个什么都不会的学生:当你有硕士学历的时候HR会说就是比本科生强
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务