作业帮后端一面(实习)

自我介绍
为什么投实习不是秋招
springboot的自动化配置是怎么实现的
aop的实现原理
redission分布式锁底层实现
rabbitmq怎么保证消息顺序发送
spring是怎么解决循环依赖问题的
线程池的七大参数和执行原理
ThreadLocal的底层实现
算法:二叉树最大路径和

太久没面试了,很生疏,感觉面试官看出来了,简单的都回答的不怎么好,就直接给算法了,没a出来,18分钟秒结束
全部评论
1、通过@autoconfig的注解实现的。通过这个注解,spring会去扫描特定路径下的xml配置和类配置,关键字是@Bean、@BeanCondifig等,然后spring会去自动初始化这些对象,并通过反射把他们的属性注入进去,实现自动装配。 2、aop分为静态代理和动态代理,静态代理主要是通过实现相同接口 + set对象实现;动态代理则主要是通过jdk动态的反射+cglib的字节码增强实现。 3、lua脚本实现的原子性上锁,核心语句是set nx key ex time; 4、消息顺序发送?? 5、循环依赖:典型的三级缓存,一级存已经处理好的单例,二级存初始化一半的实例,三级存工厂。这样spring就可以暂时把处理一半的容器挂起,去处理别的实例。 6、核心线程数、最大线程数、阻塞队列、线程存活时间、存活时间单位、拒绝策略、线程工厂;原理:把创建的线程缓存起来,放在核心线程中,如果超出最大,放到队列中,如果还超,就启临时线程,直到超过最大线程数,此时就采用拒绝策略进行处理。分为四种:直接拒绝、抛出异常、拒绝任务和删除队列中最久的任务。 7、底层实现其实就是一个map,结构是 thread->ThreadLocalMap -> Key -> Val ,可能存在的问题,不及时remove,出现内存泄漏。 8、最大路径和,思路:递归 + 栈 + 临时变量记录最大值。
点赞 回复 分享
发布于 昨天 12:34 北京

相关推荐

评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务