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

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

 

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

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

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

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


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

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


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

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

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


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

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

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

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

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


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

การตรวจสอบ:

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

การตรวจสอบ:

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


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

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


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

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


9) จงระบุเครื่องมือสองชนิดที่ใช้สำหรับ...ping track ของข้อกำหนดซอฟต์แวร์?

มีหลายวิธีที่จะรักษาไว้ track ของข้อกำหนด

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

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

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

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


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

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


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

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


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

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


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

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

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


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

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

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

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


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

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

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

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

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


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

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

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

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

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

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


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

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


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

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


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

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


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

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

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

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


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

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

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


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

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

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

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

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


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

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


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

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

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

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

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


30) ความแตกต่างที่สำคัญระหว่างภาษาอังกฤษแบบมีโครงสร้างและภาษาอังกฤษแบบไม่มีโครงสร้างคืออะไร Code?

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


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

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

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


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

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


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

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


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

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


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

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


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

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

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


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

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


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

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


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

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


40) ความแข็งแกร่งคืออะไรping และอ่อนแอpingแบบไหนดีกว่ากัน? เพราะอะไร?

แข็งแรงping ตรวจสอบประเภทของตัวแปรในระหว่างการคอมไพล์ ในทางกลับกัน การตรวจสอบประเภทแบบอ่อนping ตรวจสอบประเภทของระบบในระหว่างการทำงาน ซึ่งรวมถึงประเภทที่แข็งแกร่ง (Strong ty) ด้วยping วิธีนี้มักเป็นที่นิยมมากกว่า เพราะช่วยลดข้อผิดพลาดได้มาก


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

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

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

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

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

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

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


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

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


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

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


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

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


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

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

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

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


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

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


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

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


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

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


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

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


53) เมื่อใดจึงจำเป็นต้องประกาศคลาสเป็นแบบ abstract?

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

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

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

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

Code:

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;

}

}

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

สรุปโพสต์นี้ด้วย: