أسئلة مقابلات Python مع الإجابات
110 سؤال من أسئلة مقابلات العمل في Python، مقسمة على 12 موضوعات: Python Fundamentals وData Model & Object Protocols وFunctions & Functional Patterns وType Hints & Static Analysis وExceptions & Resource Safety وConcurrency, Threads & Asyncio وTesting & Quality وPackaging & Tooling وPerformance & Profiling وWeb, APIs & Data Integration وWeb Frameworks & ORMs وData Processing & Parallelism. تغطي الأسئلة المستويات مبتدئ ومتوسط ومتقدم، ولكل سؤال إجابة مختصرة تقولها في الانترفيو، وشرح أعمق، وأخطاء شائعة، وروابط للمصادر الرسمية مع تاريخ آخر مراجعة.
الموضوعات
Python Fundamentals
10 سؤال
Data Model & Object Protocols
10 سؤال
Functions & Functional Patterns
10 سؤال
Type Hints & Static Analysis
10 سؤال
Exceptions & Resource Safety
10 سؤال
Concurrency, Threads & Asyncio
10 سؤال
Testing & Quality
10 سؤال
Packaging & Tooling
10 سؤال
Performance & Profiling
10 سؤال
Web, APIs & Data Integration
10 سؤال
Web Frameworks & ORMs
6 سؤال
Data Processing & Parallelism
4 سؤال
أسئلة مقابلات Python Fundamentals في Python
- ماذا يحدث للكود في Python منذ لحظة تشغيله؟
- ما الفرق بين الكائنات mutable و immutable في Python؟
- متى تختار list أو tuple أو set أو dict؟
- ما استخدام list و dict comprehensions ومتى تصبح عبئًا على القراءة؟
- ما الفرق بين is و == في Python؟
- كيف تحدد Python أن قيمة ما truthy أو falsy؟
- ما فائدة unpacking و starred expressions؟
- ماذا يفعل slicing في list و str وهل ينتج نسخة؟
- ما الفرق بين module و package وكيف يعمل import؟
- لماذا نستخدم if __name__ == "__main__"؟
أسئلة مقابلات Data Model & Object Protocols في Python
- ما العلاقة بين __eq__ و __hash__ في Python؟
- ما الفرق بين shallow copy و deep copy؟
- ما الفرق بين iterable و iterator؟
- كيف تقلل generators و yield استهلاك الذاكرة؟
- ما البروتوكول الذي يجعل الكائن قابلًا للاستخدام في حلقة for؟
- متى تستخدم property بدل getter و setter صريحين؟
- ماذا يقدم الديكوريتور @dataclass؟
- ما فائدة __slots__ وما التنازلات المرتبطة بها؟
- كيف يعمل MRO و super() مع الوراثة المتعددة؟
- ما البروتوكول الذي يطبقه context manager؟
أسئلة مقابلات Functions & Functional Patterns في Python
- ما الفرق بين positional-only و keyword-only parameters؟
- لماذا تُعد list كقيمة افتراضية لمعامل الدالة مشكلة؟
- كيف يعمل *args و **kwargs؟
- ما هي closure وما مشكلة late binding داخل الحلقات؟
- كيف تكتب decorator يحافظ على بيانات الدالة الأصلية (metadata)؟
- اشرح قاعدة LEGB في حل الأسماء.
- متى تستخدم lambda ومتى تستخدم def؟
- ما فائدة functools.partial؟
- ما حدود الاستدعاء التعاودي (recursion) في Python ومتى تختار حلقة؟
- ماذا يعني أن الدوال في Python كائنات من الدرجة الأولى (first-class)؟
أسئلة مقابلات Type Hints & Static Analysis في Python
- هل تُفرض type hints وقت التشغيل في Python؟
- كيف تعبر عن قيمة قد تكون من نوعين أو None؟
- ما هو Protocol في typing؟
- ما دور TypeVar و Generic في Python؟
- متى تستخدم TypedDict مع بيانات JSON؟
- ما استخدام Final و Literal؟
- متى تستخدم @overload؟
- ما الفرق بين Any و object في type hints؟
- ما فائدة TypeGuard و TypeIs في تضييق الأنواع؟
- كيف تستخدم typing لتحسين حدود الموديولات دون إفراط؟
أسئلة مقابلات Exceptions & Resource Safety في Python
- كيف تختار الاستثناء المناسب وتتعامل مع تسلسله الهرمي؟
- ما الفرق بين except و else و finally في جملة try؟
- متى تنشئ استثناءً مخصصًا (custom exception)؟
- ما الفرق بين أسلوبي EAFP و LBYL؟
- ما فائدة raise ... from؟
- كيف تساعد contextlib في إدارة الموارد؟
- كيف تسجّل استثناءً دون أن تفقد الـ traceback؟
- كيف تصمم timeouts و retries دون أن تضاعف الضرر؟
- متى تحتاج ExceptionGroup و except*؟
- أين يجب وضع التحقق من البيانات القادمة من خارج النظام؟
أسئلة مقابلات Concurrency, Threads & Asyncio في Python
- ما تأثير الـ GIL في CPython، وما الذي تغير مع النسخة free-threaded؟
- متى تختار threading ومتى multiprocessing؟
- ما هو event loop وما دور الـ coroutine في asyncio؟
- ما الفرق بين coroutine و Task و Future في asyncio؟
- ما الفرق العملي بين asyncio.gather و TaskGroup؟
- كيف تتعامل مع الإلغاء (cancellation) في asyncio؟
- كيف تشغّل دالة حاجبة (blocking) داخل asyncio؟
- ما دور asyncio.Queue في نمط producer-consumer؟
- متى تحتاج Lock في كود متزامن؟
- ما فائدة الموديول concurrent.futures؟
أسئلة مقابلات Testing & Quality في Python
- ما الفرق بين unit tests و integration tests؟
- ما دور fixtures في pytest؟
- كيف تختبر حالات متعددة دون تكرار الكود؟
- كيف تستخدم mock و patch بشكل صحيح؟
- كيف تختبر الكود غير المتزامن (async)؟
- كيف تتحقق من أن الدالة ترمي الاستثناء الصحيح؟
- كيف تمنع الوقت والعشوائية من جعل الاختبارات غير مستقرة (flaky)؟
- كيف تختبر كود HTTP دون الاعتماد على شبكة حقيقية؟
- هل تعني نسبة coverage العالية أن الكود مختبر جيدًا؟
- ما هو contract test ومتى يفيد؟
أسئلة مقابلات Packaging & Tooling في Python
- لماذا نستخدم البيئات الافتراضية (venv)؟
- ما دور ملف pyproject.toml؟
- ما الفرق بين ملفات requirements و constraints؟
- ما فائدة src layout في تنظيم الحزم؟
- ما معنى editable install؟
- ما الفرق بين wheel و source distribution (sdist)؟
- كيف تعرض أمر CLI من حزمة Python؟
- كيف تحدد إصدارات Python التي يدعمها مشروعك؟
- كيف تضبط logging في مكتبة أو خدمة دون إزعاج من يستخدمها؟
- كيف تفصل الإعدادات عن الأسرار في تطبيق Python؟
أسئلة مقابلات Performance & Profiling في Python
- لماذا يجب القياس قبل تحسين الأداء؟
- ما دور cProfile في تحليل الأداء؟
- متى تستخدم collections.deque بدل list؟
- متى تحسّن generators استهلاك الذاكرة ومتى لا تحسّن الزمن؟
- كيف تستخدم functools.lru_cache بأمان؟
- لماذا يُفضل str.join غالبًا لتجميع النصوص؟
- كيف تقلل تكلفة إدخال عدد كبير من الصفوف في SQLite؟
- كيف تتعامل مع كثرة إنشاء الكائنات في حلقة ساخنة؟
- ماذا يقيس tracemalloc وكيف تستخدمه لكشف تسرب الذاكرة؟
- كيف يغيّر اختيار بنية البيانات أداء البرنامج؟
أسئلة مقابلات Web, APIs & Data Integration في Python
- كيف تتعامل مع JSON القادم من API؟
- لماذا تستخدم urllib.parse بدل تركيب عناوين URL بدمج النصوص؟
- ما القواعد الأساسية لاستخدام HTTP client في Python؟
- كيف تمنع SQL injection عند استخدام sqlite3؟
- كيف تدير المعاملات (transactions) في sqlite3؟
- كيف تقرأ وتكتب ملفات CSV بشكل صحيح؟
- ما مشكلة الـ naive datetime في الخدمات؟
- كيف تصمم ترقيم الصفحات (pagination) في API؟
- كيف تمنع إعادة المحاولة من إنشاء عمليات كتابة مكررة؟
- كيف تفصل بين schema الـ API ونموذج الـ domain؟
أسئلة مقابلات Web Frameworks & ORMs في Python
- ما مشكلة N+1 في Django ORM وكيف تحلها بـ select_related و prefetch_related؟
- كيف يمر الطلب عبر Django من الـ middleware حتى الـ view؟
- كيف يعمل نظام Depends في FastAPI ومتى تستخدم async def أو def للمسارات؟
- كيف تتحقق Pydantic v2 من البيانات، وما الفرق بين الوضع المرن (lax) والصارم (strict)؟
- كيف تعمل الـ Session في SQLAlchemy 2.0 ولماذا يجب أن يكون نطاقها محددًا لكل طلب؟
- ما الفرق بين WSGI و ASGI، وكيف يدير Flask سياق الطلب؟
أسئلة مقابلات Data Processing & Parallelism في Python
- لماذا تكون العمليات المتجهة (vectorization) في NumPy أسرع من حلقات Python، وما هو broadcasting؟
- ما مشكلة chained assignment في pandas وكيف غيّرها Copy-on-Write؟
- كيف تقلل استهلاك الذاكرة وتسرّع التحليل في pandas؟
- كيف تختار بين multiprocessing و free-threaded Python والـ subinterpreters لتوازي معالجة البيانات؟