不懂就问,面试中遇到的几个问题

1. ArrayList如何成为线程安全类?(回答了使用Collection.sychronizedList()包装,面试官显然不满意)。
2.线程池中抛出异常的这种拒绝策略有什么用?
3.线程池满了可能有哪些原因引起?如何排查?
4.有个IO接口中需要写操作,如何设计这个接口,需要考虑哪些问题?

弱小、无助、瑟瑟发抖😳,有没有大佬帮解决一下,感激不尽。
#面试题目#
全部评论
1.都加synchronized或者volatile+cas+synchronized,参考hashtable和concurrenthashmap 2.首先说一下策略什么时候使用,要不队列超过最大数了,要不大于核心数且超时了,用拒绝策略就是将任务抛出,不同策略根据场景需要,如果用abosrt的策略说明,任务数过大的时候需要提醒我们立刻去处理。 3.线程池满了,说明我们设定的参数问题吧,io密集型一般线程数设为cpu的二倍。 4.这题不大懂他是让你设计io接口吗?如果是的话,这个问题考虑的问题会比较多吧,要不要加缓冲区,需不需要多路复用,拷贝问题(减少拷贝次数增加效率,如mmap,如netty零拷贝的gather),还有虚拟内存一定要有,写的时候在上层也需要考虑问题,如,如果我们用缓冲区大小怎么设定,写入磁盘的话是不是还得设置发送时间间隔(因为放到缓冲区的数据一般不是随时放随时写的),这块我也有点乱,请大佬纠正了
点赞 回复 分享
发布于 2019-08-14 19:17
挑会的说:1,2 1:我觉得你说的没毛病,很直接。要不然就使用 synchrnized 修饰方法? 2:ThreadPoolExecutor 类里有四个策略,可以看看
点赞 回复 分享
发布于 2019-08-14 17:26
这是哪家的面试题?
点赞 回复 分享
发布于 2019-08-14 17:26
这是哪个公司😂
点赞 回复 分享
发布于 2019-08-14 17:27
3 4不会,等一个答案
点赞 回复 分享
发布于 2019-08-14 17:33
1.除了包装,就只有CopyOnWrite了吧 2.抛出异常我的理解:线程池已经处理不了了,抛出异常表明状态,由任务来源处决定如何处理,可能采取限流等措施。 3.线程池满了这不是任务生产者决定的吗?这有什么原因,线程池太小?可扩展太小?任务生产太快? 4.IO接口的话,同步异步?阻塞非阻塞?
点赞 回复 分享
发布于 2019-08-14 17:34
觉得抛出异常一般用于fastfail吧
点赞 回复 分享
发布于 2019-08-14 17:54

相关推荐

想顺利毕业的猕猴桃在看牛客:好几个月没面试了,腾讯留面评吗
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
24
分享

创作者周榜

更多
牛客网
牛客企业服务