面經(jīng)一

目的: 總結(jié)下面試時遇到的問題,并附上自己的答案.

1 Java基礎(chǔ)

1.1 Java的繼承,多態(tài)。 以及多態(tài)下的域和方法的調(diào)用問題 。

class A{
    int num = 1;
    public void print(){
        System.out.print("num = " + num);
    }
}

class B extends A{
    int num = 2;
    public void print2(){
        System.out.print("numn = " + num);
    }
    /*
    public void print(){
        System.out.print("num = " + num);
    }
     */
    }
}



public class C{
    public static void main(Stirng[] args){
        A a = new B();
        a.print();
        // a.print2();
    }
}

問輸出結(jié)果。

1.2 Java中四個權(quán)限修飾符是什么? 具體代表了什么權(quán)限。

1.3 String, String Builder, String Buffer有什么區(qū)別?

2 集合類

這方面是問的最多的。基本每個面試都會問。所以應(yīng)該仔細(xì)看一下。

2.1 map(Hashmap)了解嗎? 講一下你最常用的的map。

答案:一般我會隨身攜帶紙筆。遇到這個問題就將hashmap的結(jié)構(gòu)實(shí)現(xiàn)畫出來。如下圖:

image

不太明白的可以參考這個文章:
https://www.cnblogs.com/chengxiao/p/6059914.html

(題外: 如果對自己有自信,可以點(diǎn)名這種實(shí)現(xiàn)是jdk1.7, 在1.8后有所改變。但是這樣可能會讓面試官問你1.8是怎么實(shí)現(xiàn)的,沒信心回答好千萬的不要多此一舉)
在畫完這個圖后,基本就是對面試官照著圖講hashmap的源碼實(shí)現(xiàn)過程了。在講源碼的過程中要出現(xiàn)以下相關(guān)內(nèi)容

  • 數(shù)組容量和負(fù)載因子。
  • 向hashmap中添加元素時的實(shí)現(xiàn)過程:
  • 檢查map的容量,此處會涉及到resize方法。
  • 怎么確定在數(shù)組中的存儲位置,此處可以帶過
  • 計(jì)算出來的位序一樣時怎么辦? 鏈表鏈接。
  • 一定要點(diǎn)明添加的元素已經(jīng)存在的情況(通過比較hash值和equal方法), 在此處還能告訴面試官這就是為什么我們重寫hashcode要求重寫equals方法,顯得你對底層很了解.

2.2 List用過哪些? ArrayList 和 LinkedList的插入,刪除,查找的時間復(fù)雜度各是多少? 底層怎么實(shí)現(xiàn)? System.ArrayCopy 是怎么操作的, 會出現(xiàn)什么問題.

ArrayCopy會出現(xiàn)的問題: https://www.cnblogs.com/weikongziqu/p/5808184.html

3 多線程

3.1 三個線程順序打印(或者是線程C等待線程A和線程B的運(yùn)行結(jié)果)怎么實(shí)現(xiàn)

  • 第一種方法是設(shè)置一個全局變量, 利用violate修飾,來動態(tài)的改變變量值,進(jìn)而實(shí)現(xiàn)不同線程能拿到不同的鎖

3.1 講一下synchronized

3.2 synchronized和lock的區(qū)別是什么

  • synchronized是jdk自帶的同步工具。 在獲取鎖后,即使程序發(fā)生異常,它也能夠自動實(shí)現(xiàn)鎖的釋放。這點(diǎn)從對synchronized的反編譯能看出來。一個synchronized對應(yīng)一個monitor enter和兩個monitor exit。 這點(diǎn)是與lock不同的地方。 lock的釋放需要手動進(jìn)行。

3.3 線程間怎么通信

4 spring

4.1 介紹下MVC設(shè)計(jì)模式

4.2 spring AOP / IOC介紹一下

5 手寫代碼

5.1 排序算法

  • 快排
  • 堆排
  • 歸并
  • 冒泡

5.2 數(shù)組中只有0,1,2 三種數(shù), 對這個數(shù)組進(jìn)行排序. 要求不使用額外空間, 時間復(fù)雜度盡可能小

使用三個指針, 分別指向0,1,2. 移動指針進(jìn)行交換

5.3 查看一個字符串是不是以某個子字符串開頭(或者是否包含某個字符串)

使用正則表達(dá)式判斷. 也可以看一下String的源碼

6 數(shù)據(jù)庫

6.1 用過什么數(shù)據(jù)庫

6.2 Mysql的innerjoin, join, left join, right join有什么區(qū)別

6.3 mysql怎么優(yōu)化

6.4 mysql表的設(shè)計(jì)

6.5 mysql索引了解不? 包括哪幾種? 會出現(xiàn)什么情況

6.6 數(shù)據(jù)庫隔離級別

6.7 非關(guān)系型數(shù)據(jù)庫使用過嗎?

7 JVM相關(guān)

7.1 java內(nèi)存模型介紹下

7.2 垃圾搜集機(jī)制介紹下

7.3 垃圾回收算法

7.4 垃圾收集器了解不

8 其他

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,688評論 18 399
  • 堅(jiān)持就有希望,放棄一無所獲
    農(nóng)安043陳明娜閱讀 117評論 0 0
  • 導(dǎo) 語 每個寶貝剛出生的時候 父母都欣喜感恩小天使的降臨 小小的身體依賴在你的懷里 多么乖巧聽話… 但隨著孩子一天...
    瑞斯邦家長課堂閱讀 382評論 0 0
  • 第一天見你 你哥哥就順路車我們?nèi)ゴ鬂櫚l(fā)買東西 其實(shí)到現(xiàn)在我還想問其實(shí)列系唔系唔順路 一家4口楊小姐身材最好 楊小姐...
    打勾閱讀 245評論 0 0
  • 當(dāng)《30歲的女人》這首歌紅遍大江南北的時候,我還在單位宿舍的小床上和同事侃大山,追劇,看小說…… 在我心...
    蘭_0cb6閱讀 201評論 0 0

友情鏈接更多精彩內(nèi)容