หากคุณเคยเตรียมตัวสำหรับการสัมภาษณ์ตำแหน่งโปรแกรมเมอร์ Javaหรือทำการสอบใด ๆ (ไม่จำเป็นในการเขียนโปรแกรม) เพื่อรับใบรับรอง เป็นไปได้มากว่าคุณสังเกตเห็นแล้วว่าคำถามที่พวกเขาถามนั้นมีความเฉพาะเจาะจงมาก หลายๆ คำทำให้คุณคิดถึงสถาปัตยกรรมของภาษา บ้างก็ออกแบบมาเพื่อความรู้เชิงลึก นอกจากนี้ยังมีสิ่งที่เป็นเหมือนปริศนาหรือความแตกต่างที่ยากต่อการรู้สึกโดยไม่ต้องฝึกฝน ในบทความนี้ ผู้พัฒนาSaraans Singhมีคำถามเกี่ยวกับ Java หลายข้อ พร้อมคำตอบแน่นอน
1. จะเกิดอะไรขึ้นหากคุณใส่คำสั่ง return หรือ System.exit() ไว้ใน try/catch block นี่เป็นคำถาม "ตามทัน" ยอดนิยมใน Java เคล็ดลับก็คือโปรแกรมเมอร์หลายคนเชื่อว่าบล็อกนั้น
finally
จะถูกดำเนินการไม่ว่าในกรณีใด คำถามนี้ท้าทายแนวคิดนี้โดยการวางคำสั่งใน return
บล็อกtry/catch
หรือการเรียกจาก บล็อก try/catch
คำสั่ง คำตอบสำหรับคำถามที่ยุ่งยากนี้:บล็อก จะถูกดำเนินการเมื่อมีการวางคำสั่งในบล็อกและจะไม่ถูกดำเนินการเมื่อถูกเรียกจาก บล็อก คำสั่ง 2. Java รองรับการสืบทอดหลายรายการหรือไม่ นี่เป็นคำถามที่ยุ่งยากมาก ผู้สัมภาษณ์มักจะพูดว่า: ถ้า C++ สามารถรองรับการสืบทอดหลายรายการได้โดยตรง ทำไม Java จะรองรับไม่ได้ คำตอบนั้นซับซ้อนกว่าที่คิดเล็กน้อย เนื่องจาก Java รองรับการสืบทอดหลายประเภท เนื่องจากอินเทอร์เฟซในนั้นสามารถขยายอินเทอร์เฟซอื่น ๆ ได้ แต่ภาษา Java ไม่รองรับการใช้งานหลายแบบ 3. ในกรณีที่เมธอดส่งข้อยกเว้นในคลาสพาเรนต์ จะสามารถแทนที่เมธอดที่ส่ง ได้หรือไม่ ? คำถามยุ่งยากอีกข้อหนึ่งที่เกี่ยวข้องกับแนวคิดของการโอเวอร์โหลดและการเอาชนะ คำตอบ:คุณสามารถส่งข้อยกเว้นคลาสพาเรนต์ได้อย่างปลอดภัยในเมธอดที่ถูกแทนที่แต่คุณไม่สามารถทำเช่นเดียวกันกับข้อยกเว้นที่เลือกประเภทได้ 4. จะรับประกันได้อย่างไรว่า เธรดสามารถเข้าถึงทรัพยากรโดยไม่มีการหยุดชะงัก? หากคุณเขียนโค้ดแบบมัลติเธรดไม่เก่ง คำถามนี้จะยุ่งยากสำหรับคุณมาก อาจเป็นเรื่องท้าทายแม้กระทั่งสำหรับโปรแกรมเมอร์ที่มีประสบการณ์ซึ่งไม่เคยต้องรับมือกับการหยุดชะงักและสภาพการแข่งขันเลย เคล็ดลับอยู่ที่การจัดลำดับ: สามารถป้องกันการหยุดชะงักได้โดยการเพิ่มทรัพยากรในลำดับย้อนกลับที่ได้รับมา 5. อะไรคือความแตกต่างระหว่างคลาสและในภาษา Java?System.exit ()
finally
return
try/catch
try/catch
System.exit ()
NullPointerException
RuntimeException
NullPointerException – RuntimeException
Exception
N
N
StringBuffer
StringBuilder
คำถามคลาสสิกเกี่ยวกับภาษา Java ซึ่งนักพัฒนาบางคนถือว่ายุ่งยากและคนอื่นๆ มองว่าง่ายมาก คลาสStringBuilder
ถูกนำมาใช้ใน JDK 1.5 และความแตกต่างเพียงอย่างเดียวระหว่างพวกเขาคือวิธีการของคลาสตัวอย่างStringBuffer
เช่นlength()
หรือได้รับการซิงโครไนซ์ ในขณะที่วิธีการที่สอดคล้องกันของคลาสไม่ได้ เนื่องจากความแตกต่างพื้นฐานนี้ การต่อสตริงจึงเร็วขึ้นด้วย ที่จริงแล้วไม่แนะนำให้ใช้ เนื่องจากใน 99% ของกรณีการใช้งาน จะมีการต่อสตริงบนเธรดเดียวกัน 6. นิพจน์ 1.0/0.0 ส่งคืนอะไร มันจะส่งข้อยกเว้นหรือทำให้เกิดข้อผิดพลาดในการคอมไพล์หรือไม่? คำถามยุ่งยากอีกข้อ เกี่ยว กับชั้นเรียน แม้ว่านักพัฒนา Java จะทราบถึงชนิดข้อมูลแบบธรรมดา double และคลาส แต่เมื่อดำเนินการจุดลอยตัว พวกเขาไม่ได้ให้ความสนใจเพียงพอกับ, และกฎที่ควบคุมการคำนวณทางคณิตศาสตร์ที่เกี่ยวข้องกัน คำตอบสำหรับคำถามนี้ง่ายมาก: ไม่มี ข้อยกเว้นจะถูกส่งกลับ ค่าจะถูกส่งกลับ 7. จะเกิดอะไรขึ้นหากคุณพยายามแทรกคีย์ออบเจ็กต์ลงในคีย์ออบเจ็กต์ที่มีอยู่แล้วในนั้น? คำถามที่ยุ่งยากนี้เป็นส่วนหนึ่งของคำถามที่พบบ่อยอีกคำถามหนึ่ง: คำถามเหล่านี้ทำงานอย่างไรใน Java เป็นหัวข้อยอดนิยมสำหรับคำถามที่สับสนและยุ่งยากเกี่ยวกับภาษาจาวา คำตอบก็คือถ้าคุณพยายามใส่คีย์เข้าไปใหม่มันจะแทนที่อันเก่าเพราะคลาสไม่อนุญาตให้มีคีย์ที่ซ้ำกัน และคีย์เดียวกันหมายถึงรหัสแฮชเดียวกัน ดังนั้นมันจะไปอยู่ที่ตำแหน่งเดียวกันในส่วนของแฮช ขึ้นอยู่กับวัสดุจาก Quoracapacity()
append()
StringBuilder
StringBuilder
StringBuffer
StringBuffer
Double
Double
Double.INFINITY
NaN
-0.0
ArithmeticException
Double.INFINITY
HashMap
HashMap
HashMap
HashMap
HashMap
GO TO FULL VERSION