20 คำถามสัมภาษณ์ที่สำคัญที่ Java Developer ควรรู้
ที่มา:
Dev.to
1. ข้อยกเว้นสองประเภทใน Java คืออะไร? ความแตกต่างระหว่างพวกเขาคืออะไร?
คำตอบ: มีข้อยกเว้นสองประเภทใน Java: ข้อยกเว้นที่เลือกและไม่ถูกตรวจสอบ
- ข้อยกเว้นที่ไม่ได้ตรวจสอบไม่จำเป็นต้องประกาศในคำสั่งคีย์เวิร์ดของเมธอดหรือคอนสตรัคเตอร์ หากสามารถส่งออกได้เมื่อเมธอดหรือคอนสตรัคเตอร์ดำเนินการและเผยแพร่เกินขอบเขตของเมธอดหรือคอนสตรัคเตอร์
- ในทางกลับกัน ข้อยกเว้นที่เลือกจะต้องประกาศในเมธอดของคอนสตรัคเตอร์หรือคำสั่งคีย์เวิร์ด
2. JVM คืออะไร? เหตุใด Java จึงถูกเรียกว่า "ภาษาโปรแกรมอิสระของแพลตฟอร์ม"
ตอบ Java Virtual Machine (JVM) เป็นกระบวนการเครื่องเสมือนที่สามารถรัน Java bytecode ได้ ไฟล์ต้นฉบับ Java แต่ละไฟล์จะถูกคอมไพล์เป็นไฟล์ bytecode ซึ่งดำเนินการโดย JVM ภาษา Java ได้รับการออกแบบมาเพื่อสร้างโปรแกรมแอปพลิเคชันที่สามารถทำงานบนแพลตฟอร์มใดก็ได้ โดยไม่จำเป็นต้องเขียนใหม่หรือคอมไพล์ใหม่สำหรับแต่ละแพลตฟอร์ม Java Virtual Machine ช่วยให้สิ่งนี้เป็นไปได้เนื่องจากทราบถึงความยาวคำสั่งเฉพาะและคุณสมบัติอื่นๆ ของแพลตฟอร์มฮาร์ดแวร์พื้นฐาน
3. แอพเพล็ตและแอปพลิเคชัน Java แตกต่างกันอย่างไร
คำตอบ:
- Applets ทำงานในหน้าต่างเบราว์เซอร์ที่เปิดใช้งาน Java
- แอปพลิเคชัน Java เป็นโปรแกรม Java แบบสแตนด์อโลนที่สามารถทำงานนอกเบราว์เซอร์ได้
ทั้งคู่ต้องการ Java Virtual Machine (JVM) อย่างไรก็ตาม แอปพลิเคชัน Java ต้องการวิธีการหลักที่มีลายเซ็นเฉพาะเพื่อเริ่มดำเนินการ แอปเพล็ต Java ไม่จำเป็นต้องใช้วิธีการดังกล่าวเพื่อเริ่มดำเนินการ นอกจากนี้ แอปเพล็ต Java มักใช้นโยบายความปลอดภัยที่เข้มงวด ในขณะที่แอปพลิเคชัน Java มักใช้นโยบายความปลอดภัยที่ผ่อนปรนมากกว่า
4. JDK และ JRE แตกต่างกันอย่างไร?
คำตอบ:
- Java Runtime Environment (JRE)โดยพื้นฐานแล้วคือ Java Virtual Machine (JVM) ที่รันโปรแกรม Java ของคุณ นอกจากนี้ยังมีปลั๊กอินของเบราว์เซอร์เพื่อเรียกใช้แอปเพล็ต
- Java Development Kit (JDK)เป็นชุดพัฒนาซอฟต์แวร์ที่มีคุณสมบัติครบถ้วนสำหรับภาษา Java รวมถึง JRE คอมไพเลอร์ และเครื่องมือ (เช่น JavaDoc และ Java Debugger) เพื่อให้ผู้ใช้สามารถพัฒนา คอมไพล์ และรันแอปพลิเคชัน Java
5. เซิร์ฟเล็ตคืออะไร?
คำตอบ: เซิร์ฟเล็ตเป็นคลาสของภาษาการเขียนโปรแกรม Java ที่ใช้ในการประมวลผลคำขอของไคลเอ็นต์และสร้างเนื้อหาเว็บแบบไดนามิก Servlet ใช้เพื่อประมวลผลหรือจัดเก็บข้อมูลที่ส่งโดยแบบฟอร์ม HTML เป็นหลัก ให้เนื้อหาแบบไดนามิก และจัดการข้อมูลสถานะที่ไม่มีอยู่ใน HTTP ไร้สัญชาติ
6. หน้า JSP คืออะไร?
คำตอบ:
Java Server Page (JSP)เป็นเอกสารข้อความที่มีข้อความสองประเภท:
- ข้อมูลคงที่
- องค์ประกอบเจเอสพี
ข้อมูลคงที่สามารถแสดงในรูปแบบข้อความใดก็ได้ เช่น HTML หรือ XML JSP เป็นเทคโนโลยีที่ผสมผสานเนื้อหาแบบคงที่กับเนื้อหาที่สร้างขึ้นแบบไดนามิก
7. คำสั่งคืออะไร? JSP มีคำสั่งประเภทใดบ้าง?
คำตอบ: คำสั่งคือคำสั่งที่ประมวลผลโดยเอ็นจิ้น JSP เมื่อเพจถูกคอมไพล์เป็นเซิร์ฟเล็ต คำสั่งใช้เพื่อตั้งค่าคำแนะนำระดับหน้า แทรกข้อมูลจากไฟล์ภายนอก และระบุไลบรารีแท็กที่กำหนดเอง คำสั่งถูกกำหนดไว้ระหว่าง <%@ และ %> คำสั่งประเภทต่าง ๆ แสดงไว้ด้านล่าง:
- รวมคำสั่ง: ใช้เพื่อรวมไฟล์และรวมเนื้อหาของไฟล์กับหน้าปัจจุบัน
- Page Directive: ใช้เพื่อกำหนดคุณลักษณะบางอย่างบนเพจ JSP เช่น หน้าข้อผิดพลาดและบัฟเฟอร์
- Taglib: ใช้เพื่อประกาศ taglib ที่กำหนดเองซึ่งใช้บนเพจ
8. เมธอด System.gc() และ Runtime.gc() ทำหน้าที่อะไร?
คำตอบ: วิธีการเหล่านี้สามารถใช้เป็นคำแนะนำสำหรับ JVM เพื่อทริกเกอร์การรวบรวมขยะ โดยทั่วไป Java Virtual Machine (JVM) จะรันการรวบรวมขยะเป็นระยะหรือเมื่อหน่วยความจำว่างถึงระดับต่ำ
9. HashMap และ Hashtable มีความแตกต่างอะไรบ้าง?
คำตอบ: มีความแตกต่างหลายประการระหว่าง HashMap และ Hashtable ใน Java:
- Hashtable ได้รับการซิงโครไนซ์ในขณะที่ HashMap ไม่ใช่ สิ่งนี้ทำให้ HashMap ดีขึ้นสำหรับแอปพลิเคชันที่ไม่มีเธรด เนื่องจากโดยทั่วไปแล้วออบเจ็กต์ที่ไม่ซิงโครไนซ์จะทำงานได้ดีกว่าวัตถุที่ซิงโครไนซ์
- Hashtable ไม่อนุญาตให้ใช้คีย์หรือค่าว่าง HashMap อนุญาตให้คุณใช้คีย์ว่างหนึ่งคีย์และค่าว่างจำนวนเท่าใดก็ได้
- หนึ่งในคลาสย่อยของ HashMap คือ LinkedHashMap ดังนั้นหากคุณต้องการลำดับการวนซ้ำที่คาดเดาได้ (ลำดับการแทรกเริ่มต้น) คุณสามารถสลับ HashMap สำหรับ LinkedHashMap ได้อย่างง่ายดาย นี่จะไม่ง่ายนักหากคุณใช้ Hashtable
10. JDBC คืออะไร?
คำตอบ: JDBC เป็นเลเยอร์นามธรรมที่อนุญาตให้ผู้ใช้เลือกระหว่างฐานข้อมูล ด้วย JDBC นักพัฒนาสามารถเขียนแอปพลิเคชันฐานข้อมูลใน Java ได้โดยไม่ต้องกังวลกับรายละเอียดเบื้องหลังฐานข้อมูลใดฐานข้อมูลหนึ่ง
11. คำหลัก "คงที่" หมายถึงอะไร? คุณสามารถแทนที่วิธีส่วนตัวหรือแบบคงที่ใน Java ได้หรือไม่?
คำตอบ: คำหลัก
แบบคงที่ หมายความว่าสมาชิกตัวแปรหรือวิธี การสามารถเข้าถึงได้โดยไม่ต้องมีอินสแตนซ์ของคลาสที่
เป็นสมาชิก ผู้ใช้ไม่สามารถแทนที่วิธีการแบบคงที่ใน Java ได้เนื่องจากการแทนที่วิธีการจะขึ้นอยู่กับการเชื่อมโยงแบบไดนามิกที่รันไทม์ และวิธีการแบบคงที่จะถูกผูกไว้อย่างถาวรในเวลารวบรวม วิธีการคงที่ไม่เชื่อมโยงกับอินสแตนซ์ใดๆ ของคลาส ดังนั้นจึงใช้แนวคิดนี้ไม่ได้
12. อะไรคือความสำคัญของการบล็อกในที่สุดเมื่อจัดการกับข้อยกเว้น?
คำตอบ:
ในที่สุด บล็อก ก็จะถูกดำเนินการเสมอ โดยไม่คำนึงว่ามีข้อยกเว้นเกิดขึ้นหรือไม่ แม้ว่าจะไม่มี คำสั่ง
catchและมีข้อยกเว้นเกิดขึ้น ก็ตาม สิ่งสุดท้ายที่ต้องพูดถึงคือ บล็อก
สุดท้ายถูกใช้เพื่อเผยแพร่ทรัพยากร เช่น บัฟเฟอร์ I/O การเชื่อมต่อฐานข้อมูล ฯลฯ
13. ความแตกต่างระหว่างข้อยกเว้นและข้อผิดพลาดใน Java คืออะไร?
คำตอบ:
ข้อผิดพลาดเป็นเงื่อนไขสำคัญที่ไม่สามารถจัดการได้ด้วยโค้ดโปรแกรม
ข้อยกเว้นเป็นสถานการณ์พิเศษที่สามารถจัดการได้ด้วยโค้ดโปรแกรม
14. เมื่อใดที่วัตถุจะมีสิทธิ์สำหรับการรวบรวมขยะใน Java?
คำตอบ: อ็อบเจ็กต์ Java อยู่ภายใต้การรวบรวมขยะเมื่อไม่สามารถใช้งานได้กับโปรแกรมที่กำลังใช้งานอยู่
15. ตัววนซ้ำคืออะไร?
คำตอบ: อินเทอร์เฟซ
Iteratorมีวิธีการมากมายที่สามารถวนซ้ำผ่าน
คอลเลกชันใด ก็ได้ ทุกคอลเลกชัน Java มี เมธอด
Iteratorที่ส่งคืนอินส แตนซ์
Iterator ตัววนซ้ำสามารถลบองค์ประกอบออกจากคอลเลกชันพื้นฐานระหว่างการวนซ้ำ
16. อะไรคือการส่งผ่านโดยการอ้างอิงและการส่งผ่านด้วยค่า?
คำตอบ:
- เมื่อวัตถุถูกส่งผ่านค่าหมายความว่ามีการส่งสำเนาของวัตถุนั้น ด้วยวิธีนี้ แม้ว่าจะทำการเปลี่ยนแปลงกับออบเจ็กต์นี้ ก็จะไม่ส่งผลกระทบต่อค่าดั้งเดิม
- เมื่ออ็อบเจ็กต์ถูกส่งผ่านโดย Referenceหมายความว่าอ็อบเจ็กต์นั้นไม่ได้ผ่านจริง ๆ แต่เป็นการส่งผ่านการอ้างอิงไปยังอ็อบเจ็กต์แทน ด้วยวิธีนี้ การเปลี่ยนแปลงใดๆ ที่ทำโดยวิธีการภายนอกจะมีผลในทุกที่ด้วย
17. Java applet คืออะไร?
คำตอบ: Java applet คือโปรแกรมที่สามารถรวมไว้ในเพจ HTML และดำเนินการในเบราว์เซอร์ไคลเอนต์ที่เปิดใช้งาน Java แอพเพล็ตใช้เพื่อสร้างแอปพลิเคชันเว็บแบบไดนามิกและโต้ตอบ
18. HashMap ทำงานอย่างไรใน Java?
คำตอบ: HashMap ใน Java เก็บคู่คีย์-ค่า
HashMapต้องการฟังก์ชันแฮช ใช้
hashCodeและ วิธี
เท่ากับเพื่อตั้งค่าและดึงองค์ประกอบเข้าและออกจากคอลเลกชัน เมื่อเรียก ใช้เมธอด
put HashMapจะคำนวณค่าแฮชของคีย์และจัดเก็บคู่ไว้ที่ดัชนีที่เหมาะสมภายในคอลเลกชัน หากมีคีย์อยู่ ค่าของคีย์จะถูกอัพเดตด้วยค่าใหม่ ลักษณะสำคัญบางประการของ HashMap คือความจุ ตัวประกอบการรับน้ำหนัก และการเปลี่ยนแปลงขนาดเกณฑ์
19. อินเทอร์เฟซหลักของ Java Collections Framework คืออะไร?
ตอบ
Java Collections Frameworkเป็นชุดอินเทอร์เฟซและคลาสที่ออกแบบมาเพื่อรองรับการดำเนินการกับคอลเลกชันของอ็อบเจ็กต์ อินเทอร์เฟซหลักที่พบใน Java Collections Framework คือ:
- คอลเลกชันแสดงถึงกลุ่มของวัตถุที่เรียกว่าองค์ประกอบ
- ชุดคือคอลเลกชันที่ไม่สามารถมีองค์ประกอบที่ซ้ำกัน
- รายการคือคอลเลกชันที่ได้รับคำสั่งซึ่งสามารถมีองค์ประกอบที่ซ้ำกัน
- แผนที่เป็นวัตถุที่จับคู่คีย์กับค่าและไม่สามารถมีคีย์ที่ซ้ำกัน
20. Java รองรับข้อมูลประเภทใดบ้าง? Autoboxing และ Unboxing คืออะไร?
คำตอบ: ภาษาการเขียนโปรแกรม Java รองรับประเภทข้อมูลดั้งเดิมแปดประเภทต่อไปนี้:
- ไบต์
- สั้น
- ภายใน
- ยาว
- ลอย
- สองเท่า
- บูลีน
- ถ่าน
Autoboxingเป็นการแปลงอัตโนมัติที่ดำเนินการโดยคอมไพเลอร์ Java ระหว่างประเภทดั้งเดิมและคลาส wrapper อ็อบเจ็กต์ที่เกี่ยวข้อง หากการเปลี่ยนแปลงไปในทิศทางตรงกันข้าม การดำเนินการนี้จะเรียกว่า
Unboxing ขอขอบคุณที่อ่านและขอให้โชคดีกับการสัมภาษณ์ทางเทคนิคของคุณ!
ประโยชน์ของการรู้ภาษาโปรแกรมหลายภาษา
ที่มา:
Dev.to โดยส่วนตัวแล้วฉันเชื่อว่านักพัฒนาทุกคนควรรู้ภาษาการเขียนโปรแกรมมากกว่าหนึ่งภาษา กล่าวอีกนัยหนึ่ง หากเรากำลังพูดถึงภาษาการเขียนโปรแกรม นักพัฒนาจะต้องเป็นคนพูดได้หลายภาษา
ภาษาหลักและภาษารอง
เพื่อให้สิ่งต่าง ๆ ง่ายขึ้น ให้ฉันอธิบายคำศัพท์บางคำที่ใช้ในบทความนี้ ฉันเชื่อว่านักพัฒนาทุกคนควรมีภาษาเดียวที่เขาชอบ ฉันเรียกภาษานี้เป็นภาษาหลัก ฉันจะเรียกภาษาอื่นนอกเหนือจากภาษาหลักเสริม แน่นอนว่านักพัฒนาอาจเปลี่ยนภาษาหลักของเขา (มากกว่าหนึ่งครั้ง) ตลอดอาชีพของเขา นี่เป็นเรื่องปกติ มีสาเหตุหลายประการที่อธิบายสิ่งนี้
ผู้เชี่ยวชาญ
ในการอภิปรายเกี่ยวกับนักพัฒนาที่พูดได้หลายภาษา มักมีข้อโต้แย้งว่าความรู้ของนักพัฒนาในภาษาที่สองมาพร้อมกับความชำนาญในภาษาหลักน้อยลง ผู้เสนอแนวคิดนี้สันนิษฐานว่าการเรียนรู้ภาษาใหม่แต่ละภาษาต้องใช้เวลา และคราวนี้คุณไม่สามารถใช้เวลาไปกับการแสวงหาความรู้เกี่ยวกับภาษาหลักของคุณได้อีกต่อไป แนวความคิดนี้ดูเหมือนผิดสำหรับฉัน ฉันเห็นการเปรียบเทียบอีกอย่าง: กีฬา เป็นที่รู้กันว่าการเล่นกีฬาประเภทหนึ่งช่วยเพิ่มประสิทธิภาพของคุณในอีกประเภทหนึ่ง แน่นอนว่าคุณสามารถคว้าเหรียญทองได้ทั้งสองรายการ และการปาเป้าก็ไม่น่าจะทำให้คุณเป็นนักว่ายน้ำเก่งขึ้นได้ ในทางกลับกัน หากคุณเป็นนักปีนเขา โยคะจะช่วยให้คุณพัฒนาความยืดหยุ่นและความสมดุล ดังนั้น การฝึกโยคะจะทำให้คุณเป็นนักปีนเขาที่ดีกว่าการไม่มีโยคะ ฉันคิดว่าการเรียนรู้ภาษาเพิ่มเติมแต่ละภาษามักจะช่วยพัฒนาทักษะของคุณในภาษาอื่นๆ ที่คุณรู้จักเช่นกัน
เครื่องมือที่หลากหลายมากขึ้น
นอกจากนี้การรู้ภาษาการเขียนโปรแกรมหลายภาษาช่วยปรับปรุงคลังแสงของคุณในฐานะนักพัฒนาได้อย่างมาก มันขยายขอบเขตอันไกลโพ้นของคุณและช่วยให้คุณมองบางสิ่งจากมุมมองที่แตกต่างกัน ลองยกตัวอย่างจากชีวิตประจำวัน หากคุณเคยใช้ไขควง คุณจะคุ้นเคยกับสกรูหัวแฉก เมื่อมองแวบแรก สกรูหัวแฉกทั้งหมดจะเหมือนกัน และดูเหมือนว่าจะสามารถขันให้แน่นได้ด้วยไขควงเพียงตัวเดียว ใช่ มันเกิดขึ้นที่เป็นการยากสำหรับคุณที่จะขันหรือคลายเกลียวสกรูบางตัว แต่โดยทั่วไปแล้ว ไขควงอันเดียวก็เพียงพอสำหรับคุณ
![คอฟฟี่เบรค #58 20 คำถามสัมภาษณ์ที่สำคัญที่ Java Developer ควรรู้ ประโยชน์ของการรู้ภาษาโปรแกรมหลายภาษา - 3]()
แต่วันหนึ่งคุณเดินเข้าไปในร้านขายเครื่องมือ ดูไขควงสวยๆ พวกนั้น และพบว่าไขควง Phillips มีหลายประเภท คุณจะเห็นว่าไขควงที่คุณมีอยู่แล้วคือ Phillips (PH) และตัดสินใจซื้อ Pozidriv (PZ) ซึ่งเป็นน้องสาวฝาแฝดของมัน ทันใดนั้นปรากฎว่าสำหรับสกรูบางตัวตัวหนึ่งเหมาะกว่าและสำหรับตัวอื่น - อีกตัวหนึ่ง มีลักษณะเหมือนกันแต่
ไม่สามารถใช้แทนกันได้ (หากคุณสงสัยว่าตัวอักษร PH และ PZ บนไขควงหมายถึงอะไร ตอนนี้คุณรู้แล้ว) ด้วยความรู้ที่มากขึ้นและเครื่องมือพิเศษ คุณจะสามารถทำงานได้ดีขึ้นในครั้งต่อไปที่คุณต้องขันสกรูหัวแฉกให้แน่น เช่นเดียวกับภาษาการเขียนโปรแกรม
คุณไม่จำเป็นต้องจ่ายเงินสำหรับความรู้เพิ่มเติม
ดังนั้นโดยส่วนตัวแล้วฉันไม่เห็นคุณค่าของการเรียนรู้ภาษาการเขียนโปรแกรมเพิ่มเติม คุณจะเก่งทั้งสองภาษาเท่ากันหรือไม่? อาจจะไม่ใช่แต่ไม่น่าเป็นไปได้ที่นั่นคือเป้าหมายของคุณ คุณเรียนรู้อะไรใหม่เกี่ยวกับภาษาหลักของคุณหรือไม่? ฉันมั่นใจเรื่องนี้อย่างแน่นอน การรู้ภาษาใหม่จะเผยให้เห็นความแตกต่างระหว่างพวกเขา และสิ่งนี้จะช่วยปลุกความอยากรู้อยากเห็นของคุณ คุณจะสงสัยว่าทำไมสิ่งต่างๆ ในภาษาใหม่จึงทำแตกต่างออกไป และสิ่งที่พวกเขาทำ โดยสรุปผมจะยกตัวอย่างจากชีวิต ฉันใช้เครื่องมือบรรทัดคำสั่งหนึ่งรายการที่เขียนด้วยภาษา Python ทุกครั้งที่ฉันติดตั้งเครื่องมือนี้ในเครื่องใหม่ มีปัญหาเกิดขึ้น และทุกครั้งที่อัปเดต จำนวนปัญหาก็เพิ่มขึ้น หากคุณมี Go ในกล่องเครื่องมือ คุณจะสังเกตเห็นความได้เปรียบของมันทันทีในสถานการณ์นี้ Go ช่วยให้คุณสามารถรวบรวมสิ่งประดิษฐ์ของมันให้เป็นไบนารี่ในตัวเอง คุณสามารถมั่นใจได้ว่าเมื่อคอมไพล์แล้ว ไบนารี่จะทำงานบนทุกเครื่องที่คุณคอมไพล์ไว้ ดังนั้นฉันจึงย้าย Python CLI to Go ด้วยเวอร์ชันใหม่นี้ ฉันไม่ต้องกังวลกับการเปลี่ยนแปลงรันไทม์หรือการพึ่งพาของบุคคลที่สามอีกต่อไป นี่เป็นตัวอย่างที่ดีในการเลือกเครื่องมือที่เหมาะสมที่สุดสำหรับงาน และเพื่อที่จะสามารถเลือกได้ คุณจะต้องเป็นนักพัฒนาที่พูดได้หลายภาษา
GO TO FULL VERSION