字节春招JAVA后端开发面试总结

春招的字节二面面经,岗位是后端开发。

一个编程语言都没问,都是问网络+项目+mysql+redis。

问题记录

使用消息中间件降低消息持久化的压力是怎么做的,为什么可以降低?

        在突发大量消息的情况下可以做到流量削峰,在消费者消费能力达不到生产者产生消息的速度时也能够正常运行。

怎么解决消息队列上的消息堆压?

  • (1)自身场景下,消息堆压是暂时的,消息堆压只是突发状况,就算不额外处理,随着时间流逝也可消费完毕。

  • (2)假如存在持续性消息堆压,可以考虑临时增加消费者的数量,提升消费者的消费能力。

补充:

如果是线上突发问题,要临时扩容,增加消费端的数量,与此同时,降级一些非核心的业务。通过扩容和降级承担流量,这是为了表明你对应急问题的处理能力。其次,才是排查解决异常问题,如通过监控,日志等手段分析是否消费端的业务逻辑代码出现了问题,优化消费端的业务处理逻辑。

在并发编程时,在需要加锁时,不加锁会有什么问题?

        两个线程使用同一个全局变量会有不一致的问题,比如a线程把全局变量加1,b线程读的时候,如果还是从缓存中读的,那么会没有发现这个更新,就会产生不一致的问题。

如何避免出现死锁?

        在使用之前,考虑死锁产生的条件:互斥访问、占有并保持、循环等待。

针对以上几点

你可能感兴趣的:(面试汇总,java,面试,开发语言,后端)