面试要套路,也要技巧。别被背题目的兄弟们给忽悠了。

【你来发挥】你比较喜欢什么技术,哪一种最熟?

一般自信的面试官都喜欢问这个问题,这次面试的小伙比较年轻,咱也装回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
这个类

【架构能力】现在我想要将配置文件分发到一部分机器,也就是带有版本的灰度概念,你该如何处理?

目的 如果能够从网关、微服务约定,后台操作原型方面去多方位描述一下,更佳。

这样筛选的小伙伴,都很棒!能力多少,心中有数。