ملخص الرياضيات للمقابلات البرمجية
مقدمة
الرياضيات جانب أساسي في علوم الحاسوب، ويحتاج كل مبرمج وعالم حاسوب إلى معرفة رياضية أساسية. ولحسن الحظ، لن تتضمن مقابلات البرمجة عادةً قدراً كبيراً من الرياضيات، لكن معرفة بعض التقنيات الرياضية الأساسية مفيدة، إذ قد يُطلب منك تنفيذ عمليات رياضية.
أمور يجب الانتباه لها أثناء المقابلات
- إذا تضمنت الشيفرة قسمة أو باقي قسمة (modulo)، فتذكر التحقق من حالة القسمة أو باقي القسمة على 0.
- تحقق من حدوث طفح (overflow) أو طفح سفلي (underflow) وعالجهما إذا كنت تستخدم لغة ذات أنواع معرفة مثل Java وC++. وعلى الأقل، اذكر أن الطفح ممكن واسأل عما إذا كنت بحاجة إلى معالجته.
- ضع في الحسبان الأعداد السالبة والأعداد ذات الفاصلة العائمة. قد يبدو هذا بديهياً، لكن تحت ضغط المقابلة تمر حالات بديهية كثيرة دون أن تُلاحَظ.
الحالات الحدّية
- القسمة على 0
- الضرب في 1
- الأعداد السالبة
- الأعداد العائمة
صيغ شائعة
| الصيغة | |
|---|---|
| التحقق مما إذا كان العدد زوجياً | num % 2 == 0 |
| مجموع الأعداد من 1 إلى N | 1 + 2 + ... + (N - 1) + N = (N+1) * N/2 |
| مجموع متتابعة هندسية | 20 + 21 + 22 + 23 + ... 2n = 2n+1 - 1 |
| تباديل N | N! / (N-K)! |
| توافيق N | N! / (K! * (N-K)!) |
تقنيات
مضاعفات عدد
عندما تتضمن المسألة «ما إذا كان عدد ما مضاعفاً لـ X»، سيكون عامل باقي القسمة مفيداً.
مقارنة الأعداد العائمة
عند التعامل مع الأعداد ذات الفاصلة العائمة، انتبه لأخطاء التقريب. فكّر في استخدام مقارنات إبسيلون بدلاً من فحوصات التساوي، مثل abs(x - y) <= 1e-6 بدلاً من x == y.
عوامل سريعة
إذا طلبت منك المسألة تنفيذ عامل مثل الأس أو الجذر التربيعي أو القسمة وأرادت أن يكون أسرع من O(n)، فإن أسلوباً من نوع المضاعفة (الأسس السريعة) أو التنصيف (الـBinary Search) هو عادةً الطريق المتبع. أمثلة: Pow(x, n)، Sqrt(x)
أسئلة أساسية
هذه أسئلة أساسية للتدريب عليها إذا كنت تدرس هذا الموضوع.
أسئلة تدريب موصى بها
هذه أسئلة موصى بالتدريب عليها بعد أن تدرس الموضوع وتتدرب على الأسئلة الأساسية.
المصدر والرخصة
هذه الصفحة منسوخة من Tech Interview Handbook للمؤلف يانغشون تاي (Yangshun Tay)، النسخة المرجعية e1d28e8، وتُستخدم بموجب رخصة MIT — حقوق النشر (c) 2017-Present ليانغشون تاي. نص الرخصة محفوظ محلياً في /licenses/tech-interview-handbook.txt.
