نظرة شاملة على مقابلات بايثون. نصائح والخدع

مرحبا بالجميع!


باختصار عن نفسك. أنا عالم رياضيات عن طريق التعليم ، لكنني مبرمج بالمهنة. في مجال التنمية منذ عام 2006. على الرغم من أنهم منذ أن بدأوا دراسة البرمجة في المدرسة ، بدأت في كتابة أول برامجي وألعابي في المدرسة (تقريبًا ، منذ عام 2003). لقد حدث أن اضطررت إلى التعلم والعمل بعدة لغات. إذا كنت لا تأخذ في الاعتبار المحاضرات الجامعية حول C و C ++ و Basic و Pascal و Fortran ، فعندئذ عملت حقًا مع Delphi (أكثر من 6 سنوات) و PHP (أكثر من 5 سنوات) و Embedded (Atmel + PIC لمدة 2.5 عام تقريبًا) وآخر مرة بيثون + قليلا من سكالا. بالطبع ، لا يمكنك الاستغناء عن قواعد البيانات أيضًا.


من هو هذا المقال ل؟ لكل من أراد ، مثلي ، أن يجد (أو يريد) أن يجد لنفسه وظيفة جيدة الأجر مع مشروع مثير للاهتمام ، وفريق رائع وجميع أنواع الأشياء الجيدة. وكذلك لأولئك الذين يريدون رفع مستوى معرفتهم ومهاراتهم.


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


قبل كل مقابلة ، قمت بإعداد + إعداد شامل لتلك الأماكن ، والإجابات على الأسئلة التي لم أكن أعرفها ، أو لم أتذكرها ، أو لم أحددها حتى النهاية.


أنا أقدر الأسئلة التي قد تُظهر حقًا فهمي (أو سوء الفهم) لبعض المفاهيم الأساسية. لسوء الحظ ، يمكن الاعتماد على مثل هذه الأسئلة على أصابع كلتا يديه.


في النهاية ، قررت أن الأمر يستحق جمع كل هذه التجربة ومشاركتها مع الآخرين.


بالطبع ، هذه الأسئلة لا تستنفد المعرفة التي يجب أن يكون لدى كل مطور متمرس. يبدو لي أن بعض الأشياء في الممارسة العملية نادراً ما تستخدم لسؤالها باستمرار. علاوة على ذلك ، ربما لا أكون مخطئًا إذا قلت أن 90٪ من الأسئلة يتم غوغلها لفترة أولية في 10-30 ثانية.


قمت بدمج بعض الأسئلة في سؤال واحد - لتوفير الوقت والمساحة.
أيضا في نهاية المقال سأقدم روابط تبدو لي الأكثر إثارة للاهتمام.


المحتويات


النظرية العامة
  • السؤال الأول في معظم المقابلات هو: "ما هو الصلبة؟" بصراحة ، لم أكن أتذكر مطلقًا فك التشفير الكامل لهذا الاختصار ، لذلك إما شرحت بكلماتي الخاصة ، أو طلبت من محادثتي اقتراح أسماء إنجليزية على الأقل ، ثم يمكنني فك التشفير. في البداية ، بدا لي أن المحاور سيفهمني ويقبل هذا النوع من الإجابات ، لكن لسببين ، قرر الرجال أنني لم أعرف إجابة هذا السؤال (من الأفضل ألا أعلق بشكل إضافي على هذا (روبل صغير)). شخصيا ، أنا مرتبك مرة واحدة حقن التبعية مع انعكاس التبعية.


  • السؤال النموذجي الثاني: "ما هو الراحة؟" ثم بعد "ما هو Restfull؟" أو "ما هي الشروط الأساسية".
    يمكنك أن تجد إجابتك. أنا شخصياً أفضل هذا الخيار .


  • ما هو HTTP؟ ما هي الأساليب لديه؟


  • ما هي طرق HTTP العاطفية والتي ليست كذلك؟


  • أحببت سؤالًا واحدًا حول HTTP لم أواجهه من قبل على أرض الواقع ، وبالتالي لم أكن أعرفه. افترض أن لديك قائمة كبيرة إلى حد ما من صفحات URL (مثل الصوت أو الفيديو) التي تحتاج إلى تنزيلها على القرص. ولكن لكل منهم تحتاج إلى التحقق مما إذا كانت هناك مساحة كافية على الكمبيوتر لهذه الملفات. كيفية استخدام HTTP (ما الأساليب)؟
    الإجابة الصحيحة هي طريقة HEAD (اقرأ عنها). أنا شخصياً أعطيت إجابة بأن المحاور لم يسمع عنها (أو نسيها) وأظهر البحث السريع أنني كنت على صواب (كخيار). أشرت إلى أنني سأستخدم طريقة GET ، ولكي لا أقوم بتنزيل الملف بأكمله ، أود الإشارة إلى المعلمة Range بحد أدنى من الخطوة. على الرغم من أن هذا لن يعمل إلا إذا أرسل الخادم معلمة قبول - نطاقات غير صفرية في الاستجابة. أنا أكتب هذا إلى حقيقة أن هذا السؤال يظهر فقط ما إذا كنت قد عملت مع هذه المهمة أم لا. البحث الثاني سيعطي إجابة شاملة.


  • ما هو الفرق بين المصادقة والترخيص؟ بصراحة ، طرحت على الفور سؤالا بلاغيا: "لماذا فاتتك هوية أخرى؟". بهذا حاولت بعناية أن أوضح للمحاور أنني على علم بهذه القضايا.


  • ما هو الفرق بين HTTP و HTTPS؟


  • ما هو رمز CSRF؟


  • ما تنسيقات البيانات التي تعرفها بخلاف JSON ، XML؟
    هناك الكثير منهم ، لذلك لن أقتصر على قائمة محددة.


  • ما هو الصابون؟
    سؤال سخيف. أنا لا أحب هذه. لماذا تسأل عما يتم استخدامه مرة واحدة أبدًا ، أو بالتأكيد لا في مشروعي؟


  • ما أنماط التصميم التي تعرفها؟
    جوجل لمساعدتك ؛)


  • في إحدى المقابلات التي أجريت بشأن التطوير المنخفض المستوى ، سُئل الكثير عن الخوارزميات.
    بشكل عام ، من المستحسن أن نفهم على الأقل تقريبًا ماهية O-big عند تقييم تعقيد الخوارزميات. من المحتمل أيضًا معرفة الخوارزميات الأساسية: البحث البسيط ، والبحث الثنائي ، والفرز ، والفرز السريع ، والعمل مع الأشجار (العرض والعمق). نصحني أحد معارفي بقراءة الكتاب الرائع "خوارزميات Grokay. Aditya Bhargava." لم أكن أعتقد أنه كان من الممكن شرح الأشياء المعقدة إلى حد ما بشكل جميل وبسيط. قراءة في نفس واحد (بصراحة)! أوصي به بشدة لأي شخص ، مثلي ، لا يعتبر نفسه خوارزميًا. فقط لا توجد كلمات!



بيثون
  • ما هو PEP8؟ كيف تشعر عنه؟


  • ما أنماط البرمجة التي تعرفها وكيف يمكن تنفيذها؟


  • ما هي الخيارات لتطبيق قالب سينجلتون في بيثون؟
    كما أنصحك أن تفهم مساوئ التنفيذ من خلال الديكور (خاصة للاختبار). الطريقة الأكثر أناقة وتنوعا ، بطبيعة الحال ، من خلال النظارات.


  • الديكور.
    أعتقد أنه سيكون من المفيد قراءة وفهم:



  • كيف تنفذ بايثون الأساليب العامة والخاصة والثابتة؟


  • ما هي النظارات؟
    أنصحك أن تقرأ بالكامل هذا أو ذاك .


  • لم يطلبوا ذلك ، لكنني أنصح بقراءة الاختلافات الأساسية بين الإصدارين الثاني والثالث (على الأقل 2.7 و 3.4).


  • ما الجديد ()؟ وكيف يختلف عن الحرف الأول ()؟ في اي تسلسل يتم اعدامهم؟


  • ما هي البرامج التي تعرفها للتحقق من نمط الكود؟ ما هي إيجابيات وسلبيات منهم؟
    شخصيا ، لقد عملت مع pylint ، pychecker ، لكنني سمّيت ثلاثة منها: pychecker ، pylint ، pyflakes ، لأنني قرأت عنها قبل =) بالمناسبة ، هنا هو الإصدار الأخير ، الذي يفصل أدوات تحليل كود Python .


  • كيف يمكنك اختبار الرمز؟ ما هو السخرية؟
    أنا شخصياً أستخدم التسمم أو عدم التهيج أو الأنف أو مشاهدة ما يقوله ترافيس. حول صور وهمية أفضل.


  • فيما يتعلق بالاختبارات ، أعجبتني الأسئلة التالية:


    • ماذا تفعل إذا كانت الوظيفة قيد الاختبار تستخدم اتصالًا عن بُعد بالخدمات الخارجية ، والتي ترى أحيانًا خطأ في المهلة ، 404 وما شابه ذلك؟
    • ماذا لو كانت الوظيفة قيد الاختبار تستغرق الكثير من الوقت للقيام بعمليات متكررة بداخلها؟ على سبيل المثال ، من داخل الدورة هو من 1..1000000 ، حيث يتم قراءة شيء ما ، وكتابتها ، وحسابها.
      أنصحك أن تقرأ عن الترقيع.

  • ماذا تعرف هياكل البيانات في بيثون؟ أي منها قابلة للتغيير / غير قابلة للتغيير؟
    أنا شخصياً أعرف الآن أن هناك الكثير منهم. بالإضافة إلى الإصدارات المعتادة (dict ، list ، set ، tuple) ، تأكد من قراءة حول frozen_set ، default_dict ، Order_dict (لم يعد ذلك مناسبًا للإصدارات الجديدة) وماذا سيكون آخر في المكتب. قفص الاتهام (نعم ، ابدأ به).


  • كيف يعمل جدول التجزئة (القاموس)؟ ما هي التصادمات وكيفية التعامل معها؟
    أعتقد أنه بالنسبة للمناصب العليا فمن المنطقي أن نعرف.


  • أين سيكون البحث أسرع ، وأين يكون البحث ولماذا: تملي ، قائمة ، مجموعة ، tuple؟


  • كيف يتم تمرير قيم الوسيطة إلى دالة أو طريقة؟


  • ما هو المولد؟ كيف يختلف عن التكرار؟
    هناك مقالات أقصر ، لكني أعجبت بهذا . هناك العديد من الأشياء التي لا يمكن الكشف عنها بالكامل في إجابات stackoverflow القصيرة.


  • ما هي قائمة / الفهم؟


  • لا يمكنني صياغة سؤال محدد ، لذلك أنصحك أن تقرأ عن الاستبطان (باستخدام dir () أو dir أو hasattr () أو getattr ()) أو تغيير الاسم.


  • ما هو الفرق بين واحد (_) و مزدوج (__) الشرطة السفلية؟
    إجابة شاملة هنا .


  • ما هو جيل؟ ما هي المشاكل التي لديه؟


  • ما هو MRO؟ ما هو الفرق بين MRO2 و MR3 (مشكلة الماس)؟
    ابدأ تشغيل google وستفهم كل شيء بنفسك.


  • ما هو وما هو الفرق بين فصول الطراز القديم والفصول الجديدة؟


  • ماذا تعرف عن الخيوط. خيوط مقابل المعالجة؟
    أنصحك أن تقرأها وتجربها بنفسك - http://effbot.org/zone/thread-synchronization.htm . المقال قديم بعض الشيء ، لكنه يعطي فهمًا جيدًا.


  • هل عملت مع asyncio؟ ما هي ميزته؟
    أوصي بقراءة مقالات حول بيثون غير المتزامن والشعور بها بنفسك.


  • ما هو جامع القمامة؟ ما هي إيجابيات وسلبيات؟
    أعتقد أن كل ما هو مطلوب للحصول على إجابة موصوف هنا .


  • لماذا تحتاج الكرفس؟


  • ما هو المزامنة / في انتظار ، ماذا عنهم ، وكيفية استخدامها؟


  • هناك وظيفة:


    def f(sum, l=[]): l.append(sum) print(l) 

    ما سيتم عرضه على الشاشة:


     l = [1] f(10) // [10] f(10) // [10, 10] f(10, l) // [1, 10] f(10) // [10, 10, 10] print(l) // [1, 10] 


جانغو / قارورة
  • كيف يعمل Serializer في إطار Django REST Framework؟
  • ما هي ميتا مسؤولة عن في المسلسل؟
  • ما هو الفرق بين الأداء django و Flask (ولماذا)؟
  • ما هو الغرض من هذه الأطر؟
  • كيف تعمل المصادقة في جانغو؟
  • كيف يعالج django (ويولد) رمز CSRF؟

الواجهة الأمامية
  • ما هي ملفات تعريف الارتباط؟ لماذا هم ، وكيفية العمل معهم ، وأين يتم تخزينها؟
  • هل يمكن للخادم تغيير (إضافة ، حذف) ملفات تعريف الارتباط؟
  • ما هو JWT (JSON Web Token)؟

SDLC
  • رشيقة \ سكروم: كل ما تحتاج إلى معرفته
  • ما هو الفرق بين CI و CD؟ بالنسبة لأولئك في الخزان: CI - التكامل المستمر ، CD - التسليم المستمر
  • ما هو الفرق بين سكروم و كانبان؟
  • ما أنواع الاختبارات التي تعرفها؟
    Google جانبا: اختبارات الوحدات ، اختبارات التكامل ، اختبارات القبول ، إلخ.
  • سؤال لقيادة الفريق (على الأرجح): ماذا ستفعل إذا لم تكن هناك اختبارات على المشروع ولم يرغب العميل في إنفاق الوقت والمال على تطويرها؟
    شخصيا ، أناشد الربحية لعمل العميل.
  • ما هو كود الديون وكيفية التعامل معها (عش ، حب ، قتال)؟

بوابة ، الإصدار ، إعادة البيع
  • ما أنظمة التحكم في الإصدار التي تعرفها (تستخدمها)؟
  • ما هو جيت جيت؟
    أنصحك فقط بقراءته ، لأن هذا شيء موثق.
  • ما هو بوابة rebase؟
  • ما هو اختيار بوابة الكرز؟
  • ما الأدوات التي تستخدمها لمراجعة الكود؟
    أنا شخصياً من المعجبين بعميل github على الويب (إنه مليء بالسلع الممتعة والمريحة). لكن المحاور الخاص بي قرر أنني كنت الأرقطيون ووضعني ناقصًا. لقد غوغل في المنزل ورأيت أن هناك الكثير من البرامج المتخصصة التي تشبه كثيرا ما كنت تستخدم لأكثر من 3 سنوات. البرنامج كبرنامج - لهواة.
    ص. لم يعجبني هذه اللحظة ، نظرًا لتجربتي الطويلة في مراجعة الكود + كان عليّ أن أقرأ باستمرار الطلبات من 500 إلى 3000 تغيير في الطول (نعم ، في أحد مشاريعي الرئيسية كانت هذه الالتزامات طبيعية) ، وقرر الناس ذلك منذ أنا لا أعرف المرافق الأخرى - وهذا يعني الأرقطيون.
  • ما هو الضغط القسري؟
  • ما هو الاختيار precommit؟
  • ما هو تماسك الكود و اقتران الكود؟

قواعد البيانات

لدهشتي ، بدا لي أن الأسئلة المتعلقة بهذا الموضوع بسيطة للغاية (مثل المدرسة) ، باستثناء حرفي 2-3.


  • ما هي الصفقة؟ ما هي الخصائص لديها؟
  • ما هي مستويات عزل المعاملات؟ ماذا يحلو لهم؟
    أنصحك بقراءة هذا بعناية ، لأن هذه أشياء أساسية .
  • ما هي المعاملات المتداخلة؟
  • ما هو المؤشر ولماذا هو مطلوب؟
  • ما الفرق بين PostgreSQL و MySQL؟
  • ما هو الفراغ في بوستجرس؟
  • ما هو الشرح؟ ما هو الفرق بينها وبين شرح التحليل؟

البيانات الكبيرة

لسوء الحظ ، تذكرت بعض الأسئلة ، لأن تجربتي السابقة في تطوير البرمجيات والعمل مع قواعد البيانات كانت مهمة لمحاوري (أعتقد أن هذا ذكي جدًا).


  • ما هو Hadoop؟ ... و HDFS؟
  • ما هو MapReduce وكيف يعمل؟
  • هل من الممكن إنشاء العديد من المخططين ومخفضات (أو الإشارة إلى عددهم)؟
  • ما هو الفرق بين الخلية و HBase
  • هل من الممكن إنشاء فهرس في HBase؟
  • ما هو إعادة تقسيم؟
  • ما هو الفرق بين إعادة التقسيم والتجمع؟
    بسيطة جدا وبأسعار معقولة وصفها هنا .
  • ما هي الانتخابات ماجستير في Zookeeper؟

المهام

من المستغرب ، فقط في واحدة من اثنتي عشرة مقابلة طُلب مني كتابة التعليمات البرمجية. ربما لأن الجميع أراد التحقق من الكود بعد الجزء النظري. وبما أن المقابلات استمرت ساعة واحدة على الأقل (الأطول - ثلاث ساعات!) ، ولم تُطرح جميع الأسئلة مطلقًا ، لم يكن لدى الرجال ماديًا وقتًا للتحقق من الكود.
بالإضافة إلى الممارسة ، لن أنصح بأي شيء آخر.


  1. يوجد ملف يحتوي على كلمات مفصولة بمسافة. على سبيل المثال: "abba com mother bill mother com abba dog abba mother com". من الضروري إيجاد واستنتاج الكلمات الثلاث التي تحدث غالبًا معًا (لا يهم الترتيب). هذا هو ، في المثال الخاص بي ، الكلمات الثلاث هي "أبا كوم أم" ، "كوم أم بيل" ، "أم بيل أم" ، إلخ. يجب أن تكون الإجابة الصحيحة "أبا كوم الأم" (التردد - 3 مرات).
  2. اكتب وظيفة لاجتياز الشجرة بعمق (في العرض).
    بحيث لا تضيع الوقت - سأقدم رابطًا حيث تكون كلتا الوظيفتين جميلة وبسيطة للغاية.
    كانت هناك مهمة بسيطة أخرى: كتابة مولد.

أسئلة وروابط مني

لأغراض تعليمية عامة ، يجدر قراءة المقالات التالية:


  • "أسئلة المقابلة بيثون." قرأت أخرى مختلفة ، ولكن لسبب ما أضفت هذين فقط إلى الإشارات المرجعية - 1 و 2 . لكنني أنصحك أن جوجل أكثر.
  • Likbez على الكتابة في لغات البرمجة .
  • إنه لأمر مؤسف أنه عند مناقشة قواعد البيانات لم تكن هناك أسئلة حول نظرية CAP. اكتشف المزيد هنا .
  • لا أعرف لماذا لم يتم التطرق إلى موضوع خدمات microservices. لا يمكنني إلا أن أفترض أن الذين قابلوني عملوا معهم قليلًا أو لم يولوا الاهتمام اللازم لهم. ومع ذلك ، إذا كنت مهتما ، وهنا مقال جيد .
  • لدهشتي أيضًا ، لم يقم أحد حتى بطرح أسئلة حول المحاكاة الافتراضية ، عامل الميناء ، الحاويات ، Kubernetes. أنصحك بالتعامل على الأقل مع عامل الميناء ، حيث يوجد الآن الكثير من التعليمات البسيطة خطوة بخطوة مع شرح.
  • روابط سوبر بيثون مفيدة .
  • زن بيثون في الأمثلة .
  • أعتقد أن كل شخص يعمل مع بيثون يجب أن يعرف عن الابتكارات الرائعة .
  • قلة من المحاورين عرفوا عن القواميس في الثعبان التي يرويها المؤلف المشارك نفسه هنا .
  • لم يسأل أحد عن لامدا في الثعبان ، لكن من الأفضل أن تفهم ماهية ما تتناوله.
  • الأنواع والحيل في الثعبان. المقال قديم ، لكن معظم "الحيل" وثيقة الصلة الآن .
  • بالمناسبة ، لعشاق الثعبان - ملخص لآخر الأخبار والمواد الأخرى .
  • في المقدمة ، أنصحك أن تنظر إلى محاضرة قصيرة حول حلقة الحدث في JavaScript. لا أعتقد أنك تعرف كيف تعمل حقًا. أنا أوصي به بشدة .
  • بخصوص جانب الخادم ، يُنصح بفهم الفرق بين nginx و apache. الإنترنت مليء بالمقالات. إذا كان الأمر ممتعًا حقًا ، فما هو الفرق تحت الغطاء - هنا مقال يتضمن أمثلة .

نصيحة لكل من يريد حقًا تحقيق الإتقان - لا تكن كسولًا لتكرار الكود الموجود في وحدة التحكم (سواء كان بيثون أو DB أو أشياء أخرى). لا تنسخ ، أي تكرار. بالطبع ، هذا يعني مادة جديدة ، وليس تلك التي كنت تكتبها عمياء لفترة طويلة.


في الواقع ، كان هناك المزيد من الأسئلة 3-4 مرات. هناك شيء منسي. لكنني أحضرت أهمها.


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


بالمناسبة ، إليك مصفوفة جيدة من الكفاءات في مجالات مختلفة في تكنولوجيا المعلومات. إذا كانت لديك الفرصة لإجراء مقابلة ، فإنني أنصحك على الأقل بفهم ما تحتاج إلى طرحه وما هو المستوى ، وليس صف الجميع تحت نفس الشريط (كما هو الحال في كثير من الأحيان الآن) - لقد تراكمت العديد من المجالات المختلفة. أنا شخصياً ، لا أفهم لماذا أطلب من الجهة الأمامية المتقدمة فهمًا ممتازًا لقاعدة البيانات ، أو من الفهم العميق للواجهة الخلفية لمحرك المتصفح أو تفاعل حلقة الأحداث مع عارض المستعرض ، أو من المختبر - القدرة على إيجاد أقصر الطرق بطريقة متوازنة الرسم البياني ، الخ نأمل أن تفهم ما أعنيه ، بالنظر إلى هذه المصفوفة.


أتمنى مخلصًا النجاح لكل من يقرر توحيد نفسه وأن يثبت للآخرين معرفتهم من أجل الحصول على عرض جيد وممتع!


محدث:
هنا يمكنك التدرب على إجراء المقابلات ، إذا كان 4to - pramp.com. بفضل non_smile على الرابط.

Source: https://habr.com/ru/post/ar439576/


All Articles