面試官必問面試題彙總

2020-08-08 20:27:32

面試題一

一、描述下數據庫中的事務–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的特性,例如日誌模組。

面試題二

一、SSM的開發步驟是什麼?

"二八"

web.xml

1.前端控制器DispatcherServlet

2.過濾器CharacterEncodingFilter

applicationContext.xml

1.掃描包 <context:component-scan base-package="cn"/>

2.mvc驅動 <mvc:annotation-driven/>

3.事務驅動 <tx:annotation-driven transaction-manager="txManager"/>

4.設定數據源

5.SqlSessionFactoryBean   

6.設定事務

7.數據對映器

8.檢視解析器

二、設計一個許可權模組?

許可權模組是數據庫的安保系統,決定誰可以使用,誰擁有許可權,有user、role、permission表,通過user-role、role-permission關聯表(碼錶 碼表)進行關聯,
給角色分配許可權,角色發放許可權給使用者。

三、什麼是docker?

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的映象中,然後發佈到任何流行的 Linux或Windows 機器上,
也可以實現虛擬化。容器是完全使用沙箱機制 機製,相互之間不會有任何介面。

四、什麼是dockfile?

Dockerfile是一個包含用於組合映像的命令的文字文件,可以使用在命令列中呼叫任何命令。

五、什麼是docker-compose?

可以管理多個 Docker 容器組成一個應用,定義一個 YAML 格式的組態檔docker-compose.yml,寫好多個容器之間的呼叫關係。
然後,只要一個命令,就能同時啓動/關閉這些容器。

六、什麼是Portainer?

Portainer是Docker的圖形化管理工具

七、在公司裡使用的docker的版本是什麼?

18.09.7

八、映象和容器的關係?

容器是可寫的,映象是可讀的。容器是映象的範例,映象是容器的靜態備份。

九、分佈式鎖中的基於redis的setnx的原理以及set和setnx的區別是什麼?

分佈式鎖基於setnx原理,如果 SETNX 返回1,說明該進程獲得鎖。
如果 SETNX 返回0,說明其他進程已經獲得了鎖,進程不能進入臨界區。進程可以在一個回圈中不斷地嘗試 SETNX 操作,以獲得鎖。

redis中set是將字串值 value 關聯到 key 。如果 key 已經持有其他值, SET 就覆寫舊值,無視型別。

setnx是當且僅當 key 不存在時,可以設定 value值 。若給定的 key 已經存在,則 SETNX 不做任何動作。

十、什麼是springcloud,springcloud中的元件有哪些?分別描述下它的原理?

SpringCloud架構中最核心的是Eureka註冊中心,它是一個通訊錄。所有p端和c端都會註冊在上面,cloud中c端呼叫p端應用feign元件進行呼叫。應用程式導致網路請求出現問題時,hystrix元件實現容錯機制 機製。使用者請求量變大是,用ribbon元件實現用戶端的負載均衡。而伺服器端的負載均衡通常使用nginx反向代理。SpringCloud中有類似於servlet過濾器的元件,zuul閘道器元件對整個服務架構進行安全過濾。當使用一個服務呼叫多個feign元件的時候,sleuth+zipkin元件用來服務追蹤,可以用來偵錯介面(追蹤問題)。config元件進行統一設定。

dubbo基於RPC,SpringCloud基於RESTful。

元件ribbon、feign、hstrix 、eureka、zuul。

十一、什麼是jmeter?

Apache JMeter 是 Apache 組織開發的基於 Java 的壓力測試工具。用於對軟體做壓力測試,它最初被設計用於 Web 應用測試,但後來擴充套件到其他測試領域。
發送請求到伺服器端,獲取目標服務的統計資訊,生成不同格式的報告。

面試題三

一、什麼是mybatis?

一種持久層框架,類似於JDBC存取數據庫的操作,
我們說JDBC使用到的物件有Connection物件,PreparedStatement物件,ResultSet物件。
而Mybatis框架的核心物件有SqlSessionFactoryBuilder物件,SqlSessionFactory物件,SqlSession物件。
並且myibatis框架和hibernate框架最大的區別就在於mybatis它的靈活性比較高。

二、什麼是spring?

在spring出來之前,service層呼叫dao層都是用new的方式。
在spring出來之後,service層和dao層都會放在spring容器去管理,這是spring的第一種特性,我們稱之爲IOC,控制反轉。
spring還有一種特性,我們稱之爲AOP,大白話,「面向切面」,說白了就是專門的人幹專門的事。在專案很多公有的或是
要被重複被呼叫的模組可以被抽取出來,利用的就是AOP的特性,例如日誌模組。

三、*什麼是SpringMVC?*

當使用者發送請求到springmvc中的前端控制器中,通過對映器和適配器返回ModelAndView物件到用戶端。這就是SpringMVC的基本原理。

四、什麼是SSM?

SSM搭建的版本有很多,例如有一個版本可以這麼搭建,兩個核心組態檔web.xml,applicationContext.xml。
1.前端控制器DispatcherServlet
2.過濾器CharacterEncodingFilter
applicationContext.xml
1.掃描包 <context:component-scan base-package="cn"/>
2.mvc驅動 <mvc:annotation-driven/>
3.事務驅動 <tx:annotation-driven transaction-manager="txManager"/>
4.設定數據源
5.SqlSessionFactoryBean    
6.設定事務
7.數據對映器
8.檢視解析器

五、什麼是集合?

集合有兩個父介面,一個Collection,一個Map,而Collection有兩個子介面,一個List,一個Set,List有兩個常見的實現類ArrayList,LinkedList,
Set有兩個常見的實現類HashSet,TreeSet,Map有兩個常見的實現類HashMap,HashTable

六、什麼是SpringCloud?

SpringCloud架構中最核心的是Eureka註冊中心,它是一個通訊錄。所有p端和c端都會註冊在上面,cloud中c端呼叫p端應用feign元件進行呼叫。應用程式導致網路請求出現問題時,hystrix元件實現容錯機制 機製。使用者請求量變大是,用ribbon元件實現用戶端的負載均衡。而伺服器端的負載均衡通常使用nginx反向代理。SpringCloud中有類似於servlet過濾器的元件,zuul閘道器元件對整個服務架構進行安全過濾。當使用一個服務呼叫多個feign元件的時候,sleuth+zipkin元件用來服務追蹤,可以用來偵錯介面(追蹤問題)。config元件進行統一設定。

dubbo基於RPC,SpringCloud基於RESTful。

七、什麼是Dubbo?

Dubbo和Springcloud都是分佈式服務中常用的框架。dubbo與cloud不同,dubbo基於RPC協定。*它提供了三大核心功能: 面向介面的遠端方法呼叫,*

*智慧容錯和負載均衡, 以及服務自動註冊和發現。*

Dubbo按照分層的方式來架構,可以最大限度地松耦合。Dubbo採用一種非常簡單的模型, 要麼提供方提供服務, 要麼是消費方消費服務, 所以基於這一點可以抽象出服務提供方和服務消費方兩個角色。

八、什麼是訊息中介軟體?

訊息中介軟體利用高效可靠的訊息傳遞機制 機製進行非同步的數據傳輸,並基於數據通訊進行分佈式系統的整合。通過提供訊息佇列模型和訊息傳遞機制 機製,可以在分佈式環境下擴充套件進程間的通訊。

九、eureka和zookeeper的區別?

首先他們都是服務註冊和發現的功能,cloud一般選擇eureka作爲註冊中心,dubbo一般選擇zookeeper作爲註冊中心。基於CAP原則,eurek是AP原則,即可用性和分割區容錯性,zookeeper是CP原則,即強一致性和分割區容錯性。

十、分佈式鎖的概念?

在分佈式系統中,由於分佈式系統的分佈性,即多執行緒和多進程並且分佈在不同機器中,這兩種鎖將失去原有鎖的效果,需要我們自己實現分佈式鎖——分佈式鎖。
在多執行緒的環境下,多個執行緒同時存取同一個資源,導致執行緒不安全,使用分佈式鎖來解決這個執行緒安全問題。

分佈式搶購用到分佈式鎖,上鎖;第二個使用者要等待第一個使用者完成才能 纔能進行搶購;利用setnx設定解決安全性問題,缺點是效能過低。

面試題四

1.描述一下你上一家公司SSM專案的功能模組有哪些?

2.描述一下你上一家公司dubbo+zookeeper專案的功能模組有哪些?

3.描述一下你上一家公司springcloud專案的功能模組有哪些?

4.描述一下你上一家公司專案中許可權模組的思路?

5.描述一下上一家公司專案中的報表模組的思路?

面試題四

1.死信、延遲、重試佇列

2.雙親委派模型

3.zookeeper假死腦裂

4.MySQL優化

5.JDK8新特性

6.JavaScript this 關鍵字

7.token和session

8.微服務

9.java鎖機制 機製的問題