乐趣区

从一道简单的“SpringBoot配置文件”相关面试题,我就能知道你的水平

面试要套路,也要技巧。别被背题目的兄弟们给忽悠了。
【你来发挥】你比较喜欢什么技术,哪一种最熟?
一般自信的面试官都喜欢问这个问题,这次面试的小伙比较年轻,咱也装回 B,不然都对不起自己。
答:我比较喜欢 Spring,比较有趣。目的:希望应聘者能够有广度且有深度。如果最感兴趣的是 Spring 本身,而不是其上的解决方案,那顶多会承担被分解后的编码工作。
巧了,咱也熟。
【工作经验】SpringBoot 相比较 SpringMVC,有什么优缺点?
答:有很多方面。觉得最好的就是不用写那么多配置文件了,直接写个注解,通过自动配置,就完成了初始化。
目的:说什么无所谓,主要看有没有总结能力。判断是否用过早期的 Spring 版本,经历过版本更新更能了解软件开发之痛,接受新知识会考虑兼容和迭代。
【实现原理】我想要 SpringBoot 自动读取我的自定义配置,该做哪些事情?
答:写一个相应的 starter
目的:判断是否了解和写过 Spring Boot Starter,主要是 META-INF 目录下的 spring.factories 文件和 AutoConfiguration。了解 AOP 更佳。
【烟幕弹】配置文件是 yml 格式,这种格式你喜欢么?
答:比较喜欢 properties 格式,感觉 yml 格式的配置文件缩进比较难处理。比如当我从网上拷贝一些别人长长的配置文件,可能要花较多时间整理文件格式。
目的 此问题没有具体的意图,主要是过渡用。
【动手能力】这么喜欢 properties 方式,能够写一段代码,将 yml 翻译成 properties 么? 要是回答相反则反着来。
目的 通过简单的伪代码,判断应聘者的动手能力和编码风格。是喜欢问题抽象化还是喜欢立刻动手去写。我希望回答能够有条理,而且能够考虑各种异常情况,比如把自己判断不了的配置交给用户处理;比如空格和 <TAB> 的处理。
【提示】提示一下,你用什么数据结构进行存储?
目的 假如应聘者在一段时间内不能有任何产出,会给出简单的提示。找准了存储结构,你就基本完成了工作,此问题还判断了应聘者的培养成本和价值。
【基础算法】哦,是树结构,遍历方式是怎样的?前序,后序,中序?
目的 判断是否有基础的算法知识。做工程先不要求会什么动态规划或者贪心算法,但起码的数据结构是要了解的。
【基础知识】你用到了 Map?Java 中如何做可排序的 Map?
目的 是否对 java 的基础集合类熟悉,期望回答 TreeMap,如果回答上来,可能会追问它是什么数据结构(红黑树)。
【知识广度】你还接触过哪些配置方式?比较喜欢那种?
目的 了解应聘者的知识广度,说不出来也无所谓,了解的多会加分。比如 ini、cfg、json、toml、序列化等。
【项目规模】我想要把我的配置放在云端,比如数据库密码等,改怎么做?
目的 是否了解 SpringBoot 的组件 SpringConfig,或者了解一些其他的开源组件如携程的 apollo 等。
【知识广度】我想要配置文件改动的时候,所有机器自动更新,该怎么办?
目的 了解是否知晓常用的同步方式。有两种:一种是定时去轮询更新;一种是使用 zk 或者 etcd 这种主动通知的组件。
【实现细节】Spring 是如何进行配置文件刷新的?
目的 这个可真是没写过就真不知道了,主要是 org.springframework.cloud.context.scope.refresh.RefreshScope 这个类
【架构能力】现在我想要将配置文件分发到一部分机器,也就是带有版本的灰度概念,你该如何处理?
目的 如果能够从网关、微服务约定,后台操作原型方面去多方位描述一下,更佳。
这样筛选的小伙伴,都很棒!能力多少,心中有数。

退出移动版