架構面試題

面試準備:

問題:Spring 和 SringBoot 有什麼區別

答:

1.Spring Boot可以建立獨立的Spring應用程序;
2.內嵌瞭如Tomcat,Jetty和Undertow這樣的容器,也就是說可以直接跑起來,用不着再做部署工作了。
3.無需再像Spring那樣搞一堆繁瑣的xml文件的配置;
4.可以自動配置Spring;
5.提供了一些現有的功能,如量度工具,表單數據驗證以及一些外部配置這樣的一些第三方功能;
6.提供的POM可以簡化Maven的配置;

問題:說說你認識的鎖有哪幾種,分別有什麼優點和缺點?

答:

可以查看詳細資料:https://blog.csdn.net/u010251897/article/details/80840027

Synchronized,它就是一個:非公平,悲觀,獨享,互斥,可重入的重量級鎖

ReentrantLock,它是一個:默認非公平但可實現公平的,悲觀,獨享,互斥,可重入,重量級鎖。

ReentrantReadWriteLocK,它是一個,默認非公平但可實現公平的,悲觀,寫獨享,讀共享,讀寫,可重入,重量級鎖。


問題:集羣和分佈式的區別?

答:

可以查看詳細資料:https://www.cnblogs.com/xzwblog/p/7255364.html

集羣是個物理形態,分佈式是個工作方式。

分佈式是相對中心化而來,強調的是任務在多個物理隔離的節點上進行。

分佈式:一個業務分拆多個子業務,部署在不同的服務器上
集羣:同一個業務,部署在多個服務器上

集羣是解決高可用的,而分佈式是解決高性能、高併發的。


問題:zookeeper 的做分佈式鎖和Redis 做分佈式鎖有什麼區別或哪個更好一些?

答:

可以查看詳細資料:https://blog.csdn.net/qq_19568599/article/details/52612421

 Redis分佈式鎖,必須使用者自己間隔時間輪詢去嘗試加鎖,當鎖被釋放後,存在多線程去爭搶鎖,並且可能每次間隔時間去嘗試鎖的時候,都不成功,對性能浪費很大。

Zookeeper分佈鎖,首先創建加鎖標誌文件,如果需要等待其他鎖,則添加監聽後等待通知或者超時,當有鎖釋放,無須爭搶,按照節點順序,依次通知使用者。


問題:在多服務中,如何保存session的唯一?

答:

可以查看詳細資料:https://blog.csdn.net/lamp_yang_3533/article/details/51984201

將本該保存再Web服務器磁盤上的session數據保存到cookie中

將本該保存再Web服務器磁盤上的session數據保存到Mysql數據庫中

將本該保存再Web服務器磁盤上的session數據保存到內存數據庫(memcache或redis)中


問題:說說MySQL數據庫鎖有哪幾種,區別是什麼

答:

可以查看詳細資料:https://www.cnblogs.com/paul8339/p/9936005.html

表級鎖、行級鎖
問題:說說事務的隔離級別

答:

可以查看詳細資料:https://www.cnblogs.com/protected/p/6526857.html


問題:能否舉一個例子,或者描述一個業務場景類似於可重入鎖的


問題:redis爲什麼設計成單線程

答:這個問題還是看官網解釋。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章