أفضل أسئلة التدريب
اعتباراً من أبريل 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.
