50 คำถามและคำตอบสัมภาษณ์วิศวกรรมซอฟต์แวร์

ต่อไปนี้เป็นคำถามและคำตอบในการสัมภาษณ์ด้านวิศวกรรมซอฟต์แวร์สำหรับผู้สมัครใหม่และมีประสบการณ์เพื่อให้ได้งานในฝัน

 

คำถามและคำตอบสัมภาษณ์นักพัฒนาซอฟต์แวร์สำหรับน้องใหม่

1) ซอฟต์แวร์ประเภทที่สำคัญมีอะไรบ้าง?

  • ซอฟต์แวร์ระบบ
  • โปรแกรมซอฟต์แวร์
  • ซอฟต์แวร์ฝังตัว
  • เว็บแอ็พพลิเคชัน
  • ซอฟต์แวร์ปัญญาประดิษฐ์
  • ซอฟต์แวร์ทางวิทยาศาสตร์

👉 ดาวน์โหลด PDF ฟรี: คำถามและคำตอบสัมภาษณ์วิศวกรรมซอฟต์แวร์


2) อะไรคือความแตกต่างที่สำคัญระหว่างโปรแกรมคอมพิวเตอร์และซอฟต์แวร์คอมพิวเตอร์?

โปรแกรมคอมพิวเตอร์เป็นส่วนหนึ่งของโค้ดโปรแกรม มันดำเนินงานที่กำหนดไว้อย่างดี ในทางกลับกัน ซอฟต์แวร์ประกอบด้วยโค้ดโปรแกรม เอกสารประกอบ และคู่มือผู้ใช้


3) การรีเอ็นจิเนียริ่งซอฟต์แวร์คืออะไร?

เป็นกระบวนการพัฒนาซอฟต์แวร์ที่ทำเพื่อปรับปรุงการบำรุงรักษาระบบซอฟต์แวร์

คำถามวิศวกรรมซอฟต์แวร์


4) อธิบายกระบวนการพัฒนาซอฟต์แวร์โดยย่อ:

การพัฒนาซอฟต์แวร์เป็นวงจรชีวิตที่ประกอบด้วยขั้นตอนต่าง ๆ ดังต่อไปนี้:

  • การวิเคราะห์ความต้องการ
  • Specification
  • สถาปัตยกรรมซอฟต์แวร์
  • การดำเนินงาน
  • การทดสอบ
  • เอกสาร
  • การฝึกอบรมและการสนับสนุน
  • ซ่อมบำรุง

5) SDLC มีรุ่นอะไรบ้าง?

แบบจำลองน้ำตก, แบบจำลองเกลียว, แบบจำลองถุงใหญ่, แบบจำลองซ้ำ และแบบจำลอง V- ล้วนแล้วแต่มีชื่อเสียง รุ่น SDLC.


6) การตรวจสอบและการตรวจสอบความถูกต้องคืออะไร?

การตรวจสอบ:

การตรวจสอบเป็นคำที่อ้างถึงชุดของกิจกรรมที่ทำให้แน่ใจว่าซอฟต์แวร์ใช้ฟังก์ชันเฉพาะ

การตรวจสอบ:

หมายถึงชุดของกิจกรรมที่ทำให้แน่ใจว่าซอฟต์แวร์ที่ถูกสร้างขึ้นตามความต้องการของลูกค้า


7) ในกระบวนการพัฒนาซอฟต์แวร์ ความหมายของการดีบักคืออะไร?

การดีบักเป็นกระบวนการที่ส่งผลให้เกิดการลบข้อผิดพลาด เป็นส่วนสำคัญของการทดสอบที่ประสบความสำเร็จ


8) คุณจะแน่ใจได้อย่างไรว่าโค้ดของคุณปลอดภัยและรวดเร็ว?

ในซอฟต์แวร์ ความปลอดภัยในการพัฒนาต้องมาก่อนเสมอ ดังนั้น หากการทำงานของโปรแกรมช้า ฉันจะพยายามหาสาเหตุและวิธีแก้ไขปัญหาที่ใช้เวลานาน


9) บอกชื่อเครื่องมือสองอย่างที่ใช้ในการติดตามข้อกำหนดของซอฟต์แวร์หรือไม่

มีหลายวิธีในการติดตามข้อกำหนด

สองที่ใช้กันทั่วไปคือ:

  • จัดทำเอกสารข้อกำหนดข้อกำหนดเพื่อแสดงรายการข้อกำหนดทั้งหมด
  • สร้างแผ่นงาน Excel ในรายการตามข้อกำหนด ประเภท การขึ้นต่อกัน ลำดับความสำคัญ ฯลฯ

10) อะไรคือความแตกต่างที่สำคัญระหว่าง stubs และ mock?

Stub คือการใช้งานอินเทอร์เฟซขั้นต่ำซึ่งโดยทั่วไปจะส่งคืนข้อมูลที่ฮาร์ดโค้ดในขณะที่การเยาะเย้ยมักจะตรวจสอบผลลัพธ์ตามความคาดหวัง ความคาดหวังเหล่านั้นถูกกำหนดไว้ในการทดสอบ


11) คุณชอบเขียนอัลกอริทึมการเขียนโปรแกรมด้วยภาษาอะไร?

นักพัฒนาทุกคนมีความคิดเห็นของตนเองเกี่ยวกับตัวเลือกภาษาการเขียนโปรแกรม แม้ว่าเราควรจะชอบภาษาระดับสูงเพราะมันมีความไดนามิก เหมือนซีและ C++ ภาษา


12) ซอฟต์แวร์คอมพิวเตอร์คืออะไร?

ซอฟต์แวร์คอมพิวเตอร์เป็นแพ็คเกจที่ประกอบด้วยโปรแกรมซอฟต์แวร์ เอกสารประกอบ และคู่มือผู้ใช้เกี่ยวกับวิธีใช้ซอฟต์แวร์


13) ตามความเห็นของคุณ SDLC รุ่นใดดีที่สุด?

ไม่มีการจัดอันดับดังกล่าว เนื่องจากมีการนำโมเดล SDLC มาใช้ตามความต้องการของกระบวนการพัฒนา มันอาจแตกต่างกันระหว่างซอฟต์แวร์กับซอฟต์แวร์


14) ใครคือผู้จัดการโครงการซอฟต์แวร์? บทบาทของเขาคืออะไร?

ผู้จัดการโครงการซอฟต์แวร์คือบุคคลที่รับผิดชอบในการจัดการโครงการพัฒนาซอฟต์แวร์

ผู้จัดการโครงการกำลังวางแผนโครงการ ติดตามความคืบหน้า การสื่อสาร เขาหรือเธอยังจัดการความเสี่ยงและทรัพยากรเพื่อส่งมอบโครงการภายในเวลา ต้นทุน และข้อจำกัดด้านคุณภาพ


15) ขอบเขตซอฟต์แวร์หมายถึงอะไร?

ขอบเขตซอฟต์แวร์เป็นขอบเขตที่กำหนดไว้อย่างดี รวมถึงกิจกรรมทุกประเภทที่ทำเพื่อพัฒนาและส่งมอบผลิตภัณฑ์ซอฟต์แวร์

ขอบเขตซอฟต์แวร์จะกำหนดฟังก์ชันและส่วนต่างๆ ทั้งหมดที่จะจัดส่งโดยเป็นส่วนหนึ่งของซอฟต์แวร์ ขอบเขตยังระบุด้วยว่าผลิตภัณฑ์จะทำอะไร? อะไรไม่ใช่ส่วนหนึ่งของโครงการ? การประมาณโครงการคืออะไร?

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


16) จะหาขนาดของผลิตภัณฑ์ซอฟต์แวร์ได้อย่างไร?

ขนาดของผลิตภัณฑ์ซอฟต์แวร์สามารถคำนวณได้โดยใช้วิธีสองวิธีดังต่อไปนี้

  • การนับบรรทัดของโค้ดที่จัดส่ง
  • การนับคะแนนฟังก์ชันที่ส่งมอบ

17) จุดฟังก์ชันคืออะไร?

จุดฟังก์ชั่นคือคุณสมบัติที่ได้รับจากผลิตภัณฑ์ซอฟต์แวร์ ถือเป็นการวัดขนาดซอฟต์แวร์ที่สำคัญที่สุด


18) มีเทคนิคการประมาณค่าโครงการซอฟต์แวร์อะไรบ้าง?

เทคนิคการประมาณค่าที่ใช้กันอย่างแพร่หลาย ได้แก่

  • เทคนิคการสลายตัว
  • เทคนิคเชิงประจักษ์

19) การจัดการการกำหนดค่าซอฟต์แวร์คืออะไร?

การจัดการการกำหนดค่าซอฟต์แวร์เป็นกระบวนการในการติดตามและควบคุมการเปลี่ยนแปลงที่เกิดขึ้นในซอฟต์แวร์

การควบคุมการเปลี่ยนแปลงเป็นฟังก์ชันที่ทำให้แน่ใจว่าการเปลี่ยนแปลงทั้งหมดที่ทำในระบบซอฟต์แวร์มีความสอดคล้องและสร้างขึ้นโดยใช้กฎและข้อบังคับขององค์กร


20) คุณจะวัดผลการดำเนินโครงการได้อย่างไร?

เราสามารถวัดการดำเนินโครงการได้โดยใช้การตรวจสอบกิจกรรม รายงานสถานะ และรายการตรวจสอบเหตุการณ์สำคัญ


21) บอกฉันเกี่ยวกับเครื่องมือการจัดการโครงการบางอย่าง

มีเครื่องมือการจัดการหลายประเภทที่ใช้ตามความต้องการของโครงการซอฟต์แวร์ บางส่วนเป็นแผนภูมิ Pert, แผนภูมิแกนต์, ฮิสโตแกรมทรัพยากร, รายงานสถานะ ฯลฯ


22) ข้อกำหนดซอฟต์แวร์คืออะไร?

ข้อกำหนดซอฟต์แวร์เป็นคำอธิบายการทำงานของระบบซอฟต์แวร์ที่นำเสนอ โดยถือว่าเป็นคำอธิบายของระบบเป้าหมาย ฟังก์ชันการทำงาน และคุณลักษณะต่างๆ


23) การศึกษาความเป็นไปได้คืออะไร?

เป็นการวัดผลเพื่อดูว่าการพัฒนาโครงการซอฟต์แวร์จะมีประโยชน์และใช้งานได้จริงเพียงใดสำหรับองค์กร โปรแกรมวิเคราะห์ซอฟต์แวร์จะทำการศึกษาเพื่อทราบถึงความเป็นไปได้ทางเศรษฐกิจ เทคนิค และการดำเนินงานของโครงการ

  1. เศรษฐกิจ ซึ่งจะรวมถึงค่าใช้จ่ายในการฝึกอบรม ค่าใช้จ่ายเพิ่มเติมและเครื่องมือ และการประมาณการต้นทุนและผลประโยชน์โดยรวมของโครงการ
  2. วิเคราะห์ทางเทคนิค: เป็นการประเมินด้านเทคนิค เป็นไปได้ไหมที่จะพัฒนาระบบนี้? ประเมินความเหมาะสมของเครื่องและระบบปฏิบัติการที่ซอฟต์แวร์จะดำเนินการ ความรู้เกี่ยวกับการพัฒนาซอฟต์แวร์และเครื่องมือที่มีให้สำหรับโครงการนี้
  3. Operaเหตุผล: ในที่นี้นักวิเคราะห์จำเป็นต้องประเมินว่าองค์กรจะสามารถปรับตัวได้อย่างราบรื่นต่อการเปลี่ยนแปลงที่ทำตามความต้องการของโครงการ ปัญหาคุ้มค่าที่จะแก้ไขตามต้นทุนโดยประมาณหรือไม่?

หลังจากศึกษาทั้งหมดนี้แล้ว รายงานความเป็นไปได้ขั้นสุดท้ายจะถูกสร้างขึ้น


24) ข้อกำหนดด้านการทำงานและที่ไม่เกี่ยวกับการทำงานคืออะไร?

ข้อกำหนดด้านการทำงานคือคุณลักษณะด้านการทำงานที่ผู้ใช้คาดหวังจากผลิตภัณฑ์ซอฟต์แวร์ที่นำเสนอ

ข้อกำหนดที่ไม่เกี่ยวกับฟังก์ชันเกี่ยวข้องกับความปลอดภัย ประสิทธิภาพ รูปลักษณ์ และความรู้สึกของอินเทอร์เฟซผู้ใช้


25) ตัวชี้วัดซอฟต์แวร์คืออะไร?

Software Metrics นำเสนอมาตรการสำหรับแง่มุมต่างๆ ของกระบวนการซอฟต์แวร์ ซึ่งแบ่งออกเป็น:

  1. ตัวชี้วัดความต้องการ: ข้อกำหนดด้านความยาว ความสมบูรณ์
  2. ตัวชี้วัดผลิตภัณฑ์: จำนวนบรรทัดการเข้ารหัส, ตัวชี้วัดเชิงวัตถุ, ตัวชี้วัดการออกแบบและการทดสอบ

26) การทำให้เป็นโมดูลคืออะไร?

การทำให้เป็นโมดูลเป็นเทคนิคที่ใช้ในการแบ่งระบบซอฟต์แวร์ออกเป็นโมดูลที่รอบคอบต่างๆ ที่คาดว่าจะดำเนินงานได้อย่างอิสระ


27) การทำงานร่วมกันคืออะไร?

การทำงานร่วมกันเป็นการวัดที่กำหนดความเชื่อถือได้ภายในระหว่างองค์ประกอบของโมดูล


28) พูดถึงเครื่องมือวิเคราะห์และออกแบบซอฟต์แวร์บ้างไหม?

เครื่องมือวิเคราะห์และออกแบบซอฟต์แวร์ที่สำคัญที่สุดบางส่วน ได้แก่:

  • ไดอะแกรมการไหลของข้อมูล
  • แผนภูมิที่มีโครงสร้าง
  • โครงสร้างภาษาอังกฤษ
  • พจนานุกรมข้อมูล
  • ไดอะแกรมผลลัพธ์กระบวนการอินพุตแบบลำดับชั้น
  • แผนผังความสัมพันธ์เอนทิตีและตารางการตัดสินใจ

29) แผนภาพการไหลของข้อมูลระดับ 0 หมายความว่าอย่างไร

ระดับนามธรรมสูงสุดเรียกว่าระดับ 0 ของ DFD เรียกอีกอย่างว่า DFD ระดับบริบท มันแสดงให้เห็นระบบข้อมูลทั้งหมดเป็นแผนภาพเดียว


30) อะไรคือความแตกต่างที่สำคัญระหว่าง Structured English และ Pseudo Code?

โครงสร้างภาษาอังกฤษเป็นภาษาอังกฤษพื้นเมือง ใช้สำหรับเขียนโครงสร้างของโมดูลโปรแกรม มันใช้คำสำคัญภาษาการเขียนโปรแกรม ในทางกลับกัน Pseudo Code นั้นเหมือนกับภาษาการเขียนโปรแกรมมากกว่าโดยไม่มีไวยากรณ์ของภาษาใดภาษาหนึ่งโดยเฉพาะ


คำถามและคำตอบวิศวกรรมซอฟต์แวร์ viva สำหรับผู้มีประสบการณ์

31) การออกแบบโครงสร้างคืออะไร?

การออกแบบโครงสร้างเป็นแนวคิดของปัญหา นอกจากนี้ยังเรียกว่าการออกแบบโซลูชันซึ่งอิงตามกลยุทธ์ 'แบ่งแยกและพิชิต'


32) การเขียนโปรแกรมเชิงฟังก์ชันคืออะไร?

เป็นวิธีการเขียนโปรแกรมที่ใช้แนวคิดของฟังก์ชันทางคณิตศาสตร์ โดยให้วิธีการคำนวณเป็นฟังก์ชันทางคณิตศาสตร์ ซึ่งให้ผลลัพธ์โดยไม่คำนึงถึงสถานะของโปรแกรม


33) การประกันคุณภาพเทียบกับการควบคุมคุณภาพคืออะไร?

การประกันคุณภาพจะตรวจสอบว่ามีการปฏิบัติตามกระบวนการที่เหมาะสมในขณะที่พัฒนาซอฟต์แวร์ในขณะที่การควบคุมคุณภาพเกี่ยวข้องกับการรักษาคุณภาพของผลิตภัณฑ์ซอฟต์แวร์


34) เครื่องมือของ CASE คืออะไร?

CASE หมายถึง คอมพิวเตอร์ช่วย วิศวกรรมซอฟต์แวร์- เป็นชุดของโปรแกรมแอปพลิเคชันซอฟต์แวร์อัตโนมัติ ซึ่งใช้ในการสนับสนุน ปรับปรุง และเสริมสร้างกิจกรรม SDLC


35) โมเดลกระบวนการใดที่จะลบข้อบกพร่องก่อนที่ซอฟต์แวร์จะเกิดปัญหา

วิธีวิศวกรรมซอฟต์แวร์คลีนรูมช่วยขจัดข้อบกพร่องก่อนที่ซอฟต์แวร์จะเกิดปัญหา


36) แก้ไขปัญหานี้

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

หากคุณเลือกถุงเท้าสามคู่ ถุงเท้าเหล่านั้นอาจเป็นประเภทเดียวกันแม้ว่าโอกาสจะอยู่ที่ 50% ก็ตาม อัตราต่อรองไม่เคยเป็นความจริงที่เท่าเทียมกัน ดังนั้น วิธีเดียวที่จะ 'ให้แน่ใจว่าคุณมีคู่ที่ตรงกัน' คือการรับแรงกระแทกอย่างน้อย 11 ครั้ง


37) คุณจะมั่นใจได้อย่างไรว่าโค้ดที่คุณเขียนสามารถรองรับสถานการณ์ข้อผิดพลาดประเภทต่างๆ ได้?

ฉันสามารถเขียนการทดสอบที่กำหนดสถานการณ์ข้อผิดพลาดที่คาดหวังได้


38) อธิบายความแตกต่างระหว่างเธรดและกระบวนการหรือไม่

กระบวนการเป็นตัวอย่างของโปรแกรมคอมพิวเตอร์ ในโปรแกรมเดียว เป็นไปได้ที่จะมีเธรดตั้งแต่หนึ่งเธรดขึ้นไป


39) บอกความแตกต่างระหว่าง EXE และ DLL ให้ฉันฟังหน่อยสิ

exe เป็นโปรแกรมปฏิบัติการในขณะที่ DLL เป็นไฟล์ที่สามารถโหลดและรันโดยโปรแกรมแบบไดนามิก เป็นที่เก็บโค้ดภายนอกสำหรับโปรแกรม เนื่องจากทั้งสองโปรแกรมต่างกัน ให้ใช้ DLL เดียวกันซ้ำแทนที่จะมีโค้ดนั้นในไฟล์ นอกจากนี้ยังช่วยลดพื้นที่จัดเก็บที่จำเป็นอีกด้วย


40) การพิมพ์แบบเข้มงวดและแบบอ่อนแอคืออะไร? แบบไหนดีกว่ากัน? เพราะเหตุใด?

การพิมพ์ที่เข้มงวดจะตรวจสอบประเภทของตัวแปรในระหว่างการคอมไพล์ ในทางกลับกัน การพิมพ์ที่อ่อนแอจะตรวจสอบประเภทของระบบในระหว่างการรันไทม์ ในบรรดาประเภทเหล่านั้น การพิมพ์ที่เข้มงวดมักได้รับการนิยมใช้ เนื่องจากช่วยลดจุดบกพร่องให้น้อยที่สุด


41) อธิบายความแตกต่างระหว่างการเขียนโปรแกรมเชิงอินเทอร์เฟซ, เชิงวัตถุ และเชิงมุม

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

42) เหตุใดการใช้ catch (ข้อยกเว้น) จึงเป็นความคิดที่ไม่ดีเสมอไป

เป็นความคิดที่ไม่ดีเพราะว่า:

  • เนื่องจากไม่มีการกำหนดตัวแปร จึงไม่สามารถอ่านข้อยกเว้นได้
  • ควรใช้ข้อยกเว้นเมื่อคุณทราบประเภทข้อยกเว้นแล้ว

43) ข้อมูลประเภทใดที่ถูกส่งผ่าน HTTP Headers?

สคริปต์และข้อมูลเมตาที่ส่งผ่านส่วนหัว HTTP


44) คุณจัดลำดับความสำคัญของข้อกำหนดอย่างไร?

ขั้นแรก คุณต้องออกแบบระบบโดยการประเมินโครงสร้างข้อมูล จากนั้นคุณควรไปยังโครงสร้างโค้ดที่จำเป็นเพื่อรองรับ


45) ขอความแตกต่างระหว่างการออกแบบเชิงวัตถุและการออกแบบตามส่วนประกอบหรือไม่

การออกแบบเชิงวัตถุสามารถสรุปได้ง่ายในระดับหนึ่งในการออกแบบตามส่วนประกอบ


46) คุณจะใช้ความหลากหลายเมื่อใด?

Polymorphism ถูกใช้เมื่อมีความจำเป็นในการแทนที่ฟังก์ชันการทำงานเมื่อสืบทอดคลาส มันเกี่ยวกับชั้นเรียนที่ใช้ร่วมกันและสัญญาที่ใช้ร่วมกัน


47) อะไรคือความแตกต่างระหว่างสแต็กและคิว?

  • คิวจะเข้าก่อนออกก่อนเสมอ
  • สแต็คจะเข้าหลังออกก่อนเสมอ

48) สิ่งที่จำเป็นสำหรับการทดสอบคุณภาพของโค้ดคืออะไร?

ตามความเห็นของฉัน Unit Testing Framework เป็นสิ่งจำเป็นสำหรับการทดสอบคุณภาพของโค้ด


49) คุณคิดว่าการบำรุงรักษาซอฟต์แวร์มีราคาแพงหรือไม่ เพราะเหตุใด

ตามความเห็นของฉัน การบำรุงรักษาซอฟต์แวร์จะไม่แพงเลยหากเราใช้กระบวนการพัฒนาที่เหมาะสม


50) ขอความแตกต่างระหว่างแท็กและสาขาให้ฉันหน่อยได้ไหม

แท็กมีไว้สำหรับการเผยแพร่เวอร์ชันซึ่งเป็นที่ชั่วคราวสำหรับการดำเนินการดังกล่าว อย่างไรก็ตาม สาขาจะถูกลบเมื่อรวมการเปลี่ยนแปลงเหล่านั้นเข้ากับ Trunk


51) ตัวแปรระดับคลาสที่ได้รับการป้องกันมีให้ใช้งานที่ไหน?

ตัวแปรระดับคลาสที่ได้รับการป้องกันจะพร้อมใช้งานสำหรับคลาสย่อยใดๆ ที่ได้รับมาจากคลาสพื้นฐาน


52) เป็นไปได้ไหมที่จะดำเนินการ catch block หลายอันสำหรับคำสั่ง try เดียว?

ใช่. catch หลายบล็อกสามารถดำเนินการได้สำหรับคำสั่ง try เดียว


53) เมื่อใดที่คุณจะต้องประกาศคลาสให้เป็นนามธรรม?

เราควรประกาศคลาสเป็นนามธรรมในสถานการณ์ต่อไปนี้:

  1. เมื่อคลาสได้รับการสืบทอดมาจากคลาสนามธรรม แต่ไม่ใช่วิธีนามธรรมทั้งหมดที่ถูกแทนที่
  2. ในกรณีที่มีการประกาศวิธีการอย่างน้อยหนึ่งวิธีในคลาสให้เป็นนามธรรม

54) พัฒนาอัลกอริธึมที่ส่งออกตำแหน่งปัจจุบันของคุณและรายชื่อที่ตั้งตู้ ATM ในพื้นที่นั้น รับตู้ ATM K ที่ใกล้ที่สุดไปยังที่ตั้งของคุณ

สร้างเมธอด getDistance(a, b) ที่คำนวณระยะห่างระหว่าง a และ b

รหัส:

import java.util.HashMap;

import java.util.Map;

import java.util.PriorityQueue;

public class PrioRQueueExample {

public static void main(String[] args){

PriorityQueue<Double> pq = new PriorityQueue<Double>((x,y)-> {Double z = y-x;return z.intValue(); });

PrioRQueueExample pqe = new PrioRQueueExample();

//Number of ATMs to return i.e. K

int num_ATMs = 3;

double curr_loc = 0.00;

Map<String,Double> nallATMLocs = new HashMap<String,Double>();

//Map of ATM names and their distance co-ordinates

nallATMLocs.put("atm1",45.0);

nallATMLocs.put("atm2",78.0);

nallATMLocs.put("atm3",54.0);

nallATMLocs.put("atm4",64.0);

nallATMLocs.put("atm5",35.0);

nallATMLocs.put("atm6",42.0);

nallATMLocs.put("atm7",57.0);

nallATMLocs.put("atm7",1.00);

nallATMLocs.forEach((atm,dist) ->{if(pq.size() < num_ATMs){

pq.add(pqe.getLocation(curr_loc,dist));}

else{

if(        pq.peek() > pqe.getLocation(curr_loc,dist)){

pq.poll();

pq.add(pqe.getLocation(curr_loc,dist));

}

}

});

pq.forEach(atmLoc -> System.out.println(atmLoc));

}

private double getLocation(double curr,double atm){

return atm - curr;

}

}

คำถามสัมภาษณ์เหล่านี้จะช่วยในวีว่าของคุณ (วาจา)