23 lines
1.1 KiB
Markdown
23 lines
1.1 KiB
Markdown
|
|
### 问题1(考察多线程)
|
|||
|
|
|
|||
|
|
假设你现在需要写1个电商APP的用户订单详情接口,这个详情页包含:
|
|||
|
|
|
|||
|
|
- 关联的商品信息,比如商品名称、尺码、图片、文字介绍等等
|
|||
|
|
- 订单的基础信息,比如创建时间、支付金额
|
|||
|
|
- 订单的快递信息,比如从上海运往杭州,目前运输车辆的位置
|
|||
|
|
|
|||
|
|
这三种数据,彼此之间不耦合,假定每一个查询耗时1秒,单线程的情况下,同步执行三次查询,则需要3秒,如何加速这个查询?
|
|||
|
|
|
|||
|
|
答案:多线程并行查询,实现方案
|
|||
|
|
|
|||
|
|
- CompletableFuture,allOf、runAsync、supplyAsync函数
|
|||
|
|
- Future或者FutureTask,轮询isDone函数,确保异步任务执行完毕,若有返回值,使用get函数获取结果
|
|||
|
|
|
|||
|
|
如果回答的是CompletableFuture,继续延伸以下问题:
|
|||
|
|
|
|||
|
|
- CompletableFuture的默认线程池是什么?答案:ForkJoinPool
|
|||
|
|
- ForkJoinPool适合CPU密集型还是IO密集型任务?答案:CPU密集型
|
|||
|
|
- 用CompletableFuture处理IO密集型的任务,应该怎么做?答案:自定义一个IO密集型的线程池
|
|||
|
|
|
|||
|
|
### 问题2(考察对Mybatis-Plus或者Mybatis框架的熟练度)
|