25 คำถามและคำตอบสัมภาษณ์ C ที่พบบ่อยที่สุด [สำหรับนักศึกษาใหม่]

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

C เป็นภาษาการเขียนโปรแกรมเอนกประสงค์ที่มีประสิทธิภาพซึ่งสนับสนุนกระบวนทัศน์ขั้นตอนความจำเป็นและมีโครงสร้าง ใช้สำหรับการพัฒนาระบบปฏิบัติการ ฐานข้อมูล และซอฟต์แวร์แอปพลิเคชันสำหรับสถาปัตยกรรมคอมพิวเตอร์ที่หลากหลาย (PLC, ระบบฝังตัว ฯลฯ) C เป็นภาษาที่เป็นมิตรกับผู้เริ่มต้นใช้งานที่ยอดเยี่ยมพร้อมช่วงการเรียนรู้ที่ง่าย

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

ในบล็อกนี้ เราจะแนะนำคุณเกี่ยวกับคำถามสัมภาษณ์ภาษา C ที่พบบ่อยที่สุด โดยปกติ การสัมภาษณ์งานจะเริ่มโดยการทดสอบความรู้พื้นฐานเกี่ยวกับวิชานั้นๆ (ในกรณีนี้คือ ภาษาซี) และค่อยๆ ย้ายไปสำรวจทักษะที่ใช้งานได้จริงในโดเมน

ดังนั้น เพื่อไม่ให้เป็นการเสียเวลา มาดู 25 คำถามสัมภาษณ์ภาษา C ที่พบบ่อยที่สุดกันเถอะ!

C คำถามและคำตอบในการสัมภาษณ์

  1. คุณสมบัติหลักของ C คืออะไร?

ภาษาการเขียนโปรแกรม C คือ:

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

C มีประเภทข้อมูลสี่ประเภท:

  • ชนิดข้อมูลพื้นฐาน
  • ประเภทข้อมูลที่ได้รับ
  • ระบุประเภทข้อมูล
  • ประเภทข้อมูลเป็นโมฆะ
  1. อธิบาย “ตัวแปรตัวชี้ห้อย” ในภาษาซี

ในการเขียนโปรแกรม C ตัวชี้จะระบุตำแหน่งหน่วยความจำหรือที่อยู่ของตัวแปรที่มีอยู่ อย่างไรก็ตาม หากตัวแปรนั้นถูกลบและตัวชี้นำไปยังตำแหน่งหน่วยความจำเดียวกัน จะเรียกว่าตัวแปร Dangling Pointer

  1. “ตัวชี้บนตัวชี้คืออะไร”

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

  1. กำหนด "อาร์เรย์"

อาร์เรย์คือโครงสร้างข้อมูลที่มีองค์ประกอบหลายรายการของประเภทข้อมูลเดียวกันในลักษณะที่เป็นระเบียบ อาร์เรย์มักมีสามประเภท: หนึ่งมิติ สองมิติ และสามมิติ

  1. ตัวแปรคงที่คืออะไร? เหตุใดจึงใช้ตัวแปรสแตติกใน C

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

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

  1. กำหนด "ขอบเขต" ของตัวแปร

ขอบเขตของตัวแปรอ้างอิงถึงส่วนของรหัส (ฟังก์ชัน) ที่ประกาศตัวแปร ในภาษาการเขียนโปรแกรม C ตัวระบุทั้งหมดมีขอบเขตแบบสแตติกหรือแบบศัพท์

  1. การจัดสรรหน่วยความจำแบบไดนามิกคืออะไร?

การจัดสรรหน่วยความจำแบบไดนามิกเป็นขั้นตอนของการจัดสรรหน่วยความจำให้กับโปรแกรม C และตัวแปรระหว่างรันไทม์ ในขณะที่ malloc(), calloc() และ realloc() จัดสรรหน่วยความจำ ฟังก์ชัน free() จะเพิ่มพื้นที่หน่วยความจำที่ใช้

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

  1. อธิบายความแตกต่างระหว่างฟังก์ชัน calloc() และ malloc()

ใน C ทั้ง calloc() และ malloc() เป็นฟังก์ชันการจัดสรรหน่วยความจำที่จัดสรรหน่วยความจำจากพื้นที่ฮีป (หน่วยความจำไดนามิก) ความแตกต่างหลักระหว่างสองฟังก์ชันการจัดสรรหน่วยความจำคือ calloc() โหลดตำแหน่งหน่วยความจำที่กำหนดทั้งหมดด้วยค่า 0 ในขณะที่ malloc() ไม่โหลด

  1. อธิบาย “การจัดสรรหน่วยความจำแบบคงที่”

ไม่เหมือนกับ Dynamic Memory Allocation ที่จัดสรรหน่วยความจำในรันไทม์ Static Memory Allocation จะจัดสรรหน่วยความจำในระหว่างการคอมไพล์ Static Memory Allocation ไม่อนุญาตให้คุณเพิ่มการจัดสรรหน่วยความจำในขณะที่โปรแกรม C กำลังดำเนินการอยู่ คุณสามารถใช้หน่วยความจำสแตติกได้โดยใช้สแต็ก/ฮีป และจัดสรรหน่วยความจำโดยใช้คีย์เวิร์ด "สแตติก" โดยทั่วไป Static Memory Allocation ต้องการพื้นที่หน่วยความจำในการจัดเก็บตัวแปรมากกว่า Dynamic Memory Allocation

  1. ตั้งชื่อ C Token บ้าง?

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

  1. โค้ด C จะคอมไพล์หรือรันโดยไม่มีฟังก์ชัน main() หรือไม่?

ในกรณีที่ไม่มีฟังก์ชัน main() โปรแกรม C จะคอมไพล์แทนการรัน เนื่องจากฟังก์ชัน main() จำเป็นในการรันโปรแกรม C ใดๆ

  1. กำหนด "โครงสร้างที่ซ้อนกัน"

โครงสร้างที่ซ้อนกันถูกสร้างขึ้นเมื่อองค์ประกอบหรือสมาชิกข้อมูลของฟังก์ชันมีสมาชิกข้อมูลของโครงสร้างอื่น

  1. แยกแยะระหว่างพารามิเตอร์จริงและพารามิเตอร์ทางการ

พารามิเตอร์จริงจะถูกส่งจากฟังก์ชันหลักไปยังฟังก์ชันที่แบ่งย่อย และพารามิเตอร์ที่ประกาศเป็นฟังก์ชันแบ่งย่อยจะเรียกว่าพารามิเตอร์ทางการ

  1. คำสั่งพรีโปรเซสเซอร์คืออะไร?

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

  1. กำหนด "อาร์กิวเมนต์บรรทัดคำสั่ง"

อาร์กิวเมนต์ที่ส่งผ่านไปยังฟังก์ชัน main() ระหว่างการทำงานของโปรแกรม C เรียกว่า อาร์กิวเมนต์บรรทัดคำสั่ง อาร์กิวเมนต์แรกแสดงถึงจำนวนอาร์กิวเมนต์และอัปเดตโดยอัตโนมัติโดยระบบปฏิบัติการ อาร์กิวเมนต์ที่สอง (อาร์เรย์ของพอยน์เตอร์อักขระ) จะมีสตริงเป็นพารามิเตอร์เสมอ

  1. คุณจะกำหนดพารามิเตอร์ให้กับฟังก์ชันได้อย่างไร?

มีสองวิธีในการกำหนดค่าพารามิเตอร์ให้กับฟังก์ชัน:

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

ตรวจสอบ: คำถามสัมภาษณ์นักพัฒนาสแต็กแบบเต็ม

  1. “ยูเนี่ยน” ใน C คืออะไร?

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

  1. อธิบาย “การเรียกซ้ำ”

การเรียกซ้ำคือเมื่อฟังก์ชันเรียกตัวเอง และฟังก์ชันที่เรียกตัวเองนั้นเรียกว่าฟังก์ชันแบบเรียกซ้ำ ฟังก์ชันแบบเรียกซ้ำเกิดขึ้นในสองขั้นตอน:

  • เฟสที่คดเคี้ยว – เมื่อฟังก์ชันเรียกซ้ำเรียกตัวเองและตรงตามเงื่อนไขที่ต้องการ เฟสของขดลวดจะสิ้นสุดลง
  • ระยะคลี่คลาย – เมื่อถึงระยะการม้วนตัว ระยะการคลายตัวจะเริ่มขึ้นโดยคืนการควบคุมกลับเป็นการโทรเดิม
  1. จะประกาศฟังก์ชั่นใน C ได้อย่างไร?

คุณสามารถประกาศฟังก์ชันในภาษา C ได้ดังนี้:

return_type function_name(รายการพารามิเตอร์ที่เป็นทางการ)

{

Function_Body;

}

  1. ฟังก์ชัน sprintf() ทำหน้าที่อะไร

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

int sprintf ( ถ่าน * str, รูปแบบถ่าน const *, … );

  1. แยกแยะระหว่างฟังก์ชัน getch() และ getche()?

ในโปรแกรม C ฟังก์ชัน getch() จะอ่านอักขระตัวเดียวจากคีย์เวิร์ด เนื่องจากใช้บัฟเฟอร์ใด ๆ จึงไม่แสดงข้อมูลที่คุณป้อนบนหน้าจอ ในทางตรงกันข้าม ในขณะที่ฟังก์ชัน getche() จะอ่านอักขระตัวเดียวจากคีย์เวิร์ด แต่จะแสดงข้อมูลบนหน้าจอ

  1. “Rvalue” และ “Ivalue” คืออะไร?

Rvalue คือนิพจน์ที่อยู่ทางด้านขวาของตัวดำเนินการกำหนด ถูกกำหนดให้กับ Ivalue ที่อยู่บนตัวดำเนินการมอบหมาย lvalue ต้องอ้างอิงถึงตัวแปรเท่านั้น ไม่ใช่ค่าคงที่

  1. ตั้งชื่อตัวระบุคลาสหน่วยเก็บข้อมูลต่างๆ ใน ​​C

ใน C มีตัวระบุหน่วยเก็บข้อมูลสี่ตัว:

  • รถยนต์
  • คงที่
  • ลงทะเบียน
  • ภายนอก
  1. การประกาศไฟล์ส่วนหัวด้วย” “และ < > มีความแตกต่างหรือไม่?

หากคุณประกาศไฟล์ส่วนหัวโดยใช้ ” “ คอมไพเลอร์จะค้นหาไฟล์ส่วนหัวในไดเร็กทอรีการทำงานปัจจุบัน และหากไม่พบไฟล์ที่นั่น คอมไพเลอร์จะตรวจสอบตำแหน่งอื่นเพื่อค้นหาไฟล์ส่วนหัว อย่างไรก็ตาม หากคุณประกาศไฟล์ส่วนหัวโดยใช้ < > คอมไพเลอร์จะค้นหาไฟล์ตามเส้นทางในตัว

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

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

บทสรุป

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

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

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

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