คำถามสัมภาษณ์ทางเทคนิคสำหรับวิศวกรซอฟต์แวร์ที่ต้องการ
เผยแพร่แล้ว: 2021-10-16การสัมภาษณ์ด้านเทคนิคจะประเมินความรู้และทักษะของคุณ พวกเขาได้รับการออกแบบมาเพื่อประเมินความสามารถในการแก้ปัญหาของคุณและประเมินว่าคุณจะเข้าถึงสถานการณ์การทำงานเฉพาะอย่างไร
การเตรียมตัวสำหรับกระบวนการจัดตำแหน่งอาจเป็นเรื่องที่น่ากลัวสำหรับผู้มาใหม่ที่เพิ่งจบการศึกษาหรือมีการเปิดโปงอุตสาหกรรมที่จำกัด บล็อกนี้จะกล่าวถึงคำถามสัมภาษณ์ทางเทคนิคที่ถามบ่อยที่สุดเพื่อช่วยคุณในการเดินทางครั้งนี้!
สารบัญ
คำถามและคำตอบในการสัมภาษณ์ทางเทคนิคยอดนิยม
กระบวนการจ้างงานสำหรับงานด้านเทคนิคมีโครงสร้างที่ดี รวมถึงรายการคำถามมาตรฐานเพื่อทดสอบความรู้ในสาขาวิชาของคุณและความสามารถในทางปฏิบัติ ต่อไปนี้เป็นคำถามและคำตอบสำหรับวิศวกรซอฟต์แวร์ นักพัฒนา และผู้เชี่ยวชาญด้านไอทีอื่นๆ ที่ต้องการเตรียมตัวล่วงหน้า
1. ซอฟต์แวร์คอมพิวเตอร์คืออะไร?
ซอฟต์แวร์คอมพิวเตอร์หมายถึงแพ็คเกจที่ประกอบด้วยโปรแกรมซอฟต์แวร์ เอกสารประกอบ และคู่มือผู้ใช้ เป็นชุดคำสั่งและข้อมูลที่บอกวิธีการทำงานของคอมพิวเตอร์
2. อะไรคือความแตกต่างที่สำคัญระหว่างโปรแกรมคอมพิวเตอร์และซอฟต์แวร์?
โปรแกรมคอมพิวเตอร์คือโค้ดที่เขียนด้วยภาษาโปรแกรมเฉพาะ สามารถดำเนินการเพื่อทำงานเฉพาะได้ มีการคอมไพล์ทุกครั้งที่ผู้ใช้ต้องการเอาต์พุต—เช่น เว็บเบราว์เซอร์เช่น Google Chrome, Firefox, Safari เป็นต้น
ในทางกลับกัน ซอฟต์แวร์คือชุดของโปรแกรม ไลบรารี และข้อมูลที่เกี่ยวข้อง โดยปกติจะมีโครงสร้างข้อมูลพื้นฐาน อัลกอริทึมเฉพาะ (สำหรับการคำนวณ) และอินเทอร์เฟซผู้ใช้ เช่น Microsoft Windows, Linux, MS Word, Excel, VLC Media, Adobe Photoshop เป็นต้น
3. ซอฟต์แวร์ประเภทต่าง ๆ มีอะไรบ้าง?
ซอฟต์แวร์สามารถแบ่งออกเป็นซอฟต์แวร์ระบบและซอฟต์แวร์แอปพลิเคชัน ในขณะที่อดีตจัดการทรัพยากรระบบ อย่างหลังทำหน้าที่เฉพาะที่ซอฟต์แวร์ได้รับการออกแบบ ซอฟต์แวร์ระบบได้รับการพัฒนาในภาษาแอสเซมบลีระดับต่ำ ในขณะที่ซอฟต์แวร์แอปพลิเคชันใช้ C++, Java, .NET เป็นต้น
ในโลกเทคโนโลยีสมัยใหม่ เราสามารถสังเกตโซลูชันซอฟต์แวร์อื่นๆ เช่น ซอฟต์แวร์ฝังตัว แอปพลิเคชันบนเว็บ และซอฟต์แวร์ปัญญาประดิษฐ์
- ซอฟต์แวร์ฝังตัว หรือที่เรียกว่าเฟิร์มแวร์ เครื่องควบคุม อุปกรณ์ หรือฮาร์ดแวร์เฉพาะทาง ตัวอย่างเช่น ซอฟต์แวร์ที่ออกแบบมาสำหรับอุปกรณ์อิเล็กทรอนิกส์ของรถยนต์ นาฬิกาดิจิตอล หุ่นยนต์ และเครื่องกระตุ้นหัวใจ
- เว็บแอปพลิเคชันทำงานบนเว็บเบราว์เซอร์ที่มีการเชื่อมต่อเครือข่ายที่ใช้งานได้ อีเมล บริการส่งข้อความโต้ตอบแบบทันที และแพลตฟอร์มอีคอมเมิร์ซเป็นตัวอย่างยอดนิยม
- ซอฟต์แวร์ปัญญาประดิษฐ์เลียนแบบพฤติกรรมการใช้เหตุผลของมนุษย์ เรียนรู้จากรูปแบบข้อมูล วิเคราะห์ข้อมูลเชิงลึก โซลูชันดังกล่าวมีคุณสมบัติต่างๆ เช่น Machine Learning, Voice Recognition, Image Processing เป็นต้น Google Assistant, Cortana, Alexa, IBM Watson, Salesforce Einstein และ Infosys Nia เป็นตัวอย่างที่โดดเด่น
4. อธิบายขั้นตอนการพัฒนาซอฟต์แวร์
กระบวนการพัฒนาซอฟต์แวร์เกี่ยวข้องกับขั้นตอนต่อไปนี้:
- การวางแผน: กำหนดขอบเขตของโครงการ ประมาณการต้นทุน กำหนดตารางเวลาและข้อกำหนด
- ข้อกำหนด: รวบรวมผู้เชี่ยวชาญเฉพาะด้านเพื่อแสดงรายการข้อกำหนดของซอฟต์แวร์และจัดทำเอกสารข้อกำหนด
- สถาปัตยกรรม: การจัดระเบียบองค์ประกอบของซอฟต์แวร์ การสร้างความสัมพันธ์ระหว่างองค์ประกอบ และการกำหนดคุณสมบัติและวิวัฒนาการขององค์ประกอบและความสัมพันธ์
- การใช้งาน: การใช้รูปแบบและสถาปัตยกรรมที่จัดทำเป็นเอกสารเพื่อออกแบบส่วนประกอบและผลิตโค้ดสำหรับซอฟต์แวร์ที่ใช้งานได้ (ขั้นตอนการสร้างต้นแบบ)
- การทดสอบ: การประเมินคุณภาพของโค้ด ฟังก์ชัน การผสานการทำงาน ประสิทธิภาพ และความปลอดภัยของซอฟต์แวร์
- การปรับใช้: การนำซอฟต์แวร์ออกสู่สภาพแวดล้อมการผลิต
- เอกสารประกอบ: อธิบายว่าซอฟต์แวร์ทำงานอย่างไรและใช้งานอย่างไร
- การฝึกอบรม: การสนับสนุนคนในองค์กรในการทำความเข้าใจการใช้ซอฟต์แวร์และบทบาทที่เกี่ยวข้องกับซอฟต์แวร์
- การบำรุงรักษา: การปรับเปลี่ยนและอัปเดตซอฟต์แวร์ให้สอดคล้องกับความต้องการของลูกค้าที่เปลี่ยนแปลงไป
5. คุณสามารถแสดงรายการ SDLC บางรุ่นได้หรือไม่?
SDLC ย่อมาจาก Software Development Life Cycle SDLC หลายรุ่นวางจำหน่ายแล้ววันนี้ รวมถึง Waterfall, V-Shaped, Big-Bag, Spiral, Iterative และ Agile
6. คุณหมายถึงอะไรโดยการตรวจสอบและการตรวจสอบความถูกต้อง?
ทั้งการตรวจสอบและการตรวจสอบรวมถึงชุดของกิจกรรมที่ดำเนินการเพื่อวัตถุประสงค์เฉพาะ การยืนยันเป็นการตรวจสอบให้แน่ใจว่าซอฟต์แวร์ใช้ฟังก์ชันบางอย่าง การตรวจสอบครอบคลุมการยืนยันว่าซอฟต์แวร์ตรงตามความต้องการของลูกค้าหรือไม่
7. คุณมั่นใจในความปลอดภัยและความเร็วในการเข้ารหัสได้อย่างไร?
ตามแนวทางปฏิบัติที่ดีที่สุด เราควรรวมการทดสอบความปลอดภัยเข้ากับกระบวนการพัฒนาซอฟต์แวร์ การเขียนข้อกำหนด และการวิเคราะห์ความเสี่ยงด้านสถาปัตยกรรมในระหว่างขั้นตอนการออกแบบ หากซอฟต์แวร์ทำงานช้า ควรระบุสาเหตุของความซับซ้อนของเวลา การผสานรวมอย่างต่อเนื่อง การทดสอบอัตโนมัติ และวิธีการแบบคล่องตัวเป็นวิธีหนึ่งในการเพิ่มความเร็ว SDLC
8. ข้อกำหนดของซอฟต์แวร์คืออะไร? คุณจะจัดลำดับความสำคัญและติดตามได้อย่างไร
ข้อกำหนดของซอฟต์แวร์อธิบายฟังก์ชันและคุณสมบัติของระบบซอฟต์แวร์ที่เสนอหรือเป้าหมาย
ในการจัดลำดับความสำคัญของข้อกำหนด คุณต้องประเมินโครงสร้างข้อมูลก่อน จากนั้นจึงออกแบบโครงสร้างโค้ดเพื่อรองรับความต้องการ ขั้นตอนต่อไปคือการสร้างเอกสารข้อกำหนดข้อกำหนดซอฟต์แวร์ (SRS)
แผ่นงาน Excel มาตรฐานที่มีการป้อนข้อมูลเกี่ยวกับข้อกำหนด ประเภท การขึ้นต่อกัน ลำดับความสำคัญ ฯลฯ ทำงานได้ดีที่สุดสำหรับการติดตาม
9. คุณจะใช้ภาษาใดในการเขียนอัลกอริธึมการเขียนโปรแกรม
นักพัฒนาซอฟต์แวร์สามารถเลือกภาษาการเขียนโปรแกรมขึ้นอยู่กับทักษะและความต้องการของพวกเขา อย่างไรก็ตาม ควรเลือกใช้ภาษาระดับสูงเช่น C และ C++ เนื่องจากมีลักษณะแบบไดนามิก
10. การเขียนโปรแกรมประเภทต่าง ๆ มีอะไรบ้าง?
การเขียนโปรแกรมเชิงฟังก์ชัน การเขียนโปรแกรมส่วนต่อประสาน การเขียนโปรแกรมเชิงวัตถุ และการเขียนโปรแกรมเชิงลักษณะ
11. ขอบเขตซอฟต์แวร์คืออะไร?
ขอบเขตซอฟต์แวร์ออกแบบกิจกรรมทั้งหมดที่จำเป็นสำหรับการพัฒนาและส่งมอบผลิตภัณฑ์ซอฟต์แวร์ กล่าวถึงข้อกังวลต่อไปนี้:
- ซอฟต์แวร์จะทำอย่างไร?
- อะไรไม่ได้เป็นส่วนหนึ่งของโครงการ?
- เวลาและค่าใช้จ่ายโดยประมาณสำหรับการตกแต่งให้เสร็จอย่างเหมาะสมคือเท่าไร?
12. เครื่องมือของ CASE คืออะไร?
CASE เป็นรูปแบบย่อของ Computer Aided Software Engineering หมายถึงการใช้โปรแกรมแอปพลิเคชันอัตโนมัติเพื่อสนับสนุนและปรับปรุงกิจกรรม SDLC
13. ผู้จัดการโครงการซอฟต์แวร์ทำอะไร?
ผู้จัดการโครงการซอฟต์แวร์เกี่ยวข้องกับการจัดการกระบวนการพัฒนาซอฟต์แวร์ พวกเขามีหน้าที่รับผิดชอบในการวางแผนโครงการ การสื่อสาร และการติดตามความคืบหน้า พวกเขาจัดระเบียบทรัพยากร ตรวจสอบค่าใช้จ่ายและระยะเวลา ประเมินความเสี่ยง และส่งมอบผลิตภัณฑ์ซอฟต์แวร์ที่มีคุณภาพตามความต้องการของลูกค้า
14. คุณสามารถพูดถึงตัวอย่างเครื่องมือการจัดการโครงการได้หรือไม่?
การเลือกเครื่องมือการจัดการโครงการขึ้นอยู่กับลักษณะของโครงการซอฟต์แวร์ แผนภูมิแกนต์ ฮิสโตแกรมของทรัพยากร รายงานสถานะ และแผนภูมิ Pert เป็นตัวเลือกที่ใช้กันอย่างแพร่หลาย
15. คุณวัดการดำเนินโครงการอย่างไร?
ผู้จัดการโครงการซอฟต์แวร์ใช้รายงานสถานะ รายการตรวจสอบเหตุการณ์สำคัญ และแผ่นงานการตรวจสอบกิจกรรมเพื่อติดตามความคืบหน้าและให้แน่ใจว่าการพัฒนาเป็นไปตามเป้าหมาย นอกจากนี้ยังช่วยในการระบุแฟล็กสีแดงตั้งแต่เนิ่นๆ และทำการปรับเปลี่ยนในขณะที่กำลังดำเนินการอยู่
16. คุณจะหาขนาดของผลิตภัณฑ์ซอฟต์แวร์ได้อย่างไร?
การนับบรรทัดของ (i) รหัสที่จัดส่งและ (ii) จุดฟังก์ชันจะแสดงขนาดของผลิตภัณฑ์ซอฟต์แวร์
17. ระบุเทคนิคการประมาณซอฟต์แวร์ที่มีมาตรฐานมากที่สุด
การประมาณค่าซอฟต์แวร์ประกอบด้วยค่าประมาณของความพยายามที่จำเป็นในการพัฒนาและบำรุงรักษาผลิตภัณฑ์ซอฟต์แวร์
เทคนิคการสลายตัวเป็นไปตามแนวทาง 'แบ่งและพิชิต' โดยแบ่งโปรเจ็กต์ออกเป็นขนาด ฟังก์ชัน กิจกรรม ต้นทุน ฯลฯ
เทคนิคเชิงประจักษ์ใช้ข้อมูลจากโครงการก่อนหน้าเพื่อคาดเดาค่าประมาณและตั้งสมมติฐานเกี่ยวกับโครงการซอฟต์แวร์ปัจจุบัน
18. คุณสามารถใช้เครื่องมือใดในการวิเคราะห์และออกแบบซอฟต์แวร์ได้บ้าง
ขั้นตอนการวิเคราะห์และออกแบบซอฟต์แวร์จะแปลข้อกำหนดข้อกำหนดเป็นโค้ดจริง ต่อไปนี้คือเครื่องมือยอดนิยมบางส่วนที่ใช้ในกระบวนการ:
- แผนภาพการไหลของข้อมูล
- แผนภูมิโครงสร้าง
- แผนภาพเอาต์พุตกระบวนการอินพุตแบบลำดับชั้น
- พจนานุกรมข้อมูล
- ไดอะแกรมความสัมพันธ์ของนิติบุคคล
- ตารางการตัดสินใจ
19. การจัดการการกำหนดค่าซอฟต์แวร์เกี่ยวข้องกับอะไร?
การจัดการการกำหนดค่าประกอบด้วยการรักษาแท็บการเปลี่ยนแปลงและควบคุมการเปลี่ยนแปลง นำความสม่ำเสมอและความน่าเชื่อถือมาสู่ระบบซอฟต์แวร์โดยสร้างความมั่นใจว่าผลิตภัณฑ์ถูกสร้างขึ้นสอดคล้องกับกฎและข้อบังคับขององค์กร
20. คุณจะทราบความเป็นไปได้ของโครงการได้อย่างไร?
การศึกษาความเป็นไปได้เกี่ยวกับความอยู่รอดทางเศรษฐกิจ เทคนิค และการดำเนินงานเป็นสิ่งจำเป็นสำหรับการจำกัดทางเลือกให้แคบลงและตรวจสอบแนวคิดของโครงการ
- ความเป็นไปได้ทางเศรษฐกิจจะวัดค่าใช้จ่ายในการฝึกอบรม เครื่องมือเพิ่มเติม ฯลฯ เทียบกับผลประโยชน์ของโครงการ
- ความเป็นไปได้ทางเทคนิคครอบคลุมความเหมาะสมของเครื่องจักร ระบบปฏิบัติการ และเครื่องมือพัฒนาซอฟต์แวร์ที่มีให้สำหรับโครงการ
- ความเป็นไปได้ในการดำเนินงานจะประเมินว่าองค์กรจะปรับให้เข้ากับการเปลี่ยนแปลงที่โครงการต้องการภายในต้นทุนและข้อจำกัดอื่นๆ หรือไม่
21. การประกันคุณภาพและการควบคุมคุณภาพแตกต่างกันอย่างไร?
การประกันคุณภาพประกอบด้วยเจ้าหน้าที่ด้านเทคนิคที่ตรวจสอบการนำกระบวนการพัฒนาซอฟต์แวร์มาใช้อย่างเหมาะสม การควบคุมคุณภาพเกี่ยวข้องกับกิจกรรมการบำรุงรักษาที่รักษาคุณภาพของผลิตภัณฑ์ซอฟต์แวร์
22. อธิบายการทำให้เป็นโมดูลและการทำงานร่วมกัน
การทำให้เป็นโมดูลหมายถึงการแบ่งระบบซอฟต์แวร์ออกเป็นโมดูลที่ไม่ต่อเนื่องซึ่งสามารถทำงานได้อย่างอิสระ การทำงานร่วมกันคือการวัดความสัมพันธ์เชิงหน้าที่ระหว่างองค์ประกอบของโมดูล เป็นกาวอินทิกรัลที่นำองค์ประกอบทั้งหมดไปสู่งานเดียว
23. ตั้งชื่อจุดที่แตกต่างระหว่าง EXE และ DLL
EXE ย่อมาจากโปรแกรมปฏิบัติการ ในขณะที่ DLL เป็นไฟล์ที่สามารถโหลดและรันผ่านโปรแกรมได้
24. Stack และ Queue ต่างกันอย่างไร?
ทั้ง Stack และ Queue เป็นโครงสร้างข้อมูลหรือคอนเทนเนอร์ของอ็อบเจ็กต์ในวิศวกรรมซอฟต์แวร์ พวกเขาแตกต่างกันในเบื้องต้นในแง่ของหลักการแทรกและการนำออก
- สแต็คเข้าก่อนออกก่อน
- เข้าคิวก่อน ออกก่อน
25. แก้ปัญหานี้: มีถุงมือสองประเภทยี่สิบคู่ในห้องมืด จำนวนถุงมือขั้นต่ำที่คุณต้องทำเพื่อให้ได้คู่ที่ตรงกันคือเท่าไร?
หนึ่งอาจจบลงด้วยถุงมือประเภทเดียวแม้จะหยิบขึ้นมา 50% ของทั้งหมด เมื่อรับถุงเท้าเพิ่มอีก 1 ถุงเท้า คุณก็จะได้รับถุงมืออีกประเภทหนึ่งเป็นอย่างน้อย ดังนั้นจึงควรหยิบถุงมืออย่างน้อย 11 ชิ้นจากห้องมืดเพื่อให้ได้คู่ที่เข้าชุดกัน
ด้วยเหตุนี้ เราจึงได้ครอบคลุมคำถามและคำตอบในการสัมภาษณ์ทางเทคนิคยอดนิยม 25 ข้อที่จะช่วยให้คุณแสดงความสนใจในรายละเอียดและสร้างความประทับใจ
หากต้องการคำแนะนำเพิ่มเติม คุณสามารถดูโปรแกรมการรับรองสำหรับอุตสาหกรรมได้ การรับรอง PG ที่เชื่อมโยงกับงานของ upGrad ในสาขาวิศวกรรมซอฟต์แวร์ ได้รับการออกแบบสำหรับผู้หางานเป็นครั้งแรก คุณสามารถใช้โครงการภาคปฏิบัติสำหรับพอร์ตโฟลิโอของคุณ โต้ตอบกับผู้เชี่ยวชาญ และสร้างเครือข่ายเพียร์ที่แข็งแกร่ง เซสชั่นการเตรียมตำแหน่งและการสนับสนุนอาชีพเหมาะสำหรับนักศึกษาปีสุดท้ายและบุคคลในช่วงต้นของอาชีพที่มีประสบการณ์ 0-2 ปีในโดเมนซอฟต์แวร์
หัวข้อใดบ้างที่ครอบงำคำถามสัมภาษณ์ทางเทคนิค
ผู้จัดการที่จ้างงานใช้การสัมภาษณ์ทางเทคนิคเพื่อทดสอบความชัดเจนของแนวคิดและทักษะในการแก้ปัญหา สำหรับตำแหน่งต่างๆ เช่น วิศวกรซอฟต์แวร์และนักพัฒนาฟูลสแตก การสัมภาษณ์จะมีคำถามเกี่ยวกับกระบวนการพัฒนาซอฟต์แวร์ ข้อกำหนดของซอฟต์แวร์ เครื่องมือออกแบบ เครื่องมือของ CASE โมเดล SDLC พื้นฐานการจัดการโครงการ และอื่นๆ
ชุดทักษะที่จำเป็นที่สุดสำหรับงานวิศวกรรมซอฟต์แวร์คืออะไร
งานวิศวกรรมซอฟต์แวร์ต้องการผู้เชี่ยวชาญที่มีทักษะในการเขียนโปรแกรมคอมพิวเตอร์ การเขียนโค้ด การทดสอบ และการแก้จุดบกพร่อง นอกเหนือจากทักษะที่ยากเหล่านี้แล้ว นายจ้างยังต้องการผู้สมัครที่มีความสามารถในการแก้ปัญหา การสื่อสาร และการทำงานหลายอย่างที่เหนือกว่า ดังนั้น ในฐานะผู้สมัคร โปรไฟล์ของคุณควรพูดถึงความถนัดทางเทคนิคของคุณและแสดงความคิดเชิงวิพากษ์และความคิดสร้างสรรค์ของคุณในการพัฒนาโซลูชันที่มีประสิทธิภาพ
หลักสูตรออนไลน์ช่วยในการเตรียมตัวสัมภาษณ์ทางเทคนิคอย่างไร?
หลักสูตรออนไลน์เป็นหนทางที่ยอดเยี่ยมสำหรับการสร้างทักษะที่เกี่ยวข้องในสาขาเฉพาะทาง สิ่งเหล่านี้ช่วยให้คุณเรียนรู้ได้อย่างยืดหยุ่นและสอดคล้องกับข้อกำหนดของอุตสาหกรรม ตัวอย่างเช่น การรับรอง PG ของ upGrad ในสาขาวิศวกรรมซอฟต์แวร์เป็นโปรแกรมที่เชื่อมโยงกับงานที่เปิดโอกาสให้นักศึกษาได้เรียนรู้จากผู้เชี่ยวชาญ ดำเนินโครงการ สร้างเครือข่ายกับผู้ปฏิบัติงานคนอื่นๆ และรับคำแนะนำด้านอาชีพสำหรับการเข้าสู่ตลาดงานยุคใหม่