لقد حضرت الكثير من المقابلات وكنت على جانبي المواجهة. حان الوقت الآن لمشاركة الألغاز الأكثر إثارة للاهتمام مع الآخرين. بالنسبة للمقابلات ، يجب أن تكون مثيرة للاهتمام ولا تنسى ، وليس بائسة ومثبطة.
بعض التعليقات
- جميع المهام على المنطق و / أو البرمجة. لا نغمات نفسية وفتحات مستديرة.
- لم يتم إعطاء القرار عمدا. ومع ذلك ، أؤكد لك أن جميع المهام تقريبًا لها حل بسيط وجميل. استمتع بها!
المهام
ها هم.
سلاسل مرآة في SQL
لنفترض أن لدينا جدولًا بعمود سلسلة ونريد العثور على صفوف مشابهة بناءً على بعض الشروط (على سبيل المثال ، يمكن أن يكون البحث عن نص كامل أو بعض الوظائف الداخلية التي تتلقى قيمتين عند الإدخال وتعرض صواب / خطأ). لذا ، نكتب الانضمام الذاتي ، وبالطبع نحصل على نسخ مكررة بين القيم. أي أننا نحصل على أزواج معكوسة نتيجة لذلك والقيم الإجمالية تزيد مرتين عما نود. السؤال: كيفية إزالة أي عنصر من النتيجة عن أي عنصر من كل زوج مرآة وترك فقط القيم الفريدة هناك حتى التباديل؟
نصائح وحيل- هناك خاصية واحدة غير واضحة للسلاسل وعبارات SQL الأساسية التي يمكنك استخدامها ...
- أو يمكنك البحث في Google ، إذا كان الطلب صحيحًا ، فستكون الإجابة في الرابط الأول إلى stackoverflow.
إيجاد ثقوب مع SQL
هذه مهمة ممتازة لتقييم المعرفة بجميع الميزات الأساسية لـ SQL.
افترض أن لدينا جدول بعمود int واحد. لا نعرف أي شيء عن القيم الدنيا / القصوى فيه. أيضا ، نحن لا نعرف أي شيء عن عدد الصفوف في الجدول ، وبشكل عام ، فإنه يختلف ويجب ألا نعتمد عليه. نحن نعلم أيضًا أنه من بين القيم هناك سهو لا يتجاوز طوله واحدًا. على سبيل المثال ، بالنسبة لجدول مكون من 5 (خمسة) عناصر: 1 ، 2 ، 4 ، 6 ، 7. السؤال: اكتب استعلام SQL واحدًا باستخدام عوامل التشغيل الأساسية فقط (أي بدون إجراء ومتغيرات) ، والتي ستُرجع قيمة جميع "الثقوب". بالنسبة للمثال أعلاه ، يجب أن تكون النتيجة 3 ، 5. تذكر أنه لا توجد قيم فارغة في الفجوات. القيمتان 3 و 5 غير موجودة فعليًا في الجدول.
نصيحة- إذا فشلت الخطوة ، اكتب في العديد من الاستعلامات أو استخدم pl / sql ، وبعد ذلك ، إذا كانت فكرتك صحيحة ، يمكنك الانتقال منطقيًا إلى استعلام واحد.
تلميح- سيكون أجمل طلب إذا كان طلب شروط الإدخال أعلاه لا يرجع "3 ، 5" ، ولكن "3 ، 5 ، 8".
حلقات في قائمة مرتبطة بشكل فردي
هذه مشكلة حول الخوارزميات والتعقيد.
لنفترض أن لدينا قائمة محدودة ومتصلة ببساطة. نحن نعلم أنه ربما لديه دورة. أي أن أحد العناصر التالية يشير إلى أحد العناصر السابقة. من الضروري وصف طريقة إيجاد الدورات في مثل هذا الهيكل في وقت محدود. أيضا ، تحتاج إلى تقديم تقدير للوقت والذاكرة المطلوبة لتنفيذ الخوارزمية المقترحة.
استمرار
من الضروري تعديل النتيجة بحيث يكون تعقيد الذاكرة O (1). أي أن استهلاك الذاكرة لا يعتمد على حجم القائمة.
تلميح- تذكر أنه مثلما يمكن تحويل الكتلة إلى طاقة ، وكذلك تعقيد الوقت ، يمكن تحويلها إلى استهلاك الذاكرة والعكس صحيح.
تخزين القيمة الرئيسية
مهمة أخرى لكتابة التعليمات البرمجية ومناقشتها أثناء الكتابة.
اكتب تخزينًا بقيمة المفتاح بأي لغة تريدها. أضف الدالة set_all
، التي تأخذ قيمة set_all
لجميع المفاتيح الموجودة. تقدير تكاليف الوقت والذاكرة للتنفيذ الناتج.
الآن اجعل set_all
يعمل لـ O (1).
وهل يمكنك التأكد من أن تعقيد طرق get
و set
لا يزال في بدايتها ، و set_all
تستمر في العمل لـ O (1)؟ إذا كانت الإجابة بنعم ، فقم بتنفيذها. إذا لم يكن الأمر كذلك ، إثبات لماذا هذا غير ممكن.
إنقاذ الناس
وفي هذه المهمة ، عليك التفكير والتفكير مع الشخص الذي تتم مقابلته. والتنفيذ مسألة تقنية وليست مثيرة للاهتمام بشكل خاص.
تخيل أن لدينا مجموعة من الناس. الكمية لا تهم. تصطف المجموعة بأكملها في الجزء الخلفي من الرأس لبعضها البعض ويتم وضع قبعة سوداء أو بيضاء على كل رأس. لا أحد يعرف لون القبعة التي يرتديها. ومع ذلك ، يرى الجميع ما يحدث أمامهم ويسمعون ما يحدث خلفهم. بعد ذلك ، يأتي شخص غريب يحمل مسدسا إلى ظهر آخر مجموعة. يسأل ، "ما هو لون قبعتك؟" يمكن أن يكون الجواب أسود أو أبيض فقط. لا يمكن أن تكون هناك رسائل أخرى. إذا خمّن شخص ، فسوف يسمح له بالذهاب. خلاف ذلك ، تحدث لقطة ، وعلى أي حال ، تتكرر العملية مع العضو الأخير "الجديد" في قائمة الانتظار.
توضيح مهم: قبل البدء في هذه التجربة اللاإنسانية ، يمكن لجميع أعضاء المجموعة أن يجتمعوا ويفكروا في استراتيجية البقاء الخاصة بهم.
سؤال: كيف يمكن زيادة عدد الناجين إلى أقصى حد وهل هناك تقدير دقيق لعدد الناجين اعتمادًا على حجم المجموعة؟
نصيحة- فكر كيف يمكن لكل عضو جمع كل المعلومات المتاحة وإرسالها في بتة واحدة؟
تلميح- ربما يمكن أن يساعدك زوجي / فردي أو XOR؟
هذا كل شيء. الآن حان دورك لحل أي مشكلة والتحدث عن اختيارك المثير للاهتمام للمقابلات.