古詩詞大全網 - 藝術簽名 - 計算機專業畢業面試中面試官經常問什麽問題?

計算機專業畢業面試中面試官經常問什麽問題?

1.從哈希表,二叉樹,鏈表中獲取元素需要多長時間?如果妳有幾百萬條記錄呢?

哈希表需要O(1)時間,二叉樹需要O(logN) (N是樹的節點數),鏈表需要o (n是鏈表的節點數)。如果數據結構工作正常(比如哈希表無沖突或沖突相對較少,二叉樹平衡),幾百萬條記錄不會影響效率。如果工作不正常,效率會隨著記錄數量的增加而降低。

2.重寫和重載的區別是什麽??

重寫在運行時確定,重載在編譯時確定。覆蓋和重載的機制是不同的。例如,在Java中,重載方法的簽名必須不同於原始方法的簽名,但為了覆蓋,它必須是相同的。

3.fork進程和生成線程有什麽區別?

當您派生壹個進程時,新進程將執行與父進程相同的代碼,但是在不同的內存空間中。但是當妳在壹個已有的進程中生成壹個線程,它會生成壹個新的代碼執行路徑,但是* * *享有同樣的內存空間。

4.什麽是臨界區??

臨界段是壹段代碼,非常重要,在多線程中只能由壹個線程同時執行。您可以使用信號量或互斥體來保護關鍵部分。在Java中,可以使用synchronized關鍵字或ReentrantLock來保護臨界區。

5.值類型和引用類型有什麽區別??

值類型更優化,永遠不可變,比如Java原來的int,long,double,float。引用類型指向壹個對象,這個對象可以是可變的,也可以是不可變的。妳也可以說值類型指向壹個值,引用類型指向壹個對象。

6.什麽是進程中的堆和棧?

在同壹個過程中,有兩個不同的內存區域。在Java中,堆棧用於存儲原始值和指向對象的引用類型,但對象本身總是在堆棧中創建的。堆和棧的壹個重要區別是堆內存由所有線程共享,但是每個線程都有自己的棧。

7.什麽是版本控制?

版本控制是用於存儲代碼和管理代碼庫版本的軟件,如SVN、CVS、Git、Perforce和ClearCase。他們在比較代碼、審查代碼和從以前的穩定版本構建代碼方面非常高效。所有專業開發人員都使用壹些版本控制工具,否則妳無法有效地管理代碼,尤其是如果有20個開發人員在同壹個代碼庫上工作。版本控制工具在保持代碼庫的壹致性和處理代碼沖突方面起著非常重要的作用。

8.什麽是強類型編程語言?

在強類型語言中,編譯器確保類型的正確性,例如,妳不能在字符串類型中存儲數字,反之亦然。Java是強類型語言,所以有各種數據類型(比如int、float、String、char、boolean等。).您只能在相應的類型中存儲兼容的值。

相比之下,弱類型語言在編譯時不需要類型檢查,它們根據上下文處理值。Python和Perl是弱類型編程語言的兩個常見例子。您可以將壹串數字保存為數字類型。