作业帮后端一面(实习)
自我介绍
为什么投实习不是秋招
springboot的自动化配置是怎么实现的
aop的实现原理
redission分布式锁底层实现
rabbitmq怎么保证消息顺序发送
spring是怎么解决循环依赖问题的
线程池的七大参数和执行原理
ThreadLocal的底层实现
算法:二叉树最大路径和
太久没面试了,很生疏,感觉面试官看出来了,简单的都回答的不怎么好,就直接给算法了,没a出来,18分钟秒结束

为什么投实习不是秋招
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、最大路径和,思路:递归 + 栈 + 临时变量记录最大值。
相关推荐

点赞 评论 收藏
分享

点赞 评论 收藏
分享