【面试】软通动力外包华为智能汽车

文章涵盖了多线程在项目中的应用,如邮件发送和数据导入,解释了线程池工作原理,介绍了Redis的使用场景、分布式锁实现和缓存击穿处理。还讨论了RabbitMQ的工作原理,Spring的IoC和AOP,以及数据库性能优化策略,包括MySQL索引优化和分库分表,但提到作者对ES不太熟悉。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多线程了解过么?项目中哪里使用到了多线程?

了解过。例如消息中心批量发送邮件,数据库中数据导入到ES中等等

线程池中临时(救急)线程工作原理?

线程池中有核心线程数、最大线程数、工作队列这几个概念,最大线程数 = 核心线程数 + 临时线程数。如果说来个几个线程已经占满了核心线程,那么之后来的线程就会进入到工作队列中去。如果说之后来的线程也把工作队列占满了,那么就会启用临时线程来进行处理操作了。

Redis用过么?使用场景是什么?

使用过,分布式锁和缓存

缓存击穿如何如何处理?

击穿就是缓存中没数据,数据库中有数据,导致大量请求打到数据库,造成压力过大
解决方案:设置热点数据永不过期;加互斥锁,让第一个线程进来,后面等待,第一个出来后,其他线程去缓存中读

Redis分布式锁实现原理?

基于setnx命令来实现的。redis实现分布式锁我们通过redisson来实现,redisson做了很多的增强和优化。

redisson也是首先去加锁,如果加锁成功的话,会另开一个线程进行监控持有锁的线程,进行续期,就是看门狗机制。如果释放锁的话,我们手动来释放,通知看门狗无需监听。

如果说获取锁失败了,那么还有重试机制,会不断进行循环获取锁。

消息中间件用了么?介绍一下RabbitMQ的工作原理?

先大概介绍一下结构:RabbitMQ分为生产者、消费者、信道(channel),broker,虚拟机,交换机,队列几个部分。

生产者发送消息通过信道发送到交换机上,交换机在通过一定规则发送给队列,然后消费者去对应队列中去获取消费即可。交换机分为很多种,按照不同规则发送到不同队列

Spring中的IOC和AOP用过么?

使用过,用自己理解介绍

AOP使用场景说一下?

最常用的就是自定义log注解,记录接口日志

接口的性能优化是否遇到过?

其实我们经常用到过,但是脑子短路,我说没有…

  1. 数据量比较大,批量操作数据入库
  2. 耗时操作考虑异步处理(比如发送邮件)
  3. 恰当使用缓存
  4. 优化程序逻辑、代码(比如提前return、减少不必要校验参数…)
  5. 优化SQL语句
  6. 远程调用串行改为并行
MySQL这块性能优化讲一下?

可以借助explain帮助我们参考优化点

表的设计优化

索引优化:索引列不要参与计算、不要违反最左匹配原则、范围查询右边的索引会失效、字符串查询要用单引号、模糊查询%开头索引会失效

语句优化:避免使用select *、要避免索引失效、where子句中不要进行表达式操作、join也可以优化

数据量特别大的时候要考虑分库分表

ES用过么?

没用过,用的很少,停留在会用层面

还有其他问题么?
总结

没准备好,挺突然的。以为只是简单聊聊,结果这是初轮电话面试,估计凉凉,总结继续投简历

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值