最近遇到了一些设计相关的面试题,思考了一些边边角角,但是不全面不体系,复盘了下做一下系统化、体系化的梳理,让自己的内力猛增,展示一下雄厚的 “技术肌肉、技术实力”,让面试官爱到 “不能自已、口水直流”,然后实现”offer直提,offer自由”。
技术⽅案本质上需要回答两个问题:
- 其⼀,为什么该⽅案可⾏?
- 其⼆,在已有资源限制下,为什么该⽅案是最优的?
为了回答第⼀个问题,我们需要在技术⽅案⾥补充架构图、接⼝设计和时间⼈⼒估算。
⽽要回答第⼆个问题,需要我们在关键点或争议处提供⼆到三种⽅案,并给出建议⽅案,这样才有说服⼒。
通常情况下,我们会花费很多的时间准备第⼀个问题,⽽忽略第⼆个问题。
其实,回答好第⼆个问题很重要,⼤型项⽬的设计已经复杂到没⼈能够⼀次就想到最佳⽅案,⼀个仅仅“可⾏”的⽅案,可能会给系统增加额外的复杂性。
说到 SpringBoot 自动装配的原理,可能有的人就要开始 @EnableAutoConfiguration 的长篇大论了,感觉在背源码一样,那么 自动装配 的含义你是真的了解吗?它是如何与 Spring 相结合的,又是如何被 Spring 管理的?接下来我将告诉你 自动装配 原理的真正打开方式。