海康威视java专家岗电话面试

1,你是怎么把单体应用改造为微服务架构的
2,spring boot的启动原理和它的核心组件剖析面试最常见问题之 Spring Boot)(书籍推荐之java基础篇中推荐《Spring Boot实战派》)

  1. 创建一个SpringApplication实例
  2. 调用此SpringApplication实例的run(args)方法:
    1. 1 prepareEnvironment
    2. 2 refreshContext(context)

3,spring boot的自动装配,以及它的bean怎么加载的

Spring Boot官方文档对于自动装配的描述:

Spring Boot auto-configuration attempts to automatically configure your Spring application based on the jar dependencies that you have added. For example, if HSQLDB is on your classpath, and you have not manually configured any database connection beans, then Spring Boot auto-configures an in-memory database.

又有:

SpringBoot 定义了一套接口规范,这套规范规定:SpringBoot 在启动时会扫描外部引用 jar包中的META-INF/spring.factories文件,将文件中配置的类型信息加载到 Spring 容器(此处涉及到 JVM类加载机制与 Spring 的容器知识),并执行类中定义的各种操作。对于外部 jar 来说,只需要按照 SpringBoot定义的标准,就能将自己的功能装置进 SpringBoot。

简单来说,Spring Boot自动装配致力于基于你所添加的依赖,利用条件注解(@Conditional)去自动化配置你的Spring应用。
具体而言,@EnableAutoConfiguration 注解通过@Import 注解导入了AutoConfigurationImportSelector类。 AutoConfigurationImportSelector可通过SPI机制(具体来说,是getCandidateConfigurations方法)将所有自动配置类的信息以 List 的形式返回。这些配置信息会被 Spring 容器作 bean 来管理。条件注解的作用是能够在应用运行时动态选择符合条件的bean。 比如下面的@ConditionalOnClass(xxx.class),作用是在加载过程中判断存在xxx类才加载该配置类。下为引入mvc组件的自动装配类。

@Configuration
@ConditionalOnWebApplication(type = Type.SERVLET)
@ConditionalOnClass({
    
     Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class })
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter({
    
     DispatcherServletAutoConfiguration.class,
        TaskExecutionAutoConfiguration.class, ValidationAutoConfiguration.class })
public class WebMvcAutoConfiguration {
    
    

4,elasticsearch怎么优化。在网上搜到一个实例:通过某瓣真实案例看Elasticsearch优化

5,tomcat和jetty的优缺点对比分析:参考https://developer.ibm.com/zh/articles/j-lo-jetty/https://www.cnblogs.com/lixuwu/p/10817557.html

tomcat jetty
更轻量级
更臃肿,整体设计更复杂,Tomcat 的设计从 Server 到 Service 再到 engine 等 container 容器 架构上来说,更简单,更灵活,基于Handler来实现,责任链模式,易于扩展和插拔 ,即可以按需加载组件,也减少不需要的组件
Tomcat 经过长时间的发展,已经广泛的被市场接受和认可,相对 Jetty 来说 Tomcat 还是比较稳定和成熟,尤其在企业级应用方面,Tomcat 仍然是第一选择
Tomcat默认采用BIO处理I/O请求 Jetty默认采用NIO处理I/O请求
Tomcat目前应用比较广泛,对JavaEE和Servlet的支持更加全面 Jetty修改简单,对新的Servlet规范的支持较好。

6,mybatis的动态sql
Mybatis 动态 sql 可以让我们在 Xml 映射⽂件内,以标签的形式编写动态 sql,完成逻辑判断和动态拼接 sql 的功能。例如陈伟的动态SQL

猜你喜欢

转载自blog.csdn.net/qq_23204557/article/details/114695371