مرحبًا يا هابروفسك. عشية بدء دورة 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 دقيقة في اليوم. ستنتقل المعلومات إلى ذاكرة طويلة المدى ، ويمكنك تذكرها حتى مع الضغط الشديد أثناء المقابلة.
- لا تعرض نفسك لكل هذا العذاب فقط لاجتياز الاختبار على السبورة. تهدف أعلى! حدد لنفسك مهمة أن تصبح مبرمجًا أكثر احترافًا!