أي لغة برمجة تستخدم في مقابلات البرمجة
هل تهم لغة البرمجة التي تستخدمها في مقابلات البرمجة؟ الجواب نعم.
تتيح لك معظم الشركات البرمجة بأي لغة تريدها — الاستثناء الوحيد الذي أعرفه هو Google، حيث لا يُسمح للمرشحين إلا بالاختيار من Java أو C++ أو JavaScript أو Python في مقابلات البرمجة الخوارزمية.
ومع ذلك، يمكن أن يؤثر اختيارك في أدائك أكثر بكثير مما تود أن تصدق — ولهذا من المهم اختيار لغة برمجة مناسبة مبكراً في تحضيرك لمقابلات البرمجة واستخدامها بانتظام في التدريب.
هناك 3 اعتبارات عند تحديد لغة البرمجة التي ستستخدمها:
- الملاءمة للمقابلات
- إلمامك باللغة
- الاستثناءات
1. الملاءمة للمقابلات
بعض اللغات ملائمة للمقابلات أكثر من غيرها — فاللغات عالية المستوى مثل Python أو Java توفر دوال مكتبة قياسية وبنى بيانات تتيح لك ترجمة الحل إلى شيفرة بسهولة أكبر.
من تجربتي كمُقابِل، يختار معظم المرشحين Python أو Java. ومن اللغات الأخرى الشائعة JavaScript وRuby وC++. أنصح بشدة بتجنب اللغات منخفضة المستوى مثل C أو Go، ببساطة لأنها تفتقر إلى كثير من دوال المكتبة القياسية وData Structures، وقد يتطلب بعضها إدارة يدوية للذاكرة.
شخصياً، Python هي خياري الفعلي لمقابلات البرمجة الخوارزمية لأنها موجزة ولديها مكتبة ضخمة من الدوال وData Structures المتاحة. كما تستخدم Python واجهات برمجة متسقة تعمل على بنى بيانات مختلفة، مثل len() وfor ... in ... وتدوين التقطيع على التسلسلات (السلاسل/القوائم/الصفوف). الحصول على العنصر الأخير في تسلسل هو arr[-1] وعكسه ببساطة arr[::-1]. يمكنك تحقيق الكثير بأقل قدر من الصياغة في Python.
Java خيار جيد أيضاً، لكن الاضطرار إلى إعلان الأنواع باستمرار في شيفرتك يعني ضغطات أزرار إضافية تؤدي إلى مزيد من الكتابة دون أي فائدة (في سياق المقابلة). وستظهر هذه المشكلة بوضوح أكبر عندما تضطر إلى الكتابة على السبورة أثناء المقابلات في المقر. وأسباب اختيار/عدم اختيار C++ مشابهة لـ Java. في النهاية، Python وJava وC++ خيارات لغات جيدة.
- موصى بها: Python، C++، Java، JavaScript
- مقبولة (لكن يُفضل الموصى بها إذا كنت ملماً بها): Go، Ruby، PHP، C#، Swift، Kotlin
- تجنبها: Haskell، Erlang، Perl، C، Matlab
- يجب أن تكون مجنوناً: Brainfuck، Assembly
2. إلمامك باللغة
في معظم الأحيان، يُنصح باستخدام لغة تألفها إلفاً تاماً بدلاً من تعلم لغة جديدة لمجرد استخدامها في المقابلات.
إذا كنت تحت ضغط الوقت، فإن تعلم لغة جديدة لمجرد المقابلات ليس فكرة جيدة إطلاقاً. اللغات تستغرق وقتاً لإتقانها، وإذا كنت تقضي بالفعل معظم وقتك وجهدك في مراجعة/إتقان الـAlgorithms، فلن تتبقى طاقة فائضة لإتقان لغة جديدة. إذا كنت ملماً باستخدام إحدى اللغات السائدة، فلا يوجد سبب قوي لتعلم لغة جديدة لمجرد المقابلات.
إذا كنت تستخدم Java في العمل منذ فترة وليس لديك وقت للإلمام المريح بلغة أخرى، فأنصحك بالالتزام بـ Java بدلاً من تعلم Python من الصفر لمجرد المقابلات. وبذلك، يمكنك تجنب التبديل بين اللغات في العمل مقابل المقابلات. في معظم الأحيان، يكون الاختناق في التفكير لا في الكتابة. يستغرق الأمر بعض التعود قبل أن يصبح المرء متمكناً من لغة وقادراً على استخدامها بسهولة.
أسباب وجيهة لتعلم لغة جديدة:
- تتطلب المقابلة استخدام تلك اللغة (أدوار خاصة بمجال معين مثل تطبيقات الهواتف/الواجهة الأمامية/علم البيانات)
- لست مستعجلاً على بدء المقابلات
أسباب ضعيفة لتعلم لغة جديدة:
- الشركة التي تُقابَل فيها تستخدم تلك اللغة بكثافة وتريد إبهار المُقابِل/إظهار أنك مناسب
- تريد إظهار أنك مواكب للموضة
3. الاستثناءات
استثناء واحد لقاعدة «اختر أي لغة برمجة تريدها» هو عندما تُقابَل لمنصب خاص بمجال معين، مثل أدوار مهندس الواجهة الأمامية/iOS/Android، حيث ستحتاج إلى الإلمام بالبرمجة بـ JavaScript وObjective-C/Swift وJava على التوالي. إذا احتجت إلى استخدام بنية بيانات لا تدعمها اللغة، مثل Queue أو Heap في JavaScript، فحاول أن تسأل المُقابِل عما إذا كان يمكنك افتراض أن لديك بنية بيانات تنفذ أساليب معينة بتعقيدات زمنية محددة. إذا لم يكن تنفيذ تلك البنية حاسماً لحل المسألة، فعادةً ما يسمح المُقابِل بذلك. في الواقع، إن الوعي بData Structures الموجودة واختيار المناسب منها لمعالجة المسألة المطروحة أهم من معرفة تفاصيل التنفيذ الدقيقة.
المصدر والرخصة
هذه الصفحة منسوخة من Tech Interview Handbook للمؤلف يانغشون تاي (Yangshun Tay)، النسخة المرجعية e1d28e8، وتُستخدم بموجب رخصة MIT — حقوق النشر (c) 2017-Present ليانغشون تاي. نص الرخصة محفوظ محلياً في /licenses/tech-interview-handbook.txt.
