تصفح الدليل

أفضل أسئلة التدريب

اعتباراً من أبريل 2022، طورت خطة دراسة مدتها 12 أسبوعاً تتضمن منهجاً للمراجعة وأسئلة تدريب. وإذا أردت تخصيص أسئلة تدريبك الخاصة، فقد طورت أيضاً Grind 75، وهي نسخة حديثة من Blind 75 يمكنك تخصيصها.

مرحباً، معك مؤلف Blind 75 👋!

التدريب هو أفضل وسيلة للاستعداد لمقابلات البرمجة. يضم LeetCode أكثر من ألف سؤال. فأيها ينبغي أن تتدرب عليه؟ لذا قبل سنوات، رتبت قائمة بأهم 75 سؤالاً على LeetCode. كثير من أسئلة LeetCode الأخرى هي مزيج من التقنيات الموجودة في هذه الأسئلة الفردية. استخدمت هذه القائمة في بحثي الأخير عن وظيفة لحل الأسئلة المهمة فقط.

شاركت هذه القائمة على Blind باستخراج الأسئلة من مقالي على freeCodeCamp لتوفير وقت الناس عند المراجعة، وأعاد أحدهم نشر القائمة على منتدى LeetCode. وقد انتشرت بطريقة ما وأصبحت شديدة الشهرة في أوساط مقابلات البرمجة، حتى أن الناس أطلقوا عليها اسماً — Blind 75. يمكن العثور على أسئلة Blind 75 كقائمة على LeetCode هنا.

وبعد سنوات، قطرّت القائمة أكثر إلى 50 سؤالاً فقط ووزعتها على جدول مدته 5 أسابيع. إليك الجدول المقترح لمراجعة أسئلة الـAlgorithms والتدرب عليها على LeetCode. أنشئ حساباً إذا لم يكن لديك واحد بالفعل، فهو جوهري لنجاحك في المقابلات!

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

أنشأت قائمة LeetCode للأسئلة التالية (ما عدا أسئلة Premium). لا تتردد في استخدامها لتتبع تقدمك في التدريب.

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

الأسبوع 1 - التسلسلات

في الأسبوع الأول، سنُحمّي بحل مزيج من الأسئلة السهلة والمتوسطة على الـArrays والـStrings. الـArrays والـStrings هما أكثر أنواع الأسئلة شيوعاً في المقابلات؛ واكتساب الألفة معهما سيساعد على بناء أساسيات قوية للتعامل مع الأسئلة الأصعب بشكل أفضل.

السؤالالصعوبةLeetCode
Two Sumسهلرابط
Contains Duplicateسهلرابط
Best Time to Buy and Sell Stockسهلرابط
Valid Anagramسهلرابط
Valid Parenthesesسهلرابط
Maximum Subarrayسهلرابط
Product of Array Except Selfمتوسطرابط
3Sumمتوسطرابط
Merge Intervalsمتوسطرابط
Group Anagramsمتوسطرابط

اختياري

السؤالالصعوبةLeetCode
Maximum Product Subarrayمتوسطرابط
Search in Rotated Sorted Arrayمتوسطرابط

الأسبوع 2 - Data Structures

يركز الأسبوع الثاني على القوائم المتصلة والـStrings والأسئلة القائمة على الـArrays ثنائية الأبعاد. الهدف هو تعلم الأساليب الشائعة للتعامل مع القوائم المتصلة، وعبور الـArrays، وتقنيات تحليل التسلسلات (الـArrays/الـStrings) مثل الـSliding Window وعبور القوائم المتصلة وعبور الـArrays ثنائية الأبعاد.

السؤالالصعوبةLeetCode
Reverse a Linked Listسهلرابط
Detect Cycle in a Linked Listسهلرابط
Container With Most Waterمتوسطرابط
Find Minimum in Rotated Sorted Arrayمتوسطرابط
Longest Repeating Character Replacementمتوسطرابط
Longest Substring Without Repeating Charactersمتوسطرابط
Number of Islandsمتوسطرابط
Remove Nth Node From End Of Listمتوسطرابط
Palindromic Substringsمتوسطرابط
Pacific Atlantic Water Flowمتوسطرابط
Minimum Window Substringصعبرابط

الأسبوع 3 - Data Structures غير الخطية

يركز الأسبوع الثالث على Data Structures غير الخطية مثل الـTrees والـGraphs والـHeaps. ينبغي أن تكون ملماً بAlgorithms عبور الـTrees المختلفة (الترتيب الوسطي والسابقي واللاحقي) وAlgorithms عبور الـGraphs مثل BFS وDFS. ومن تجربتي، فإن استخدام Graph Algorithms أكثر تقدماً (Dijkstra وFloyd-Warshall) نادر جداً وعادة غير ضروري.

السؤالالصعوبةLeetCode
Invert/Flip Binary Treeسهلرابط
Validate Binary Search Treeمتوسطرابط
Non-overlapping Intervalsمتوسطرابط
Construct Binary Tree from Preorder and Inorder Traversalمتوسطرابط
Top K Frequent Elementsمتوسطرابط
Clone Graphمتوسطرابط
Course Scheduleمتوسطرابط
Serialize and Deserialize Binary Treeصعبرابط
Binary Tree Maximum Path Sumصعبرابط

اختياري

السؤالالصعوبةLeetCode
Maximum Depth of Binary Treeسهلرابط
Same Treeسهلرابط
Binary Tree Level Order Traversalمتوسطرابط
Encode and Decode Stringsمتوسطرابط (Premium)

الأسبوع 4 - مزيد من Data Structures

يبني الأسبوع الرابع على المعرفة من الأسابيع السابقة لكن الأسئلة بصعوبة متزايدة. توقع رؤية أسئلة بهذا المستوى أثناء المقابلات. ستحصل على مزيد من التدريب على هياكل بيانات أكثر تقدماً مثل (دون حصر) Heaps وTries التي هي أقل شيوعاً لكنها لا تزال تُسأل.

السؤالالصعوبةLeetCode
Subtree of Another Treeسهلرابط
Lowest Common Ancestor of BSTمتوسطرابط
Implement Trie (Prefix Tree)متوسطرابط
Add and Search Wordمتوسطرابط
Kth Smallest Element in a BSTمتوسطرابط
Merge K Sorted Listsصعبرابط
Find Median from Data Streamصعبرابط
Insert Intervalمتوسطرابط
Longest Consecutive Sequenceمتوسطرابط
Word Search IIصعبرابط

اختياري

السؤالالصعوبةLeetCode
Meeting Roomsسهلرابط (Premium)
Meeting Rooms IIمتوسطرابط (Premium)
Graph Valid Treeمتوسطرابط (Premium)
Number of Connected Components in an Undirected Graphمتوسطرابط (Premium)
Alien Dictionaryصعبرابط (Premium)

الأسبوع 5 - الـDynamic Programming

يركز الأسبوع الخامس على أسئلة الـDynamic Programming (DP). شخصياً كمُقابِل، لست من محبي أسئلة DP لأنها لا تنطبق فعلاً على السيناريوهات العملية، وبصراحة لو طُلب مني حل أسئلة DP الصعبة أثناء مقابلاتي لما حصلت على الوظيفة. ومع ذلك، شركات مثل Google لا تزال تطرح أسئلة DP، وإذا كان الانضمام إلى Google حلمك فالـDynamic Programming لا مفر منها.

قد يصعب إتقان أسئلة الـDynamic Programming، وأفضل طريقة للتحسن فيها هي... خمّنتَها — التدريب! كن ملماً بمفهومي التخزين المؤقت للنتائج (memoization) والتراجع (backtracking).

عملياً، العائد على الاستثمار (ROI) في دراسة أسئلة الـDynamic Programming والتدرب عليها منخفض جداً. لذا فأسئلة DP أقل أهمية/اختيارية، وينبغي ألا تحلها إلا إذا كان لديك وقت فائض وكنت حريصاً جداً على تغطية كل القواعد (والمقابلة مع Google).

السؤالالصعوبةLeetCode
Climbing Stairsسهلرابط
Coin Changeمتوسطرابط
Longest Increasing Subsequenceمتوسطرابط
Combination Sumمتوسطرابط
House Robberمتوسطرابط
House Robber IIمتوسطرابط
Decode Waysمتوسطرابط
Unique Pathsمتوسطرابط
Jump Gameمتوسطرابط
Word Breakمتوسطرابط

مساق الـDynamic Programming

مساقات جيدة

إذا أردت تدريباً أكثر تنظيماً على الـAlgorithms، أوصي بالمساقات التالية:

AlgoMonster

يهدف AlgoMonster إلى مساعدتك على التفوق في المقابلة التقنية في أقصر وقت ممكن. من إعداد مهندسي Google، يستخدم AlgoMonster أسلوباً قائماً على البيانات لتعليمك أنماط الأسئلة الأساسية الأكثر فائدة، ويحتوي على مواد تساعدك على مراجعة Data Structures والـAlgorithms الأساسية بسرعة. والأفضل من ذلك كله أن AlgoMonster لا يعتمد على الاشتراك — ادفع رسماً لمرة واحدة واحصل على وصول مدى الحياة. انضم اليوم بخصم 70% ←

Grokking the Coding Interview: Patterns for Coding Questions

يوسّع هذا المساق من Design Gurus نطاق أسئلة التدريب الموصى بها، لكنه يقارب التدريب من منظور أنماط الأسئلة — وهو أسلوب أوافق عليه في التعلم أيضاً وقد استخدمته شخصياً لتحسين أدائي في مقابلات البرمجة. يتيح لك المساق التدرب على أسئلة مختارة بـ Java وPython وC++‎ وJavaScript، كما يوفر حلولاً نموذجية بتلك اللغات مع تصورات مرئية خطوة بخطوة. تعلّم الأنماط وافهمها، لا تحفظ الإجابات! احصل على وصول مدى الحياة الآن ←

Master the Coding Interview: Data Structures + Algorithms

هذا الأكثر مبيعاً على Udemy هو من أعلى مساقات الإعداد للمقابلات تقييماً (4.6 نجوم، 21.5 ألف تقييم، 135 ألف طالب) ويحشو فيه 19 ساعة من المحتوى. ومثل Tech Interview Handbook، يتجاوز مقابلات البرمجة ليغطي السيرة الذاتية والمقابلات غير التقنية والتفاوض. إنه حزمة شاملة! لاحظ أن JavaScript مستخدمة في عروض البرمجة. اطّلع عليه ←

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

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