Java 後端開發人員職位面試的 10 個必問問題
資料來源:Medium 文章作者分享了他透過多次 Java 後端開發人員職位面試的個人經驗。 面試往往很困難。因此,在面試之前了解問題是個好主意。由於過去幾個月我經歷了多次採訪,現在我可以與大家分享一些我最常遇到的問題。我申請了一個具有 1-3 年經驗的後端 Java 開發人員的職位。1.Java及其特點
面試官通常會詢問你正在使用的Java的最新版本及其功能。我主要使用 Java 8,經常被問到有關 API 流、lambda 表達式、函數式介面等問題。面試官通常會詢問這些功能以及基於它們的應用程式。2.HashMap的內部運作原理
我參加的大部分面試都有這個問題。在解釋了它的工作原理之後,有些人詢問了預設的 HashMap 大小,有些人詢問了更多有關 Java 集合的資訊。3. 錯誤和異常
錯誤和異常之間的區別是面試中很常見的問題。還問了什麼是檢查異常和非檢查異常。4. 多線程
多執行緒對於面試來說是一個非常重要的概念,通常會問有關 Thread、Runnable 類別、它們之間的差異以及兩者的用例的問題。我還建議你研究一下Executor框架。5. 字串和不變性
大多數面試官詢問字串類別中的不變性,有時也會詢問字串產生器和字串緩衝區(如果您說它們是可變的替代字串)。有時他們會問如何創建一個不可變的類別。6. 垃圾收集
Java 中的垃圾收集是面試準備中非常重要的議題。有時會詢問有關垃圾收集生命週期和垃圾收集的不同方法的問題。7. Java中的比較器和Comparable
常見的問題是在 Java 中何時使用 Comparator 和 Comparable 以及它們之間有什麼區別。8.Java設計模式
當談到 Java 設計模式時,問題通常會從目前專案中使用的不同模式開始。有時會詢問何時使用它們中的每一個。也詢問了有關在 Java 中建立不可變類別的問題。9. 最終、最後和最終確定
關鍵字final、finally 和finalize 之間的差異是面試中很常見的問題。作為一個附加問題,他們詢問使用每個關鍵字的選項。10. Java 中的序列化與反序列化
序列化和反序列化是準備面試的一個非常重要的主題。通常會詢問用例,有時會詢問休眠和 JPA。如果您即將面臨 Java 伺服器端開發人員職位的面試,希望準備此處提到的問題會對您有所幫助。在 Java 中實作佇列
來源:Faun.pub 感謝這份出版物,您將學習如何在 Java 中實現隊列。什麼是隊列?
隊列是一種線性資料結構,其元素存取順序按照「先進先出」原則進行。這意味著先插入的元素將先被刪除。也就是說,元素按照插入的順序被刪除。隊列由兩部分組成:Front(前面,刪除元素的地方)和Back(後面,插入元素的地方)。 常見的佇列操作: 佇列常用的操作如下:- 入隊- 從佇列末端新增一個元素。
- 出隊- 從隊列頭部刪除一個元素。
- Front/Peek - 傳回佇列前面元素的值,而不是從佇列中排除(刪除)該元素。
- IsEmpty - 檢查佇列是否為空。
- IsFull - 檢查佇列是否已滿。
- 顯示- 列印佇列中的所有項目。
程式碼實作:
public class Example {
public static void main(String[] args) {
Queue myQueue = new Queue();
myQueue.enQueue(3);
myQueue.enQueue(2);
myQueue.enQueue(1);
myQueue.display();
myQueue.deQueue();
myQueue.peak();
}
}
class Queue {
int queueLength = 3;
int items[] = new int[queueLength];
int front = -1;
int back = -1;
boolean isFull(){
if(back == queueLength - 1){
return true;
} else {
return false;
}
}
boolean isEmpty(){
if(front == -1 && back == -1){
return true;
} else {
return false;
}
}
void enQueue(int itemValue) {
if(isFull()){
System.out.println("Queue is full");
} else if(front == -1 && back == -1){
front = back = 0;
items[back] = itemValue;
} else{
back++;
items[back] = itemValue;
}
}
void deQueue(){
if(isEmpty()){
System.out.println("Queue is empty. Nothing to dequeue");
} else if (front == back){
front = back = -1;
} else {
front++;
}
}
void display(){
int i;
if(isEmpty()){
System.out.println("Queue is empty");
} else {
for(i = front; i <= back; i++){
System.out.println(items[i]);
}
}
}
void peak(){
System.out.println("Front value is: " + items[front]);
}
}
解釋:
-
首先我們建立變數及其參數。我們使用 3 作為可以在陣列中排隊的最大元素數。我們將正面(Front)和背面(Back)的初始索引設定為-1。
-
接下來我們將定義isEmpty和isFull的功能。
-
isEmpty()方法非常簡單,對於isFull()方法,數組中允許的最大元素數是3,但是數組中的三個元素不是用索引3 表示,而是用2 表示,因為第一個索引是0。所以最大長度負 1 給出索引 2,它是數組中的第三個單元格。當所有單元格都以直到第三個單元格的值排隊時,數組已滿。
-
enQueue - 如果陣列已滿,我們會收到一則訊息,表示陣列已滿。如果 Front 和 Back 部分均為 -1,則該元素將指派給索引 0 處的第一個儲存格 - 否則將插入該值並遞增後面的位置。
-
deQueue - 如果陣列為空,我們會收到對應的訊息。如果 Front 部分與 Back 部分相遇,那麼我們將它們的索引重置回 -1。如果最後兩個條件不適用,則 Front 會增加。
-
display - 如果陣列不為空,我們將迭代並列印所有元素。
-
Peak - 這只是列印前導元素的值。
GO TO FULL VERSION