คำถามสัมภาษณ์เขียนโค้ด Java

โดย Aaron Cao · อัปเดตเมื่อ

คาดหวังคำถามภาษาหลักเกี่ยวกับคอลเลกชัน เจเนอริก (generics) และข้อยกเว้น (exceptions) หัวข้อการทำงานพร้อมกันและ JVM เช่นเธรดและการเก็บขยะ (garbage collection) และโจทย์อัลกอริทึมที่ต้องแก้ด้วย Java รอบสัมภาษณ์ส่วนใหญ่ผสมความรู้ภาษาเข้ากับการแก้ปัญหาสดบนตัวแก้ไขโค้ดที่แชร์ร่วมกัน

คำถามภาษา Java หลัก

คุณคาดหวังโจทย์อัลกอริทึม แต่รอบสัมภาษณ์ Java มักทดสอบตัวภาษาเองก่อน และตรงนี้เองที่ผู้สมัครที่เตรียมตัวมาดีจะได้เปรียบ ส่วนนี้ครอบคลุมหัวข้อหลักที่มักเจอเกือบทุกครั้ง

  • คอลเลกชัน (Collections) เมื่อใดควรใช้ ArrayList เทียบกับ LinkedList HashMap ทำงานอย่างไร และอะไรที่ทำให้ equals กับ hashCode เสียหาย
  • เจเนอริกและความปลอดภัยของชนิดข้อมูล ชนิดที่มีขอบเขต (bounded types) ไวลด์การ์ด (wildcards) และการลบชนิด (type erasure)
  • ข้อยกเว้น (Exceptions) Checked เทียบกับ unchecked และเมื่อใดควรจับหรือส่งต่อ
  • ความไม่เปลี่ยนแปลง (Immutability) เหตุใด String จึงไม่เปลี่ยนแปลง และวิธีออกแบบคลาสที่ไม่เปลี่ยนแปลง

การทำงานพร้อมกันและ JVM

สำหรับตำแหน่งระดับ mid และ senior ให้คาดหวังคำถามชุดหนึ่งเกี่ยวกับวิธีที่ Java ทำงาน จุดนี้แหละที่คำตอบคลุมเครือจะถูกจับได้

  • เธรดและการซิงโครไนซ์ synchronized volatile และเรซคอนดิชัน (race conditions) ที่พบบ่อย
  • โมเดลหน่วยความจำ ฮีป (heap) เทียบกับสแตก (stack) และวิธีที่การเก็บขยะเรียกคืนอ็อบเจกต์
  • ยูทิลิตีสำหรับการทำงานพร้อมกัน ExecutorService เธรดพูล และเมื่อใดควรใช้

คุณไม่จำเป็นต้องท่องสเปกให้ขึ้นใจ แต่ต้องอธิบายข้อแลกเปลี่ยน (trade-off) ได้อย่างชัดเจน ซึ่งเป็นสิ่งที่การฝึกฝนสร้างขึ้นมาพอดี

อัลกอริทึมและการแก้ปัญหาใน Java

รอบแก้ปัญหาโดยหลักการแล้วไม่ขึ้นกับภาษา แต่คุณต้องเขียนมันด้วย Java ดังนั้นความสะดวกในการใช้งานภาษาจึงสำคัญ ลองนึกถึงผู้สมัครที่สัมภาษณ์ตำแหน่งแบ็กเอนด์ที่บริษัทด้านการชำระเงิน เธอถูกขอให้กำจัดรายการซ้ำในสตรีมของธุรกรรม อัลกอริทึมคือ HashSet แต่สิ่งที่ผู้สัมภาษณ์จับตาดูจริง ๆ คือเธออธิบายแนวทางออกเสียงหรือไม่ ระบุความซับซ้อนของเวลา (time complexity) และจัดการกรณีขอบของฟิลด์ที่เป็น null ก่อนเขียนบรรทัดแรกหรือเปล่า

ฝึกพูดแผนออกเสียงก่อนพิมพ์ คุณสามารถซ้อมจังหวะนี้กับผู้สัมภาษณ์ AI ได้ที่หน้า /mock-interview

ผู้ช่วยสดเข้ากับการสัมภาษณ์ Java อย่างไร

ในการสัมภาษณ์เชิงเทคนิคแบบพูดคุยผ่านวิดีโอคอล SubcueAI จะถอดเสียงคำถามของผู้สัมภาษณ์และแสดงแนวทางที่แนะนำในฝั่งของคุณ ไม่ว่าจะเป็นในโอเวอร์เลย์บนเดสก์ท็อปสำหรับ macOS และ Windows หรือในแผงด้านข้างของส่วนขยายเบราว์เซอร์ Chromium ไม่มีบอทเข้าร่วมการประชุม และไม่มีการฝังสิ่งใดเข้าไปในหน้าประชุม

ข้อจำกัดที่ตรงไปตรงมานี้สำคัญสำหรับรอบเขียนโค้ด หากคุณอยู่บนแพลตฟอร์มเขียนโค้ดที่มอนิเตอร์หน้าจอหรือมีผู้คุมสอบ ผู้ช่วยสดจะอยู่นอกขอบเขต และคุณควรถือว่านั่นคือทักษะของตัวคุณเองเท่านั้น หัวข้อ ประเภทการสัมภาษณ์ มีข้อมูลเพิ่มเติมเกี่ยวกับรอบเทคนิค

คำถามที่พบบ่อย

หัวข้อ Java แบบไหนที่มักเจอบ่อยที่สุด

คอลเลกชันและวิธีที่ HashMap ทำงาน equals กับ hashCode ข้อยกเว้น และการทำงานพร้อมกันขั้นพื้นฐาน การสัมภาษณ์ระดับ senior จะเพิ่มโมเดลหน่วยความจำและการเก็บขยะ

ต้องเขียน Java ใน IDE จริงระหว่างสัมภาษณ์ไหม

ปกติเป็นตัวแก้ไขออนไลน์ที่แชร์ร่วมกันโดยไม่มีออโต้คอมพลีทหรือคอมไพเลอร์ ดังนั้นควรฝึกเขียนไวยากรณ์ที่ถูกต้องด้วยมือและพูดข้อสมมติของคุณออกเสียง

การสัมภาษณ์ Java ต่างจาก Python อย่างไร

รอบสัมภาษณ์ Java เน้นหนักเรื่องระบบชนิดข้อมูล (typing) ความยืดยาวของโค้ด และกลไกภายใน JVM เช่นเธรดกับการเก็บขยะ ในขณะที่ตัวโจทย์อัลกอริทึมเองใกล้เคียงกันในทุกภาษา

ผู้ช่วย AI ช่วยระหว่างการสัมภาษณ์เขียนโค้ดสดได้ไหม

ในวิดีโอคอลปกติ มันสามารถถอดเสียงคำถามและแนะนำแนวทางบน macOS, Windows หรือเบราว์เซอร์ Chromium ได้ ส่วนบนแพลตฟอร์มเขียนโค้ดที่มีผู้คุมสอบหรือมอนิเตอร์หน้าจอ มันจะอยู่นอกขอบเขต

คำถามที่เกี่ยวข้อง

← เพิ่มเติมเกี่ยวกับ ประเภทการสัมภาษณ์