java高頻面試題彙總

 

目錄

一、程序運行結果

1、自增變量

2、類初始過程

3、方法的參數傳遞機制

4、局部變量與成員變量

二、框架

1、spring bean的作用域

2、SpringMvc工作流程

三、Linux常用服務類相關命令

四、git分支相關操作

五、MYSQL什麼時候建索引

六、Redis在項目中的使用場景

七、Elasticsearch 和 solr 的區別

八、單點登錄


一、程序運行結果

1、自增變量

如下代碼的運行結果:

public static void main(String[] args) {
		int i = 1;
		i = i++;
		int j = i++;
		int k = i + ++i * i++;
		System.out.println("i=" + i);
		System.out.println("j=" + j);
		System.out.println("k=" + k);
	}

輸出:

2、類初始過程

以下代碼運行結果:

結果:

初始化順序爲:

父類靜態變量、父類靜態代碼塊、子類靜態變量、子類靜態代碼塊、

父類非靜態變量、父類非靜態代碼塊、父類構造函數、子類非靜態變量、子類非靜態代碼塊、子類構造函數

注意:子類和父類具有同名的靜態變量(不會被覆蓋)和非靜態變量(會被覆蓋);靜態成員只有在類加載時初始化一次

3、方法的參數傳遞機制

以下程序輸出什麼

結果:

i = 1

str = hello

num = 2

arr = [2,2,3,4,5]

my.a = 11

形參是基本數據類型:傳遞數據值

實參是引用數據類型:傳遞地址值;特殊的類型:String、包裝類等對象不可變性

4、局部變量與成員變量

以下程序輸出什麼

結果:

分析:

(1)Exam5 obj1 = new Exam5();

靜態變量、非靜態變量初始化:i=0【obj1 】,j=0【obj1 】,s=0【Exam5 】

執行非靜態代碼塊:i=0【obj1 】,j=1【obj1 】,s=1【Exam5 】,i=1【局部】

(2)Exam5 obj2 = new Exam5();

靜態變量、非靜態變量初始化:i=0【obj2】,j=0【obj2】,s=0【Exam5 】

執行非靜態代碼塊:i=0【obj2 】,j=1【obj2 】,s=2【Exam5 】,i=1【局部】

(3)obj1.test(10);

i=1【obj1 】,j=1【obj1 】,s=3【Exam5 】,j=11【局部】

(4)obj1.test(20);

i=2【obj1 】,j=1【obj1 】,s=4【Exam5 】,j=21【局部】

(5)obj2.test(30);

i=1【obj1 】,j=1【obj1 】,s=5【Exam5 】,j=31【局部】

二、框架

1、spring bean的作用域

(1)singleton:默認值,當IOC容器一創建就會創建bean實例,而且是單例的

(2)prototype:原型的,當IOC容器一創建不會實例化該bean,每次調用getBean創建一個新的對象

方法時再實例化bean,而且每次

(3)request:每次請求實例化一個bean

(4)session:在一次會話中共享一個baen

2、SpringMvc工作流程

三、Linux常用服務類相關命令

四、git分支相關操作

五、MYSQL什麼時候建索引

六、Redis在項目中的使用場景

數據類型

使用場景

String

比如說 ,我想知道什麼時候封鎖一個IP地址。Incrby命令

Hash

存儲用戶信息【id,name,age】

Hset(key,field,value)

Hset(userKey,id,101)

Hset(userKey,name,admin)

Hset(userKey,age,23)

----修改案例----

Hget(userKey,id)

Hset(userKey,id,102)

爲什麼不使用String 類型來存儲

Set(userKey,用信息的字符串)

Get(userKey)

不建議使用String 類型

List

實現最新消息的排行,還可以利用List的push命令,將任務存在list集合中,同時使用另一個命令,將任務從集合中取出[pop]。

Redis—list數據類型來模擬消息隊列。【電商中的秒殺就可以採用這種方式來完成一個秒殺活動】

Set

特殊之處:可以自動排重。比如說微博中將每個人的好友存在集合(Set)中,

這樣求兩個人的共通好友的操作。我們只需要求交集即可。

Zset

以某一個條件爲權重,進行排序。

京東:商品詳情的時候,都會有一個綜合排名,還可以按照價格進行排名。

七、Elasticsearch 和 solr 的區別

  1. 當實時建立索引的時候,solr會產生io阻塞,而es則不會,es查詢性能要高於solr。
  2. 在不斷動態添加數據的時候,solr的檢索效率會變的低下,而es則沒有什麼變化。
  3. Solr利用zookeeper進行分佈式管理,而es自身帶有分佈式系統管理功能。Solr一般都要部署到web服務器上,比如tomcat。啓動tomcat的時候需要配置tomcat與solr的關聯。【Solr 的本質 是一個動態web項目
  4. Solr支持更多的格式數據[xml,json,csv等],而es僅支持json文件格式。
  5. Solr是傳統搜索應用的有力解決方案,但是es更適用於新興的實時搜索應用。
    1. 單純的對已有數據進行檢索的時候,solr效率更好,高於es。
  6. Solr官網提供的功能更多,而es本身更注重於核心功能,高級功能多有第三方插件。

八、單點登錄

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