في مقال اليوم، سنتحدث عن كيفية إجراء مقابلات البرمجة. سأنقل لكم خبرتي المتواضعة خلال السنوات التسع الماضية في شركات مختلفة، سواء كانت شركات تعمل من مقراتها هنا في مصر أو شركات تعمل عن بعد خارج مصر.
الإجراءات الأساسية قبل المقابلة
في مقال سابق، تحدثنا عن المتطلبات التي يجب عليك إعدادها، مثل السيرة الذاتية، وحساب لينكدإن، وحساب جيت هاب، وتعلم التحكم في الإصدارات (Version Control)، بالإضافة إلى بعض العناصر الأساسية التي يجب تضمينها في مشاريعك.
لنفترض اليوم أنك أصبحت مطور واجهات أمامية (Front-end)، أو خلفية (Back-end)، أو مطورًا شاملًا (Full-stack)، أو متخصصًا في أي من المجالات المطلوبة في سوق العمل حاليًا، وتلقيت دعوة لإجراء مقابلة بعد التقديم عبر لينكدإن.
التحضيرات:
- الملابس الرسمية: من الضروري تجهيز ملابسك الرسمية، سواء كنت ذكرًا أم أنثى. الذهاب بمظهر رسمي يعطي انطباعًا بالجدية للشركة.
- البحث عن الشركة: من المهم أن تكون قد قرأت عن الشركة وأهدافها والخدمات التي تقدمها. عندما يعلم القائم بإجراء المقابلة أنك مهتم بالشركة، فإن ذلك يترك انطباعًا إيجابيًا.
يتم تحديد موعد المقابلة معك، سواء كانت شخصية في مقر الشركة (On-site) أو عن بعد (Remote). لنبدأ بالحديث عن المقابلات الشخصية.
المقابلة الأولى: مسؤول التوظيف (HR)
عادةً ما تكون المقابلة الأولى مع مسؤول التوظيف أو أخصائي الموارد البشرية. بعد تحديد الموعد ووصولك إلى الشركة، سيبدأ المقابل بالترحيب بك وطرح بعض الأسئلة العامة مثل مكان سكنك. قد تكون بعض هذه المعلومات موجودة بالفعل في سيرتك الذاتية، ولكن الهدف هو كسر حاجز التوتر وجعل الأجواء أقل رسمية.
نصائح لهذه المرحلة:
- تعامل مع الموقف ببساطة وهدوء.
- تذكر أن الهدف من المقابلة ليس فقط الحصول على الوظيفة، بل أيضًا اكتشاف نقاط ضعفك للعمل على تقويتها مستقبلًا.
الأسئلة الشائعة:
- معلومات شخصية: أسئلة حول حياتك الشخصية.
- الراتب المتوقع (Expected Salary): سيتم سؤالك عن الراتب الذي تتوقعه لهذا المنصب.
كيفية الإجابة على سؤال الراتب: كمبتدئ (Junior) أو حديث تخرج، يُنصح بعدم تحديد راتب متوقع مرتفع. من المهم أن توضح للمقابل أن الأولوية بالنسبة لك هي التعلم واكتساب الخبرة. يمكنك القول: “أنا حاليًا لا أركز على الراتب بقدر تركيزي على فرصة التعلم. كما أن الشركة ستفيدني بخبرتها، أنا أيضًا سأفيد الشركة بما تعلمته في مشاريعي وسأعمل على تطوير نفسي والشركة معًا.”
قد تُسأل أيضًا عن مدى صعوبة الوصول إلى مكان العمل إذا كان بعيدًا، أو إذا كنت ستقبل بالوظيفة في حال كانت الإمكانيات المادية التي تقدمها الشركة في البداية محدودة. يُنصح بالرد بمرونة، مع الأخذ في الاعتبار أن الجانب المادي مهم لتغطية تكاليف المواصلات في حالة العمل من مقر الشركة.
المقابلة الثانية: المقابلة الفنية (Technical Interview)
بعد اجتياز المقابلة الأولى، ستنتقل إلى المقابلة الفنية مع شخص تقني، والذي غالبًا ما يكون قائد الفريق (Team Lead). هذا الشخص سيقوم بتقييم مهاراتك الفنية.
أسئلة لمطوري الواجهات الأمامية (Frontend)
- HTML: سيتم سؤالك عن أساسيات HTML، مثل:
- ما هي HTML؟ (HyperText Markup Language)، وهي لغة تستخدم لهيكلة صفحات الويب.
- ما وظيفة الوسوم (Tags) المختلفة مثل
<p>
(فقرة) و<a>
(رابط) وسمةhref
.
- CSS و JavaScript: سيتم سؤالك عن CSS ثم JavaScript، بما في ذلك مفاهيم مثل DOM و BOM.
- هل HTML و CSS لغات برمجة؟ الإجابة هي لا. HTML هي لغة توصيف، و CSS هي لغة تنسيق.
- أطر العمل والمكتبات:
- هل Bootstrap إطار عمل (Framework)؟ نعم.
- هل jQuery إطار عمل؟ لا، هي مكتبة (Library).
- سيتم سؤالك عن أطر العمل التي تتقنها مثل React.js، Angular.js، أو Vue.js.
أسئلة لمطوري الواجهات الخلفية (Backend)
- لغات البرمجة: سيتم سؤالك عن لغة البرمجة التي تستخدمها، مثل:
- PHP مع Laravel و MySQL.
- Python مع Django و PostgreSQL.
- C# مع ASP.NET و SQL Server.
- MERN Stack.
- البرمجة كائنية التوجه (OOP):
- سيتم سؤالك عن معنى OOP ومبادئها الأربعة الأساسية:
- التجريد (Abstraction): تبسيط الأنظمة المعقدة عن طريق إخفاء التفاصيل غير الضرورية. مثال: عند استخدام آلة صنع القهوة، أنت تتعامل مع واجهة بسيطة دون الحاجة لمعرفة كيفية عملها داخليًا.
- التغليف (Encapsulation): تجميع البيانات والأساليب التي تعمل عليها داخل وحدة واحدة (كائن).
- الوراثة (Inheritance): السماح لكائن باكتساب خصائص وسلوكيات كائن آخر.
- تعدد الأشكال (Polymorphism): قدرة كائن على اتخاذ أشكال متعددة.
- سيتم سؤالك عن معنى OOP ومبادئها الأربعة الأساسية:
- أطر العمل: سيتم سؤالك عن إطار العمل الذي تستخدمه، مثل Laravel. قد تُسأل عن كيفية تثبيت حزمة (Package) باستخدام أمر مثل
composer install
. - واجهة برمجة التطبيقات (API): سيتم سؤالك عن مفهوم API ودورها في الربط بين التطبيقات المختلفة.
- مبادئ SOLID: قد تُسأل عن مبادئ SOLID الخمسة، مثل مبدأ المسؤولية الواحدة (Single Responsibility Principle) الذي ينص على أن كل وظيفة (Function) يجب أن تؤدي مهمة واحدة فقط.
- الهيكليات المعمارية (Architecture): إذا كنت متقدمًا لمنصب متقدم (Senior)، قد تُسأل عن الهيكليات التي تعمل بها، مثل:
- MVC (Model-View-Controller):
- Model: الجزء المسؤول عن التعامل مع قاعدة البيانات.
- View: الواجهة التي يراها المستخدم.
- Controller: الجزء الذي يحتوي على منطق العمل ويربط بين الـ Model والـ View.
- HMVC (Hierarchical Model-View-Controller): وهي بنية مشابهة لـ MVC ولكنها أكثر تنظيمًا وتستخدم في أطر عمل مثل Laravel.
- MVC (Model-View-Controller):
بعد ذلك، سيقوم المقابل الفني بالاطلاع على حسابك في جيت هاب ومراجعة مشاريعك.
المهمة الفنية (The Technical Task)
بعد المقابلة الفنية، هناك سيناريوهان:
- القبول المباشر: قد ترى الشركة أنك مؤهل بما فيه الكفاية وتُقبل مباشرة.
- طلب مهمة فنية (Task): قد تطلب منك الشركة إنجاز مهمة صغيرة باستخدام التقنيات التي تتقنها.
نصائح حول المهمة الفنية:
- إذا كانت المهمة كبيرة وتتطلب يومًا أو يومين لإنجازها، فمن الأفضل عدم القيام بها، لأنها قد تكون بمثابة عمل غير مدفوع للشركة.
- إذا كانت مدة المهمة تتراوح بين 4 و 8 ساعات، فهذا معقول. الوقت المثالي للمهمة هو ما بين 4 و 6 ساعات.
ما بعد المقابلة
بعد استلام المهمة، قم بتنفيذها وتسليمها في الموعد النهائي المحدد عن طريق رفعها على جيت هاب ومشاركة الرابط معهم.
- إذا تم قبولك: تهانينا!
- إذا لم يتم قبولك: لا تيأس. استمر في التقديم لشركات أخرى وحاول معرفة نقاط الضعف التي لاحظتها الشركة للعمل على تحسينها.
المقابلات عن بعد (Remote Interviews)
تختلف المقابلات عن بعد قليلًا، حيث تتم عبر تطبيقات مثل Google Meet أو Zoom.
- الإجراءات: هي نفسها تقريبًا: مقابلة أولى مع مسؤول التوظيف، تليها مقابلة فنية.
- اللغة الإنجليزية: إذا كنت تتقدم لشركات خارج بلدك، فمن الضروري أن تكون لغتك الإنجليزية جيدة، حيث أن المقابلات غالبًا ما تكون باللغة الإنجليزية.
- فروق التوقيت: كن مستعدًا للتعامل مع فروق التوقيت. على سبيل المثال، عند العمل مع شركة في أمريكا، قد يكون هناك فرق توقيت يصل إلى 8 ساعات، مما يعني أن بداية يوم عملك قد تكون في وقت متأخر من الليل أو في الصباح الباكر. سيسألك المقابل الفني عما إذا كان هذا الوقت مناسبًا لك.
خلاصة
عند إجراء مقابلة عمل في مجال البرمجة، ستمر عادة بمرحلتين رئيسيتين:
- مقابلة عامة: مع مسؤول التوظيف لمناقشة معلوماتك الشخصية والاطلاع على سيرتك الذاتية وحسابك على لينكدإن.
- مقابلة فنية: لتقييم مهاراتك التقنية، ومراجعة مشاريعك، وقد يُطلب منك إنجاز مهمة لتقييم جودة الكود الذي تكتبه وما إذا كان يتبع مبادئ مثل OOP و SOLID.
إذا لم يتم قبولك في وظيفة ما، حاول دائمًا أن تسأل المقابل عن نقاط ضعفك لكي تتمكن من تطويرها والنجاح في مقابلات مستقبلية مع شركات أخرى.