第一輪面試題
1.描述下數據庫中的事務--ACID各個的特點
2.什么是springboot?你們公司是用的哪個版本?
3.什么是redis?
4.如何理解springcloud微服務項目中,eureka,provider,consumer它們之間的關系?
5.mysql默認的存儲引擎是什么?
6.什么是跨域?
7.什么是token?
8.什么是RESTful?
9.SpringCloud解決了哪些問題?
10.微服務中什么是熔斷?什么是服務降級?
11.微服務的優缺點是什么?
12.微服務之間如何獨立通訊的?
13.SpringCloud 和 Dubbo 有哪些區別?
14.SpringBoot 和 SpringCloud 之間關系?
15.eureka和zookeeper的區別?
16.mycat是什么?你們公司分庫分表的分片規則是什么?
17.什么是集合?
18.什么是dubbo?
19.什么是spring?
一、描述下數據庫中的事務--ACID各個的特點。
原子性:事務中的操作要么全部成功要么全部失敗。
一致性:事務前后數據的完整性必須保持一致。
隔離性:多個並發的事務之間是相互隔離的,互不干擾的。
持久性:事務提交后,數據是永久改變的。
二、什么是springboot?你們公司是用的哪個版本?
SpringBoot是Spring推出用於解決傳統框架配置文件冗余,裝配組件繁雜的基於Maven的解決方案,旨在快速搭建單個微服務。
版本號:2.1.6
三、什么是redis?
Redis 是完全開源免費的,遵守BSD協議,是一個高性能的key-value數據庫。
四、如何理解springcloud微服務項目中,eureka,provider,consumer它們之間的關系?
eureka:提供服務注冊於發現
provider:服務提供方法將自身注冊到eureka,讓消費方找到
consumer:服務消費方從eureka獲取注冊服務列表,能夠消費服務
五、mysql默認的存儲引擎是什么?
Mysql在V5.1之前默認存儲引擎是MyISAM;在此之后默認存儲引擎是InnoDB。
MyISAM不支持事務,InnoDB支持事務。
MySIAM不支持外鍵,InnoDB支持外鍵,
MySIAM支持全文索引,InnoDB不支持全文索引。
六、什么是跨域?
要了解跨域,先要說說同源策略。所謂同源是指,域名,協議,端口相同,有一個不一樣則是跨域。
七、什么是token?
Token是服務端生成的一串字符串,以作客戶端進行請求的一個令牌。
當第一次登錄后,服務器生成一個Token便將此Token返回給客戶端,
以后客戶端只需帶上這個Token前來請求數據即可,無需再次帶上用戶名和密碼。
八、什么是RESTful?
首先rest是一種API的模式,常以JSON格式編寫。符合rest約束風格和原則的應用程序或設計就是RESTful。
九、SpringCloud解決了哪些問題?
與分布式系統相關的復雜性
處理服務發現的能力
解決冗余問題
負載平衡
減少性能問題
十、微服務中什么是熔斷?什么是服務降級?
服務熔斷的作用是當某服務出現不可用或響應超時的情況時,為了防止整個系統出現雪崩,暫時停止對該服務的調用。
服務降級是為了預防某些功能(業務場景)出現負荷過載或者響應慢的情況,在其內部暫時舍棄對一些非核心的接口和數據的請求,而直接返回一個提前准備好的fallback(退路)錯誤處理信息。
十一、微服務的優缺點是什么?
優點:
易於開發和維護:因為一個服務只關注一個特定的業務,業務就變得比較清晰。同時維護起來也是比較方便。
單個服務啟動比較快:單個服務代碼量不會很多,啟動起來就會很快。
便於伸縮:如果系統中有三個服務ABC,服務B的訪問量比較大,我們可以將服務B集群部署。
缺點:
運維要求比較高:之前就一個war包,現在一個系統中會有很多的服務,每個服務都對應一個war包,維護起來就會變得很麻煩。
技術復雜性提高:微服務就會帶來一系列的問題,事務問題,Session一致性問題,鎖問題等。
十二、微服務之間如何獨立通訊的?
同步通信:dobbo通過 RPC 遠程過程調用、springcloud通過 REST接口json調用等。
異步:消息隊列,如:RabbitMq、ActiveMq、Kafka 等。
十三、SpringCloud 和 Dubbo 有哪些區別?
首先,他們都是分布式管理框架。
dubbo 是二進制傳輸,占用帶寬會少一點。SpringCloud是http 傳輸,帶寬會多一點,同時使用http協議一般會使用JSON報文,消耗會更大。
SpringCloud 接口協議約定比較松散,需要強有力的行政措施來限制接口無序升級。
最大的區別:
Spring Cloud拋棄了Dubbo 的RPC通信,采用的是基於HTTP的REST方式。
十四、SpringBoot 和 SpringCloud 之間關系?
SpringBoot:專注於快速方便的開發單個個體微服務(關注微觀);
SpringCloud:關注全局的微服務協調治理框架,將SpringBoot開發的一個個單體微服務組合並管理起來(關注宏觀);
SpringBoot可以離開SpringCloud獨立使用,但是SpringCloud不可以離開SpringBoot,屬於依賴關系。
十五、eureka和zookeeper的區別?
eureka和zookeeper都可以提供服務注冊與發現的功能,zookeeper 是CP原則,強一致性和分區容錯性。eureka 是AP 原則 可用性和分區容錯性。
zookeeper當主節點故障時,zk會在剩余節點重新選擇主節點,耗時過長,雖然最終能夠恢復,但是選取主節點期間會導致服務不可用,這是不能容忍的。
eureka各個節點是平等的,一個節點掛掉,其他節點仍會正常保證服務。
十六、mycat是什么?你們公司分庫分表的分片規則是什么?
Mycat是基於MySQL的數據庫中間件,用來協調切分后的數據庫,使其可以進行統一管理。
分片規則:取模分片 PartitionByMode
十七、什么是集合?
集合有兩個父接口,一個collection,一個Map;
而collection有兩個子接口,一個List,一個Set;
List有兩個常見的實現類 ArrayList,LinkedList;
Set有兩個常見的實現類 HashSet,TreeSet;
Map有兩個常見的實現類 HashMap,HashTable。
十八、什么是dubbo?
Dubbo和Springcloud都是分布式服務中常用的框架。dubbo與cloud不同,dubbo基於RPC協議。它提供了三大核心功能: 面向接口的遠程方法調用,
智能容錯和負載均衡, 以及服務自動注冊和發現。
十九、什么是spring?
Spring是一個開源的輕量級的Java開發框架。是一種簡化應用程序的開發。
在spring出來之前,service層調用dao層都是用new的方式,在spring出來之后,service層和到dao層都會放在spring容器去管理,
這是spring的第一種特性,我們稱之為IOC,控制反轉。
spring還有一種特性,我們稱之為AOP,大白話,所謂“面向切面”,說白了就是專門的人干專門的事。
在項目很多公有的或是要被重復被調用的模塊可以被抽取出來,利用的就AOP的特性,例如日志模塊。