1、面试题
使用无界阻塞队列会出现什么问题?
2、面试官心里分析
其实集合这块,大部分都是些基础的知识,当然可以算是高级的基础知识吧,你短时间内也没法去读JDK集合类的源码,那个以后架构班里可以带着你们来读,但是这里面试,模拟把常见的那些集合问题,尤其是hashmap的,都搞熟就够用了。
然后有可能有的面试官会问你比较刁钻的一个线上的使用问题,就是用无界阻塞队列可能会有什么问题?
3、面试题剖析
常见的无界阻塞队列就是LinkedBlockingQueue,如果是ArrayBlockingQueue,那么就是有界阻塞队列。其实无界阻塞队列最常见的问题,你就是跟线程池结合起来说,就能显得你有点水平,因为你了解线程池的一些实现原理,比如常见的FixedPool就是无界阻塞队列,那么就会出现,如果你的线程全部hang死,或者执行太慢,会导致无界阻塞队列的大小无限扩张,最后耗尽内存,搞死你的系统。
对于这个问题,之前分析过了,你就用有界阻塞队列来替代即可,然后用了有界阻塞队列之后,需要在队列满的时候做任务的离线存储,这块我们的架构班里都有了,就是基于备忘录模式来离线存储,和恢复数据即可。