تصفح الدليل

خطة دراسة مقابلات البرمجة - ما تدرسه وتتدرب عليه حسب الوقت المتبقي

من أهم الأسئلة الواجب الإجابة عنها في بداية تحضيرك لمقابلات البرمجة: ما موضوعات الدراسة وأسئلة التدريب التي ينبغي إنجازها للاستعداد بأكبر كفاءة لمقابلات البرمجة؟

هناك موارد وفيرة على الإنترنت، لكن قد يصعب معرفة كيف تتناسب مع الوقت المتبقي لديك للتحضير. لحسن الحظ، سيساعدك هذا المقال في ذلك.

لقد خضت شخصياً عملية مقابلات مهندس البرمجيات المرهقة عدة مرات وأعددت خطط دراستي الخاصة، محسّناً إياها في كل مرة.

في هذا المقال، سأشارك خطة الدراسة البالغة 3 أشهر التي أستخدمها شخصياً للتحضير لمقابلات البرمجة. ستجد الموضوعات الدقيقة للدراسة (مع روابط موصى بها) والأسئلة الدقيقة للتدريب (مع روابط التدريب).

وقت التحضير والنهج الموصى بهما

كم من الوقت تحتاج للتحضير لمقابلات البرمجة؟ عموماً، 3 أشهر (إذا استطعت تخصيص 11 ساعة أسبوعياً) هي المدة الموصى بها لتحضير أكثر شمولاً. سأشارك خطط دراسة موصى بها لمدة 3 أشهر (المدة الموصى بها)، لكن يمكنك توليد خطط دراسة لأسئلة التدريب لأي إطار زمني تحتاجه عبر أداة Grind 75 (من بنائي). خيارات إضافية مثل الترشيح بالصعوبة والموضوعات والتجميعات البديلة للأسئلة متوفرة هناك.

بغض النظر عن طول المدة لديك، إذا لم تكن ملماً بالمعرفة الأساسية لـData Structures والـAlgorithms، يُنصح بمراجعتها قبل البدء في التدرب على أسئلة مقابلات البرمجة. الناس يختلفون في أساليب التدريب وعليك فعل ما يناسبك أكثر. الأساليب الممكنة المختلفة هي:

  1. التحضير بالعرض أولاً - راجع كل موضوع ثم ابدأ التدرب على أسئلة متنوعة عبر جميع الموضوعات. تُنصح بهذه الاستراتيجية إذا كان لديك نحو شهر فائض.
  2. التحضير بالعمق أولاً - تناول موضوعاً واحداً في كل مرة - راجع مواد موضوع، وتدرب على أسئلة كثيرة لذلك الموضوع. بعد التأكد من إتقان موضوع، انتقل إلى الموضوع التالي. كرر ذلك لجميع الموضوعات أو موضوعات مختارة. إذا لم يكن لديك وقت كثير، فقد تكون هذه أفضل طريقة للتحضير. يمكنك التركيز على الموضوعات عالية الأولوية في خطتنا الدراسية الموصى بها.
  3. التحضير بالعمق ثم بالعرض - تناول موضوعاً واحداً في كل مرة - راجع مواد موضوع، وتدرب على بضعة أسئلة لذلك الموضوع. بعد التأكد من الإتقان، انتقل إلى الموضوع التالي. كرر ذلك لجميع الموضوعات. وفي النهاية، تدرب على أسئلة متنوعة عبر جميع الموضوعات. تستغرق هذه الاستراتيجية وقتاً أطول من غيرها، لذا تُنصح بها إذا كان لديك أكثر من شهر.

توصيتي الشخصية هي التحضير بالعرض أولاً أو التحضير بالعمق ثم بالعرض. من المهم أن يكون في جدولك شكل من الدراسة/التدريب على مستوى العرض كي لا تنسى الموضوعات المبكرة بينما تنتقل إلى موضوعات لاحقة.

خطة الدراسة البالغة 3 أشهر - مع موارد دراسة موصى بها وروابط أسئلة التدريب

في كل خطة دراسة، ستجد قائمة بموضوعات مقابلات البرمجة مع موارد وأسئلة تدريب ينبغي إنجازها حسب الأولوية كل أسبوع.

للاستفادة المثلى منها، ينبغي إنشاء قالب تقسم فيه الأيام المتبقية والساعات المتبقية يومياً، كي تملأ لاحقاً الموضوعات/الأسئلة الواجب تغطيتها يومياً.

اجعل التقدير متحفظاً نسبياً كي لا ينتهي بك الأمر إلى الإنهاك.

الأسابيع 1 - 4: دراسة موضوعية + تدريب

هذه جميع الموضوعات التي ينبغي دراستها، حسب الأولوية. موارد التعلم المرتبطة هي أوراقي المرجعية للـAlgorithms - التي تمنحك نظرة عامة على ما يجب تذكره مثل الـtime complexity والحالات الحدية والتقنيات المفيدة الخاصة بكل موضوع، إضافة إلى أسئلة تدريب أساسية وموصى بها.

لا تنس تطبيق سلوكيات أفضل ممارسات مقابلات البرمجة وأساليب تقنيات مقابلات البرمجة مبكراً أثناء تدريبك!

الأسبوع 1

الموضوعالأولويةالوقت المطلوب
الـArraysعاليةساعتان
الـStringsعالية3 ساعات
الـHash Tableمتوسطة3 ساعات
الاستدعاء الذاتيمتوسطة3 ساعات

الأسبوع 2

الموضوعالأولويةالوقت المطلوب
الترتيب والبحثعالية3 ساعات
الـMatrixعاليةساعة واحدة
القائمة المتصلةمتوسطة3 ساعات
الـQueueمتوسطةساعتان
الـStackمتوسطةساعتان

الأسبوع 3

الموضوعالأولويةالوقت المطلوب
الـTreeعالية4 ساعات
الرسم البيانيعالية4 ساعات
الـHeapمتوسطة3 ساعات
Trieمتوسطة3 ساعات

الأسبوع 4

الموضوعالأولويةالوقت المطلوب
الفواصل الزمنيةمتوسطةساعتان
الـDynamic Programmingمنخفضة4 ساعات
الثنائيمنخفضةساعتان
الرياضياتمنخفضةساعة واحدة
الهندسةمنخفضةساعة واحدة

الأسابيع 5 - 12: تدريب معمّق

هنا، سردت 75 سؤالاً ينبغي حلها لتكون مستعداً استعداداً كاملاً لمقابلات البرمجة. هذه القائمة من الأسئلة مولّدة من أداة Grind 75 (من بنائي)، التي تولّد خطط دراسة موصى بها لمقابلات البرمجة بناءً على الوقت المتبقي لديك. خيارات إضافية مثل الترشيح بالصعوبة والموضوعات والتجميعات البديلة للأسئلة متوفرة هناك.

  • إذا اتبعت خطة دراسة الأسابيع 1 - 4، فستكون قد حللت بعض هذه الأسئلة هنا. لا تتردد في تخطيها أو حلها مجدداً.
  • لا تتردد في تخطي أسئلة الـDynamic Programming إذا لم تكن قد درستها أو شعرت أنها لن تكون ذات صلة. فكثير من أسئلة الـDynamic Programming يمكن حلها بالاستدعاء الذاتي/التراجع على أي حال.

لا تنس تطبيق سلوكيات أفضل ممارسات مقابلات البرمجة وأساليب تقنيات مقابلات البرمجة مبكراً أثناء تدريبك!

نوصي باستخدام أداة Grind 75 التي تتيح لك تتبع تقدمك في التدريب.

الأسبوع 5

المسألةالصعوبةالمدة
Two Sumسهل15 دقيقة
Valid Parenthesesسهل20 دقيقة
Merge Two Sorted Listsسهل20 دقيقة
Best Time to Buy and Sell Stockسهل20 دقيقة
Valid Palindromeسهل15 دقيقة
Invert Binary Treeسهل15 دقيقة
Valid Anagramسهل15 دقيقة
Binary Searchسهل15 دقيقة
Flood Fillسهل20 دقيقة
Lowest Common Ancestor of a Binary Search Treeمتوسط20 دقيقة
Balanced Binary Treeسهل15 دقيقة
Linked List Cycleسهل20 دقيقة

الأسبوع 6

المسألةالصعوبةالمدة
Implement Queue using Stacksسهل20 دقيقة
First Bad Versionسهل20 دقيقة
Ransom Noteسهل15 دقيقة
Climbing Stairsسهل20 دقيقة
Longest Palindromeسهل20 دقيقة
Reverse Linked Listسهل20 دقيقة
Majority Elementسهل20 دقيقة
Add Binaryسهل15 دقيقة
Diameter of Binary Treeسهل30 دقيقة
Middle of the Linked Listسهل20 دقيقة
Maximum Depth of Binary Treeسهل15 دقيقة
Contains Duplicateسهل15 دقيقة

الأسبوع 7

المسألةالصعوبةالمدة
Min Stackمتوسط20 دقيقة
Maximum Subarrayمتوسط20 دقيقة
Insert Intervalمتوسط25 دقيقة
01 Matrixمتوسط30 دقيقة
K Closest Points to Originمتوسط30 دقيقة
Longest Substring Without Repeating Charactersمتوسط30 دقيقة
3Sumمتوسط30 دقيقة
Binary Tree Level Order Traversalمتوسط20 دقيقة
Clone Graphمتوسط25 دقيقة
Evaluate Reverse Polish Notationمتوسط30 دقيقة

الأسبوع 8

المسألةالصعوبةالمدة
Course Scheduleمتوسط30 دقيقة
Implement Trie (Prefix Tree)متوسط35 دقيقة
Coin Changeمتوسط25 دقيقة
Product of Array Except Selfمتوسط30 دقيقة
Validate Binary Search Treeمتوسط20 دقيقة
Number of Islandsمتوسط25 دقيقة
Rotting Orangesمتوسط30 دقيقة
Search in Rotated Sorted Arrayمتوسط30 دقيقة

الأسبوع 9

المسألةالصعوبةالمدة
Combination Sumمتوسط30 دقيقة
Permutationsمتوسط30 دقيقة
Merge Intervalsمتوسط30 دقيقة
Lowest Common Ancestor of a Binary Treeمتوسط25 دقيقة
Time Based Key-Value Storeمتوسط35 دقيقة
Accounts Mergeمتوسط30 دقيقة
Sort Colorsمتوسط25 دقيقة
Word Breakمتوسط30 دقيقة

الأسبوع 10

المسألةالصعوبةالمدة
Partition Equal Subset Sumمتوسط30 دقيقة
String to Integer (atoi)متوسط25 دقيقة
Spiral Matrixمتوسط25 دقيقة
Subsetsمتوسط30 دقيقة
Binary Tree Right Side Viewمتوسط20 دقيقة
Longest Palindromic Substringمتوسط25 دقيقة
Unique Pathsمتوسط20 دقيقة
Construct Binary Tree from Preorder and Inorder Traversalمتوسط25 دقيقة
Container With Most Waterمتوسط35 دقيقة

الأسبوع 11

المسألةالصعوبةالمدة
Letter Combinations of a Phone Numberمتوسط30 دقيقة
Word Searchمتوسط30 دقيقة
Find All Anagrams in a Stringمتوسط30 دقيقة
Minimum Height Treesمتوسط30 دقيقة
Task Schedulerمتوسط35 دقيقة
LRU Cacheمتوسط30 دقيقة
Kth Smallest Element in a BSTمتوسط25 دقيقة
Minimum Window Substringصعب30 دقيقة

الأسبوع 12

المسألةالصعوبةالمدة
Serialize and Deserialize Binary Treeصعب40 دقيقة
Trapping Rain Waterصعب35 دقيقة
Find Median from Data Streamصعب30 دقيقة
Word Ladderصعب45 دقيقة
Basic Calculatorصعب40 دقيقة
Maximum Profit in Job Schedulingصعب45 دقيقة
Merge k Sorted Listsصعب30 دقيقة
Largest Rectangle in Histogramصعب35 دقيقة

خصص وقتاً لنبذتك التعريفية وأسئلتك الختامية ومقابلات البرمجة التجريبية

إضافة إلى الدراسة والتدريب لمقابلات البرمجة، ينبغي أيضاً تحضير نبذتك التعريفية وأسئلتك الختامية، وتجربة مقابلات برمجة تجريبية.

حضّر نبذة تعريفية عن النفس وأسئلة ختامية لطرحها

أقترح تخصيص نحو 3 ساعات لصياغة نبذتك التعريفية وتحضير بعض الأسئلة الختامية لطرحها. يمكنك الرجوع إلى دليل النبذة التعريفية ودليل الأسئلة الختامية لطرحها اللذين ينبغي أن يساعداك على إتمام هذه الخطوات بسرعة إلى حد ما.

جدول مقابلات برمجة تجريبية

ينبغي البدء بجدولة مقابلات البرمجة التجريبية عندما تبلغ 60% من خطة دراستك وتدريبك لمقابلات البرمجة. خانات المقابلات يوفرها المُقابِلون عادة، لذا يمكنك الاطلاع عليها مسبقاً وحجزها. المنصة التي استخدمتها شخصياً وأوصي بها هي interviewing.io. اقرأ المزيد عن منصات مقابلات البرمجة التجريبية المختلفة هنا.

المصدر والرخصة

هذه الصفحة منسوخة من Tech Interview Handbook للمؤلف يانغشون تاي (Yangshun Tay)، النسخة المرجعية e1d28e8، وتُستخدم بموجب رخصة MIT — حقوق النشر (c) 2017-Present ليانغشون تاي. نص الرخصة محفوظ محلياً في /licenses/tech-interview-handbook.txt.