أهم 100 أسئلة وأجوبة في مقابلات البرمجة (PDF)
فيما يلي أسئلة وأجوبة مقابلة برمجة C للمرشحين الجدد وذوي الخبرة للحصول على وظيفة أحلامهم.
أسئلة وأجوبة المقابلة الأساسية لبرمجة C للمبتدئين
1) كيف يمكنك إنشاء بيان الزيادة أو بيان النقصان في لغة C؟
هناك طريقتان يمكنك من خلالهما القيام بذلك. الأولى هي استخدام عامل الزيادة ++ وعامل التناقص -. على سبيل المثال، تعني العبارة "x++" زيادة قيمة x بمقدار 1. وبالمثل، تعني العبارة "x -" تقليل قيمة x بمقدار 1. وهناك طريقة أخرى لكتابة عبارات الزيادة وهي استخدام علامة الجمع التقليدية + أو علامة الطرح -. وفي حالة "x++"، هناك طريقة أخرى لكتابتها وهي "x = x +1".
👉 تنزيل مجاني بصيغة PDF: أسئلة وأجوبة للمقابلة الخاصة ببرمجة لغة C >>
2) ما هو الفرق بين الاتصال حسب القيمة والاتصال حسب المرجع؟
عند استخدام Call by Value، فإنك ترسل قيمة متغير كمعلمة إلى دالة، بينما يرسل Call by Reference عنوان المتغير. أيضًا، في Call by Value، لا تتأثر القيمة في المعلمة بأي عملية تحدث، بينما في حالة Call by Reference، يمكن أن تتأثر القيم بالعملية داخل الدالة.
3) يقوم بعض المبرمجين بتصحيح أخطاء برامجهم عن طريق وضع رموز التعليق على بعض الأكواد بدلا من حذفها. كيف يساعد هذا في تصحيح الأخطاء؟
يعد وضع رموز التعليق /* */ حول الكود، والذي يشار إليه أيضًا باسم "التعليق"، طريقة لعزل بعض الأكواد التي تعتقد أنها قد تسبب أخطاء في البرنامج، دون حذف الكود. الفكرة هي أنه إذا كان الكود صحيحًا بالفعل، فما عليك سوى إزالة رموز التعليق والمتابعة. كما أنه يوفر عليك الوقت والجهد عند الاضطرار إلى إعادة كتابة الرموز إذا قمت بحذفها في المقام الأول.
4) ما هو الكود المكافئ للعبارة التالية في تنسيق حلقة WHILE؟
for (a=1; a<=100; a++)
printf ("%d\n", a * a);
الجواب:
a=1;
while (a<=100) {
printf ("%d\n", a * a);
a++;
}
5) ما هو المكدس؟
المكدس هو أحد أشكال هياكل البيانات. تُخزَّن البيانات في المكدسات باستخدام أسلوب FILO (الأول في الأخير خارج). في أي لحظة، لا يمكن الوصول إلا إلى الجزء العلوي من المكدس، مما يعني أنه لاسترجاع البيانات المخزنة داخل المكدس، يجب استخراج البيانات الموجودة في الجزء العلوي.tracأولاً. يُشار إلى تخزين البيانات في مكدس باسم PUSH، بينما يُشار إلى استرجاع البيانات باسم POP.
6) ما هو ملف الوصول المتسلسل؟
عند كتابة البرامج التي ستقوم بتخزين واسترجاع البيانات في ملف، فمن الممكن تخصيص هذا الملف في أشكال مختلفة. ملف الوصول التسلسلي يتم من خلاله حفظ البيانات بترتيب تسلسلي: يتم وضع بيانات واحدة في الملف تلو الأخرى. للوصول إلى بيانات معينة داخل ملف الوصول المتسلسل، يجب قراءة البيانات بيانات واحدة في كل مرة، حتى يتم الوصول إلى البيانات الصحيحة.
7) ما هو التهيئة المتغيرة وما أهميتها؟
يشير هذا إلى العملية التي يتم فيها تعيين قيمة أولية للمتغير قبل استخدامه في البرنامج. بدون التهيئة، سيكون للمتغير قيمة غير معروفة، مما قد يؤدي إلى نتائج غير متوقعة عند استخدامه في العمليات الحسابية أو العمليات الأخرى.
8 ما هي برمجة السباغيتي؟
تشير برمجة السباغيتي إلى الأكواد التي تميل إلى التشابك والتداخل طوال البرنامج. وعادة ما يُعزى هذا النهج غير المنظم في الترميز إلى الافتقار إلى الخبرة من جانب المبرمج. وتجعل برمجة السباغيتي البرنامج معقدًا وتحليل الأكواد أمرًا صعبًا، وبالتالي يجب تجنبها قدر الإمكان.
9) تمييز المصدر Codes من الكائن Codes
أكواد المصدر هي أكواد كتبها المبرمج. وهي مكونة من الأوامر والكلمات الرئيسية الأخرى المشابهة للغة الإنجليزية والتي من المفترض أن ترشد الكمبيوتر إلى ما يجب فعله. ومع ذلك، لن تتمكن أجهزة الكمبيوتر من فهم رموز المصدر. ولذلك، يتم تجميع رموز المصدر باستخدام مترجم. المخرجات الناتجة هي رموز كائنية، والتي تكون بتنسيق يمكن لمعالج الكمبيوتر فهمه. في البرمجة C، يتم حفظ رموز المصدر بامتداد الملف .C، بينما يتم حفظ رموز الكائنات بامتداد الملف .OBJ
10) في برمجة C، كيف يمكنك إدراج أحرف الاقتباس (' و ") في شاشة الإخراج؟
هذه مشكلة شائعة للمبتدئين لأن علامات الاقتباس تشكل عادةً جزءًا من عبارة printf. لإدراج حرف الاقتباس كجزء من الناتج، استخدم مواصفات التنسيق \' (للاقتباس المفرد)، و\” (للاقتباس المزدوج).
11) ما فائدة الحرف '\0'؟
يُشار إليه باسم حرف null المنتهي، ويُستخدم في المقام الأول لإظهار نهاية قيمة السلسلة.
12) ما الفرق بين الرمز = والرمز ==؟
غالبًا ما يستخدم الرمز = في العمليات الحسابية. ويُستخدم لتعيين قيمة لمتغير معين. ومن ناحية أخرى، يُعد الرمز ==، المعروف أيضًا باسم "يساوي" أو "مكافئ"، عاملًا علائقيًا يُستخدم لمقارنة قيمتين.
13) ما هو عامل المعامل؟
يقوم عامل القسمة بإخراج الباقي من القسمة. ويستخدم رمز النسبة المئوية (%). على سبيل المثال: 10 % 3 = 1، وهذا يعني أنه عند قسمة 10 على 3، يكون الباقي 1.
14) ما هي الحلقة المتداخلة؟
الحلقة المتداخلة هي حلقة يتم تشغيلها داخل حلقة أخرى. وبعبارة أخرى، لديك حلقة داخلية موجودة داخل حلقة خارجية. في هذا السيناريو، يتم تنفيذ الحلقة الداخلية عدة مرات كما هو محدد بواسطة الحلقة الخارجية. لكل دورة في الحلقة الخارجية، يتم تنفيذ الحلقة الداخلية أولاً.
15) أي من المعاملات التالية غير صحيح ولماذا؟ ( >=, <=, <>, ==)
<> غير صحيح. في حين يتم تفسير هذا العامل بشكل صحيح على أنه "لا يساوي" في كتابة العبارات الشرطية، إلا أنه ليس العامل المناسب للاستخدام في البرمجة Cبدلاً من ذلك، يجب استخدام العامل != للإشارة إلى شرط "عدم التساوي".
16) قارن بين المترجمين والمترجمين الفوريين.
غالبًا ما يتعامل المترجمون والمترجمون الفوريون مع كيفية تنفيذ أكواد البرنامج. يقوم المترجمون الفوريون بتنفيذ أكواد البرنامج سطرًا تلو الآخر، بينما يأخذ المترجمون البرنامج ككل ويحولونه إلى كود كائن، قبل تنفيذه. والفرق الرئيسي هنا هو أنه في حالة المترجمين الفوريين، قد يواجه البرنامج أخطاء في بناء الجملة في منتصف التنفيذ، وسيتوقف عند هذه النقطة. من ناحية أخرى، يتحقق المترجمون من بناء جملة البرنامج بأكمله ولن يتابعوا التنفيذ إلا في حالة عدم العثور على أخطاء في بناء الجملة.
17) كيف يمكنك الإعلان عن المتغير الذي سيحتوي على قيم السلسلة؟
لا يمكن لكلمة المفتاح char أن تحتوي إلا على قيمة حرف واحدة في المرة الواحدة. من خلال إنشاء مجموعة من الأحرف، يمكنك تخزين قيم السلسلة فيها. على سبيل المثال: "char MyName[1];" تعلن عن متغير سلسلة باسم MyName يمكنه أن يحتوي على 50 حرفًا كحد أقصى.
18) هل يمكن استخدام الأقواس المتعرجة { } لإحاطة سطر واحد من التعليمات البرمجية؟
على الرغم من أن الأقواس المتعرجة تُستخدم بشكل أساسي لتجميع عدة أسطر من التعليمات البرمجية، إلا أنها ستظل تعمل دون أخطاء إذا استخدمتها لسطر واحد. يفضل بعض المبرمجين هذه الطريقة كطريقة لتنظيم التعليمات البرمجية لجعلها تبدو أكثر وضوحًا، وخاصة في العبارات الشرطية.
19) ما هي ملفات الرأس وما هي استخداماتها في برمجة C؟
تُعرف ملفات الرأس أيضًا باسم ملفات المكتبة. أنها تحتوي على شيئين أساسيين: التعريفات والنماذج الأولية للوظائف المستخدمة في البرنامج. ببساطة، الأوامر التي تستخدمها في برمجة C هي في الواقع وظائف يتم تعريفها من داخل كل ملف رأس. يحتوي كل ملف رأس على مجموعة من الوظائف. على سبيل المثال: stdio.h هو ملف رأس يحتوي على تعريفات ونماذج أولية لأوامر مثل printf وscanf.
20) ما هو الخطأ النحوي؟
ترتبط الأخطاء النحوية بالأخطاء في استخدام لغة البرمجة. ربما يكون الأمر عبارة عن أمر به خطأ إملائي أو أمر يجب إدخاله في وضع الأحرف الصغيرة ولكن تم إدخاله باستخدام حرف كبير بدلاً من ذلك. يمكن أن يؤدي وجود رمز في غير مكانه، أو عدم وجود رمز، في مكان ما ضمن سطر من التعليمات البرمجية إلى حدوث خطأ في بناء الجملة.
21) ما هي المتغيرات وبماذا تختلف عن الثوابت؟
قد تبدو المتغيرات والثوابت متشابهة للوهلة الأولى بمعنى أن كليهما عبارة عن معرفات مكونة من حرف واحد أو أكثر (حروف وأرقام وبعض الرموز المسموح بها). وكلاهما يحمل أيضًا قيمة معينة. يمكن تغيير القيم التي يحملها المتغير طوال البرنامج، ويمكن استخدامها في معظم العمليات والحسابات. يتم إعطاء قيم للثوابت في وقت واحد فقط، ويتم وضعها في بداية البرنامج. لا يتم تغيير هذه القيمة في البرنامج. على سبيل المثال، يمكنك تعيين ثابت يسمى PI وإعطائه قيمة 3.1415. يمكنك بعد ذلك استخدامه كـ PI في البرنامج، بدلاً من الاضطرار إلى كتابة 3.1415 في كل مرة تحتاج إليها.
22) كيف يمكنك الوصول إلى القيم داخل المصفوفة؟
تحتوي المصفوفات على عدد من العناصر، اعتمادًا على الحجم الذي قدمته لها أثناء إعلان المتغير. يتم تعيين رقم لكل عنصر من 0 إلى عدد العناصر-1. لتعيين أو استرداد قيمة عنصر معين، راجع رقم العنصر. على سبيل المثال: إذا كان لديك إعلان ينص على "intscores[5];"، فلديك 5 عناصر يمكن الوصول إليها، وهي: الدرجات[0]، والدرجات[1]، والدرجات[2]، والدرجات[3]، والدرجات[4] ].
23) هل يمكنني استخدام نوع البيانات "int" لتخزين القيمة 32768؟ لماذا؟
لا، نوع البيانات "int" قادر على تخزين القيم من -32768 إلى 32767. لتخزين 32768، يمكنك استخدام "long int" بدلاً من ذلك. يمكنك أيضًا استخدام "unsigned int"، على افتراض أنك لا تنوي تخزين قيم سلبية.
24) هل يمكن دمج عاملين أو أكثر مثل \n و \t في سطر واحد من الكود البرمجي؟
نعم، من الصحيح تمامًا دمج المشغلين، خاصة إذا دعت الحاجة إلى ذلك.
على سبيل المثال: يمكنك الحصول على رمز مثل printf (“Hello\n\n\’World\'”) لإخراج النص "Hello" في السطر الأول و"World" بين علامتي اقتباس مفردتين ليظهر في السطرين التاليين.
25) لماذا لا يتم الإعلان عن جميع ملفات الرأس في كل برنامج بلغة C؟
يعتمد اختيار الإعلان عن ملف رأس أعلى كل برنامج C على الأوامر/الوظائف التي ستستخدمها في هذا البرنامج. نظرًا لأن كل ملف رأس يحتوي على تعريفات وظائف ونماذج أولية مختلفة، فستستخدم فقط ملفات الرأس التي قد تحتوي على الوظائف التي ستحتاجها. إن الإعلان عن جميع ملفات الرأس في كل برنامج لن يؤدي إلا إلى زيادة الحجم الإجمالي للملف وتحميل البرنامج، ولا يعتبر أسلوب برمجة جيدًا.
26) متى يتم استخدام الكلمة الأساسية "باطلة" في الوظيفة؟
عند الإعلان عن الدوال، عليك أن تقرر ما إذا كانت هذه الدالة ستعيد قيمة أم لا. إذا لم تُرجع هذه الدالة قيمة، كما هو الحال عندما يكون الغرض من الدالة هو عرض بعض المخرجات على الشاشة، فسيتم وضع "باطل" في أقصى الجزء الأيسر من رأس الدالة. عندما يكون من المتوقع وجود قيمة إرجاع بعد تنفيذ الوظيفة، يتم وضع نوع بيانات قيمة الإرجاع بدلاً من "باطل".
27) ما هي العبارات المركبة؟
تتكون العبارات المركبة من عبارتين أو أكثر للبرنامج يتم تنفيذهما معًا. يحدث هذا عادةً أثناء التعامل مع الشروط حيث يتم تنفيذ سلسلة من العبارات عند تقييم TRUE أو FALSE. يمكن أيضًا تنفيذ العبارات المركبة داخل حلقة. يتم وضع الأقواس المتعرجة { } قبل وبعد العبارات المركبة.
28) ما هي أهمية الخوارزمية لبرمجة لغة C؟
قبل أن نتمكن من كتابة البرنامج، يجب إنشاء خوارزمية أولاً. توفر الخوارزمية إجراء خطوة بخطوة حول كيفية استخلاص الحل. كما أنه بمثابة مخطط لكيفية بدء البرنامج وانتهاءه، بما في ذلك العملية والحسابات المتضمنة.
29) ما هي ميزة المصفوفة على المتغيرات الفردية؟
عند تخزين بيانات متعددة مرتبطة، فمن الجيد استخدام المصفوفات. وذلك لأن المصفوفات تتم تسميتها باستخدام كلمة واحدة فقط متبوعة برقم العنصر. على سبيل المثال: لتخزين نتائج الاختبار العشرة لطالب واحد، يمكن استخدام 1 أسماء متغيرات مختلفة (الصف 10، الصف 1، الصف 10... الصف 1). مع المصفوفات، يتم استخدام اسم واحد فقط، ويمكن الوصول إلى الباقي من خلال اسم الفهرس (الصف [2]، الصف [3]، الصف [10] ... الصف [1]).
30) اكتب عبارة حلقة ستظهر الناتج التالي:
1
12
123
1234
12345
الجواب:
for (a=1; a<=5; i++) {
for (b=1; b<=a; b++)
printf("%d",b);
printf("\n");
}
C برمجة أسئلة وأجوبة المقابلة للخبرة
31) ما الخطأ في هذا القول؟ scanf("%d",whatnumber);
يجب وضع علامة العطف والرمز قبل اسم المتغير Whatnumber. الوضع & يعني أن أي قيمة عددية يدخلها المستخدم يتم تخزينها في "عنوان" اسم المتغير. وهذا خطأ شائع بين المبرمجين، وغالبًا ما يؤدي إلى أخطاء منطقية.
32) كيف تقوم بإنشاء أرقام عشوائية في C؟
يتم إنشاء أرقام عشوائية في C باستخدام rand() command. على سبيل المثال: anyNum = rand() سيتم إنشاء أي رقم صحيح يبدأ من 0، على افتراض أن AnyNum هو متغير من النوع عدد صحيح.
33) ما هي المشكلة التي يمكن أن تكون إذا تم الإبلاغ عن اسم دالة صالح مثل tolower() بواسطة مترجم C على أنه غير محدد؟
السبب الأكثر احتمالاً وراء هذا الخطأ هو عدم الإشارة إلى ملف الرأس لهذه الوظيفة في الجزء العلوي من البرنامج. تحتوي ملفات الرأس على التعريف والنموذج الأولي للوظائف والأوامر المستخدمة في برنامج C. في حالة "tolower()"، الكود "#include "يجب أن يكون موجودا في بداية البرنامج.
34) ما هي التعليقات وكيف يتم إدراجها في برنامج C؟
التعليقات هي طريقة رائعة لوضع بعض الملاحظات أو الوصف في البرنامج. يمكن أن يكون بمثابة تذكير حول موضوع البرنامج، أو وصف لسبب وضع رمز أو وظيفة معينة هناك في المقام الأول. تبدأ التعليقات بـ /* وتنتهي بالحرف */. يمكن أن تتكون التعليقات من سطر واحد، أو حتى يمكن أن تمتد إلى عدة أسطر. ويمكن وضعها في أي مكان في البرنامج.
35) ما هو التصحيح؟
تصحيح الأخطاء هو عملية تحديد الأخطاء داخل البرنامج. أثناء تجميع البرنامج، ستؤدي الأخطاء التي تم العثور عليها إلى إيقاف تنفيذ البرنامج بالكامل. في هذه الحالة، سيبحث المبرمج في الأجزاء المحتملة التي حدث فيها الخطأ. يضمن تصحيح الأخطاء إزالة الأخطاء، ويلعب دورًا مهمًا في ضمان تحقيق مخرجات البرنامج المتوقعة.
36) ماذا يفعل عامل && في كود البرنامج؟
يشار إلى && أيضًا باسم عامل AND. عند استخدام هذا العامل، يجب أن تكون جميع الشروط المحددة صحيحة قبل أن تتمكن من تنفيذ الإجراء التالي. إذا كان لديك 10 شروط وفشلت جميعها باستثناء شرط واحد في التقييم على أنها صحيحة، فسيتم تقييم بيان الشرط بالكامل على أنه خطأ بالفعل
37) في برمجة C، ما هو الأمر أو الكود الذي يمكن استخدامه لتحديد ما إذا كان العدد فرديًا أم زوجيًا؟
لا يوجد أمر واحد أو تعمل في C. يمكن التحقق مما إذا كان الرقم فرديًا أم زوجيًا. ومع ذلك، يمكن تحقيق ذلك عن طريق قسمة هذا الرقم على 2، ثم التحقق من الباقي. إذا كان الباقي 0، فهذا الرقم زوجي، وإلا فهو فردي. يمكنك كتابته في الكود على النحو التالي:
if (num % 2 == 0)
printf("EVEN");
else
printf("ODD");
38) ماذا يعني التنسيق %10.2 عند تضمينه في عبارة printf؟
يتم استخدام هذا التنسيق لشيئين: لتعيين عدد المسافات المخصصة لرقم الإخراج ولضبط عدد المنازل العشرية. الرقم الموجود قبل العلامة العشرية مخصص للمساحة المخصصة، وفي هذه الحالة سيتم تخصيص 10 مسافات لرقم الإخراج. إذا كان عدد المساحة التي يشغلها رقم الإخراج أقل من 10، فسيتم إدراج أحرف مسافة إضافية قبل رقم الإخراج الفعلي. الرقم الموجود بعد العلامة العشرية يحدد عدد المنازل العشرية، وهو في هذه الحالة عبارة عن مسافتين عشريتين.
39) ما هي الأخطاء المنطقية وكيف تختلف عن الأخطاء النحوية؟
يميل البرنامج الذي يحتوي على أخطاء منطقية إلى اجتياز عملية الترجمة، لكن المخرجات الناتجة قد لا تكون هي المتوقعة. يحدث هذا عند إدراج صيغة خاطئة في التعليمات البرمجية، أو عند تنفيذ تسلسل خاطئ للأوامر. من ناحية أخرى، تتعامل أخطاء بناء الجملة مع الأوامر غير الصحيحة التي بها أخطاء إملائية أو التي لم يتعرف عليها المترجم.
40) ما هي أنواع هياكل التحكم المختلفة في البرمجة؟
هناك 3 هياكل تحكم رئيسية في البرمجة: التسلسل والاختيار والتكرار. يتبع التحكم التسلسلي التدفق من أعلى إلى أسفل في تنفيذ البرنامج، بحيث يتم تنفيذ الخطوة 1 أولاً، تليها الخطوة 2، حتى يتم تنفيذ الخطوة الأخيرة. يتعامل التحديد مع البيانات الشرطية، مما يعني أنه يتم تنفيذ الرموز اعتمادًا على تقييم الشروط على أنها TRUE أو FALSE. وهذا يعني أيضًا أنه لا يمكن تنفيذ جميع الرموز، وهناك تدفقات بديلة بداخلها. تُعرف التكرارات أيضًا باسم هياكل الحلقة، وسوف تكرر عبارة أو اثنتين من عبارات البرنامج التي تم تعيينها بواسطة العداد.
41) ما هو عامل || وكيف يعمل في البرنامج؟
يُعرف || أيضًا باسم عامل OR في برمجة C. عند استخدام || لتقييم الشروط المنطقية، فإن أي شرط يتم تقييمه على أنه TRUE سيؤدي إلى عرض بيان الشرط بالكامل على أنه TRUE.
42) هل يمكن استخدام الدالة "if" في مقارنة السلاسل؟
لا، لا يمكن استخدام الأمر "if" إلا لمقارنة القيم الرقمية وقيم الأحرف الفردية. لمقارنة قيم السلاسل، هناك دالة أخرى تسمى strcmp تتعامل بشكل خاص مع السلاسل.
43) ما هي توجيهات المعالج المسبق؟
يتم وضع توجيهات المعالج المسبق في بداية كل برنامج C. هذا هو المكان الذي يتم فيه تحديد ملفات المكتبة، والتي تعتمد على الوظائف التي سيتم استخدامها في البرنامج. الاستخدام الآخر لتوجيهات المعالج المسبق هو إعلان الثوابت. تبدأ توجيهات المعالج المسبق بالرمز #.
44) ما هي نتيجة الجملة الشرطية التالية إذا كانت قيمة المتغير s تساوي 10؟
s >=10 && s < 25 && s!=12
ستكون النتيجة TRUE. نظرًا لأن قيمة s هي 10، فإن s >= 10 يتم تقييمها على أنها TRUE لأن s ليست أكبر من 10 ولكنها لا تزال تساوي 10. s< 25 هي أيضًا TRUE لأن 10 أقل من 25. على نفس المنوال، فإن s!=12، مما يعني أن s لا تساوي 12، يتم تقييمها على أنها TRUE. && هو عامل AND، ويتبع القاعدة التي تنص على أنه إذا كانت جميع الشروط الفردية TRUE، فإن العبارة بأكملها تكون TRUE.
45) وصف ترتيب الأولوية فيما يتعلق بالمشغلات في لغة C.
يحدد ترتيب الأولوية العملية التي يجب أن تتم أولاً في عبارة عملية أو عبارة شرطية. في أعلى مستوى من الأولوية توجد المعاملات الأحادية ! و+ و- و&. ويتبعها المعاملات الرياضية العادية (* و/ وmodulus % أولاً، ثم + و-). يليها في السطر المعاملات العلائقية < و<= و>= و>. ويتبع ذلك عاملي المساواة == و!=. يتم بعد ذلك تقييم المعاملات المنطقية && و||. في المستوى الأخير يوجد عامل الإسناد =.
46) ما هو الخطأ في هذا البيان؟ اسمي = "روبن";
لا يمكنك استخدام علامة = لتعيين قيم لمتغير سلسلة. بدلاً من ذلك، استخدم الدالة strcpy. ستكون العبارة الصحيحة هي: strcpy(myName, “Robin”);
47) كيف يمكنك تحديد طول قيمة السلسلة التي تم تخزينها في متغير؟
للحصول على طول قيمة السلسلة، استخدم الدالة strlen(). على سبيل المثال، إذا كان لديك متغير يسمى FullName، فيمكنك الحصول على طول قيمة السلسلة المخزنة باستخدام هذه العبارة: I = strlen(FullName); المتغير سأحصل الآن على طول حرف قيمة السلسلة.
48) هل من الممكن تهيئة المتغير في وقت الإعلان عنه؟
نعم، ليس عليك كتابة عبارة تعيين منفصلة بعد إعلان المتغير، إلا إذا كنت تخطط لتغييرها لاحقًا. على سبيل المثال: char planet[15] = “Earth”; تقوم بأمرين: تعلن عن متغير نصي باسم planet، ثم تقوم بتهيئته بالقيمة “Earth”.
49) لماذا تعتبر لغة C لغة المستوى المتوسط؟
يرجع ذلك إلى أن لغة C غنية بالميزات التي تجعلها تتصرف مثل لغة عالية المستوى وفي نفس الوقت يمكنها التفاعل مع الأجهزة باستخدام طرق منخفضة المستوى. إن استخدام نهج جيد البنية للبرمجة، إلى جانب الكلمات الشبيهة باللغة الإنجليزية المستخدمة في الوظائف، يجعلها تعمل كلغة عالية المستوى. من ناحية أخرى، يمكن للغة C الوصول مباشرة إلى هياكل الذاكرة على غرار روتينات لغة التجميع.
50) ما هي امتدادات الملفات المختلفة المستخدمة عند البرمجة بلغة C؟
يتم حفظ أكواد المصدر في لغة C بامتداد الملف .C. ملفات الرأس أو ملفات المكتبة لها ملحق الملف .H. في كل مرة يتم فيها تجميع التعليمات البرمجية المصدر للبرنامج بنجاح، فإنه يقوم بإنشاء ملف كائن .OBJ، وملف .EXE قابل للتنفيذ.
51) ما هي الكلمات المحجوزة؟
الكلمات المحجوزة هي الكلمات التي تشكل جزءًا من مكتبة لغة C القياسية. وهذا يعني أن الكلمات المحجوزة لها معنى خاص، وبالتالي لا يمكن استخدامها لأغراض أخرى غير المقصود منها في الأصل. من أمثلة الكلمات المحجوزة int وvoid وreturn.
52) ما هي القائمة المرتبطة؟
تتكون القائمة المرتبطة من العقد المرتبطة بأخرى. في برمجة C، يتم إنشاء القوائم المرتبطة باستخدام المؤشرات. يعد استخدام القوائم المرتبطة إحدى الطرق الفعالة لاستخدام الذاكرة للتخزين.
53) ما هو ما يصرف أولاً؟
في برمجة C، هناك بنية بيانات تعرف باسم قائمة الانتظار. في هذه البنية، يتم تخزين البيانات والوصول إليها باستخدام تنسيق FIFO، أو First-In-First-Out. تمثل قائمة الانتظار خطًا تكون فيه البيانات الأولى التي تم تخزينها هي أول بيانات يمكن الوصول إليها أيضًا.
54) ما هي الأشجار الثنائية؟
الأشجار الثنائية هي في الواقع امتداد لمفهوم القوائم المرتبطة. تحتوي الشجرة الثنائية على مؤشرين، أحدهما على اليسار والآخر على اليمين. يمكن لكل جانب أن يتفرع أكثر لتكوين عقد إضافية، حيث تحتوي كل عقدة على مؤشرين أيضًا. تعلم المزيد عن شجرة ثنائية في بنية البيانات إذا كنت مهتم.
55) ليست كل الكلمات المحجوزة مكتوبة بأحرف صغيرة. صحيحة أو خاطئة؟
خطأ. يجب كتابة جميع الكلمات المحجوزة بأحرف صغيرة؛ وإلا فسيفسرها مُجمِّع C على أنها غير محددة وغير صالحة.
56) ما الفرق بين التعبير "++a" و"a++"؟
في التعبير الأول، ستحدث الزيادة أولاً على المتغير a، وستكون القيمة الناتجة هي القيمة التي سيتم استخدامها. يُعرف هذا أيضًا باسم الزيادة البادئة. في التعبير الثاني، ستكون القيمة الحالية للمتغير a هي القيمة التي سيتم استخدامها في عملية، قبل زيادة قيمة a نفسها. يُعرف هذا أيضًا باسم الزيادة اللاحقة.
57) ماذا سيحدث لـ X في هذا التعبير: X += 15; (بافتراض أن قيمة X هي 5)
X +=15 هي طريقة مختصرة لكتابة X = X + 15، لذا إذا كانت القيمة الأولية لـ X هي 5، فإن 5 + 15 = 20.
58) في لغة C، المتغيرات NAME، name، و Name كلها متماثلة. صحيحة أو خاطئة؟
خطأ شنيع. لغة C هي لغة حساسة لحالة الأحرف. ولذلك، فإن NAME وname وName هي ثلاثة متغيرات مختلفة بشكل فريد.
59) ما هي حلقة لا نهاية لها؟
يمكن أن تعني الحلقة اللانهائية شيئين. الأول هو أنها صُممت لتستمر في الحلقة حتى يتم استيفاء الشرط داخل الحلقة، وبعد ذلك ستتسبب وظيفة التوقف في خروج البرنامج من الحلقة. فكرة أخرى للحلقة اللانهائية هي عندما يتم كتابة شرط حلقة غير صحيح، مما يتسبب في تشغيل الحلقة بشكل خاطئ إلى الأبد. غالبًا ما يشار إلى الحلقات اللانهائية بالحلقات اللانهائية.
60) ما هو المخطط الانسيابي للبرنامج وكيف يساعد في كتابة البرنامج؟
يوفر المخطط الانسيابي تمثيلاً مرئيًا للإجراء خطوة بخطوة نحو حل مشكلة معينة. تتكون المخططات الانسيابية من رموز، حيث يكون كل رمز على شكل أشكال مختلفة. قد يمثل كل شكل كيانًا معينًا ضمن بنية البرنامج بأكملها، مثل عملية أو حالة أو حتى مرحلة إدخال/إخراج.
61) ما هو الخطأ في بيان البرنامج هذا؟ باطلة = 10؛
كلمة void هي كلمة محجوزة في لغة C. لا يمكنك استخدام الكلمات المحجوزة كمتغير محدد من قبل المستخدم.
62) هل بيان البرنامج هذا صحيح؟ إنت = 10.50؛
بافتراض أن INT هو متغير من النوع float، فإن هذا البيان صحيح. قد يعتقد المرء أن INT هي كلمة محجوزة ويجب عدم استخدامها لأغراض أخرى. ومع ذلك، تذكر أن الكلمات المحجوزة يتم التعبير عنها بأحرف صغيرة، وبالتالي فإن مترجم لغة C لن يفسر ذلك على أنه كلمة محجوزة.
63) ما هي الحجج الفعلية؟
عند إنشاء واستخدام الوظائف التي تحتاج إلى تنفيذ إجراء على بعض القيم المحددة، تحتاج إلى تمرير هذه القيم المحددة إلى تلك الوظيفة. تتم الإشارة إلى القيم التي يتم تمريرها إلى الدالة المستدعىة على أنها وسيطات فعلية.
64) ما هو تسلسل الهروب السطر الجديد؟
يتم تمثيل تسلسل هروب السطر الجديد بالحرف \n. يُستخدم هذا لإدراج سطر جديد عند عرض البيانات في شاشة الإخراج. يمكن إضافة المزيد من المسافات عن طريق إدراج المزيد من الأحرف \n. على سبيل المثال، \n\n قد يقوم بإدراج مسافتين. يمكن وضع تسلسل هروب السطر الجديد قبل تعبير الإخراج الفعلي أو بعده.
65) ما هو إعادة توجيه الإخراج؟
هي عملية نقل البيانات إلى مصدر إخراج بديل غير شاشة العرض. يسمح توجيه الإخراج للبرنامج بحفظ مخرجاته في ملف. على سبيل المثال، إذا كان لديك برنامج باسم COMPUTE، typing يمكن لهذا الأمر في سطر الأوامر كـ COMPUTE >DATA أن يقبل المدخلات من المستخدم، ويجري عمليات حسابية معينة، ثم يتم إعادة توجيه الإخراج إلى ملف باسم DATA، بدلاً من عرضه على الشاشة.
66) ما هي أخطاء وقت التشغيل؟
هذه أخطاء تحدث أثناء تنفيذ البرنامج. ومن الأمثلة الشائعة التي قد تحدث فيها أخطاء وقت التشغيل محاولة قسمة رقم على صفر. فعند حدوث أخطاء وقت التشغيل، يتوقف تنفيذ البرنامج مؤقتًا، مما يوضح سطر البرنامج الذي تسبب في الخطأ.
67) ما هو الفرق بين الوظائف abs() و fabs()؟
تؤدي هاتان الدالتان نفس الإجراء بشكل أساسي، وهو الحصول على القيمة المطلقة للقيمة المعطاة. تُستخدم Abs() للقيم الصحيحة، بينما تُستخدم fabs() للأرقام من النوع العائم. أيضًا، النموذج الأولي لـ abs() موجود تحت ، بينما fabs() تحت .
68) ما هي المعلمات الرسمية؟
عند استخدام الدوال في برنامج C، تحتوي المعلمات الرسمية على القيم التي تم تمريرها بواسطة الدالة المستدعاة. يتم استبدال القيم بهذه المعلمات الرسمية واستخدامها في أي عمليات كما هو موضح في الهيكل الرئيسي للدالة المستدعاة.
69) ما هي هياكل المراقبة؟
تتولى هياكل التحكم مسؤولية تنفيذ التعليمات في البرنامج. وهذا يعني أن تدفق البرنامج قد لا ينتقل بالضرورة من عبارة إلى العبارة التالية، بل قد تحتاج بعض الأجزاء البديلة إلى المرور إليها أو تجاوزها، اعتمادًا على نتيجة العبارات الشرطية.
70) اكتب جزءًا بسيطًا من التعليمات البرمجية للتحقق مما إذا كان الرقم موجبًا أم سالبًا
If (num>=0)
printf("number is positive");
else
printf ("number is negative");
71) متى تكون عبارة "التبديل" مفضلة على عبارة "إذا"؟
استخدم بيان التبديل من الأفضل استخدامه عند التعامل مع التحديدات المستندة إلى متغير أو تعبير واحد. ومع ذلك، يمكن لبيانات التبديل تقييم أنواع البيانات الصحيحة والأحرف فقط.
72) ما هي المتغيرات العالمية وكيف يتم الإعلان عنها؟
المتغيرات العامة هي متغيرات يمكن الوصول إليها ومعالجتها في أي مكان في البرنامج. لجعل المتغير عموميًا، ضع إعلان المتغير في الجزء العلوي من البرنامج، مباشرة بعد قسم توجيهات المعالج المسبق.
73) ما هي الأنواع المذكورة؟
تسمح الأنواع المذكورة للمبرمج باستخدام كلمات ذات معنى أكبر كقيم للمتغير. يرتبط كل عنصر في متغير النوع المذكور فعليًا برمز رقمي. على سبيل المثال، يمكن للمرء إنشاء متغير نوع معدود يسمى DAYS وقيمه هي Mondayالثلاثاء ... الأحد.
74) ماذا تفعل الدالة toupper()؟
يتم استخدامه لتحويل أي حرف إلى وضعه العلوي. تم الإعلان عن النموذج الأولي لوظيفة Toupper () في . لاحظ أن هذه الوظيفة ستحول حرفًا واحدًا فقط، وليس سلسلة كاملة.
75) هل من الممكن أن يكون هناك دالة كمعلمة في دالة أخرى؟
نعم، هذا مسموح به في برمجة C. كل ما عليك فعله هو تضمين النموذج الأولي للوظيفة بالكامل في حقل المعلمة الخاص بالوظيفة الأخرى التي سيتم استخدامها فيها.
76) ما هي المصفوفات متعددة الأبعاد؟
المصفوفات متعددة الأبعاد قادرة على تخزين البيانات في بنية ثنائية الأبعاد أو أكثر. على سبيل المثال، يمكنك استخدام مصفوفة ثنائية الأبعاد لتخزين الموضع الحالي للقطع في لعبة الشطرنج، أو موضع اللاعبين في برنامج tic-tac-toe.
77) ما هي الوظيفة في لغة C التي يمكن استخدامها لإلحاق سلسلة بسلسلة أخرى؟
الدالة strcat يستغرق الأمر معلمتين، السلسلة المصدر وقيمة السلسلة ليتم إلحاقهما بالسلسلة المصدر.
78) ما هو الفرق بين وظائف getch() و getche()؟
ستقبل كلتا الوظيفتين قيمة إدخال الحرف من المستخدم. عند استخدام getch()، لن يظهر المفتاح الذي تم الضغط عليه على الشاشة، وسيتم التقاطه تلقائيًا وتعيينه لمتغير. عند استخدام getche()، سيظهر المفتاح الذي ضغط عليه المستخدم على الشاشة، بينما يتم تعيينه في نفس الوقت لمتغير.
79) هل يؤدي بيانا البرنامج هذين نفس النتيجة؟ 1) scanf("%c", &letter); 2) حرف = getchar ()
نعم، كلاهما يفعلان نفس الشيء تمامًا، وهو قبول المفتاح التالي الذي يضغط عليه المستخدم وتعيينه لحرف مسمى متغير.
80) ما هي أنواع البنية في لغة C؟
تُستخدم أنواع الهياكل في المقام الأول لتخزين السجلات. يتكون السجل من حقول ذات صلة. وهذا يجعل تنظيم مجموعة من البيانات ذات الصلة أسهل.
81) ماذا يعني الحرفان "r" و"w" عند كتابة البرامج التي ستستفيد من الملفات؟
"r" تعني "قراءة" وسيتم فتح ملف كمدخل حيث سيتم استرداد البيانات. "w" تعني "الكتابة"، وسيتم فتح ملف للإخراج. سيتم مسح البيانات السابقة التي تم تخزينها على هذا الملف.
82) ما الفرق بين الملفات النصية والملفات الثنائية؟
تحتوي الملفات النصية على بيانات يمكن للبشر فهمها بسهولة. وهي تتضمن أحرفًا وأرقامًا ورموزًا أخرى. من ناحية أخرى، تحتوي الملفات الثنائية على أرقام 1 و0 لا يمكن تفسيرها إلا بواسطة أجهزة الكمبيوتر.
83) هل من الممكن إنشاء ملفات الرأس الخاصة بك؟
نعم، من الممكن إنشاء ملف رأس مخصص. ما عليك سوى تضمين نماذج الوظائف التي تريد استخدامها في برنامجك، واستخدام التوجيه #include متبوعًا باسم ملف الرأس الخاص بك.
84) ما هي بنية البيانات الديناميكية؟
توفر بنية البيانات الديناميكية وسيلة لتخزين البيانات بشكل أكثر كفاءة في الذاكرة. باستخدام باستخدام تخصيص الذاكرة الديناميكية، سيتمكن برنامجك من الوصول إلى مساحات الذاكرة حسب الحاجة. وهذا على النقيض من بنية البيانات الثابتة، حيث يجب على المبرمج الإشارة إلى عدد ثابت من مساحة الذاكرة التي سيتم استخدامها في البرنامج.
85) ما هي أنواع البيانات المختلفة في لغة C؟
الأساسية أنواع البيانات في C المتغيرات هي int وchar وfloat. يستخدم int لإعلان المتغيرات التي ستخزن قيم الأعداد الصحيحة. يستخدم float لتخزين الأعداد الحقيقية. يمكن لـ Char تخزين قيم الأحرف الفردية.
86) ما هو الشكل العام لبرنامج لغة C؟
يبدأ برنامج AC بتوجيهات المعالج المسبق، حيث يحدد المبرمج ملف الرأس والثوابت (إن وجدت) التي سيتم استخدامها. ويتبع ذلك عنوان الوظيفة الرئيسية. ضمن الوظيفة الرئيسية يوجد إعلان المتغير وبيان البرنامج.
87) ما فائدة ملف الوصول العشوائي؟
إذا كانت كمية البيانات المخزنة في ملف كبيرة إلى حد ما، فإن استخدام الوصول العشوائي سيسمح لك بالبحث فيه بشكل أسرع. إذا كان ملف وصول تسلسلي، فسيتعين عليك المرور عبر سجل واحد في كل مرة حتى تصل إلى البيانات المستهدفة. يتيح لك ملف الوصول العشوائي الانتقال مباشرة إلى العنوان الهدف حيث توجد البيانات.
88) في عبارة التبديل، ماذا سيحدث إذا تم حذف عبارة Break؟
إذا لم يتم وضع عبارة استراحة في نهاية جزء حالة معين؟ وسوف ينتقل إلى جزء الحالة التالي، مما قد يتسبب في إخراج غير صحيح.
89) وصف كيف يمكن تمرير المصفوفات إلى وظيفة محددة من قبل المستخدم
من الأمور التي يجب ملاحظتها أنه لا يمكنك تمرير المصفوفة بأكملها إلى دالة. وبدلاً من ذلك، يمكنك تمرير مؤشر إليها يشير إلى أول عنصر في المصفوفة في الذاكرة. للقيام بذلك، يمكنك الإشارة إلى اسم المصفوفة بدون الأقواس.
90) ما هي المؤشرات؟
نقطة المؤشرات إلى مناطق محددة في الذاكرة. تحتوي المؤشرات على عنوان المتغير، والذي بدوره قد يحتوي على قيمة أو حتى عنوان لذاكرة أخرى.
91) هل يمكنك تمرير هيكل كامل إلى وظائف؟
نعم، من الممكن تمرير بنية كاملة إلى دالة في استدعاء بأسلوب الأسلوب. ومع ذلك، يفضل بعض المبرمجين الإعلان عن البنية عالميًا، ثم تمرير متغير من نوع البنية هذا إلى دالة. تساعد هذه الطريقة في الحفاظ على الاتساق والتوحيد فيما يتعلق بنوع الوسيطة.
92) ما هي الدالة get()؟
استخدم gets() function يسمح بإدخال بيانات السطر الكامل من المستخدم. عندما يضغط المستخدم على مفتاح الإدخال لإنهاء الإدخال، يتم تخزين سطر الأحرف بالكامل في متغير سلسلة. لاحظ أن مفتاح الإدخال غير مضمن في المتغير، ولكن بدلاً من ذلك يتم وضع فاصل فارغ \0 بعد الحرف الأخير.
93) الرمز % له استخدام خاص في عبارة printf. كيف يمكنك وضع هذه الشخصية كجزء من الإخراج على الشاشة؟
يمكنك القيام بذلك عن طريق استخدام %% في عبارة printf. على سبيل المثال، يمكنك كتابة printf("10%%") لتظهر النتيجة على أنها 10% على الشاشة.
94) كيف يمكنك البحث عن البيانات في ملف بيانات باستخدام طريقة الوصول العشوائي؟
استخدم fseek() وظيفة لإجراء إدخال/إخراج وصول عشوائي على ملف. بعد فتح الملف بواسطة الدالة fopen()، سيتطلب fseek ثلاثة معلمات للعمل: مؤشر ملف إلى الملف، وعدد البايتات المطلوب البحث عنها، ونقطة الأصل في الملف.
95) هل يتم تضمين التعليقات أثناء مرحلة التجميع ووضعها في ملف EXE أيضًا؟
لا، سيتم تجاهل التعليقات التي واجهها المترجم. التعليقات في الغالب لتوجيهات المبرمج فقط وليس لها أي استخدام مهم آخر في وظائف البرنامج.
96) هل هناك وظيفة مدمجة في لغة C يمكن استخدامها لفرز البيانات؟
نعم ، استخدم ملف qsort() وظيفة. من الممكن أيضًا إنشاء وظائف محددة من قبل المستخدم للفرز، مثل تلك التي تعتمد على خوارزمية فرز البالون وفرز الفقاعات.
97) ما هي مزايا وعيوب الكومة؟
يكون تخزين البيانات على الكومة أبطأ مما قد يستغرقه عند استخدام المكدس. ومع ذلك، فإن الميزة الرئيسية لاستخدام الكومة هي مرونتها. وذلك لأن الذاكرة في هذه البنية يمكن تخصيصها وإزالتها بأي ترتيب معين. يمكن تعويض البطء في الكومة إذا تم تصميم الخوارزمية وتنفيذها بشكل جيد.
98) كيف تقوم بتحويل السلاسل إلى أرقام في لغة C؟
يمكنك كتابة الوظائف الخاصة بك لإجراء تحويلات من سلسلة إلى أرقام، أو بدلاً من ذلك استخدام وظائف C المضمنة. يمكنك استخدام atof للتحويل إلى قيمة نقطة عائمة، وatoi للتحويل إلى قيمة عددية، وatol للتحويل إلى قيمة عددية طويلة.
99) قم بإنشاء جزء تعليمات برمجية بسيط يقوم بتبديل قيم المتغيرين num1 وnum2.
int temp; temp = num1; num1 = num2; num2 = temp;
100) ما فائدة الفاصلة المنقوطة (؛) في نهاية كل عبارة برنامج؟
يتعلق الأمر بعملية التحليل وتجميع الكود. تعمل الفاصلة المنقوطة كمحدد، بحيث يعرف المترجم أين تنتهي كل عبارة، ويمكنه المتابعة لتقسيم العبارة إلى عناصر أصغر للتحقق من بناء الجملة.
ستساعد أسئلة المقابلة هذه أيضًا في حياتك (شفهي)

