21 คำถามและคำตอบสัมภาษณ์ C ++ ที่อ่านมากที่สุด [สำหรับ Freshers]
เผยแพร่แล้ว: 2020-12-17แม้กระทั่งทุกวันนี้ C++ ก็ได้รับความนิยมเช่นเดียวกับในยุค 80 ภาษาการเขียนโปรแกรมสำหรับวัตถุประสงค์ทั่วไป คอมไพล์ และหลากหลายกระบวนทัศน์ (เชิงวัตถุ ขั้นตอน และการทำงาน) นี้มีบทบาทสำคัญในอุตสาหกรรมไอที โดยเฉพาะอย่างยิ่งในการพัฒนาซอฟต์แวร์
นักพัฒนาทั่วโลกใช้ C++ เพื่อสร้างซอฟต์แวร์ระบบ ซอฟต์แวร์ฐานข้อมูล ซอฟต์แวร์ฝังตัว แอปพลิเคชันระดับองค์กร แอปพลิเคชันที่ใช้ GUI คอมไพเลอร์ การคำนวณและกราฟิกขั้นสูง ระบบปฏิบัติการ เบราว์เซอร์ เกม ระบบคลาวด์ ฯลฯ โดยธรรมชาติแล้ว C++ ยังคงมีความเกี่ยวข้องสูง ภาษาโปรแกรม
ในโพสต์นี้ เราได้สร้างรายการคำถามสัมภาษณ์ C++ จำนวน 21 ข้อที่คุณควรรู้หากคุณปรารถนาที่จะสร้างอาชีพในการพัฒนาซอฟต์แวร์ คำถามและคำตอบสัมภาษณ์ C ++ เหล่านี้จะช่วยคุณทำลายน้ำแข็งในเรื่องนี้!
คำถามและคำตอบสัมภาษณ์ C++
- กำหนด "คลาส" และ "วัตถุ"
ใน C++ คลาสคือชนิดข้อมูลที่กำหนดโดยผู้ใช้ซึ่งสะท้อนถึงเอนทิตี การดำเนินการ และคุณลักษณะต่างๆ คลาสประกอบด้วยสมาชิกข้อมูลพร้อมกับฟังก์ชันของพวกเขา การเข้าถึงข้อมูลและฟังก์ชันเหล่านี้ถูกกำหนดโดยตัวดัดแปลงสามตัว – ส่วนตัว สาธารณะ และการป้องกัน ในขณะที่คลาสกำหนดประเภทข้อมูล พวกเขาเพียงระบุโครงสร้างข้อมูลแทนที่จะกำหนดข้อมูล
วัตถุเป็นตัวอย่างของการเรียน. เป็นเอนทิตีรันไทม์ที่สามารถเป็นตัวแทนของบุคคล สถานที่ หรือสิ่งของได้
ออบเจ็กต์ทำงานกับสมาชิกข้อมูลและฟังก์ชันสมาชิก ประกอบด้วยฟิลด์ เมธอด และคอนสตรัคเตอร์ ตัวอย่างเช่น ในขณะที่รถเป็นวัตถุ คุณลักษณะต่างๆ ของรถ เช่น ล้อ การออกแบบ สี โครงยึด ฯลฯ เป็นตัวอย่างของรถระดับเดียวกัน

- “ตัวระบุการเข้าถึงคืออะไร”
ตัวระบุการเข้าถึงกำหนดวิธีการเข้าถึงสมาชิกของคลาส (ฟังก์ชันและตัวแปร) นอกขอบเขตของคลาส C ++ มีตัวระบุการเข้าถึงสามประเภท
- ส่วนตัว – ตัวระบุส่วนตัวหมายความว่าสมาชิกคลาสสามารถเข้าถึงได้ภายในคลาสเดียวกันกับที่พวกเขาประกาศเท่านั้น ในกรณีนี้ คลาสย่อยไม่สามารถเข้าถึงสมาชิกส่วนตัวของคลาสหลักได้
- ป้องกัน – ตัวระบุที่ได้รับการป้องกันช่วยให้คลาสย่อยเข้าถึงสมาชิกข้อมูลที่ได้รับการป้องกันของคลาสพาเรนต์
- สาธารณะ – สมาชิกคลาสที่ได้รับการประกาศว่าเป็น "สาธารณะ" สามารถเข้าถึงได้ผ่านโค้ด C++
- ตัวระบุคลาสหน่วยเก็บข้อมูลที่เปลี่ยนแปลงได้คืออะไร
ตัวระบุคลาสหน่วยเก็บข้อมูลที่เปลี่ยนแปลงได้จะใช้เฉพาะกับตัวแปรสมาชิกของคลาสที่ไม่คงที่และไม่คงที่สำหรับการเปลี่ยนแปลงสมาชิกของอ็อบเจ็กต์คลาสคงที่โดยการประกาศ
- การห่อหุ้มคืออะไร?
การห่อหุ้มหมายถึงการห่อหรือผูกข้อมูลสมาชิกและหน้าที่ของสมาชิกภายในคลาส กระบวนการนี้ทำขึ้นเพื่อเหตุผลด้านความปลอดภัย เนื่องจากจำกัดการเข้าถึงจากวิธีการภายนอกใดๆ ถ้าสมาชิกข้อมูลเป็นแบบส่วนตัว เฉพาะฟังก์ชันสมาชิกเท่านั้นที่สามารถเข้าถึงข้อมูลได้
- สิ่งที่เป็นนามธรรมคืออะไร?
สิ่งที่เป็นนามธรรมคือกระบวนการซ่อนการใช้งานภายในและแสดงเฉพาะรายละเอียดที่จำเป็นเท่านั้น การเข้าถึงข้อมูลสมาชิกและฟังก์ชันขึ้นอยู่กับตัวดัดแปลงที่ใช้ ดังนั้น หากใช้คีย์เวิร์ดสาธารณะเพื่อกำหนดสมาชิก ทุกคนสามารถเข้าถึงได้ อย่างไรก็ตาม หากคีย์เวิร์ดส่วนตัวกำหนดสมาชิก คุณจะไม่สามารถเข้าถึงพวกเขาผ่านวิธีการภายนอกได้
- เนมสเปซคืออะไร?
เนมสเปซอำนวยความสะดวกในการแบ่งตรรกะของรหัส มันถูกใช้ในโปรแกรม C++ เพื่อป้องกัน/แก้ไขความขัดแย้งในการตั้งชื่อของตัวระบุโดยการกำหนดเนมสเปซที่แตกต่างกันให้กับพวกมัน เนมสเปซกำหนดขอบเขตที่มีการประกาศตัวระบุ (ตัวแปร คลาส และฟังก์ชัน) ดังนั้น จุดประสงค์หลักของการใช้เนมสเปซคือการขจัดความคลุมเครือจากโค้ด
- กำหนด "Polymorphism" ความหลากหลายใน C ++ มีกี่ประเภท?
ตามตัวอักษร ความหลากหลายหมายถึงการมีอยู่ของหลายรูปแบบ ใน C ++ ความหลากหลายเกิดขึ้นเมื่อมีมากกว่าหนึ่งฟังก์ชันภายใต้ชื่อเดียวกัน แต่มีฟังก์ชันที่หลากหลาย
Polymorphism เป็นสองประเภท:
- ความหลากหลายแบบไดนามิกหรือที่เรียกว่า "การแทนที่" ใน C ++ ช่วยให้คุณกำหนดวิธีการทำงานที่ต้องดำเนินการในขณะใช้งานแทนเวลาคอมไพล์ การแทนที่ฟังก์ชันเป็นตัวอย่างที่ยอดเยี่ยมของพหุสัณฐานแบบไดนามิก ในการแทนที่ฟังก์ชัน คลาสย่อยมีเมธอดที่มีอยู่แล้วในคลาสพาเรนต์ ดังนั้นคลาสลูกจะแทนที่เมธอดของคลาสพาเรนต์ ในกรณีนี้ ทั้งคลาสพาเรนต์และคลาสย่อยมีฟังก์ชันเดียวกันโดยมีคำจำกัดความต่างกัน
- ความหลากหลายแบบคงที่ถูกนำมาใช้ในขณะที่คอมไพล์โค้ด (ดังนั้นจึงเรียกอีกอย่างว่า วิธีการโอเวอร์โหลดเป็นตัวอย่างที่สมบูรณ์แบบของความหลากหลายแบบคงที่ การโอเวอร์โหลดเมธอดช่วยให้มีฟังก์ชันมากกว่าหนึ่งฟังก์ชันที่มีชื่อเหมือนกัน แต่มีฟังก์ชันต่างกัน
- อธิบายวัตถุประสงค์ของคีย์เวิร์ด “Volatile”
ฟังก์ชัน "ระเหย" ใช้เพื่อประกาศว่าตัวแปรใดตัวแปรหนึ่งมีความผันผวน สิ่งนี้ชี้นำให้คอมไพเลอร์เปลี่ยนตัวแปรภายนอก ดังนั้นจึงหลีกเลี่ยงการเพิ่มประสิทธิภาพคอมไพเลอร์ในการอ้างอิงตัวแปร
อ่าน: คำถามและคำตอบสัมภาษณ์ Java
- ฟังก์ชันอินไลน์คืออะไร?
ฟังก์ชันใดๆ ที่มีคีย์เวิร์ด "อินไลน์" เป็นคำนำหน้าก่อนนิยามฟังก์ชันจะเป็นฟังก์ชันอินไลน์ ส่วนใหญ่จะใช้เพื่อลดค่าใช้จ่ายในการเรียกใช้ฟังก์ชัน เมื่อมีการเรียกใช้ฟังก์ชันอินไลน์ โค้ดทั้งหมดจะถูกแทรกหรือแทนที่ที่จุดเฉพาะของการเรียกฟังก์ชันอินไลน์ เนื่องจากคอมไพเลอร์ปฏิบัติต่อฟังก์ชันอินไลน์เหมือนมาโคร พวกมันจึงทำงานเร็วกว่ามาก ดังนั้น การประกาศฟังก์ชันอินไลน์ขนาดเล็กจะช่วยเพิ่มประสิทธิภาพของโค้ด

ไวยากรณ์มาตรฐานของฟังก์ชันอินไลน์คือ:
ชื่อฟังก์ชันประเภทส่งคืนแบบอินไลน์ (พารามิเตอร์)
{
// รหัสฟังก์ชันอยู่ที่นี่
}
- ตัวชี้ "นี้" คืออะไร?
ใน C ++ ตัวชี้ "นี้" คือตัวชี้คงที่ที่มีที่อยู่หน่วยความจำของวัตถุปัจจุบัน จะถูกส่งผ่านเป็นอาร์กิวเมนต์ที่ซ่อนอยู่ในการเรียกฟังก์ชันสมาชิกที่ไม่คงที่ทั้งหมด นอกจากนี้ ตัวชี้นี้ยังมีตัวแปรโลคัลอยู่ภายในเนื้อหาของฟังก์ชันที่ไม่คงที่ทั้งหมด
อ่าน : คำถามและคำตอบสัมภาษณ์ SQL
- C ++ มีชนิดข้อมูลดั้งเดิมของสตริงหรือไม่
C++ ไม่สามารถมีชนิดข้อมูลดั้งเดิมของสตริงได้ แต่มีคลาสจาก Standard Template Library (STL)
- หน้าที่ของตัวดำเนินการความละเอียดขอบเขตคืออะไร?
ตัวดำเนินการแก้ไขขอบเขตมีจุดประสงค์สองประการ:
- ช่วยแก้ไขขอบเขตของตัวแปรส่วนกลาง
- เมื่อมีการกำหนดฟังก์ชันภายนอกคลาส ตัวดำเนินการแก้ไขขอบเขตจะเชื่อมโยงฟังก์ชันนั้นกับคลาส
- ตัวทำลายคืออะไร?
ฟังก์ชันสมาชิกของคลาสเรียกว่า destructor ชื่อเหมือนกับชื่อคลาส แต่มีสัญลักษณ์ตัวหนอน (~) เป็นคำนำหน้า เมื่อใดก็ตามที่วัตถุสูญเสียขอบเขต ตัวทำลายจะถูกดำเนินการโดยอัตโนมัติ
- อธิบายความแตกต่างระหว่างคลาสคีย์เวิร์ดและโครงสร้างคีย์เวิร์ด
คลาสคีย์เวิร์ดแสดงถึงสมาชิกส่วนตัวโดยค่าเริ่มต้น ในขณะที่โครงสร้างคีย์เวิร์ดคล้ายกับสมาชิกสาธารณะโดยค่าเริ่มต้น
- กำหนดฟังก์ชัน Pure Virtual
ฟังก์ชันเสมือนล้วนๆ คือฟังก์ชันที่ไม่มีคำจำกัดความใดๆ คุณจะต้องประกาศฟังก์ชันเสมือนบริสุทธิ์โดยกำหนด 0 ในการประกาศ คลาสนามธรรมใน C ++ มีฟังก์ชันเสมือนบริสุทธิ์อย่างน้อยหนึ่งฟังก์ชัน
ไวยากรณ์มาตรฐานของฟังก์ชันเสมือนแท้คือ:
โมฆะเสมือน abc()=0; // ฟังก์ชั่นเสมือนบริสุทธิ์
ตรวจสอบ: 15 เคล็ดลับในการสัมภาษณ์เพื่อให้โดดเด่นในการสัมภาษณ์งานของคุณ
- จุดประสงค์ของเทมเพลตคลาสคืออะไร?
เทมเพลตคลาสใช้สำหรับสร้างกลุ่มคลาสและฟังก์ชัน ตัวอย่างเช่น คุณสามารถสร้างเทมเพลตของคลาสอาร์เรย์ที่จะช่วยให้คุณสร้างอาร์เรย์รวมถึงประเภทต่างๆ (int, float เป็นต้น) คุณยังสามารถสร้างเทมเพลตสำหรับฟังก์ชันได้อีกด้วย ดังนั้น หากมีฟังก์ชัน add() คุณสามารถสร้าง add() ได้หลายเวอร์ชัน
- “ข้อผิดพลาดล้น” หมายความว่าอย่างไร
ข้อผิดพลาดล้นเป็นข้อผิดพลาดทางคณิตศาสตร์ที่เกิดขึ้นเมื่อผลลัพธ์ของการคำนวณทางคณิตศาสตร์มากกว่าพื้นที่จริงที่จัดสรรโดยระบบ
- การลบและการลบ[ ] แตกต่างกันอย่างไร
ฟังก์ชันการลบช่วยเพิ่มพื้นที่หน่วยความจำเพียงหน่วยเดียวที่จัดสรรโดยใช้โอเปอเรเตอร์ "ใหม่" ในขณะที่การลบ [ ] จะทำให้อาร์เรย์ของหน่วยความจำที่จัดสรรได้รับการจัดสรรโดยโอเปอเรเตอร์[ ] ใหม่
- จุดประสงค์ของ vTable และ vptr ใน C ++ คืออะไร? คอมไพเลอร์ปฏิบัติต่อพวกเขาอย่างไร?
ใน C++ vTable จะมีพอยน์เตอร์ของฟังก์ชัน ในทางกลับกัน vptr เป็นตัวชี้ที่กำหนดให้กับ vTable ในขณะที่แต่ละคลาสมี vTable แต่ละอ็อบเจ็กต์มี vptr คอมไพเลอร์ C++ เพิ่มโค้ดเพิ่มเติมสองแห่งเพื่อใช้และบำรุงรักษา vTable และ vptr อย่างมีประสิทธิภาพ:
ในแต่ละคอนสตรัคเตอร์เพื่อตั้งค่า vptr ของวัตถุที่กำลังสร้างและชี้ไปที่ vTable ของคลาส
ในโค้ดที่มีการเรียกฟังก์ชัน polymorphic คอมไพเลอร์แทรกโค้ดในทุกตำแหน่งที่มีการประกาศการโทรแบบหลายมิติเพื่อค้นหา vptr โดยใช้ตัวชี้/การอ้างอิงคลาสฐาน เมื่อได้รับ vptr แล้ว คุณสามารถเข้าถึง vTable ของคลาสที่ได้รับ คุณสามารถใช้ vTable เพื่อเข้าถึงและเรียกใช้ฟังก์ชันคลาสที่ได้รับ show()

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

