暑期实习面试阿里Java后端岗位的一面的面经。
主要拷打了项目+Java 集合+Java并发+网络+mysql,一场面试大概问了 20 个题目,问的还是比较基础,不算太难。
问题记录
简历上有两个项目,选一个你比较熟悉的介绍
(略)
项目用到了哪个线程实现类?
用了ScheduledThreadPool这个线程实现类
为什么要使用这个线程类?
这个实现类可以设置定期的执行任务,它支持定时或周期性执行任务,比如每隔 10 秒钟执行一次任务,我通过这个实现类设置定期执行任务的策略。
你还了解别的线程实现类吗?
除了这个之外,还有就是newSingleThreadExecuter,别的就不太熟悉了。
补充:
除了 ScheduledThreadPool 线程池之外,还有 4 种常见的线程池如下:
-
FixedThreadPool:它的核心线程数和最大线程数是一样的,所以可以把它看作是固定线程数的线程池,它的特点是线程池中的线程数除了初始阶段需要从 0 开始增加外,之后的线程数量就是固定的,就算任务数超过线程数,线程池也不会再创建更多的线程来处理任务,而是会把超出线程处理能力的任务放到任务队列中进行等待。而且就算任务队列满了,到了本该继续增加线程数的时候,由于它的最大线程数和核心线程数是一样的,所以也无法再增加新的线程了。
-
CachedThreadPool:可以称作可缓存线程池,它的特点在于线程数是几乎可以无限增加的(实际最大可以达