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

- ชนิดข้อมูลพื้นฐาน
- ประเภทข้อมูลที่ได้รับ
- ระบุประเภทข้อมูล
- ประเภทข้อมูลเป็นโมฆะ
- อธิบาย “ตัวแปรตัวชี้ห้อย” ในภาษาซี
ในการเขียนโปรแกรม C ตัวชี้จะระบุตำแหน่งหน่วยความจำหรือที่อยู่ของตัวแปรที่มีอยู่ อย่างไรก็ตาม หากตัวแปรนั้นถูกลบและตัวชี้นำไปยังตำแหน่งหน่วยความจำเดียวกัน จะเรียกว่าตัวแปร Dangling Pointer
- “ตัวชี้บนตัวชี้คืออะไร”
“ตัวชี้บนตัวชี้” หมายถึงตัวแปรตัวชี้ที่เก็บที่อยู่ของตัวแปรตัวชี้อื่น โดยพื้นฐานแล้ว ตัวชี้จะยกเลิกการอ้างอิงสองครั้งเพื่อระบุข้อมูลที่มีอยู่ในตัวแปรตัวชี้ที่กำหนด
- กำหนด "อาร์เรย์"
อาร์เรย์คือโครงสร้างข้อมูลที่มีองค์ประกอบหลายรายการของประเภทข้อมูลเดียวกันในลักษณะที่เป็นระเบียบ อาร์เรย์มักมีสามประเภท: หนึ่งมิติ สองมิติ และสามมิติ
- ตัวแปรคงที่คืออะไร? เหตุใดจึงใช้ตัวแปรสแตติกใน C
ตัวแปรสแตติกคือตัวแปรที่ประกาศโดยคีย์เวิร์ด "สแตติก" ตัวแปรสแตติกจะคงค่าไว้ระหว่างการเรียกใช้ฟังก์ชันหลายรายการ
ตัวแปรสแตติกถูกใช้เป็นค่าทั่วไปที่แบ่งใช้โดยเมธอดทั้งหมด และเริ่มต้นเพียงครั้งเดียวในฮีปหน่วยความจำเพื่อลดการใช้หน่วยความจำ แม้ว่าตัวแปรสแตติกจะเริ่มต้นเป็นศูนย์ แต่หากคุณอัปเดตค่าของตัวแปร ค่าที่อัปเดตจะได้รับการกำหนด
- กำหนด "ขอบเขต" ของตัวแปร
ขอบเขตของตัวแปรอ้างอิงถึงส่วนของรหัส (ฟังก์ชัน) ที่ประกาศตัวแปร ในภาษาการเขียนโปรแกรม C ตัวระบุทั้งหมดมีขอบเขตแบบสแตติกหรือแบบศัพท์
- การจัดสรรหน่วยความจำแบบไดนามิกคืออะไร?
การจัดสรรหน่วยความจำแบบไดนามิกเป็นขั้นตอนของการจัดสรรหน่วยความจำให้กับโปรแกรม C และตัวแปรระหว่างรันไทม์ ในขณะที่ malloc(), calloc() และ realloc() จัดสรรหน่วยความจำ ฟังก์ชัน free() จะเพิ่มพื้นที่หน่วยความจำที่ใช้
อ่าน : คำถามและคำตอบสัมภาษณ์ SQL
- อธิบายความแตกต่างระหว่างฟังก์ชัน calloc() และ malloc()
ใน C ทั้ง calloc() และ malloc() เป็นฟังก์ชันการจัดสรรหน่วยความจำที่จัดสรรหน่วยความจำจากพื้นที่ฮีป (หน่วยความจำไดนามิก) ความแตกต่างหลักระหว่างสองฟังก์ชันการจัดสรรหน่วยความจำคือ calloc() โหลดตำแหน่งหน่วยความจำที่กำหนดทั้งหมดด้วยค่า 0 ในขณะที่ malloc() ไม่โหลด
- อธิบาย “การจัดสรรหน่วยความจำแบบคงที่”
ไม่เหมือนกับ Dynamic Memory Allocation ที่จัดสรรหน่วยความจำในรันไทม์ Static Memory Allocation จะจัดสรรหน่วยความจำในระหว่างการคอมไพล์ Static Memory Allocation ไม่อนุญาตให้คุณเพิ่มการจัดสรรหน่วยความจำในขณะที่โปรแกรม C กำลังดำเนินการอยู่ คุณสามารถใช้หน่วยความจำสแตติกได้โดยใช้สแต็ก/ฮีป และจัดสรรหน่วยความจำโดยใช้คีย์เวิร์ด "สแตติก" โดยทั่วไป Static Memory Allocation ต้องการพื้นที่หน่วยความจำในการจัดเก็บตัวแปรมากกว่า Dynamic Memory Allocation
- ตั้งชื่อ C Token บ้าง?
โทเค็นเป็นตัวระบุ โดยปกติแล้วจะเป็นหน่วยที่เล็กที่สุดในโปรแกรม C ค่าคงที่ สตริง คีย์เวิร์ด ตัวดำเนินการ ตัวระบุ และอักขระพิเศษเป็นโทเค็น C สองสามตัวที่ใช้ในการเขียนโปรแกรมภาษา C
- โค้ด C จะคอมไพล์หรือรันโดยไม่มีฟังก์ชัน main() หรือไม่?
ในกรณีที่ไม่มีฟังก์ชัน main() โปรแกรม C จะคอมไพล์แทนการรัน เนื่องจากฟังก์ชัน main() จำเป็นในการรันโปรแกรม C ใดๆ
- กำหนด "โครงสร้างที่ซ้อนกัน"
โครงสร้างที่ซ้อนกันถูกสร้างขึ้นเมื่อองค์ประกอบหรือสมาชิกข้อมูลของฟังก์ชันมีสมาชิกข้อมูลของโครงสร้างอื่น

- แยกแยะระหว่างพารามิเตอร์จริงและพารามิเตอร์ทางการ
พารามิเตอร์จริงจะถูกส่งจากฟังก์ชันหลักไปยังฟังก์ชันที่แบ่งย่อย และพารามิเตอร์ที่ประกาศเป็นฟังก์ชันแบ่งย่อยจะเรียกว่าพารามิเตอร์ทางการ
- คำสั่งพรีโปรเซสเซอร์คืออะไร?
Preprocessor Directive เป็นฟังก์ชันที่กำหนดไว้ล่วงหน้าในตัวซึ่งทำหน้าที่เป็นคำสั่งให้คอมไพเลอร์ทำงานเฉพาะก่อนเริ่มกระบวนการคอมไพล์ ดังนั้น Preprocessor Directive จะถูกดำเนินการก่อนโปรแกรม C จะถูกดำเนินการเสมอ
- กำหนด "อาร์กิวเมนต์บรรทัดคำสั่ง"
อาร์กิวเมนต์ที่ส่งผ่านไปยังฟังก์ชัน main() ระหว่างการทำงานของโปรแกรม C เรียกว่า อาร์กิวเมนต์บรรทัดคำสั่ง อาร์กิวเมนต์แรกแสดงถึงจำนวนอาร์กิวเมนต์และอัปเดตโดยอัตโนมัติโดยระบบปฏิบัติการ อาร์กิวเมนต์ที่สอง (อาร์เรย์ของพอยน์เตอร์อักขระ) จะมีสตริงเป็นพารามิเตอร์เสมอ
- คุณจะกำหนดพารามิเตอร์ให้กับฟังก์ชันได้อย่างไร?
มีสองวิธีในการกำหนดค่าพารามิเตอร์ให้กับฟังก์ชัน:
- การเรียกตามค่า – วิธีการนี้ถูกเลือกก็ต่อเมื่อคุณไม่ต้องการแก้ไขพารามิเตอร์จริงด้วยพารามิเตอร์ที่เป็นทางการ ดังนั้น คุณจะส่งเฉพาะสำเนาของค่าเป็นพารามิเตอร์ไปยังฟังก์ชันเท่านั้น
- เรียกโดยการอ้างอิง – ในวิธีนี้ คุณจะส่งที่อยู่ของพารามิเตอร์จริงเพื่อแก้ไขโดยใช้พารามิเตอร์ที่เป็นทางการ
ตรวจสอบ: คำถามสัมภาษณ์นักพัฒนาสแต็กแบบเต็ม
- “ยูเนี่ยน” ใน C คืออะไร?
ใน C ยูเนี่ยนเป็นชนิดข้อมูลที่กำหนดโดยผู้ใช้ซึ่งสามารถจัดเก็บข้อมูลได้หลายประเภทในหน่วยเดียว มีเฉพาะหน่วยความจำของสมาชิกที่ใหญ่ที่สุดแทนที่จะเป็นหน่วยความจำทั้งหมดของสมาชิกทั้งหมด เนื่องจากสหภาพจัดสรรพื้นที่ที่ใช้ร่วมกันสำหรับสมาชิกทุกคนในสหภาพ คุณจึงสามารถเข้าถึงตัวแปรได้ครั้งละหนึ่งตัวแปรในสหภาพเดียว
- อธิบาย “การเรียกซ้ำ”
การเรียกซ้ำคือเมื่อฟังก์ชันเรียกตัวเอง และฟังก์ชันที่เรียกตัวเองนั้นเรียกว่าฟังก์ชันแบบเรียกซ้ำ ฟังก์ชันแบบเรียกซ้ำเกิดขึ้นในสองขั้นตอน:
- เฟสที่คดเคี้ยว – เมื่อฟังก์ชันเรียกซ้ำเรียกตัวเองและตรงตามเงื่อนไขที่ต้องการ เฟสของขดลวดจะสิ้นสุดลง
- ระยะคลี่คลาย – เมื่อถึงระยะการม้วนตัว ระยะการคลายตัวจะเริ่มขึ้นโดยคืนการควบคุมกลับเป็นการโทรเดิม
- จะประกาศฟังก์ชั่นใน C ได้อย่างไร?
คุณสามารถประกาศฟังก์ชันในภาษา C ได้ดังนี้:
return_type function_name(รายการพารามิเตอร์ที่เป็นทางการ)
{
Function_Body;
}
- ฟังก์ชัน sprintf() ทำหน้าที่อะไร
ฟังก์ชัน sprintf() ใช้สำหรับพิมพ์สตริง มันดึงจำนวนอักขระทั้งหมดในสตริง ฟังก์ชันนี้ถ่ายโอนข้อมูลไปยังบัฟเฟอร์ ดังนั้นจึงไม่พิมพ์เอาต์พุตบนหน้าจอ ไวยากรณ์ของฟังก์ชัน sprintf() คือ:
int sprintf ( ถ่าน * str, รูปแบบถ่าน const *, … );
- แยกแยะระหว่างฟังก์ชัน getch() และ getche()?
ในโปรแกรม C ฟังก์ชัน getch() จะอ่านอักขระตัวเดียวจากคีย์เวิร์ด เนื่องจากใช้บัฟเฟอร์ใด ๆ จึงไม่แสดงข้อมูลที่คุณป้อนบนหน้าจอ ในทางตรงกันข้าม ในขณะที่ฟังก์ชัน getche() จะอ่านอักขระตัวเดียวจากคีย์เวิร์ด แต่จะแสดงข้อมูลบนหน้าจอ
- “Rvalue” และ “Ivalue” คืออะไร?
Rvalue คือนิพจน์ที่อยู่ทางด้านขวาของตัวดำเนินการกำหนด ถูกกำหนดให้กับ Ivalue ที่อยู่บนตัวดำเนินการมอบหมาย lvalue ต้องอ้างอิงถึงตัวแปรเท่านั้น ไม่ใช่ค่าคงที่
- ตั้งชื่อตัวระบุคลาสหน่วยเก็บข้อมูลต่างๆ ใน C
ใน C มีตัวระบุหน่วยเก็บข้อมูลสี่ตัว:

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