ماذا يريد المرشحون للمقابلات كتابة التعليمات البرمجية؟

مرحبًا يا هابروفسك. عشية بدء دورة Java QA Engineer ، نشارككم في استمرار هذه المادة
.




في المقابلات الأولى التي أجريتها ، لم أكن أعرف ذلك. لكن المطورين لم يشاهدوني فقط - لقد توقعوا. لقد توقعوا مني التصرف وفقًا للخوارزمية التالية:

صقل المهمة

  • اسأل: "ماذا تقصد بكلمة palindrome؟"
  • هذا يجيب على السؤال: هل سيبدأ المرشح في حل المشكلة على الفور - حتى دون إدراك أن ظروفها التقنية ليست واضحة تمامًا؟ أو فكر قليلاً وتوضح المتطلبات؟ "

نعني تسلسلًا يقرأ نفسه من اليسار إلى اليمين ومن اليمين إلى اليسار. يجب أن يكون قرارك حساسًا لحالة الأحرف: الحرف الصغير ليس مطابقًا للحجم الكبير ".

ابدأ بالأمثلة

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



قبل البدء في وصف الكود ، اطلع المختص لفترة وجيزة على الخوارزمية


كيف يتعامل المرشح مع حل المشكلة؟ هل يتحدث بأفكاره بصوت عالٍ حتى يسمعها القائم بإجراء المقابلة؟

على سبيل المثال ، string s = "alla" .

يمكننا استخدام طريقة المساعد لـ Java String ، charAt (int i). أدخل فهرس الصف في الطريقة ، وسيقوم بإخراج الحرف في الفهرس:

 s.charAt(0) == 'a' s.charAt(1) == 'l' s.charAt(2) == 'l' s.charAt(3) == 'a' 

لمعرفة طول السلسلة ، يمكنك استخدام الأسلوب length() :

s.length == 4

لمعرفة الشخصية الأخيرة ، يمكنك استخدام:

 int len = s.length s.charAt(len - 1) 

بدأنا العد من 0 ، لذلك ستكون الشخصية الأخيرة هي "الطول ناقص 1".

دعنا نسمي الحرف الأول "الأول" والأخير "الأخير".

  • إذا كان الحرف الأول s.charAt (الأول) لا يتطابق مع s.charAt (الأخير) ، فهذا ليس باليندروم. الإخراج كاذبة.
  • إذا كان الحرف الأول s.charAt (الأول) يطابق s.charAt (الأخير) ، فإننا ننتقل إلى تقييم المجموعة التالية من الأحرف ، مع تحويل حرف واحد من "الأول" ومن "الأخير". إذا كان كل شيء يطابق ، طباعة صحيح.
  • بعد التحقق من الخوارزمية مع القائم بإجراء المقابلة ، يمكنك البدء في كتابة التعليمات البرمجية:

 public boolean isPalindrome(String s) { int first = 0; int last = s.length() - 1; while (first < last) { if (s.charAt(first) != s.charAt(last)) { return false; } first++; last--; } return true; } 

التصحيح والاختبار


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

أظهر الكود الخاص بك لأشخاص آخرين وجمع تعليقاتهم


لقد أظهرت حبي لمشكلة palindrome لصديقي المطور. قال: "لماذا استخدمت المتغيرات أولاً وأخيراً؟ ولماذا كنت تستخدم حلقة حلقة إذا كان يمكنك الحصول على مع حلقة for؟ يمكن جعل كل شيء أقصر وأكثر أناقة وأسرع:

 public boolean isPalindrome(String s) { int len = s.length; for (int i = 0; i < len / 2; i++) { if ( s.charAt(i) != s.charAt(len - 1 - i)) { return false; } } return true; } 

ما التالي


اتقان لغة البرمجة بين عشية وضحاها لن تنجح. لذلك ، من الأفضل اتباع هذه الخوارزمية:

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

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


All Articles