คำถามและคำตอบสัมภาษณ์สถาปนิก Java 16 อันดับแรก
เผยแพร่แล้ว: 2021-10-15สถาปนิก Java จัดการระบบและแอปพลิเคชันทั้งหมดที่เรียกใช้แอปพลิเคชัน Java การทำเช่นนั้นต้องมีความเข้าใจอย่างถ่องแท้เกี่ยวกับภาษาการเขียนโปรแกรม Java ควบคู่ไปกับความแตกต่างทั้งหมด
เนื่องจาก Java ถือเป็นหนึ่งในภาษาการเขียนโปรแกรมที่ยากที่สุดที่จะเชี่ยวชาญ คุณอาจรู้สึกติดขัดขณะเตรียมสัมภาษณ์ Java เนื่องจากการใช้คำฟุ่มเฟือยและความซับซ้อนของฟังก์ชัน ที่ upGrad เราเข้าใจปัญหาของคุณและพร้อมที่จะช่วยเหลือคุณผ่านมัน
สารบัญ
หัวข้อสำคัญสำหรับงานที่เกี่ยวข้องกับ Java
มีบางหัวข้อสำคัญที่คุณต้องไม่ข้ามไปในขณะที่เตรียมงานที่เกี่ยวข้องกับ Java หรือการสัมภาษณ์ในทุกความกว้าง บางประเด็นดังกล่าวรวมถึง:
- ภาพรวมการเขียนโปรแกรม Java
- รายละเอียดเกี่ยวกับ Java และกระบวนทัศน์ที่ทำงานบน (OOPS)
- JDK, JRE, JIT, JVM - คอมไพเลอร์ Java
- ตัวแปรและตัวดำเนินการใน Java
- ลูปและวิธีการ
- โครงสร้างข้อมูล – รวมถึง Array, Lists, Heaps, Trees เป็นต้น
- ชั้นเรียนและวัตถุ
- คำหลักที่สำคัญ เช่น 'นี่' 'สุดยอด' และอื่นๆ
- คลาสนามธรรมและอินเทอร์เฟซ
- เซิร์ฟเล็ตในภาษาจาวา
- มัลติเธรดใน Java
- แนวคิดขั้นสูงใน Java
ไม่สามารถถามคำถามจากหัวข้อทั้งหมดในบล็อกนี้ ดังนั้น ขอแนะนำอย่างยิ่งให้คุณสำรวจหัวข้อที่กล่าวถึงข้างต้นและรับข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับหัวข้อเหล่านี้
คำถามและคำตอบสัมภาษณ์สถาปนิก Java
เราแสดงรายการคำถามสัมภาษณ์สถาปนิกสัมภาษณ์ Java 17 อันดับแรกตามหัวข้อส่วนใหญ่ที่กล่าวถึงข้างต้น โปรดจำไว้ว่านี่ไม่ใช่รายการคำถามที่ครอบคลุม แต่เป็นการเสนอสิ่งที่คุณสามารถคาดหวังได้ คุณจะต้องทำการขุดมากขึ้นเนื่องจาก Java ต้องการเวลา!
1. ตัวระบุการเข้าถึงคืออะไร และตัวระบุการเข้าถึงประเภทใดบ้างที่มีอยู่ใน Java
ตัวระบุการเข้าถึงถือได้ว่าเป็นคีย์เวิร์ดที่ใช้ก่อนกำหนดหรือตั้งชื่อคลาสใดๆ เพื่อสร้างขอบเขตการเข้าถึงของคลาสนั้น Java รองรับตัวระบุการเข้าถึงต่อไปนี้สำหรับคลาส เมธอด และอ็อบเจ็กต์:

- สาธารณะ
- มีการป้องกัน
- ค่าเริ่มต้น
- ส่วนตัว
2. inner class และ subclass ต่างกันอย่างไรใน Java?
คลาสภายในคือคลาสที่ซ้อนกันภายในคลาสอื่น ดังนั้นคลาสภายในจึงมีสิทธิ์เข้าถึงตัวแปรและเมธอดทั้งหมดของประเภทภายนอก
ในทางกลับกัน ซับคลาสเป็นคลาสพิเศษที่สืบทอดคุณลักษณะจากคลาสอื่นที่เรียกว่าซูเปอร์คลาส คลาสย่อยสามารถเข้าถึงเมธอดและฟิลด์ที่มีการป้องกันและสาธารณะทั้งหมดของซูเปอร์คลาส
3. การห่อหุ้มข้อมูลมีความสำคัญอย่างไร?
การห่อหุ้มข้อมูลเป็นหนึ่งในแนวคิดหลักของกระบวนทัศน์ OOP (Object Oriented Programming) และใช้เพื่อรวมวิธีการและคุณสมบัติต่างๆ เข้าด้วยกันเป็นหน่วยเดียว การใช้การห่อหุ้ม โปรแกรมเมอร์สามารถปฏิบัติตามแนวทางแบบโมดูลาร์ที่มีโครงสร้างสำหรับการพัฒนาซอฟต์แวร์ การห่อหุ้มยังมีประโยชน์สำหรับการซ่อนข้อมูลอีกด้วย
4. คลาสซิงเกิลตันใน Java คืออะไร?
คลาสซิงเกิลตันคือคลาสที่สามารถมีได้เพียงอินสแตนซ์เดียว นั่นคือเหตุผลที่ตัวแปรและวิธีการทั้งหมดจะอยู่ในอินสแตนซ์เดียว แนวคิดของคลาสซิงเกิลตันมีประโยชน์อย่างยิ่งในสถานการณ์ที่โปรแกรมเมอร์จำเป็นต้องจำกัดจำนวนของอ็อบเจ็กต์ที่มีอยู่ในคลาส
5. ตัวแปร double และ float ใน Java ต่างกันอย่างไร
ใน Java double ใช้เวลา 8 ไบต์ในหน่วยความจำในขณะที่ float ใช้เวลา 4 ไบต์ ยิ่งกว่านั้น double คือจำนวนทศนิยมที่มีความแม่นยำสองเท่า ในขณะที่ float คือความแม่นยำเดียว
6. คำหลักสุดท้ายใน Java คืออะไร?
ใน Java หากโปรแกรมเมอร์ต้องการประกาศค่าคงที่ ให้ใช้คีย์เวิร์ด Final องค์ประกอบใด ๆ ที่กำหนดด้วยคำหลักสุดท้ายไม่สามารถเปลี่ยนค่าได้ในภายหลัง เมื่อเมธอดเป็นขั้นสุดท้าย คลาสย่อยของเมธอดไม่สามารถแทนที่ได้ นอกจากนี้ วิธีสุดท้ายจะเร็วกว่าวิธีที่เหลือเนื่องจากได้รับการแก้ไขในเวลารวบรวม
7. วิธีสร้างตัวเลขสุ่มใน Java คืออะไร?
Java ให้สองวิธีสำหรับโปรแกรมเมอร์ในการสร้างตัวเลขสุ่ม:
- การใช้คลาสสุ่มในแพ็คเกจ java.util
- การใช้คณิตศาสตร์ random() จะสร้างตัวเลขสุ่มในช่วงตั้งแต่ 0.1 ถึง 1.0
8. เป็นไปได้ไหมที่วิธีการ main() ใน Java จะคืนค่าใด ๆ
ไม่ main() ของ Java ถูกประกาศด้วยประเภทข้อมูล Void เสมอ ดังนั้นจึงไม่สามารถคืนค่าใดๆ ได้

9. Abstract Class แตกต่างจาก Interface ใน Java อย่างไร?
ความแตกต่างที่สำคัญระหว่าง Interface และ Abstract Class คือก่อนหน้านี้อนุญาตให้ประกาศวิธีสแตติกสาธารณะเท่านั้น ไม่มีการดำเนินการใด ๆ ของวิธีการดังกล่าว ในทางกลับกัน Abstract Classes สามารถมีตัวระบุการเข้าถึงที่มีหรือไม่มีการใช้งานภายในคลาส ความแตกต่างอีกประการหนึ่งคือคลาสที่ใช้อินเทอร์เฟซจำเป็นต้องใช้วิธีการทั้งหมดของอินเทอร์เฟซ ในทางกลับกัน สำหรับ Abstract Class นี่ไม่ใช่ข้อกำหนด
10. ใน Java การนำเข้าแพ็คเกจจะนำเข้าแพ็คเกจย่อยโดยอัตโนมัติหรือไม่
ไม่ หากเรานำเข้าแพ็คเกจ จะนำเข้าเฉพาะแพ็คเกจเท่านั้น ไม่ใช่แพ็คเกจย่อย โปรแกรมเมอร์จำเป็นต้องนำเข้าแพ็คเกจย่อยแยกต่างหากหากจำเป็น
11. equals() และ == ต่างกันอย่างไรใน Java?
เมธอด equals() ถูกกำหนดไว้ใน Object Class สำหรับตรวจสอบความเท่าเทียมกันของสองอ็อบเจ็กต์ วิธีนี้สามารถแทนที่ได้หากโปรแกรมเมอร์ต้องการ ตัวดำเนินการความเท่าเทียมกัน (==) เป็นตัวดำเนินการไบนารีที่ส่งคืนเฉพาะค่าบูลีน
12. อะไรคือความแตกต่างระหว่างตัวแปรท้องถิ่นและตัวแปรอินสแตนซ์?
ตัวแปรโลคัลถูกใช้ภายในคอนสตรัคเตอร์ เมธอด หรือบล็อก – และอยู่ในขอบเขตเฉพาะนั้น เมธอดหรือบล็อคอื่นๆ ในคลาสจะไม่รับรู้ถึงตัวแปรที่ไม่อยู่ในขอบเขตของตัวแปร
ในทางกลับกัน ตัวแปรอินสแตนซ์ถูกผูกไว้กับวัตถุ ตัวแปรเหล่านี้พบการประกาศภายในคลาส แต่อยู่นอกเมธอด ด้วยวิธีนี้ เมธอดหรือบล็อกทั้งหมดของคลาสนั้นสามารถเข้าถึงตัวแปรอินสแตนซ์ได้
13. คอลเลกชันใน Java คืออะไร?
คอลเล็กชันใน Java เป็นเฟรมเวิร์กที่สามารถคิดได้ว่าเป็นโครงกระดูกหรือสถาปัตยกรรมสำหรับบันทึกและจัดการกลุ่มของอ็อบเจ็กต์ต่างๆ คอลเล็กชันช่วยให้โปรแกรมเมอร์ทำงานที่สำคัญต่างๆ เช่น การเรียงลำดับ การค้นหา การจัดการ การแทรก การลบ ฯลฯ เฟรมเวิร์กคอลเล็กชันใน Java มีดังต่อไปนี้:
- อินเทอร์เฟซ
- ชั้นเรียน
- วิธีการ
14. วิธีต่างๆ ใน Servlets สำหรับการจัดการเซสชันมีอะไรบ้าง?
เซสชันคือสถานะการสื่อสารระหว่างเซิร์ฟเวอร์และไคลเอ็นต์ ด้วยเหตุนี้ หนึ่งเซสชันจึงประกอบด้วยการตอบกลับและคำขอหลายรายการ เนื่องจากทั้งเว็บเซิร์ฟเวอร์และ HTTP นั้นไม่มีสถานะ เซสชันจะถูกรักษาไว้ก็ต่อเมื่อ ID เซสชัน (หรือตัวระบุที่ไม่ซ้ำเกี่ยวกับเซสชัน) ถูกส่งผ่านระหว่างไคลเอนต์และเซิร์ฟเวอร์ในคำขอและการตอบกลับทั้งหมด วิธีการบางอย่างสำหรับการจัดการเซิร์ฟเวอร์ ได้แก่:

- HTML ฟิลด์ที่ซ่อนอยู่
- คุ้กกี้
- การเขียน URL ใหม่
- การตรวจสอบผู้ใช้
- API การจัดการเซสชัน
15. คำสั่ง JDBC คืออะไร?
คำสั่ง JDBC สามารถเข้าใจได้ว่าเป็นคำสั่งที่จำเป็นในการสื่อสารกับฐานข้อมูลโดยใช้คำสั่ง SQL JDBC จัดเตรียมวิธีการต่างๆ เช่น executeUpdate(), execute() และ executeQuery() เพื่อโต้ตอบกับฐานข้อมูล
JDBC สามเสนองบสามประเภทต่อไปนี้:
- คำชี้แจง: คิดว่านี่เป็นจุดประสงค์ทั่วไปของการดำเนินการค้นหา SQL ขณะใช้งานจริงและเข้าถึงฐานข้อมูล
- PreparedStatement: ใช้เมื่อโปรแกรมเมอร์ต้องการระบุพารามิเตอร์อินพุตและคำสั่ง SQL ในระหว่างการดำเนินการ
- CallableStatement: ใช้เพื่อเข้าถึงกระบวนงานที่เก็บไว้ CallableStatement ยอมรับพารามิเตอร์รันไทม์
16. การจัดการข้อยกเว้นใน Spring MVC Framework เป็นอย่างไร
Spring MVC มีวิธีต่อไปนี้ในการตั้งค่าการจัดการข้อยกเว้นในโปรแกรมของเรา:
- แบบอิงคอนโทรลเลอร์: ในที่นี้ เรากำหนดวิธีการจัดการข้อยกเว้น สิ่งที่เราต้องทำคือนำหน้าวิธีการเหล่านี้ด้วยคำอธิบายประกอบ @ExceptionHandler
- ตัวจัดการข้อยกเว้นส่วนกลาง: คำอธิบายประกอบ @ControllerAdvice ใช้สำหรับสิ่งนี้ สามารถใช้คลาสใดก็ได้เพื่อกำหนดตัวจัดการข้อยกเว้นส่วนกลาง
- การใช้งาน HandlerExceptionResolver: Spring MVC จัดเตรียม HandlerExceptionResolver เพื่อสร้างตัวจัดการข้อยกเว้นส่วนกลาง เมธอดนี้เป็นเพราะ Spring framework ยังมีคลาสดีฟอลต์บางตัวที่สามารถกำหนดได้ในไฟล์คอนฟิกูเรชัน spring bean ของเรา เพื่อรับสิทธิประโยชน์ในการจัดการข้อยกเว้น
สรุปแล้ว
ดังที่ได้กล่าวไว้ก่อนหน้านี้ คำถามข้างต้นไม่เพียงพอที่จะช่วยให้คุณเข้าใจในการสัมภาษณ์ได้ นี่เป็นเพียงคำถามสองสามข้อที่ส่วนใหญ่ถูกถามในการสัมภาษณ์ Java Architect ต่างๆ อย่างไรก็ตาม พวกเขาจะช่วยให้คุณมีความเข้าใจที่ดีเกี่ยวกับประเภทของความเชี่ยวชาญที่ผู้สัมภาษณ์กำลังมองหา ดังนั้น โดยไม่ต้องกังวลใจอีกต่อไป ให้เริ่มต้นด้วยการเตรียมตัวและการสัมภาษณ์ครั้งต่อไป!
หากคุณกำลังหาจุดเริ่มต้นไม่ได้ เราขอเชิญคุณเข้า ร่วมโปรแกรมการพัฒนาซอฟต์แวร์ ของเรา ด้วย ความนอบน้อม สัมผัสประสบการณ์การฝึกอบรมส่วนบุคคล คำแนะนำแบบตัวต่อตัว การสนับสนุนในอุตสาหกรรม การสนับสนุนศิษย์เก่าที่แข็งแกร่ง และอีกมากมาย - และทำให้อาชีพของคุณพุ่งสูงขึ้น!
บริษัทใดบ้างที่จ้างเป็น Java Architect
Java เป็นหนึ่งในภาษาที่ได้รับความนิยมมากที่สุด โดยเฉพาะอย่างยิ่งสำหรับการสร้างเดสก์ท็อปและเว็บแอปพลิเคชัน ดังนั้น บริษัททั้งหมดที่มี Java ในชุดทักษะมักจะต้องการ Java Architects บริษัทบางแห่งที่ทำงานร่วมกับ Java Architects เป็นประจำ ได้แก่ HCL, Capgemini, Infosys, Tech Mahindra และอื่นๆ
ฉันจะถูกขอให้เข้ารหัสระหว่างรอบสัมภาษณ์หรือไม่?
เป็นไปได้มากว่าคุณจะแยกเป็นรอบเพื่อทดสอบความเชี่ยวชาญด้านการเขียนโค้ดของคุณ อย่างไรก็ตาม คุณอาจยังคงถูกถามถึงอัลกอริทึมหรือปริศนาเกี่ยวกับการเขียนโปรแกรมในระหว่างการสัมภาษณ์ด้านเทคนิค
ฉันจำเป็นต้องมีประสบการณ์หรือปริญญามาก่อนเพื่อที่จะเป็นสถาปนิก Java หรือไม่?
ไม่เชิง. หากคุณเคยชินกับการทำงานกับ Java Programming Language และพอใจกับการแก้ปัญหาโดยใช้ภาษานี้ คุณสามารถสำรวจสาขานี้ได้!