面试官:你在项目中用过 多线程 吗?

有时候我也在想,现在真的很卷吗?大部分人第一次模拟面试结束,给我的感觉不像大家说的那么卷。

奇怪的现象

我在做模拟面试的过程中,无意中发现一个现象,就是如果问八股文,问知识点,在校生或刚刚毕业不久的,回答的斗殴挺好的,往往是工作三五年的在这一块非常欠缺。

我也私下问过很多人,为什么这种现象,主要原因差不多就是:

  • 每天太忙,没时间学习

  • 年纪大了,记不住

  • 就是不要想学

工作三五年的也不是就真的没有优点,他们的优点就是有大量的项目经验。换着问项目业务和设计之类的,他们明显占优势,但,问他们稍微往深的问,就会懵逼。比如:你们项目中使用到了Redis,用来干嘛,他们能立马回答上来。

如果继续追问:如何保证Redis和数据库中的数据一致性?然后就会稀里糊涂的回答。还有就是问他们Redis的持久化方式使用的是哪种?“这个没注意,不是我安装的”,继续问:那你觉得哪种方式更好,答案各种各样的都有。

总结起来就亮点:

  • 学生或新人,八股文占优势(也有一部分啥都不知道,啥也没去背的)。

  • 三五年有项目经验,但大部分都停留在用上面,稍微问题问题就容易暴露自己的家点(也有一小分部知道的比较多)

在模拟面试的时候,我问过很多人是否在项目中用过并发编程的相关技术,用了什么?

基本上都回答:用过线程池

好吧,接下来,那我们就以一个线程池的面试题来对比以上两类人的回答。

聊聊线程池

线程池核心参数

学生或新人:基本上都是一口气就能吧这些参数回答上来,另外有部分优秀的会对这些参数做一个解释。

三五年的:部分人能全部回答出来,一部分人能说出核心线程数、最大线程数,其他参数就吱吱呜呜的回答,还有一部分就是完全一脸懵逼。

我们来看看到底有哪些参数:

public ThreadPoolExecutor(int corePoolSize,
                              int maximumPoolSize,
                              long keepAliveTime,
                              TimeUnit unit,
                              BlockingQueue<Runnable> workQueue,
                              ThreadFactory threadFactory,
                              RejectedExecutionHandler handler) {
  • corePoolSize:核心线程数

  • maximumPoolSize:最大线程数

  • keepAliveTime:空闲时间

  • unit:空闲时间单位

  • workQueue:阻塞队列

  • threadFactory:线程工厂

  • handler:拒绝策略

问核心参数时,至少要回答corePoolSizemaximumPoolSizeworkQueuehandler。还是建议全部回答吧,反正也没几个参数。

线程池原理

学生或新人:按照八股文来回答一番,甚至有的在回答核心参数的时候,顺带着就会把线程池的原理给说了(刚刚遇到能说的,就顺带着多说点)。

三五年的:有部分人也会按照八股文上的来回答,有部分人是吱吱呜呜的,不知道在说啥,还有一分部人就是瞎说咯。

关于线程池原理,我这里借用网上一张图:

如果看图记不住,我也有办法,我们可以使用生活案例来理解。

  • 公司A:线程池

  • 公司A自己的员工:核心线程数

  • 公司A接到的订单:我们的业务线程

  • 公司A的仓库:阻塞队列

  • 公司B派的人:最大线程数

开始表演:

公司A接到订单,先给自己员工处理,如果自己员工处理不来了,就丢到公司A仓库里,如果仓库堆满了,这时候就去找公司B,公司B就派人(最大线程数)到公司A,订单持续爆棚,公司B派来的员工和公司A的员工都搞不来了,那就只能把后面来的订单拒绝掉(拒绝策略)。如果公司B的员工在公司A里吧任务做完了,闲着没事了,公司A也不会立马就让人家回公司B,毕竟人员来回还是有成本的,所以,可以适当的给点时间(keepAli

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值