21 คำถามและคำตอบสัมภาษณ์ C ++ ที่อ่านมากที่สุด [สำหรับ Freshers]

เผยแพร่แล้ว: 2020-12-17

แม้กระทั่งทุกวันนี้ C++ ก็ได้รับความนิยมเช่นเดียวกับในยุค 80 ภาษาการเขียนโปรแกรมสำหรับวัตถุประสงค์ทั่วไป คอมไพล์ และหลากหลายกระบวนทัศน์ (เชิงวัตถุ ขั้นตอน และการทำงาน) นี้มีบทบาทสำคัญในอุตสาหกรรมไอที โดยเฉพาะอย่างยิ่งในการพัฒนาซอฟต์แวร์

นักพัฒนาทั่วโลกใช้ C++ เพื่อสร้างซอฟต์แวร์ระบบ ซอฟต์แวร์ฐานข้อมูล ซอฟต์แวร์ฝังตัว แอปพลิเคชันระดับองค์กร แอปพลิเคชันที่ใช้ GUI คอมไพเลอร์ การคำนวณและกราฟิกขั้นสูง ระบบปฏิบัติการ เบราว์เซอร์ เกม ระบบคลาวด์ ฯลฯ โดยธรรมชาติแล้ว C++ ยังคงมีความเกี่ยวข้องสูง ภาษาโปรแกรม

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

คำถามและคำตอบสัมภาษณ์ C++

  1. กำหนด "คลาส" และ "วัตถุ"

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

วัตถุเป็นตัวอย่างของการเรียน. เป็นเอนทิตีรันไทม์ที่สามารถเป็นตัวแทนของบุคคล สถานที่ หรือสิ่งของได้

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

  1. “ตัวระบุการเข้าถึงคืออะไร”

ตัวระบุการเข้าถึงกำหนดวิธีการเข้าถึงสมาชิกของคลาส (ฟังก์ชันและตัวแปร) นอกขอบเขตของคลาส C ++ มีตัวระบุการเข้าถึงสามประเภท

  • ส่วนตัว – ตัวระบุส่วนตัวหมายความว่าสมาชิกคลาสสามารถเข้าถึงได้ภายในคลาสเดียวกันกับที่พวกเขาประกาศเท่านั้น ในกรณีนี้ คลาสย่อยไม่สามารถเข้าถึงสมาชิกส่วนตัวของคลาสหลักได้
  • ป้องกัน – ตัวระบุที่ได้รับการป้องกันช่วยให้คลาสย่อยเข้าถึงสมาชิกข้อมูลที่ได้รับการป้องกันของคลาสพาเรนต์
  • สาธารณะ – สมาชิกคลาสที่ได้รับการประกาศว่าเป็น "สาธารณะ" สามารถเข้าถึงได้ผ่านโค้ด C++
  1. ตัวระบุคลาสหน่วยเก็บข้อมูลที่เปลี่ยนแปลงได้คืออะไร

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

  1. การห่อหุ้มคืออะไร?

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

  1. สิ่งที่เป็นนามธรรมคืออะไร?

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

  1. เนมสเปซคืออะไร?

เนมสเปซอำนวยความสะดวกในการแบ่งตรรกะของรหัส มันถูกใช้ในโปรแกรม C++ เพื่อป้องกัน/แก้ไขความขัดแย้งในการตั้งชื่อของตัวระบุโดยการกำหนดเนมสเปซที่แตกต่างกันให้กับพวกมัน เนมสเปซกำหนดขอบเขตที่มีการประกาศตัวระบุ (ตัวแปร คลาส และฟังก์ชัน) ดังนั้น จุดประสงค์หลักของการใช้เนมสเปซคือการขจัดความคลุมเครือจากโค้ด

  1. กำหนด "Polymorphism" ความหลากหลายใน C ++ มีกี่ประเภท?

ตามตัวอักษร ความหลากหลายหมายถึงการมีอยู่ของหลายรูปแบบ ใน C ++ ความหลากหลายเกิดขึ้นเมื่อมีมากกว่าหนึ่งฟังก์ชันภายใต้ชื่อเดียวกัน แต่มีฟังก์ชันที่หลากหลาย

Polymorphism เป็นสองประเภท:

  • ความหลากหลายแบบไดนามิกหรือที่เรียกว่า "การแทนที่" ใน C ++ ช่วยให้คุณกำหนดวิธีการทำงานที่ต้องดำเนินการในขณะใช้งานแทนเวลาคอมไพล์ การแทนที่ฟังก์ชันเป็นตัวอย่างที่ยอดเยี่ยมของพหุสัณฐานแบบไดนามิก ในการแทนที่ฟังก์ชัน คลาสย่อยมีเมธอดที่มีอยู่แล้วในคลาสพาเรนต์ ดังนั้นคลาสลูกจะแทนที่เมธอดของคลาสพาเรนต์ ในกรณีนี้ ทั้งคลาสพาเรนต์และคลาสย่อยมีฟังก์ชันเดียวกันโดยมีคำจำกัดความต่างกัน
  • ความหลากหลายแบบคงที่ถูกนำมาใช้ในขณะที่คอมไพล์โค้ด (ดังนั้นจึงเรียกอีกอย่างว่า วิธีการโอเวอร์โหลดเป็นตัวอย่างที่สมบูรณ์แบบของความหลากหลายแบบคงที่ การโอเวอร์โหลดเมธอดช่วยให้มีฟังก์ชันมากกว่าหนึ่งฟังก์ชันที่มีชื่อเหมือนกัน แต่มีฟังก์ชันต่างกัน
  1. อธิบายวัตถุประสงค์ของคีย์เวิร์ด “Volatile”

ฟังก์ชัน "ระเหย" ใช้เพื่อประกาศว่าตัวแปรใดตัวแปรหนึ่งมีความผันผวน สิ่งนี้ชี้นำให้คอมไพเลอร์เปลี่ยนตัวแปรภายนอก ดังนั้นจึงหลีกเลี่ยงการเพิ่มประสิทธิภาพคอมไพเลอร์ในการอ้างอิงตัวแปร

อ่าน: คำถามและคำตอบสัมภาษณ์ Java

  1. ฟังก์ชันอินไลน์คืออะไร?

ฟังก์ชันใดๆ ที่มีคีย์เวิร์ด "อินไลน์" เป็นคำนำหน้าก่อนนิยามฟังก์ชันจะเป็นฟังก์ชันอินไลน์ ส่วนใหญ่จะใช้เพื่อลดค่าใช้จ่ายในการเรียกใช้ฟังก์ชัน เมื่อมีการเรียกใช้ฟังก์ชันอินไลน์ โค้ดทั้งหมดจะถูกแทรกหรือแทนที่ที่จุดเฉพาะของการเรียกฟังก์ชันอินไลน์ เนื่องจากคอมไพเลอร์ปฏิบัติต่อฟังก์ชันอินไลน์เหมือนมาโคร พวกมันจึงทำงานเร็วกว่ามาก ดังนั้น การประกาศฟังก์ชันอินไลน์ขนาดเล็กจะช่วยเพิ่มประสิทธิภาพของโค้ด

ไวยากรณ์มาตรฐานของฟังก์ชันอินไลน์คือ:

ชื่อฟังก์ชันประเภทส่งคืนแบบอินไลน์ (พารามิเตอร์)

{

// รหัสฟังก์ชันอยู่ที่นี่

}

  1. ตัวชี้ "นี้" คืออะไร?

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

อ่าน : คำถามและคำตอบสัมภาษณ์ SQL

  1. C ++ มีชนิดข้อมูลดั้งเดิมของสตริงหรือไม่

C++ ไม่สามารถมีชนิดข้อมูลดั้งเดิมของสตริงได้ แต่มีคลาสจาก Standard Template Library (STL)

  1. หน้าที่ของตัวดำเนินการความละเอียดขอบเขตคืออะไร?

ตัวดำเนินการแก้ไขขอบเขตมีจุดประสงค์สองประการ:

  • ช่วยแก้ไขขอบเขตของตัวแปรส่วนกลาง
  • เมื่อมีการกำหนดฟังก์ชันภายนอกคลาส ตัวดำเนินการแก้ไขขอบเขตจะเชื่อมโยงฟังก์ชันนั้นกับคลาส
  1. ตัวทำลายคืออะไร?

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

  1. อธิบายความแตกต่างระหว่างคลาสคีย์เวิร์ดและโครงสร้างคีย์เวิร์ด

คลาสคีย์เวิร์ดแสดงถึงสมาชิกส่วนตัวโดยค่าเริ่มต้น ในขณะที่โครงสร้างคีย์เวิร์ดคล้ายกับสมาชิกสาธารณะโดยค่าเริ่มต้น

  1. กำหนดฟังก์ชัน Pure Virtual

ฟังก์ชันเสมือนล้วนๆ คือฟังก์ชันที่ไม่มีคำจำกัดความใดๆ คุณจะต้องประกาศฟังก์ชันเสมือนบริสุทธิ์โดยกำหนด 0 ในการประกาศ คลาสนามธรรมใน C ++ มีฟังก์ชันเสมือนบริสุทธิ์อย่างน้อยหนึ่งฟังก์ชัน

ไวยากรณ์มาตรฐานของฟังก์ชันเสมือนแท้คือ:

โมฆะเสมือน abc()=0; // ฟังก์ชั่นเสมือนบริสุทธิ์

ตรวจสอบ: 15 เคล็ดลับในการสัมภาษณ์เพื่อให้โดดเด่นในการสัมภาษณ์งานของคุณ

  1. จุดประสงค์ของเทมเพลตคลาสคืออะไร?

เทมเพลตคลาสใช้สำหรับสร้างกลุ่มคลาสและฟังก์ชัน ตัวอย่างเช่น คุณสามารถสร้างเทมเพลตของคลาสอาร์เรย์ที่จะช่วยให้คุณสร้างอาร์เรย์รวมถึงประเภทต่างๆ (int, float เป็นต้น) คุณยังสามารถสร้างเทมเพลตสำหรับฟังก์ชันได้อีกด้วย ดังนั้น หากมีฟังก์ชัน add() คุณสามารถสร้าง add() ได้หลายเวอร์ชัน

  1. “ข้อผิดพลาดล้น” หมายความว่าอย่างไร

ข้อผิดพลาดล้นเป็นข้อผิดพลาดทางคณิตศาสตร์ที่เกิดขึ้นเมื่อผลลัพธ์ของการคำนวณทางคณิตศาสตร์มากกว่าพื้นที่จริงที่จัดสรรโดยระบบ

  1. การลบและการลบ[ ] แตกต่างกันอย่างไร

ฟังก์ชันการลบช่วยเพิ่มพื้นที่หน่วยความจำเพียงหน่วยเดียวที่จัดสรรโดยใช้โอเปอเรเตอร์ "ใหม่" ในขณะที่การลบ [ ] จะทำให้อาร์เรย์ของหน่วยความจำที่จัดสรรได้รับการจัดสรรโดยโอเปอเรเตอร์[ ] ใหม่

  1. จุดประสงค์ของ vTable และ vptr ใน C ++ คืออะไร? คอมไพเลอร์ปฏิบัติต่อพวกเขาอย่างไร?

ใน C++ vTable จะมีพอยน์เตอร์ของฟังก์ชัน ในทางกลับกัน vptr เป็นตัวชี้ที่กำหนดให้กับ vTable ในขณะที่แต่ละคลาสมี vTable แต่ละอ็อบเจ็กต์มี vptr คอมไพเลอร์ C++ เพิ่มโค้ดเพิ่มเติมสองแห่งเพื่อใช้และบำรุงรักษา vTable และ vptr อย่างมีประสิทธิภาพ:

ในแต่ละคอนสตรัคเตอร์เพื่อตั้งค่า vptr ของวัตถุที่กำลังสร้างและชี้ไปที่ vTable ของคลาส

ในโค้ดที่มีการเรียกฟังก์ชัน polymorphic คอมไพเลอร์แทรกโค้ดในทุกตำแหน่งที่มีการประกาศการโทรแบบหลายมิติเพื่อค้นหา vptr โดยใช้ตัวชี้/การอ้างอิงคลาสฐาน เมื่อได้รับ vptr แล้ว คุณสามารถเข้าถึง vTable ของคลาสที่ได้รับ คุณสามารถใช้ vTable เพื่อเข้าถึงและเรียกใช้ฟังก์ชันคลาสที่ได้รับ show()

  1. ใน C ++ ตัวแปรอัตโนมัติถูกเก็บไว้ที่ไหน?

ตัวแปรโลคัลทั้งหมดเป็นตัวแปรอัตโนมัติโดยค่าเริ่มต้นและถูกเก็บไว้ในหน่วยความจำสแต็ก

  1. คุณจะส่งออกฟังก์ชันจาก DLL ได้อย่างไร

มีสองวิธีในการส่งออกฟังก์ชันจาก DLL:

  • คุณสามารถใช้ไลบรารีประเภท DLL
  • คุณสามารถอ้างถึงฟังก์ชันจากอินสแตนซ์ DLL

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

บทสรุป

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

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับการพัฒนาซอฟต์แวร์ฟูลสแตก โปรดดูโปรแกรม Executive PG ของ upGrad & IIIT-B ในการพัฒนาซอฟต์แวร์ฟูลสแตก ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง โครงการมากกว่า 9 โครงการ และ การมอบหมายงาน สถานะศิษย์เก่า IIIT-B โครงการหลักที่นำไปปฏิบัติจริง และความช่วยเหลือด้านงานกับบริษัทชั้นนำ

มาเป็นนักพัฒนาเต็มรูปแบบ

สมัครเลยตอนนี้สำหรับปริญญาโทด้านวิศวกรรมซอฟต์แวร์