幾道關於springboot、springCloud的面試題。


 

什么是springboot

用來簡化spring應用的初始搭建以及開發過程 使用特定的方式來進行配置(propertites或yml文件)

                            創建獨立的spring引用程序main方法運行

                            嵌入的tomcat無需部署war文件

                            簡化maven配置

                            自動配置spring      添加對應功能starter自動化配置

 

springboot常用的starter有哪些

         spring-boot-starter-web嵌入tomcat和webkaifa需要servlet與jsp支持

         spring-boot-starter-data-jpa數據庫支持

         spring-boot-starter-data-redis數據庫支持

         spring-boot-starter-data-solr solr支持

         mybatis-spring-boot-starter第三方的mybatis集成starter

 

springboot自動配置的原理

         在spring程序main方法中添加@SpringBootApplication或者@EnableAutoConfiguration

         會自動去mavenzhong讀取每個starter中的spring.factories文件,該文件配置了所有需要被創建spring容器中的bean

 

springboot讀取配置文件的方式

         springboot默認讀取配置文件為application.properties或者application.yml

 

springboot集成mybatis的過程

         添加mybatis的starter maven依賴

   <dependency><groupld>...</groupld><artifactld>mybatis-spring-boot-starter</artifactld><version>1.2.0</version></dependency>

          在mybatis的接口中添加@Mapper注解

          在application.yml配置數據源信息

 

springboot如何添加【修改代碼】自動重啟功能

         添加開發者工具·spring-boot-devtools

 

什么是微服務

         以前的模式是所有的代碼在同一個工程中 部署在同一個服務器中 同一個項目的不同模塊不同功能互相搶占資源

         微服務 將工程根據不同的業務規則拆分成微服務 微服務部署在不同的機器上  服務之間進行相互調用

         java微服務的框架有dubbo(只能用來做微服務),springCloud(提供了服務的發現,斷路器等)

 

springcloud如何實現服務的注冊和發現

         服務在發布時 指定對應的服務名(服務名包括了IP地址和端口) 將服務注冊到注冊中心(eureka或者zookeeper)

         這一過程時springcloud自動實現  只需要在main方法添加@EnableDisscoveryClient 同一個服務修改端口就可以啟動多個實例

         調用方法:傳遞服務名稱通過注冊中心獲取所有的可用實例,通過負載均衡策略調用(ribbon和feign)對應的服務

 

Ribbon和Feign的區別

         Ribbon和Feign都是用於調用其他服務,不過方式不同。

         1、啟動類使用的注解不同,Ribbon使用的時@RibbonClient,Feign用的時@EnableFeignClients

         2、服務的指定位置不同,Ribbon是在@RibbonClient注解上聲明,Feign則是在定義抽象方法的接口使用@FeignClient聲明。

         3、調用方式不同,Ribbon需要自己構建http請求,模擬http請求然后使用RestTemplate發送給其他服務,步驟相當繁瑣。

                   Feign則是在Ribbon的基礎進行了一次改進,采用接口的方式,將需要調用的其他服務的方法定義成抽象方法即可。

                   不需要自己構建http請求。不過要注意的是抽象方法的注解、方法簽名要和提供服務的方法完全一致。

 

SpringCloud斷路器的作用

         當一個服務調用另一個服務由於網絡原因或者自身原因出現問題時 ,調用者就會等待被調者的響應,

         當更多的服務請求到這些資源時,導致更多的請求等待,這樣就會發生連鎖效應,斷路器就是解決這一問題的。

         斷路器有完全打開狀態:

                   一定時間內,達到一定的次數無法調用,並且多次檢測沒有恢復的跡象,斷路器完全打開,那么下次的請求不會請求到該服務。

         半開:

                   短時間內有回復跡象,斷路器會將部分請求發送給服務,當能正常調用時,斷路器關閉。

         關閉:

                   當服務一直處於正常狀態,能正常調用,斷路器關閉。

 

如何使用springboot部署到不同的服務器

         1、在一個項目中生成一個war文件。

         2、將它部署到想要部署的服務器中(websphere或者weblogic或者Tomcat and so on)

 

JPA和Hibernate有哪些區別

         簡而言之:

                   1、JPA是一個規范或者接口

                   2、Hibernate是JPA的一個實現

         當我們使用JPA的時候,我們使用javax.persistence包中的注釋和接口時,不需要使用hibernate的導入包。

 

什么是spring cloud

         Spring Cloud為開發人員提供了快速構建分布式系統的一些通用模式(例如配置管理,服務發現,斷路器,智能路由,微代理

         ,控制總線,一次性令牌,全局鎖,領導選舉,分布式會話,群集狀態)。分布式系統的協調導致了鍋爐板模式,並且使用

         Spring Cloud開發人員可以快速地站起來來實現這些模式的服務和應用程序。它們可以在任何分布式環境中正常工作,包括開發人員

         自己的筆記本電腦,裸機數據中心和受管平台,Cloud Foundry。

 

Zookeeper是什么框架

         分布式的、開源的分布式應用程序協調服務,原本是Hadoop、Hbase的一個重要組件,它為分布式應用提供一致性服務的軟件,

         包括:配置維護、域名服務、分布式同步、組服務等。

應用場景:

         Zookeeper的功能很強大,應用場景很多,Zookeeper主要是做注冊中心用。基於Dubbo框架開發的提供者、消費者都向Zookeeper

         注冊自己的URL,消費者還能拿到並訂閱提供者的注冊URL,一邊在后續程序的執行中去調用提供者。而提供者發生了變動,

         也會通過Zookeeper向訂閱的消費者發送通知。

Zookeeper有哪幾種節點類型:

         持久:創建之后一直存在,除非有刪除操作,創建節點的客戶端會話失效也不影響此節點。

         持久順序:跟持久一樣,就是父節點在創建下一級節點的時候,記錄每個子節點創建的先后順序。會給每個子節點加上一個數字后綴。

         臨時:創建客戶端會話失效(注意是會話失效,而不是斷了),節點也就沒了,不能創建子節點。

         臨時順序:。。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM