10 คำถามที่ต้องมีสำหรับการสัมภาษณ์งานสำหรับตำแหน่ง Java Backend Developer
ที่ มา : สื่อ ผู้เขียนบทความแบ่งปันประสบการณ์ส่วนตัวของเขาในการผ่านการสัมภาษณ์หลายครั้งสำหรับตำแหน่ง Java Backend Developer การสัมภาษณ์มักจะยาก ดังนั้นจึงเป็นความคิดที่ดีที่จะทราบคำถามก่อนการสัมภาษณ์ เนื่องจากฉันได้ผ่านการสัมภาษณ์หลายครั้งในช่วงสองสามเดือนที่ผ่านมา ตอนนี้ฉันสามารถแบ่งปันคำถามบางข้อที่ฉันพบบ่อยที่สุดให้กับคุณได้ ฉันสมัครตำแหน่งเป็นนักพัฒนา Java แบ็กเอนด์ที่มีประสบการณ์ 1-3 ปี1. Java และคุณสมบัติของมัน
ผู้สัมภาษณ์มักจะถามเกี่ยวกับ Java เวอร์ชันล่าสุดที่คุณใช้และคุณลักษณะต่างๆ ส่วนใหญ่ฉันใช้ Java 8 และถูกถามคำถามเกี่ยวกับสตรีม API, นิพจน์แลมบ์ดา, อินเทอร์เฟซการทำงานและอื่น ๆ โดยทั่วไปผู้สัมภาษณ์จะถามเกี่ยวกับคุณสมบัติและแอปพลิเคชันเหล่านี้ตามคุณสมบัติเหล่านั้น2. การทำงานภายในของ HashMap
การสัมภาษณ์ส่วนใหญ่ที่ฉันเข้าร่วมมีคำถามนี้ หลังจากอธิบายวิธีการทำงานแล้ว บางคนถามเกี่ยวกับขนาด HashMap เริ่มต้น บางคนถามเพิ่มเติมเกี่ยวกับคอลเลกชัน Java3. ข้อผิดพลาดและข้อยกเว้น
ความแตกต่างระหว่าง Error และ Exception เป็นคำถามที่พบบ่อยในการสัมภาษณ์ ยังถามถึงสิ่งที่ถูกตรวจสอบและข้อยกเว้นที่ไม่ได้ตรวจสอบ4. มัลติเธรด
Multithreading เป็นแนวคิดที่สำคัญมากสำหรับการสัมภาษณ์ โดยปกติแล้วจะมีการถามคำถามเกี่ยวกับ Thread, คลาสที่รันได้, ความแตกต่างระหว่างคลาสเหล่านี้ และกรณีการใช้งานของทั้งสองคลาส ฉันแนะนำให้คุณศึกษากรอบการทำงานของผู้บริหารด้วย5. สตริงและความไม่เปลี่ยนรูป
ผู้สัมภาษณ์ส่วนใหญ่ถามถึงความไม่เปลี่ยนรูปในคลาสสตริง และบางครั้งก็ถามเกี่ยวกับตัวสร้างสตริงและบัฟเฟอร์สตริง (ถ้าคุณบอกว่ามันเป็นสตริงสำรองที่ไม่แน่นอน) บางครั้งพวกเขาก็ถามถึงวิธีสร้างคลาสที่ไม่เปลี่ยนรูป6. เก็บขยะ
การเก็บขยะใน Java ถือเป็นหัวข้อที่สำคัญมากในการเตรียมตัวสำหรับการสัมภาษณ์ บางครั้งจะมีการถามคำถามเกี่ยวกับวงจรการรวบรวมขยะและวิธีการต่างๆ ในการรวบรวมขยะ7. ตัวเปรียบเทียบและตัวเปรียบเทียบใน Java
คำถามที่ถามบ่อยคือเมื่อใดจึงควรใช้ Comparator และ Comparable ใน Java และอะไรคือความแตกต่างระหว่างกัน8. รูปแบบการออกแบบ Java
เมื่อพูดถึงรูปแบบการออกแบบ Java คำถามมักจะเริ่มต้นด้วยรูปแบบต่างๆ ที่ใช้ในโปรเจ็กต์ปัจจุบัน บางครั้งมีการถามคำถามว่าควรใช้แต่ละข้อเมื่อใด ถามเกี่ยวกับการสร้างคลาสที่ไม่เปลี่ยนรูปใน Java ด้วย9. ขั้นสุดท้าย ท้ายที่สุด และขั้นสุดท้าย
ความแตกต่างระหว่างคีย์เวิร์ด Final, ในที่สุด และ Finalize เป็นคำถามที่พบบ่อยในการสัมภาษณ์ สำหรับคำถามเพิ่มเติม พวกเขาถามเกี่ยวกับตัวเลือกในการใช้คำหลักแต่ละคำ10. การทำให้เป็นอนุกรมและดีซีเรียลไลซ์ใน Java
การทำให้เป็นอนุกรมและดีซีเรียลไลซ์เป็นหัวข้อที่สำคัญมากในการเตรียมตัวสำหรับการสัมภาษณ์ มักจะถามเกี่ยวกับกรณีการใช้งาน บางครั้งถามเกี่ยวกับการไฮเบอร์เนตและ JPA หวังว่าหากคุณกำลังเผชิญกับการสัมภาษณ์ตำแหน่ง Java Server Side Developer เร็วๆ นี้ การเตรียมคำถามที่กล่าวถึงที่นี่จะช่วยคุณได้การใช้คิวใน Java
ที่มา: Faun.pub ด้วยเอกสารเผยแพร่นี้ คุณจะได้เรียนรู้วิธีการนำ Queue ไปใช้งานใน Javaคิวคืออะไร?
คิวคือโครงสร้างข้อมูลเชิงเส้นในรูปแบบของลำดับการเข้าถึงองค์ประกอบตามหลักการ "เข้าก่อนออกก่อน" ซึ่งหมายความว่าองค์ประกอบที่แทรกก่อนจะถูกลบออกก่อน นั่นคือองค์ประกอบจะถูกลบออกตามลำดับที่แทรกไว้ คิวประกอบด้วยสองส่วน: ด้านหน้า (ด้านหน้า ซึ่งองค์ประกอบถูกลบออก) และด้านหลัง (ด้านหลัง ซึ่งองค์ประกอบถูกแทรก) การดำเนินการคิวทั่วไป: การดำเนินการต่อไปนี้มักใช้ในคิว:- เข้าคิว - เพิ่มองค์ประกอบจากจุดสิ้นสุดของคิว
- Dequeue - ลบองค์ประกอบออกจากส่วนหัวของคิว
- Front/Peek - ส่งกลับค่าขององค์ประกอบที่อยู่ด้านหน้าคิว โดยไม่ยกเว้น (ลบ) องค์ประกอบออกจากคิว
- IsEmpty - ตรวจสอบว่าคิวว่างเปล่าหรือไม่
- IsFull - ตรวจสอบว่าคิวเต็มหรือไม่
- Display - พิมพ์รายการทั้งหมดในคิว
การใช้รหัส:
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 เป็นจำนวนองค์ประกอบสูงสุดที่สามารถจัดคิวในอาร์เรย์ได้ เราตั้งค่าดัชนีเริ่มต้นของด้านหน้า (ด้านหน้า) และด้านหลัง (ด้านหลัง) เป็น -1
-
ต่อไปเราจะกำหนดฟังก์ชันการทำงานของisEmptyและisFull
-
เมธอดisEmpty()นั้นค่อนข้างง่าย สำหรับเมธอดisFull()จำนวนองค์ประกอบสูงสุดของเราที่อนุญาตในอาร์เรย์คือ 3 แต่สามองค์ประกอบในอาร์เรย์ไม่ได้แสดงด้วยดัชนี 3 แต่เป็น 2 เนื่องจากดัชนีแรกคือ 0 ดังนั้น ความยาวสูงสุดคือลบ 1 ให้ดัชนี 2 ซึ่งเป็นเซลล์ที่สามในอาร์เรย์ เมื่อเซลล์ทั้งหมดเข้าคิวด้วยค่าจนถึงเซลล์ที่สาม อาร์เรย์จะเต็ม
-
enQueue - หากอาร์เรย์เต็ม เราจะได้รับข้อความแจ้งว่าเต็มแล้ว หากส่วนหน้าและด้านหลังเป็น -1 แสดงว่าองค์ประกอบถูกกำหนดให้กับเซลล์แรกที่ดัชนี 0 - มิฉะนั้นค่าจะถูกแทรกและตำแหน่งด้านหลังจะเพิ่มขึ้น
-
deQueue - หากอาร์เรย์ว่างเปล่า เราจะได้รับข้อความที่เกี่ยวข้อง หากส่วนหน้าตรงกับส่วนหลัง เราจะรีเซ็ตดัชนีกลับเป็น -1 หากใช้สองเงื่อนไขสุดท้ายไม่ได้ ส่วนหน้าจะเพิ่มขึ้น
-
display - หากอาร์เรย์ไม่ว่างเปล่า เราจะวนซ้ำและพิมพ์องค์ประกอบทั้งหมด
-
จุดสูงสุด - นี่เป็นเพียงการพิมพ์ค่าขององค์ประกอบนำหน้า
GO TO FULL VERSION