كيف تستعد بسرعة لمقابلة عمل مع أسئلة حول الخوارزميات والتقنيات

تحياتي لجميع القراء من هبر! اسمي Yuriy ، لقد قمت بتدريس التقنيات المتقدمة و Oracle و Microsoft وغيرها منذ أكثر من 20 عامًا ، بالإضافة إلى إنشاء وتطوير ودعم أنظمة المعلومات المحملة للعديد من عملاء الأعمال. أود اليوم أن أخبرك عن الاتجاه الحالي: مقابلات حول تقنيات معالجة البيانات. البديل الروسي لهذا المنصب يمكنك أن تجد هنا .

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

1. تُعقد المقابلات الخاصة بتكنولوجيا معالجة البيانات عادةً لتوظيف فرق من المحللين والمطورين الذين لديهم خبرة سابقة في مجال التطوير بلغات تعريفية وضرورية وموجهة نحو الكائنات وظيفية.

المهمة. حدد لغة البرمجة بواسطة جزء البرنامج التالي.



تحتاج أولاً إلى الإجابة على السؤال: ما هي الميزات باللغة المختارة التي يمكن أن تكون ذات صلة وستجذب صاحب العمل المحتمل؟ بناءً على ذلك ، يمكن أن تختلف القائمة من إصدار إلى آخر ، من مكتبة إلى مكتبة ، ومن تنفيذ إلى تطبيق.



المهمة. ما اللغات التي تدعم الحساب باستخدام الأعداد الصحيحة الطويلة؟

هل أنت جاهز للإجابة؟ إليك قائمة مقترحة:
  • C ، C ++ - مكتبة libgmp
  • Lisp المشتركة لا يحد من عرض بت للأعداد الصحيحة
  • Erlang المدمج في نوع العددية (عدد صحيح ())
  • أنواع الانتقال والجرذ من المكتبة الكبيرة.
  • هاسكل المدمج في نوع صحيح
  • Java-java class.math.BigInteger (February 1997)
  • مكتبة OCaml-num
  • مكتبة باسكال - دلفي-إمبيريث
  • بيرل وحدات كبيرة و bigrat
  • PHP وحدة BCMath
  • بيثون هو نوع طويل مدمج (منذ أن تم إنشاء اللغة ، فبراير 1991)
  • روبي من النوع Bignum
  • فئة Scala-BigInt
  • مخطط مع R6RS
  • .NET languages-system class.Numerics.BigInteger (تم تقديمه في .NET Framework 4.0 ، منذ حوالي 10 سنوات)


2. إذا كان لدى صاحب العمل بالفعل قائمة جاهزة ، فمن الضروري تحديد أجزاء عامة من اللغات التي سيتم مناقشتها في المقابلة.

المهمة. في رأيك ، ما هي اللغات الأكثر شعبية من وجهة نظر صاحب العمل؟ هنا يمكنك رؤية الإجابة بناءً على الإحصاءات.

غالبًا ما يتم تنفيذ عدد من هذه العمليات الروتينية في أنظمة معلومات كبيرة وكبيرة الحجم. هناك أنواع مختلفة من الفرز ، والبحث عن معايير معينة ، وخوارزميات على الرسوم البيانية ، ومشاكل التحسين على مجموعات ذات طبيعة مختلفة ، ومهام تصميم الكائنات ذات الخصائص غير المؤكدة. ولكن نظرًا لحجم هذه المهام التي قد تستغرقها عملية الفرز الأسهل لمدة شهر ، فقد يستغرق البحث أسبوعًا. انظر المهمة أدناه لفهم أفضل.

المهمة. تخيل أن هناك شجرة البتولا خارج مكتبك. حسب حساب زملائك ، هناك 100.000 ورقة ، وقطر الصندوق في جذره 60 سم. اكتب هذه المعلمات في أي تدوين رياضي. إثبات ملاءمتها: أ) للتواصل الكتابي مع زميل في حال تم قطع الشجرة ، ب) لإجراء معالجة الكمبيوتر لصورتها.



3. بضع كلمات عن الجزء الرياضي من المقابلة. في الحياة الواقعية ، نادراً ما نتجاوز حدود علم الحساب العادي. البعض منا يستخدم إنجازات الجبر والتحليل. لذلك قررت أن أضيف بعض مشاكل الحياة الواقعية لجعل رؤوسك في حالة تأهب.

المهمة. لماذا كانت أرقام الهواتف خمسة أو ستة أرقام لفترة طويلة؟ هناك قائمة من الأرقام - أي منها ليست مربعات كاملة؟ كم عدد الحافلات في بلدتك التي تحتوي على عدد فقط من المربعات الكاملة؟ كم عدد الأعداد الأولية حتى 100 هل تعرف؟ ما هي النسبة المئوية بين صف الأرقام من 1 إلى 100؟ دع 2 ، 3 ، 5 ، 7 عددًا أوليًا ، وفقًا لهذه الحقيقة ، ابحث عن عدد الأعداد الأولية يصل إلى 100. كم عدد العمليات الحسابية التي عليك القيام بها؟ حل نفس المشكلة في MS Excel بطريقتين كاختبار ذاتي.

المهمة. كيف يتم استخدام التحدب والتقعر في الممارسة؟ إعطاء 2-3 أمثلة لاستخدام محدب التقعر.



4. من الضروري في بعض الأحيان الاطلاع على الوثائق الخاصة بالنظام / اللغة / مجموعة المكتبات ، وأمثلة من الأوصاف التقنية المتعمقة والموسعة من المؤلف / الشركة المصنعة. يعد هذا ضروريًا بشكل خاص إذا كنت تنوي الاتصال بالمكتبات غير القياسية.

المهمة. اكتب خوارزمية Euclid الموسعة بإحدى لغات البرمجة المذكورة أعلاه في الخطوة 1. في أي لغة لا يلزم القيام بذلك؟ لماذا؟

5. سيكون من الجيد فهم اتجاه المقابلة: إذا كان من المتوقع أن تكتب خوارزميات بنفسك أو إذا كنت مضطرًا إلى الاحتفاظ بمجموعة من خوارزميات الطرف الثالث ، فربما يتعين عليك تقديم ترتيب مناسب لاحقًا؟

المهمة. توجد ملاحظات أدلى بها كبير الأطباء في دفتر متدربه. من الضروري حوسبة هذه الملاحظات من أجل تحديد المواعيد الصحيحة للمريض. ماذا تنصح المتدرب؟



6. إذا كان اختيار لغة المقابلة ضمنيًا ، فمن الأفضل تحديد لغة أكثر توحيدًا ، بحيث لا يكون لدى القائم بإجراء المقابلة إمكانية كبيرة لتغيير شروط المهام أثناء المحادثة.

المهمة. كم عدد إصدارات Pascal التي تم إنشاؤها خلال الـ 25 عامًا الماضية؟ حدد نقاط القوة والضعف لكل نسخة.



7. سيكون من الجيد حضور ندوة واحدة على الأقل حول الخوارزميات وتنفيذها في منتج المعلومات المختار في مجال موضوع معين.

المهمة. سألك الشاعر عما إذا كان من الممكن له أن يكتب قصيدة "يوجين أونيجين" مع مراعاة مكنز مؤلفها. إعطاء حلين لهذه المشكلة.

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

المهمة 489 من مشروع أويلر


سمح G(a،b)يكون أصغر عدد صحيح غير سالب نمن اجل ذلك GCD $ (n ^ 3 + b ، (n + a) ^ 3 + b) $ هو تعظيم.
على سبيل المثال ، G(1،1)=5ل GCD $ (n ^ 3 + 1 ، (n + 1) ^ 3 + 1) $ يصل الحد الأقصى لقيمة 7 دولارات إلى ن=5دولارا، وأصغر ل 0n<5.
سمح H(m،n)=ΣG(a،b)إلى 1am. 1bn.
أنت معطى H(5،5)=128878دولاو H(10،10)=32936544.

اكتشاف H (18 ، 1900) دولار .

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

بضع كلمات أخرى إذا لم تستطع حلها
إذا كنا نتحدث عن الحد الأقصى المحلي ، يجب أن تكون الإجابات أقل ، ولكن بعد الحسابات ، اتضح فجأة أننا نتحدث عن الحد الأقصى العالمي ، وهو أمر غير مذكور في نص المشكلة. وحتى الآن ، هناك شك في أن GCD $ (n ^ 3 +1444 ، (n + 1) ^ 3 + 1444) = 1 $ تحت أي ن. ما سوف نتتناسب مع واضعي المشكلة؟

رمز الحل عينة
public class Start { static BigInteger[] GcdExtended(BigInteger a, BigInteger b) { BigInteger res[] = new BigInteger[3]; if (b == BigInteger.valueOf(0)) { res[0] = a; res[1] = BigInteger.valueOf(1); res[2] = BigInteger.valueOf(0); return res; } res = GcdExtended(b,a.divideAndRemainder(b)[1]); BigInteger s = res[2]; res[2] = res[1].subtract((a.divideAndRemainder(b)[0]).multiply(res[2])); res[1] = s; return res; } public static void main(String[]args) throws IOException { BigInteger i; BigInteger j; int n,n1; BigInteger temp; BigInteger temp1; BigInteger count; FileWriter fileWriter = new FileWriter("c:/temp/terribleanswer.txt"); n1=1; count=BigInteger.ZERO; i=BigInteger.ZERO; j=BigInteger.ZERO; temp1=BigInteger.ZERO; temp=BigInteger.ZERO; for (int a=1;a<19;a++) { for (int b=1;b<1901;b++) { for(n=1;n<;n++) { j=((BigInteger.valueOf(n)).pow(3)); j=j.add(BigInteger.valueOf(b)); i=(((BigInteger.valueOf(n)).add(BigInteger.valueOf(a))).pow(3)); i=i.add(BigInteger.valueOf(b)); int comparevalue = j.compareTo(i); if (comparevalue==0) { temp=GcdExtended(i,j); } else if (comparevalue == 1) { temp=GcdExtended(j,i); } else { temp=GcdExtended(i,j); } int compareTemp = temp.compareTo(temp1); if (compareTemp == 1) { temp1=temp; n1=n; continue; } } String fileContent = a + ";" + b +";"+ temp1 +";"+ n1 + "\n"; temp1=BigInteger.ZERO; count=count.add(BigInteger.valueOf(n1)); n1=1; try { fileWriter.append(fileContent); } catch (IOException e) { } } } String fileContent = count + "\n"; try { fileWriter.append(fileContent); } catch (IOException e) { } fileWriter.close(); } } 


9. أتمنى لك اجتياز المقابلة على ما يصل!

محدث خصيصا لنشر النسخة الإنجليزية من المقالة ، نعطي بعض العلاقات غير التافهة التي وجدت بعد التحديث العميق للحل أعلاه. عند حساب ل ن=500،000،000دولا.
GCD $ (n ^ 3 +1444 ، (n + 1) ^ 3 + 1444) = 56298673 ، n = 28147170 $ . GCD $ (n ^ 3 +1445 ، (n + 1) ^ 3 + 1445) = 14094169 ، n = 14092001 $ . GCD $ (n ^ 3 +1446 ، (n + 1) ^ 3 + 1446) = 56454733 ، n = 28225197 $ . GCD $ (n ^ 3 +1447 ، (n + 1) ^ 3 + 1447) = 14133211 ، n = 14131040 $ .

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


All Articles