00:00:00دعونا نتحدث عن مقابلات البرمجة. صدق أو لا تصدق، يكره مهندسو البرمجيات هذه المقابلات
00:00:05أكثر من كرههم للاختلاط الاجتماعي. ربما لا يمثل الأمر مشكلة كبيرة إذا كنت من الأشخاص الذين
00:00:09حلوا 500 مسألة على “LeetCode”. ولكن بالنسبة لبقيتنا الذين يغالبهم النعاس عند محاولة حل سؤال ما،
00:00:16ويستعينون سراً بالذكاء الاصطناعي لوضع علامة “تم الحل”، فالأمر جلل. ولكن إليكم الجزء الأسوأ؛
00:00:21حتى لو قمت بحل 500 مسألة، فمن الممكن أن تُرفض. وهذا ليس
00:00:27مجرد رأيي الشخصي. كنت أتصفح موقع “Reddit” وأقرأ قصصاً واقعية لمرشحين فعلوا كل شيء
00:00:33بشكل صحيح ومع ذلك فشلوا. لذا، إذا كنت لا تريد أن يحدث ذلك معك، فهذا الفيديو سيساعدك. لأنني اليوم
00:00:38سأعطيك إطار عمل واضحاً وقابلاً للتكرار يمكنك استخدامه فعلياً لاجتياز
00:00:43مقابلات البرمجة الخاصة بك. أطلقت عليه اسم “TECT”. لقد ساعدني هذا الإطار في الحصول على وظيفتي الأولى، وبعد البحث
00:00:49في كيفية أداء المرشحين الناجحين في المقابلات، أدركت شيئاً مثيراً للاهتمام. معظم المتفوقين
00:00:54يتبعون هذه العملية نفسها تماماً دون وعي منهم. لذا، لنرَ كيف يمكنك استخدام إطار عمل “TECT”
00:01:00في مقابلة البرمجة الخاصة بك. حرف “T” في إطار العمل يرمز لـ “Think” أي (فكر). ومعنى هذا، لنفترض
00:01:06أن مقابلة البرمجة قد بدأت للتو وأعطاك المحاور السؤال. فالمرحلة
00:01:10الأولى هي التفكير في الحل. قد يظن الكثير منكم أن هذا أمر بديهي،
00:01:16لكن انتظروا معي قليلاً. الخطأ الذي يجب تجنبه في هذه المرحلة هو التفكير في
00:01:21الحل الأمثل أولاً. لا تفكر في كيفية استخدام ذاكرة أقل أو جعل الكود يعمل بشكل أسرع.
00:01:26فقط فكر في كيفية حله. ولكن ماذا لو كنت تعرف الحل الأمثل؟ قد تكون هناك
00:01:31حالات تكون فيها على دراية بالسؤال وتعرف الحل الأمثل مسبقاً. فماذا
00:01:35يجب أن تفعل حينها؟ سأجيب على هذا في المرحلة الثانية. يجب أن تكون نتيجة هذه المرحلة الأولى
00:01:40هي أن يكون لديك حل في ذهنك حول كيفية معالجة المسألة. وبعد أن تعرف كيفية
00:01:44حلها، ننتقل إلى المرحلة الثانية: “Explain” (اشرح). ما يفعله معظم الناس هو أنهم
00:01:50يفكرون في الحل ويقفزون مباشرة إلى التنفيذ دون أن ينطقوا
00:01:55بكلمة واحدة. وهذا يعتبر علامة خطر لدى معظم المحاورين. ما يجب عليك فعله هو
00:02:00بعد أن يتكون الحل في ذهنك، أن تشرح للمحاورين
00:02:04الحل وعملية تفكيرك بشكل عام. لنفترض أن السؤال الذي حصلت عليه في المقابلة هو
00:02:08مسألة “3Sum” الشهيرة. بدلاً من التفكير والقفز مباشرة للكود، فكر وتواصل
00:02:14مع المحاور أولاً. يمكنك قول شيء مثل: “بما أننا نحتاج لإيجاد ثلاثة أرقام
00:02:19مجموعها يساوي هدفاً معيناً، فإن أحد الأساليب المباشرة هو استخدام الحلقات المتداخلة وفحص كل الاحتمالات الممكنة”.
00:02:23بهذه الطريقة، افصح عن أفكارك كاملة حول كيفية حلك للمسألة ولماذا
00:02:28ستنجح. إذا كنت قد حللت السؤال من قبل وتعرف الإجابة، فلا يجب أن تتحدث عن
00:02:33الحل الأمثل أولاً. قبل ذلك، اعترف بحل “القوة الغاشمة” (Brute Force). وذلك لأن
00:02:39التحدث مباشرة عن الحل الأمثل قد يعطي انطباعاً بأنك حفظته. ولتجنب ذلك، ابدأ
00:02:45بشرح عملية تفكيرك بدءاً من نهج القوة الغاشمة، ثم تحدث عن
00:02:49الحل الأمثل بعد ذلك. يمكنك قول شيء مثل: “هذا الحل يعمل ولكنه ليس مثالياً. بدلاً من
00:02:55استخدام ثلاث حلقات، يمكننا فرز المصفوفة واستخدام نهج المؤشرين لتقليل التعقيد الزمني”
00:03:01واشرح كامل عملية تفكيرك. قبل أن ننتقل إلى الجزء التالي من
00:03:05إطار عمل “TECT”، أريد التحدث سريعاً عن راعي هذا الفيديو. إذا كنت تشعر أن “LeetCode”
00:03:11صعب وينتهي بك الأمر دائماً بحفظ الحل، فمنصة “AlgoMonster” هي الحل لك. هي منصة
00:03:16للتحضير لمقابلات البرمجة تركز على التعلم القائم على الأنماط بدلاً من التدريب العشوائي. الفكرة
00:03:22بسيطة؛ معظم أسئلة المقابلات مبنية على مجموعة صغيرة من الأنماط الأساسية، وبمجرد
00:03:27فهمك لهذه الأنماط، لن تحتاج لحفظ مئات المسائل. هم يوفرون مخططات
00:03:32انسيابية لمساعدتك على التعامل بشكل منهجي مع أي سؤال، بالإضافة إلى قوالب كود قابلة لإعادة الاستخدام.
00:03:38“AlgoMonster” ليست مجرد منصة تحصل فيها على قائمة مسائل للتدريب عليها فقط،
00:03:44بل توفر لك طريقة أكثر تنظيماً وكفاءة للتحضير لمقابلاتك البرمجية.
00:03:47توجد خطة مجانية متاحة، وإذا أردت، يمكنك أيضاً تجربة النسخة المدفوعة
00:03:52للحصول على قيمة وتنظيم أكبر في تعلمك. يمكنك الحصول على خصم 50%؛ الرابط في
00:03:58الوصف. دعونا نعود للخطوة التالية في إطار عمل “TECT”. الآن بعد أن توصلت إلى
00:04:02الحل وشرحته للمحاور، تأتي المرحلة التالية. هذه المرحلة مباشرة؛
00:04:08ستكتب الكود الخاص بحلك. ولكن هنا يقع معظم المطورين في الخطأ؛ فهم يلتزمون
00:04:13الصمت أثناء البرمجة. في معظم المقابلات، سيطلب منك المحاور شرح الكود الذي كتبته. فإذا
00:04:18كتبت الكود بصمت، فمن المحتمل أن يطلب منك المحاور شرحه لاحقاً.
00:04:23لكن الأفضل هو الشرح بينما تقوم بالكتابة فعلياً. لنفترض أنك بدأت البرمجة؛
00:04:28قمت بتعريف مصفوفة فارغة لتخزين النتائج. لتوضيح الغرض منها، يمكنك قول
00:04:33شيء مثل: “سأقوم بتعريف مصفوفة فارغة لتخزين النتائج...” وأكمل شرحك
00:04:39للكود الذي ستكتبه. ثق بي، هذا فعال جداً وسيحبه المحاورون. كما يساعد هذا
00:04:45في ضمان وجود تفاعل مستمر بينك وبين المحاور، ويثبت أيضاً
00:04:50أنك تعرف ما تفعله حقاً. مشكلة أخرى قد تواجهها هي أنك قد تنسى
00:04:55بناء الجملة (Syntax) أو اسم وظيفة (Function) معينة. في هذه الحالة، لا ترتكب خطأ التوقف عند
00:05:01نفس السطر ومحاولة تذكره. إذا لم تستطع التذكر، اترك تعليقاً بسيطاً واستمر في الكود
00:05:06وعد إلى ذلك السطر بعد الانتهاء. بهذه الطريقة، لن تضيع وقتك في محاولة
00:05:11تذكر تفصيلة برمجية واحدة. وإذا لم تستطع تذكرها على الإطلاق، فقط اعترف بذلك للمحاور.
00:05:16أحياناً قد يعطونك تلميحات أو يطلبون منك البحث عنها. وهذا ينقلنا للمرحلة الأخيرة.
00:05:21بعد أن يصبح الكود جاهزاً، الخطوة التالية هي اختباره (Test). في بعض الحالات، قد يعطيك
00:05:27المحاور المدخلات والمخرجات المتوقعة. ولكن إذا لم يفعل، عليك كتابة حالات الاختبار الخاصة بك.
00:05:32حاول التفكير في حالة اختبار أساسية. وإذا استطعت التفكير في الحالات الاستثنائية (Edge Cases)، فذلك أفضل.
00:05:38تأكد فقط من أن الكود الخاص بك يمكنه التعامل معها. بعد تشغيل الكود، ليس مضموناً 100% أنه سيعمل.
00:05:43يمكن أن يحدث أمران؛ إما أن يعمل الكود أو يظهر خطأ ما. إذا عمل، فهذا رائع. وإذا لم يعمل،
00:05:48فإليك ما يجب فعله: أولاً، لا داعي للذعر. لأنك إذا قمت بحل
00:05:53المسألة من قبل وكنت واثقاً من نهجك، فغالباً ما يكون مجرد خطأ بسيط في الكود أو المنطق. لذا لا تقلق
00:05:59واقرأ رسالة الخطأ وقم بإصلاحها. ما يفعله معظم الناس هو أنهم لا يقرأون رسالة الخطأ بشكل صحيح
00:06:05ويبدأون في قراءة الكود من البداية بسبب الضغط. لا بأس إذا لم يعمل الكود في
00:06:09المحاولة الأولى؛ لن يخصم المحاور نقاطاً على خطأ بسيط. إذا سار كل شيء على ما يرام
00:06:14وكنت محظوظاً، قد يكتفي المحاور ببعض الأسئلة الأساسية حول الحل
00:06:19ثم ينتقل للسؤال التالي. ولكن إذا كنت تتقدم لوظيفة بمستوى متوسط أو خبير،
00:06:24فقد تُسأل عن النهج الأمثل. في الحالتين، عليك فقط تكرار إطار العمل هذا
00:06:30خلال المقابلة. إذن، هذا هو إطار العمل البسيط وسهل التذكر
00:06:34إذا كنت ستخوض مقابلة برمجة. مقابلات البرمجة لا تتعلق بالكود فقط،
00:06:40بل تتعلق أيضاً بالتواصل. المحاورون لا يريدون فقط رؤية الكود الخاص بك، بل يريدون
00:06:44معرفة فيما تفكر وكيف تفكر. ضع هذا الشيء الوحيد في اعتبارك؛ التواصل
00:06:49مهم جداً حتى في مقابلات البرمجة. لقد تحدثت مع مسؤولي التوظيف واتفقوا جميعاً
00:06:54على أن عدم تواصل المرشح كثيراً يُعد علامة سلبية بالنسبة لهم. لذا ضع هذا في اعتبارك،
00:06:59وتأكد من تجربة “AlgoMonster” للتحضير لمقابلتك. هذا كل شيء في هذا الفيديو،
00:07:04وبالتوفيق في مقابلتك. لا تنسوا دعم الفيديو بالإعجاب.
00:07:07أراكم في الفيديو القادم.