第一輪面試題css
1.描述下數據庫中的事務--ACID各個的特色html
2.什麼是springboot?大家公司是用的哪一個版本?mysql
3.什麼是redis?面試
4.如何理解springcloud微服務項目中,eureka,provider,consumer它們之間的關係?redis
5.mysql默認的存儲引擎是什麼?spring
6.什麼是跨域?sql
7.什麼是token?數據庫
8.什麼是RESTful?json
9.SpringCloud解決了哪些問題?跨域
10.微服務中什麼是熔斷?什麼是服務降級?
11.微服務的優缺點是什麼?
12.微服務之間如何獨立通信的?
13.SpringCloud 和 Dubbo 有哪些區別?
14.SpringBoot 和 SpringCloud 之間關係?
15.eureka和zookeeper的區別?
16.mycat是什麼?大家公司分庫分表的分片規則是什麼?
17.什麼是集合?
18.什麼是dubbo?
19.什麼是spring?
1、描述下數據庫中的事務--ACID各個的特色。
原子性:要麼所有成功要麼所有失敗。
一致性:事務開始前和結束後,都是一致性狀態(錢的總額不變)。
隔離性:多個併發的事務之間是相互隔離的,互不干擾的。
持久性:數據提交後,是永久改變的。
2、什麼是springboot?大家公司是用的哪一個版本?
SpringBoot是Spring推出用於解決傳統框架配置文件冗餘,裝配組件繁雜的基於Maven的解決方案,旨在快速搭建單個微服務。
版本號:2.1.6
3、什麼是redis?
Redis 是徹底開源免費的,遵照BSD協議,是一個高性能的key-value數據庫。
4、如何理解springcloud微服務項目中,eureka,provider,consumer它們之間的關係?
eureka:提供服務註冊於發現
provider:服務提供方法將自身註冊到eureka,讓消費方找到
consumer:服務消費方從eureka獲取註冊服務列表,可以消費服務
5、mysql默認的存儲引擎是什麼?
Mysql在V5.1以前默認存儲引擎是MyISAM;在此以後默認存儲引擎是InnoDB。
6、什麼是跨域?
要了解跨域,先要說說同源策略。所謂同源是指,域名,協議,端口相同,有一個不同則是跨域。
7、什麼是token?
Token是服務端生成的一串字符串,以做客戶端進行請求的一個令牌。
當第一次登陸後,服務器生成一個Token便將此Token返回給客戶端,
之後客戶端只需帶上這個Token前來請求數據便可,無需再次帶上用戶名和密碼。
8、什麼是RESTful?
首先rest是一種API的模式,常以JSON格式編寫。符合rest約束風格和原則的應用程序或設計就是RESTful。
9、SpringCloud解決了哪些問題?
與分佈式系統相關的複雜性 – 包括網絡問題,延遲開銷,安全問題。
處理服務發現的能力 – 服務發現容許集羣中的進程和服務找到彼此並進行通訊。
解決冗餘問題 – 冗餘問題常常發生在分佈式系統中。
負載平衡 – 改進跨多個計算資源(例如計算機集羣,網絡連接,中央處理單元)的工做負載分佈。
減小性能問題 – 減小因各類操做開銷致使的性能問題。
10、微服務中什麼是熔斷?什麼是服務降級?
服務熔斷的做用相似於咱們家用的保險絲,當某服務出現不可用或響應超時的狀況時,爲了防止整個系統出現雪崩,暫時中止對該服務的調用。
服務降級是從整個系統的負荷狀況出發和考慮的,對某些負荷會比較高的狀況,爲了預防某些功能(業務場景)出現負荷過載或者響應慢的狀況,
在其內部暫時捨棄對一些非核心的接口和數據的請求,而直接返回一個提早準備好的fallback(退路)錯誤處理信息。
這樣,雖然提供的是一個有損的服務,但卻保證了整個系統的穩定性和可用性。
11、微服務的優缺點是什麼?
優勢:
鬆耦合,聚焦單一業務功能,無關開發語言,團隊規模下降。在開發中,不須要了解多有業務,
只專一於當前功能,便利集中,功能小而精。微服務一個功能受損,對其餘功能影響並非太大,能夠快速定位問題。
微服務只專一於當前業務邏輯代碼,不會和 html、css 或其餘界面進行混合。能夠靈活搭配技術,獨立性比較舒服。
缺點:
隨着服務數量增長,管理複雜,部署複雜,服務器須要增多,服務通訊和調用壓力增大,運維工程師壓力增大,
人力資源增多,系統依賴加強,數據一致性,性能監控。
或
優勢
易於開發和維護:由於一個服務只關注一個特定的業務,業務就變得比較清晰。同時維護起來也是比較方便。
單個服務啓動比較快:單個服務代碼量不會不少,啓動起來就會很快。
便於伸縮:若是系統中有三個服務ABC,服務B的訪問量比較大,咱們能夠將服務B集羣部署。
微服務的缺點?
運維要求比較高:以前就一個war包,如今一個系統中會有不少的服務,每一個服務都對應一個war包,維護起來就會變得很麻煩。
技術複雜性提升:微服務就會帶來一系列的問題,事務問題,Session一致性問題,鎖問題等。
12、微服務之間如何獨立通信的?
同步通訊:dobbo經過 RPC 遠程過程調用、springcloud經過 REST接口json調用等。
異步:消息隊列,如:RabbitMq、ActiveMq、Kafka 等。
十3、SpringCloud 和 Dubbo 有哪些區別?
首先,他們都是分佈式管理框架。
dubbo 是二進制傳輸,佔用帶寬會少一點。SpringCloud是http 傳輸,帶寬會多一點,同時使用http協議通常會使用JSON報文,消耗會更大。
dubbo 開發難度較大,所依賴的 jar 包有不少問題大型工程沒法解決。SpringCloud 對第三方的繼承能夠一鍵式生成,自然集成。
SpringCloud 接口協議約定比較鬆散,須要強有力的行政措施來限制接口無序升級。
最大的區別:
Spring Cloud拋棄了Dubbo 的RPC通訊,採用的是基於HTTP的REST方式。
嚴格來講,這兩種方式各有優劣。雖然在必定程度上來講,後者犧牲了服務調用的性能,
但也避免了上面提到的原生RPC帶來的問題。並且REST相比RPC更爲靈活,服務提供方和調用方的依賴只依靠一紙契約,
不存在代碼級別的強依賴,這在強調快速演化的微服務環境下,顯得更爲合適。
十4、SpringBoot 和 SpringCloud 之間關係?
SpringBoot:專一於快速方便的開發單個個體微服務(關注微觀);
SpringCloud:關注全局的微服務協調治理框架,將SpringBoot開發的一個個單體微服務組合並管理起來(關注宏觀);
SpringBoot能夠離開SpringCloud獨立使用,可是SpringCloud不能夠離開SpringBoot,屬於依賴關係。
十5、eureka和zookeeper的區別?
eureka和zookeeper均可以提供服務註冊與發現的功能,zookeeper 是CP原則,強一致性和分區容錯性。eureka 是AP 原則 可用性和分區容錯性。
zookeeper當主節點故障時,zk會在剩餘節點從新選擇主節點,耗時過長,雖然最終可以恢復,可是選取主節點期間會致使服務不可用,這是不能容忍的。
eureka各個節點是平等的,一個節點掛掉,其餘節點仍會正常保證服務。
十6、mycat是什麼?大家公司分庫分表的分片規則是什麼?
Mycat是基於MySQL的數據庫中間件,用來協調切分後的數據庫,使其能夠進行統一管理。
分片規則:取模分片 PartitionByMode
十7、什麼是集合?
集合有兩個父接口,一個collection,一個Map;
而collection有兩個子接口,一個List,一個Set;
List有兩個常見的實現類 ArrayList,LinkedList;
Set有兩個常見的實現類 HashSet,TreeSet;
Map有兩個常見的實現類 HashMap,HashTable。
十8、什麼是dubbo?
Dubbo是一款高性能, 輕量級的開源Java RPC分佈式服務框架, 它提供了三大核心功能: 面向接口的遠程方法調用,
智能容錯和負載均衡, 以及服務自動註冊和發現。它最大的特色是按照分層的方式來架構,使用這種方式可使各個層之間解藕(或者最大限度地鬆耦合)。
從服務模型的角度來看, Dubbo採用的是一種很是簡單的模型, 要麼提供方提供服務, 要麼是消費方消費服務, 因此基於這一點能夠抽象出服務提供方和服務消費方兩個角色。
十9、什麼是spring?
Spring是一個開源的輕量級的Java開發框架。是一種簡化應用程序的開發。
在spring出來以前,service層調用dao層都是用new的方式,在spring出來以後,service層和到dao層都會放在spring容器去管理,這是spring的第一種特性,咱們稱之爲IOC,控制反轉。
spring還有一種特性,咱們稱之爲AOP,大白話,所謂「面向切面」,說白了就是專門的人幹專門的事。在項目不少公有的或是要被重複被調用的模塊能夠被抽取出來,利用的就AOP的特性,例如日誌模塊。