JavaRush /مدونة جافا /Random-AR /الحيلة، أو كيفية الحصول على وظيفة كمطور جافا متوسط دون خب...
Юрий
مستوى
Москва

الحيلة، أو كيفية الحصول على وظيفة كمطور جافا متوسط دون خبرة في جافا

نشرت في المجموعة
تحياتي لجميع طلاب ومحترفي جافا. ربما تكون قصتي مثالاً للبعض لكيفية القيام بذلك وللآخرين - لكيفية عدم القيام بذلك. إنه 19 أكتوبر 2021، واليوم أكملت فترة اختبار (3 أشهر) كمطور Java متوسط ​​في شركة كبيرة. لم تكن لدي خبرة سابقة في تطوير Java. حتى 4 يونيو 2020، لم أكن أعرف شيئًا عن Java. عندما تم تعييني كجافي، وعدت أنني إذا اجتزت فترة الاختبار، سأكتب قصة نجاح، سيتم تقسيم هذه المقالة إلى جزأين منطقيين: الخلفية المهنية ( الفصول 1-5، غير المتعلقة بالجافا، ولكن يمكنك من خلالها اكتساب المعرفة حول حياتك المهنية). أن تصبح جافا (الفصول 6-9 - تعلم جافا، المقابلات، الحصول على وظيفة، أول تجربة حقيقية). <h3>الفصل الأول. خبير اقتصادي</h3>لكي أفهم مستوى المعرفة الذي جئت به إلى JavaRush، أحتاج إلى تقديم ملاحظة عن سيرتي الذاتية. 2013، نوفمبر، 8 صباحًا. أنا جالس في مقهى في تاجانكا وأكرر تعليمات SQL. بعد ساعة، سأجري مقابلة لمنصب كبير الاقتصاديين في الإدارة المالية للبنك. هذه هي المقابلة الوحيدة التي تمت دعوتي إليها، ويجب أن أقدمها بنسبة 100%. من أجله، سافرت من سانت بطرسبرغ وبقيت مع أقاربي في المطبخ، حتى لا أنفق مدخراتي الصغيرة بالفعل. بعد مرور 30 ​​دقيقة، يتم تناول الفطائر مع لحم الخنزير والجبن ونحتاج إلى التحرك نحو حلمنا العزيز. ولكن كل شيء يهتز. ماذا لو فشلت في المقابلة؟ حسنًا، لم يكن الأمر كذلك. أذهب إلى البنك وأحصل على تصريح، وأنتظر من أجريت معهم المقابلات في غرفة الاجتماعات. الوقت يمر لفترة طويلة جدا. يأتي رجل يبلغ من العمر 35 عامًا تقريبًا وامرأة من نفس العمر. يقدمون أنفسهم ويطلبون إخبارك عن أنفسهم: "يوري، إنه لمن دواعي سروري". عمري 21 عامًا، أدرس بدوام جزئي في إحدى جامعات سانت بطرسبرغ، وعملت لمدة 3 أشهر كصراف في أحد البنوك. أدركت أن هذا ليس ما درست من أجله، وبدأت أنظر إلى سوق العمل ورأيت أن الاقتصاديين في موسكو لديهم SQL كشرط. لذلك درستها، وذهبت إلى الدورات التدريبية (إدارة MS SQL - هذا ما كنت أمتلكه، وهذا ما ذهبت إليه)، واتصلت بي. يتحدثون عن الشركة، وماذا يفعلون (معظم الكلمات غير مفهومة)، ثم يطلبون منك إجراء اختبار. يحتوي الاختبار على 3 أسئلة في SQL: 1. في حالة وجود جدول، اسحب جميع السجلات ذات المعرف = 10. 2. في حالة وجود جدولين، قم بتوصيلهما واعرض عمودًا من كل منهما. 3. تجميع الأقسام وتحديد عدد الموظفين لكل قسم. إنه لمن العار الشديد أن أكتب هذه الطلبات. ويلي ذلك مناقشة توقعاتي من الوظيفة. ويقولون لي العبارة السحرية: "شكرًا لك على المقابلة، سنتصل بك مرة أخرى". مر أسبوع وعرضوا علي أن آتي للعمل معهم. النشوة، الصدمة، الفرح! وبأي أموال: 70 ألف روبل في متناول اليد! نعم سأكون غنيا! أتيت إلى موسكو وأستقر وأستأجر غرفة في المركز. الأيام الأولى مبهجة. وبعد 10 أيام يبدأ الإدراك: أين أتيت؟ أنا لا أفهم أي شيء على الإطلاق! كان عليّ إعداد تقارير إدارية للبنك بأكمله كل شهر. وبطبيعة الحال، كان الأمر بالنسبة لي هو نفسه بالنسبة لك عزيزي القارئ. لقد نظرت إلى مصطلحات الائتمان بين البنوك، والمقايضات، وتخصيص النفقات، والتكاليف، وما إلى ذلك على أنها تعويذات باللغة اللاتينية. على طول الطريق، كان علي أن أتقن الجانب الفني للمشكلة: MS Access (تم إجراء جميع التقارير هناك من خلال VBA)، MS SQL (كتخزين جديد، بدلاً من Access)، Oracle (التي أطلقت عليها في البداية اسم Oracle، مما تسبب في حالة هستيرية بين المبرمجين). وفجأة بدأت أفهم أن الجانب الفني أكثر إثارة للاهتمام بالنسبة لي. هناك محاولات لإنشاء استعلامات معقدة (ونتيجة لذلك، يتم تعليق قاعدة البيانات من البرامج النصية الخاصة بي، ويركض المسؤولون الغاضبون في محاولة لمعرفة من فعل ذلك). ولكن الوظيفة الرئيسية هي التمويل، والتي بدأت للتو في إثارة غضبي. بعد شهر ونصف، أكتب خطاب استقالة، لأنني لا أستطيع تقديم أي نتائج (ولم يتوقعوا أي شيء مني، بصراحة). يمزقها رئيس الدائرة المالية ويقول: "لا تهتم بالحماقة". بعد شهر، أكتب بيانا مرة أخرى، ورئيس القسم، الذي صدمته هذه الوقاحة (الذي أصبح فيما بعد رئيس مجلس إدارة البنك)، يوقع بحيرة شديدة: الرجل يبلغ من العمر 21 عاما، دون أعلى التعليم، لقد حصلوا على راتب وثقة، لكنه يتصرف بهذه الطريقة. كانت أسباب الفصل عاملين آخرين: الرئيس، الذي لم أستطع الرد بهدوء على غطرسته، والكرسي غير المريح، الذي بدأ يؤلمني ظهري. هذا مضحك بشكل لا يصدق، ولكن هنا هو الدافع. عندما استقالت، اعتقدت أنني الآن سأشعر براحة أكبر. ولكن لم يكن هناك. <h3>الفصل 2. 70 مقابلة</h3>عندما غادرت البنك، أخذت نفسًا عميقًا. "سأرتب الأمر بهذه الطريقة، وسوف يفاجأ الجميع." تمت جدولة المقابلات، وكانت رواتبهم أعلى، ويبدو أنه لن تكون هناك حاجة للتعامل مع التقارير. هناك 4 مقابلات ولم يوظفني أحد. 5، 6 مقابلات - نفس الشيء. عشت مع فتاة في غرفة مستأجرة، وحصلت على عمل وتستطيع تغطية قلة دخلي. لكن ما زلت لا أعرف إلى متى سأظل بلا دخل. ذهبت إلى المقابلات (الوظائف الشاغرة للمحللين)، وسألوني بشكل أساسي عن SQL وVBA. بالنسبة لأولئك الذين لا يعرفون، VBA هي لغة برمجة في Excel وAccess ومنتجات MS Office الأخرى. تم إجراء 10 مقابلات - لا شيء. 20، 30 - لا شيء. يشعر الجميع بالحرج بسبب قلة الخبرة والتعليم العالي (والذي يبدو لي شيئًا صغيرًا). بعد 40 مقابلة، يبدأ اليأس بالتسلل إلى داخلك. خلال فترة 55-60 مقابلة، أبدأ في دراسة 1C. تطلب الفتاة التي أصبحت زوجة بالفعل المغادرة إلى سانت بطرسبرغ، حيث أن لديها على الأقل مسكنها الخاص هناك. وفي المقابلة السبعين، تمت دعوتي لأكون مسؤول قاعدة بيانات 1C (مع احتمال أن أصبح مطور 1C) في شركة صغيرة في المنطقة الصناعية في سانت بطرسبرغ مقابل 50000 روبل. الآن هذا هو النمو الوظيفي! <h3>الفصل 3. عودة الأسطورة</h3>عندما نظرت من نافذة حافلة صغيرة (نقل الشركات) في المنطقة الصناعية الرمادية في سانت بطرسبرغ، وسافرت لمدة ساعة وواحد وأربعين ذهابًا، أدركت أنني لا أستطيع ذلك عش هكذا. اختفى الاهتمام بـ 1C عند اللمسة الأولى للنظام المكتوب ذاتيًا. كانت هناك حاجة إلى خطة. وقد نضج: في المساء درس SQL، وفي الوقت نفسه راقب موقع العمل المعروف. كان السبب الأخير للفصل هو الوضع: لم يرغب المدير العام في السماح لي بالذهاب في إجازة مخططة، على الرغم من أن التذاكر قد تم شراؤها بالفعل. بعد إجازتي، أكتب طلبًا وأرسل سيرتي الذاتية مرة أخرى إلى الوظائف الشاغرة في موسكو. يُعرض عليّ مرة أخرى إجراء مقابلة في أحد البنوك الكبيرة بتوقيت موسكو. أتيت مرة أخرى إلى مطبخ أقاربي وأذهب لإجراء مقابلة. عندما كتبت العنوان، لم أصدق عيني - كان هذا هو المبنى الذي حلمت بالعمل فيه (في وقت إقامتي الأخيرة في موسكو، كان قيد الإنشاء). تم تسمية المنصب بأخصائي دعم نظم المعلومات الرئيسي. أذهب إلى المكتب استقبلني رجل يبلغ من العمر حوالي 30 عامًا يرتدي سترة وجينزًا عصريًا. صعدنا إلى الطابق الخامس عشر، وعندما رأيت بانوراما المدينة، حبست أنفاسي: كانت جميع المباني الشاهقة الستالينية مرئية. كان الطراز بأكمله للمبنى حديثًا للغاية: في مكتب الرئيس كانت هناك ثلاجات نبيذ وأحواض أسماك عصرية ولوحة لامرأة عارية باللونين الأبيض والأسود. تسبب هذا في تأثير "رائع". لم تتم المحادثة مع رئيسه كما جرت العادة: فقد تحدث لمدة 40 دقيقة تقريبًا عما يحدث في البنك. لم أفهم شيئًا، لكنني أومأت برأسي. وعندما سألت: متى ستبدأ بسؤالي؟ لم يكن ينتبه. مرة أخرى، على سؤالي "متى المقابلة الفنية؟"، كانت الإجابة "نعم، سنقوم بتعيينك على أي حال، إذا لم تتمكن من التعامل معها، فسوف نقوم بطردك". قيل بابتسامة، وأدركت أن كل شيء، الحلم قد أصبح حقيقة مرة أخرى! <h3>الفصل 4. العثور على نفسك في مجال تكنولوجيا المعلومات </h3>عندما وصلت إلى المكان الجديد، فهمت سبب توظيفي على الفور. سأصف صورة نموذجية لموظف القسم: متوسط ​​العمر 55 عامًا، من سكان موسكو، حاصل على تعليم في جامعة موسكو الحكومية، ويعمل في معهد أبحاث الدفاع في العهد السوفيتي، وينتقل إلى القطاع المصرفي في التسعينيات، ويعمل هنا منذ 20 عامًا سنوات، نصفهم رجال ونصفهم نساء. لقد دخلوا في تنافر تام مع التصميمات الداخلية المحيطة. لقد شاركنا في الحفاظ على برامج إعداد التقارير للمحاسبة. وبطبيعة الحال، كان هذا كله في نصوص VBA وSQL القديمة التي كتبها المطورون في أواخر التسعينيات وأوائل القرن الحادي والعشرين. كان ذلك في عام 2015، وكانت الأتمتة تتم من خلال MS Access. أي أنها بدت سيئة للغاية. ولكن كان هناك فارق بسيط - لقد قدموا ما يريده العميل (المحاسبة). وبالضبط في الوقت المحدد وبالشكل المطلوب. هم وحدهم الذين يعرفون كيف يعمل الأمر، وحتى أونوتول لم يستطع أن يتخيل مدى تعقيد تطوراتهم. ولم يتمكن أي مدير لتكنولوجيا المعلومات، حتى مع أعظم الرغبة، من طردهم - ذهب كبير المحاسبين إلى مجلس إدارة البنك ودافع عن أي موظف يخدم مصالح قسم المحاسبة. أراد المدير مني أن ألعب دور حصان طروادة: قمت بدراسة جميع تطوراتهم، ثم قمت بنقل البيانات إلى النظام الجديد. ومن ثم يمكن فصل الموظفين القدامى، ويمكن نقلي إلى نظام جديد. أولاً، قمت بالتعمق في عملياتهم ونظرت إلى كود VBA. تدريجيًا تعلمت قراءة كود VBA. وبعد مرور عام، عرفت بالفعل كيفية كتابة الكود نفسه. المهمة النموذجية: إعطاء قاعدة بيانات، واستخراج البيانات منها، ووضعها في برنامج Excel بتنسيق معين. الآن، كما قال زادورنوف، خذ نفسًا عميقًا: جميع تقارير القسم (وهذا 50 يوميًا، 20 تقريرًا شهريًا!) تم تشغيلها يدويًا! كارل، هل تفهم أن الأشخاص يغيرون التواريخ لإجراء 1+ كل يوم بأيديهم في 50 تقريرًا! يجلسون وينتظرون نتيجة تقرير واحد لمدة 1-10 دقائق ويطلقون تقريرًا آخر! كما أن التقارير اليومية يجب أن تنطلق في وقت معين، والعياذ بالله أن تتأخر! لا يقومون فقط بإعداد التقارير، بل يقومون يدويًا بتشغيل الإجراءات في قاعدة البيانات دون استخدام المتغيرات! أي أنه بدلاً من استخدام المتغير @startDate = '2015-01-01'، سيقومون بتغيير نفس التاريخ يدويًا في 20 مكانًا! بعد النظر في كل هذا، بدأت في تعلم بايثون، وبالتعاون مع VBA وSQL وبرنامج جدولة المهام، قمت بأتمتة كل هذا خلال عامين. ليس فقط التقارير الآلية، ولكن أيضًا تسريعها: إذا تخلت عن MS Access + VBA لصالح MS SQL + TSQL، فيمكنك تحقيق زيادة متعددة في الإنتاجية. سجلي هو تسريع إنشاء التقرير في100مرة واحدة! لكن زملائي كانوا غير راضين للغاية عن هذه الأتمتة، لذلك تم إعلاني عدوًا للشعب (أرادوا الجلوس بهدوء حتى التقاعد). مر الوقت وتمت عملية ترحيل البيانات بنجاح. لقد قدرني المدير كثيرًا: إذا أتيت للعمل في بداية مسيرتي المهنية في الساعة 8 صباحًا، فبعد فترة يمكنني الحضور في أي وقت حتى الساعة 12:00، وزيادة ثابتة في الراتب والمنصب، والدفع مقابل العمل في عطلات نهاية الأسبوع أكثر من ضعف المبلغ، سيارة أجرة إلى المنزل إذا كنت متأخرا في العمل، والاتصالات المتنقلة، باختصار - النخبة! <h3>الفصل 5. القفص الذهبي</h3>فجأة، بعد 3.5 سنوات، تأتي إدارة تكنولوجيا المعلومات الجديدة وتقول إن النظام الذي قمت بترحيل البيانات إليه لم تعد هناك حاجة إليه. لكن النظام القديم سيبقى. يتقدم مديري في السلم الوظيفي ويدعوني للانتقال إلى قسم أكثر تقدمًا. في اجتماع مع رئيس القسم التقدمي، أدركت أن المجموعة التكنولوجية لهذا القسم غير معروفة بالنسبة لي: Oracle، .net، C#، Linux، إلخ. + الكراهية تجاه الرئيس المحتمل. أخبرت مديري أنني لست مهتمًا بالقسم التقدمي، وهو ينسى أمري بسهولة. ثم يصبح السؤال: ماذا تفعل بعد ذلك؟ كان الدخل لائقًا بالفعل، ولم يقم المبتدئون بتوظيفي مقابل هذا الراتب. بعد التفكير في مهاراتي، أدركت أنني بحاجة للذهاب إلى التعلم الآلي. كان كل شيء مثيرا للاهتمام حتى أول لقاء مع الإحصائيات الرياضية، الأمر الذي تسبب في الاشمئزاز في المعهد. هذا كل شيء، ذهول لمدة ستة أشهر! مر الوقت، وفي أحد الأيام، بينما كنت أسير، فكرت في موقع ويب يعرض المطاعم الجيدة على خريطة موسكو. بدأت بتعلم HTML، CSS، JS. قضيت 3 أشهر في الدراسة، ولم يكن لدي المعرفة اللازمة لإنشاء موقع ويب كامل، لكن كان بإمكاني ممارسة ذلك في العمل. وُلدت فكرة: إنشاء بوابة للمحاسبين حتى يتمكنوا من تنزيل أي تقرير لأنفسهم بضغطة زر. استغرق إنشاء البوابة شهرين، وتم إنشاء تطبيق الويب SPA (تطبيق الصفحة الواحدة) في React js مع الواجهة الخلفية Node.js. تم سحب نصوص SQL مرة أخرى (لم أكن أعرف عن أطر عمل مثل Hibernate)، وأطلقت Python وخزنت معلومات إضافية في MongoDb (على سبيل المثال، حول مستخدمي الموقع). خارجيًا، بدا الموقع لائقًا جدًا (bootstrap 4، رسوم متحركة عصرية). وما زلت فخوراً بهذا المشروع. ولكن عندما عرضت الكود الخاص بي على مطوري الويب بالبنك، أصيبوا بالذهول. ليس فئة واحدة خاصة بك! الميزات فقط، المتشددين فقط! لقد أشادوا بي، لكنهم قالوا إنني ما زلت بحاجة إلى دراسة الكثير لكي أصبح مطورًا متوسطًا متكاملاً. حاولت الحصول على وظيفة كمحلل، لكن لم تكن هناك عروض خاصة. أعتقد: لم أكن هناك، سأقوم بنشر سيرتي الذاتية كمطور متكامل. جاءت المكالمات، ولكن خلال المقابلات طرت مثل الخشب الرقائقي فوق باريس: على سبيل المثال، لم أكن أعرف ما هي HashMap وHashSet ولماذا كانت هناك حاجة إليهما. لم تكن هناك أدنى فكرة عن OOP، وأنماط البرمجة، والخوارزميات، والاختبار، وGit. تذكرت مشاعر الخجل التي نسيتها منذ فترة طويلة من جهل الأشياء الأساسية. فجأة يأتي عرض لوظيفة رئيس تحليلات العملاء في شركة مالية. قبل أسبوع من إغلاق البلاد بسبب الوباء. حصلت على وظيفة في شركة مالية، ولكن كان هناك شعور مزدوج: من ناحية، كان الراتب المرتفع دافئًا، ومن ناحية أخرى، سيكون هناك حد أدنى من التطوير على الجانب الفني. مر أسبوع على تركيب الجهاز والبدء بالعمل عن بعد. وبما أن أيام العطل لا تنطبق على القطاع المالي، فقد عملنا كالمعتاد. تبين أن الرئيس الجديد كان شخصًا مجنونًا للغاية: فقد عرض التخلص من فيسبوك، وإنشاء شبكاته العصبية الخاصة لدراسة العملاء (بدون عالم بيانات ضمن طاقم العمل). عُرض على الموظفين الجدد تعلم بايثون في غضون أسبوع، وما إلى ذلك. وأصبحت أيام الإجازة غير مدفوعة الأجر هي القاعدة. لقد كان من الغباء الاستقالة: أين ستحصل على وظيفة أثناء الوباء؟ لكن الصبر نفد بعد شهرين عندما أُعلن أنه لن تكون هناك مكافآت ربع سنوية. الفارق الدقيق هو أنه عندما اتفقنا على الراتب، في وقت التوظيف، قال أن الراتب مقسم إلى راتب (60٪) ومكافأة ربع سنوية (40٪)، والتي تُدفع دائمًا. أصبح من الواضح أنه تم اتخاذ الاختيار الخاطئ وكان علينا البدء في البحث عن وظيفة جديدة. <h3>الفصل السادس. البدء في إتقان Java</h3>في أحد أيام شهر مايو، تلقيت دعوة لإجراء مقابلة لشغل الوظيفة الشاغرة "المطور". تحتاج شركة في مجال التأمين إلى شخص يقوم بتطوير منتجات التأمين. هناك حاجة إلى خبرة في البرمجة، ولكن نظرًا لأن هذا تطور "فريد" للشركة، فليست هناك حاجة إلى لغة معينة. هناك حاجة أيضًا إلى Git وما إلى ذلك. حددت موعدًا للمقابلة خلال يومين، ودرست أساسيات Git في وقت فراغي. خلال المقابلة، سُئلت عن Python وJS وGit وSQL. أجبت على كل شيء ما عدا مفهوم "طريقة التحميل الزائد"، وتمت دعوتي للعمل خلال أسبوعين. وتبين أن الشركة اشترت النظام منذ فترة طويلة. مكتوب بلغة Java (الأمامي والخلفي)، والتي يمكنك من خلالها إنشاء عمليات تجارية دون معرفة لغة برمجة (بتعبير أدق، باستخدام لغة برمجة Jelly المضمنة). يبدو الأمر جيدًا، لكن في الواقع كان كل شيء مشوهًا. الاستطراد الغنائي: أي تقنية لها عصرها الخاص وحجمها الخاص. يعد إجراء جميع التقارير في عام 2000 فقط في برنامج Excel أمرًا رائعًا. إن القيام بنفس الشيء في عام 2021 ليس جيدًا جدًا. كان موقع الشركة الإلكتروني بلغة HTML الخالصة رائعًا في عام 1999، ولكن ليس في عام 2021. لذلك، كانت التكنولوجيا التي استخدمتها الشركة في وقت إنشائها (2005) رائعة جدًا - كانت Java مسؤولة عن كل من الخادم وجزء العميل (ما يسمى بصفحات Java servlet). علاوة على ذلك، إذا قمت بإنشاء عملية تجارية جديدة (تحتوي على واجهة مستخدم خاصة بها)، فسيتم تخزينها داخل قاعدة البيانات، وليس في التعليمات البرمجية الموجودة في الملف. لفهم مدى إزعاج هذا الأمر، تخيل أنك تكتب كود Java في فكرة Intellij، وتحفظه في قاعدة البيانات، ثم. عندما تريد تشغيل التعليمات البرمجية الخاصة بك، فإن نواة البرنامج تذهب إلى قاعدة البيانات وتقرأ التعليمات البرمجية الخاصة بك من هناك. وبناء على ذلك، لا يمكنك تصحيح التطبيق الخاص بك بشكل كامل. تلميح رقم 1: عندما تريد إرسال التعليمات البرمجية إلى منصة الاختبار، فإنك تحتاج إلى إنشائها ومن ناحية أخرى، سيكون هناك حد أدنى من التطوير على الجانب الفني. مر أسبوع على تركيب الجهاز والبدء بالعمل عن بعد. وبما أن أيام العطل لا تنطبق على القطاع المالي، فقد عملنا كالمعتاد. تبين أن الرئيس الجديد كان شخصًا مجنونًا للغاية: فقد عرض التخلص من فيسبوك، وإنشاء شبكاته العصبية الخاصة لدراسة العملاء (بدون عالم بيانات ضمن طاقم العمل). عُرض على الموظفين الجدد تعلم بايثون في غضون أسبوع، وما إلى ذلك. وأصبحت أيام الإجازة غير مدفوعة الأجر هي القاعدة. لقد كان من الغباء الاستقالة: أين ستحصل على وظيفة أثناء الوباء؟ لكن الصبر نفد بعد شهرين عندما أُعلن أنه لن تكون هناك مكافآت ربع سنوية. الفارق الدقيق هو أنه عندما اتفقنا على الراتب، في وقت التوظيف، قال أن الراتب مقسم إلى راتب (60٪) ومكافأة ربع سنوية (40٪)، والتي تُدفع دائمًا. أصبح من الواضح أنه تم اتخاذ الاختيار الخاطئ وكان علينا البدء في البحث عن وظيفة جديدة. <h3>الفصل السادس. البدء في إتقان Java</h3>في أحد أيام شهر مايو، تلقيت دعوة لإجراء مقابلة لشغل الوظيفة الشاغرة "المطور". تحتاج شركة في مجال التأمين إلى شخص يقوم بتطوير منتجات التأمين. هناك حاجة إلى خبرة في البرمجة، ولكن نظرًا لأن هذا تطور "فريد" للشركة، فليست هناك حاجة إلى لغة معينة. هناك حاجة أيضًا إلى Git وما إلى ذلك. حددت موعدًا للمقابلة خلال يومين، ودرست أساسيات Git في وقت فراغي. خلال المقابلة، سُئلت عن Python وJS وGit وSQL. أجبت على كل شيء ما عدا مفهوم "طريقة التحميل الزائد"، وتمت دعوتي للعمل خلال أسبوعين. وتبين أن الشركة اشترت النظام منذ فترة طويلة. مكتوب بلغة Java (الأمامي والخلفي)، والتي يمكنك من خلالها إنشاء عمليات تجارية دون معرفة لغة برمجة (بتعبير أدق، باستخدام لغة برمجة Jelly المضمنة). يبدو الأمر جيدًا، لكن في الواقع كان كل شيء مشوهًا. الاستطراد الغنائي: أي تقنية لها عصرها الخاص وحجمها الخاص. يعد إجراء جميع التقارير في عام 2000 فقط في برنامج Excel أمرًا رائعًا. إن القيام بنفس الشيء في عام 2021 ليس جيدًا جدًا. كان موقع الشركة الإلكتروني بلغة HTML الخالصة رائعًا في عام 1999، ولكن ليس في عام 2021. لذلك، كانت التكنولوجيا التي استخدمتها الشركة في وقت إنشائها (2005) رائعة جدًا - كانت Java مسؤولة عن كل من الخادم وجزء العميل (ما يسمى بصفحات Java servlet). علاوة على ذلك، إذا قمت بإنشاء عملية تجارية جديدة (تحتوي على واجهة مستخدم خاصة بها)، فسيتم تخزينها داخل قاعدة البيانات، وليس في التعليمات البرمجية الموجودة في الملف. لفهم مدى إزعاج هذا الأمر، تخيل أنك تكتب كود Java في فكرة Intellij، وتحفظه في قاعدة البيانات، ثم. عندما تريد تشغيل التعليمات البرمجية الخاصة بك، فإن نواة البرنامج تذهب إلى قاعدة البيانات وتقرأ التعليمات البرمجية الخاصة بك من هناك. وبناء على ذلك، لا يمكنك تصحيح التطبيق الخاص بك بشكل كامل. تلميح رقم 1: عندما تريد إرسال التعليمات البرمجية إلى منصة الاختبار، فأنت بحاجة إلى إنشائها ومن ناحية أخرى، سيكون هناك حد أدنى من التطوير على الجانب الفني. مر أسبوع على تركيب الجهاز والبدء بالعمل عن بعد. وبما أن أيام العطل لا تنطبق على القطاع المالي، فقد عملنا كالمعتاد. تبين أن الرئيس الجديد كان شخصًا مجنونًا للغاية: فقد عرض التخلص من فيسبوك، وإنشاء شبكاته العصبية الخاصة لدراسة العملاء (بدون عالم بيانات ضمن طاقم العمل). عُرض على الموظفين الجدد تعلم بايثون في غضون أسبوع، وما إلى ذلك. وأصبحت أيام الإجازة غير مدفوعة الأجر هي القاعدة. لقد كان من الغباء الاستقالة: أين ستحصل على وظيفة أثناء الوباء؟ لكن الصبر نفد بعد شهرين عندما أُعلن أنه لن تكون هناك مكافآت ربع سنوية. الفارق الدقيق هو أنه عندما اتفقنا على الراتب، في وقت التوظيف، قال أن الراتب مقسم إلى راتب (60٪) ومكافأة ربع سنوية (40٪)، والتي تُدفع دائمًا. أصبح من الواضح أنه تم اتخاذ الاختيار الخاطئ وكان علينا البدء في البحث عن وظيفة جديدة. <h3>الفصل السادس. البدء في إتقان Java</h3>في أحد أيام شهر مايو، تلقيت دعوة لإجراء مقابلة لشغل الوظيفة الشاغرة "المطور". تحتاج شركة في مجال التأمين إلى شخص يقوم بتطوير منتجات التأمين. هناك حاجة إلى خبرة في البرمجة، ولكن نظرًا لأن هذا تطور "فريد" للشركة، فليست هناك حاجة إلى لغة معينة. هناك حاجة أيضًا إلى Git وما إلى ذلك. حددت موعدًا للمقابلة خلال يومين، ودرست أساسيات Git في وقت فراغي. خلال المقابلة، سُئلت عن Python وJS وGit وSQL. أجبت على كل شيء ما عدا مفهوم "طريقة التحميل الزائد"، وتمت دعوتي للعمل خلال أسبوعين. وتبين أن الشركة اشترت النظام منذ فترة طويلة. مكتوب بلغة Java (الأمامي والخلفي)، والتي يمكنك من خلالها إنشاء عمليات تجارية دون معرفة لغة برمجة (بتعبير أدق، باستخدام لغة برمجة Jelly المضمنة). يبدو الأمر جيدًا، لكن في الواقع كان كل شيء مشوهًا. الاستطراد الغنائي: أي تقنية لها عصرها الخاص وحجمها الخاص. يعد إجراء جميع التقارير في عام 2000 فقط في برنامج Excel أمرًا رائعًا. إن القيام بنفس الشيء في عام 2021 ليس جيدًا جدًا. كان موقع الشركة الإلكتروني بلغة HTML الخالصة رائعًا في عام 1999، ولكن ليس في عام 2021. لذلك، كانت التكنولوجيا التي استخدمتها الشركة في وقت إنشائها (2005) رائعة جدًا - كانت Java مسؤولة عن كل من الخادم وجزء العميل (ما يسمى بصفحات Java servlet). علاوة على ذلك، إذا قمت بإنشاء عملية تجارية جديدة (تحتوي على واجهة مستخدم خاصة بها)، فسيتم تخزينها داخل قاعدة البيانات، وليس في التعليمات البرمجية الموجودة في الملف. لفهم مدى إزعاج هذا الأمر، تخيل أنك تكتب كود Java في فكرة Intellij، وتحفظه في قاعدة البيانات، ثم. عندما تريد تشغيل التعليمات البرمجية الخاصة بك، فإن نواة البرنامج تذهب إلى قاعدة البيانات وتقرأ التعليمات البرمجية الخاصة بك من هناك. وبناء على ذلك، لا يمكنك تصحيح التطبيق الخاص بك بشكل كامل. تلميح رقم 1: عندما تريد إرسال التعليمات البرمجية إلى منصة الاختبار، فإنك تحتاج إلى إنشائها قم بإنشاء شبكاتك العصبية الخاصة لدراسة العملاء (بدون عالم بيانات ضمن طاقم العمل). عُرض على الموظفين الجدد تعلم بايثون في غضون أسبوع، وما إلى ذلك. وأصبحت أيام الإجازة غير مدفوعة الأجر هي القاعدة. لقد كان من الغباء الاستقالة: أين ستحصل على وظيفة أثناء الوباء؟ لكن الصبر نفد بعد شهرين عندما أُعلن أنه لن تكون هناك مكافآت ربع سنوية. الفارق الدقيق هو أنه عندما اتفقنا على الراتب، في وقت التوظيف، قال أن الراتب مقسم إلى راتب (60٪) ومكافأة ربع سنوية (40٪)، والتي تُدفع دائمًا. أصبح من الواضح أنه تم اتخاذ الاختيار الخاطئ وكان علينا البدء في البحث عن وظيفة جديدة. <h3>الفصل السادس. البدء في إتقان Java</h3>في أحد أيام شهر مايو، تلقيت دعوة لإجراء مقابلة لشغل الوظيفة الشاغرة "المطور". تحتاج شركة في مجال التأمين إلى شخص يقوم بتطوير منتجات التأمين. هناك حاجة إلى خبرة في البرمجة، ولكن نظرًا لأن هذا تطور "فريد" للشركة، فليست هناك حاجة إلى لغة معينة. هناك حاجة أيضًا إلى Git وما إلى ذلك. حددت موعدًا للمقابلة خلال يومين، ودرست أساسيات Git في وقت فراغي. خلال المقابلة، سُئلت عن Python وJS وGit وSQL. أجبت على كل شيء ما عدا مفهوم "طريقة التحميل الزائد"، وتمت دعوتي للعمل خلال أسبوعين. وتبين أن الشركة اشترت النظام منذ فترة طويلة. مكتوب بلغة Java (الأمامي والخلفي)، والتي يمكنك من خلالها إنشاء عمليات تجارية دون معرفة لغة برمجة (بتعبير أدق، باستخدام لغة برمجة Jelly المضمنة). يبدو الأمر جيدًا، لكن في الواقع كان كل شيء مشوهًا. الاستطراد الغنائي: أي تقنية لها عصرها الخاص وحجمها الخاص. يعد إجراء جميع التقارير في عام 2000 فقط في برنامج Excel أمرًا رائعًا. إن القيام بنفس الشيء في عام 2021 ليس جيدًا جدًا. كان موقع الشركة الإلكتروني بلغة HTML الخالصة رائعًا في عام 1999، ولكن ليس في عام 2021. لذلك، كانت التكنولوجيا التي استخدمتها الشركة في وقت إنشائها (2005) رائعة جدًا - كانت Java مسؤولة عن كل من الخادم وجزء العميل (ما يسمى بصفحات Java servlet). علاوة على ذلك، إذا قمت بإنشاء عملية تجارية جديدة (تحتوي على واجهة مستخدم خاصة بها)، فسيتم تخزينها داخل قاعدة البيانات، وليس في التعليمات البرمجية الموجودة في الملف. لفهم مدى إزعاج هذا الأمر، تخيل أنك تكتب كود Java في فكرة Intellij، وتحفظه في قاعدة البيانات، ثم. عندما تريد تشغيل التعليمات البرمجية الخاصة بك، فإن نواة البرنامج تذهب إلى قاعدة البيانات وتقرأ التعليمات البرمجية الخاصة بك من هناك. وبناء على ذلك، لا يمكنك تصحيح التطبيق الخاص بك بشكل كامل. تلميح رقم 1: عندما تريد إرسال التعليمات البرمجية إلى منصة الاختبار، فأنت بحاجة إلى إنشائها قم بإنشاء شبكاتك العصبية الخاصة لدراسة العملاء (بدون عالم بيانات ضمن طاقم العمل). عُرض على الموظفين الجدد تعلم بايثون في غضون أسبوع، وما إلى ذلك. وأصبحت أيام الإجازة غير مدفوعة الأجر هي القاعدة. لقد كان من الغباء الاستقالة: أين ستحصل على وظيفة أثناء الوباء؟ لكن الصبر نفد بعد شهرين عندما أُعلن أنه لن تكون هناك مكافآت ربع سنوية. الفارق الدقيق هو أنه عندما اتفقنا على الراتب، في وقت التوظيف، قال أن الراتب مقسم إلى راتب (60٪) ومكافأة ربع سنوية (40٪)، والتي تُدفع دائمًا. أصبح من الواضح أنه تم اتخاذ الاختيار الخاطئ وكان علينا البدء في البحث عن وظيفة جديدة. <h3>الفصل السادس. البدء في إتقان Java</h3>في أحد أيام شهر مايو، تلقيت دعوة لإجراء مقابلة لشغل الوظيفة الشاغرة "المطور". تحتاج شركة في مجال التأمين إلى شخص يقوم بتطوير منتجات التأمين. هناك حاجة إلى خبرة في البرمجة، ولكن نظرًا لأن هذا تطور "فريد" للشركة، فليست هناك حاجة إلى لغة معينة. هناك حاجة أيضًا إلى Git وما إلى ذلك. حددت موعدًا للمقابلة خلال يومين، ودرست أساسيات Git في وقت فراغي. خلال المقابلة، سُئلت عن Python وJS وGit وSQL. أجبت على كل شيء ما عدا مفهوم "طريقة التحميل الزائد"، وتمت دعوتي للعمل خلال أسبوعين. وتبين أن الشركة اشترت النظام منذ فترة طويلة. مكتوب بلغة Java (الأمامي والخلفي)، والتي يمكنك من خلالها إنشاء عمليات تجارية دون معرفة لغة برمجة (بتعبير أدق، باستخدام لغة برمجة Jelly المضمنة). يبدو الأمر جيدًا، لكن في الواقع كان كل شيء مشوهًا. الاستطراد الغنائي: أي تقنية لها عصرها الخاص وحجمها الخاص. يعد إجراء جميع التقارير في عام 2000 فقط في برنامج Excel أمرًا رائعًا. إن القيام بنفس الشيء في عام 2021 ليس جيدًا جدًا. كان موقع الشركة الإلكتروني بلغة HTML الخالصة رائعًا في عام 1999، ولكن ليس في عام 2021. لذلك، كانت التكنولوجيا التي استخدمتها الشركة في وقت إنشائها (2005) رائعة جدًا - كانت Java مسؤولة عن كل من الخادم وجزء العميل (ما يسمى بصفحات Java servlet). علاوة على ذلك، إذا قمت بإنشاء عملية تجارية جديدة (تحتوي على واجهة مستخدم خاصة بها)، فسيتم تخزينها داخل قاعدة البيانات، وليس في التعليمات البرمجية الموجودة في الملف. لفهم مدى إزعاج هذا الأمر، تخيل أنك تكتب كود Java في فكرة Intellij، وتحفظه في قاعدة البيانات، ثم. عندما تريد تشغيل التعليمات البرمجية الخاصة بك، فإن نواة البرنامج تذهب إلى قاعدة البيانات وتقرأ التعليمات البرمجية الخاصة بك من هناك. وبناء على ذلك، لا يمكنك تصحيح التطبيق الخاص بك بشكل كامل. تلميح رقم 1: عندما تريد إرسال التعليمات البرمجية إلى منصة الاختبار، فإنك تحتاج إلى إنشائها <h3>الفصل السادس. البدء في إتقان Java</h3>في أحد أيام شهر مايو، تلقيت دعوة لإجراء مقابلة لشغل الوظيفة الشاغرة "المطور". تحتاج شركة في مجال التأمين إلى شخص يقوم بتطوير منتجات التأمين. هناك حاجة إلى خبرة في البرمجة، ولكن نظرًا لأن هذا تطور "فريد" للشركة، فليست هناك حاجة إلى لغة معينة. هناك حاجة أيضًا إلى Git وما إلى ذلك. حددت موعدًا للمقابلة خلال يومين، ودرست أساسيات Git في وقت فراغي. خلال المقابلة، سُئلت عن Python وJS وGit وSQL. أجبت على كل شيء ما عدا مفهوم "طريقة التحميل الزائد"، وتمت دعوتي للعمل خلال أسبوعين. وتبين أن الشركة اشترت النظام منذ فترة طويلة. مكتوب بلغة Java (الأمامي والخلفي)، والتي يمكنك من خلالها إنشاء عمليات تجارية دون معرفة لغة برمجة (بتعبير أدق، باستخدام لغة برمجة Jelly المضمنة). يبدو الأمر جيدًا، لكن في الواقع كان كل شيء مشوهًا. الاستطراد الغنائي: أي تقنية لها عصرها الخاص وحجمها الخاص. يعد إجراء جميع التقارير في عام 2000 فقط في برنامج Excel أمرًا رائعًا. إن القيام بنفس الشيء في عام 2021 ليس جيدًا جدًا. كان موقع الشركة الإلكتروني بلغة HTML الخالصة رائعًا في عام 1999، ولكن ليس في عام 2021. لذلك، كانت التكنولوجيا التي استخدمتها الشركة في وقت إنشائها (2005) رائعة جدًا - كانت Java مسؤولة عن كل من الخادم وجزء العميل (ما يسمى بصفحات Java servlet). علاوة على ذلك، إذا قمت بإنشاء عملية تجارية جديدة (تحتوي على واجهة مستخدم خاصة بها)، فسيتم تخزينها داخل قاعدة البيانات، وليس في التعليمات البرمجية الموجودة في الملف. لفهم مدى إزعاج هذا الأمر، تخيل أنك تكتب كود Java في فكرة Intellij، وتحفظه في قاعدة البيانات، ثم. عندما تريد تشغيل التعليمات البرمجية الخاصة بك، فإن نواة البرنامج تذهب إلى قاعدة البيانات وتقرأ التعليمات البرمجية الخاصة بك من هناك. وبناء على ذلك، لا يمكنك تصحيح التطبيق الخاص بك بشكل كامل. تلميح رقم 1: عندما تريد إرسال التعليمات البرمجية إلى منصة الاختبار، فأنت بحاجة إلى إنشائها <h3>الفصل السادس. البدء في إتقان Java</h3>في أحد أيام شهر مايو، تلقيت دعوة لإجراء مقابلة لشغل الوظيفة الشاغرة "المطور". تحتاج شركة في مجال التأمين إلى شخص يقوم بتطوير منتجات التأمين. هناك حاجة إلى خبرة في البرمجة، ولكن نظرًا لأن هذا تطور "فريد" للشركة، فليست هناك حاجة إلى لغة معينة. هناك حاجة أيضًا إلى Git وما إلى ذلك. حددت موعدًا للمقابلة خلال يومين، ودرست أساسيات Git في وقت فراغي. خلال المقابلة، سُئلت عن Python وJS وGit وSQL. أجبت على كل شيء ما عدا مفهوم "طريقة التحميل الزائد"، وتمت دعوتي للعمل خلال أسبوعين. وتبين أن الشركة اشترت النظام منذ فترة طويلة. مكتوب بلغة Java (الأمامي والخلفي)، والتي يمكنك من خلالها إنشاء عمليات تجارية دون معرفة لغة برمجة (بتعبير أدق، باستخدام لغة برمجة Jelly المضمنة). يبدو الأمر جيدًا، لكن في الواقع كان كل شيء مشوهًا. الاستطراد الغنائي: أي تقنية لها عصرها الخاص وحجمها الخاص. يعد إجراء جميع التقارير في عام 2000 فقط في برنامج Excel أمرًا رائعًا. إن القيام بنفس الشيء في عام 2021 ليس جيدًا جدًا. كان موقع الشركة الإلكتروني بلغة HTML الخالصة رائعًا في عام 1999، ولكن ليس في عام 2021. لذلك، كانت التكنولوجيا التي استخدمتها الشركة في وقت إنشائها (2005) رائعة جدًا - كانت Java مسؤولة عن كل من الخادم وجزء العميل (ما يسمى بصفحات Java servlet). علاوة على ذلك، إذا قمت بإنشاء عملية تجارية جديدة (تحتوي على واجهة مستخدم خاصة بها)، فسيتم تخزينها داخل قاعدة البيانات، وليس في التعليمات البرمجية الموجودة في الملف. لفهم مدى إزعاج هذا الأمر، تخيل أنك تكتب كود Java في فكرة Intellij، وتحفظه في قاعدة البيانات، ثم. عندما تريد تشغيل التعليمات البرمجية الخاصة بك، فإن نواة البرنامج تذهب إلى قاعدة البيانات وتقرأ التعليمات البرمجية الخاصة بك من هناك. وبناء على ذلك، لا يمكنك تصحيح التطبيق الخاص بك بشكل كامل. تلميح رقم 1: عندما تريد إرسال التعليمات البرمجية إلى منصة الاختبار، فأنت بحاجة إلى إنشائها كان موقع الشركة الإلكتروني بلغة HTML الخالصة رائعًا في عام 1999، ولكن ليس في عام 2021. لذلك، كانت التكنولوجيا التي استخدمتها الشركة في وقت إنشائها (2005) رائعة جدًا - كانت Java مسؤولة عن كل من الخادم وجزء العميل (ما يسمى بصفحات Java servlet). علاوة على ذلك، إذا قمت بإنشاء عملية تجارية جديدة (تحتوي على واجهة مستخدم خاصة بها)، فسيتم تخزينها داخل قاعدة البيانات، وليس في التعليمات البرمجية الموجودة في الملف. لفهم مدى إزعاج هذا الأمر، تخيل أنك تكتب كود Java في فكرة Intellij، وتحفظه في قاعدة البيانات، ثم. عندما تريد تشغيل التعليمات البرمجية الخاصة بك، فإن نواة البرنامج تذهب إلى قاعدة البيانات وتقرأ التعليمات البرمجية الخاصة بك من هناك. وبناء على ذلك، لا يمكنك تصحيح التطبيق الخاص بك بشكل كامل. تلميح رقم 1: عندما تريد إرسال التعليمات البرمجية إلى منصة الاختبار، فأنت بحاجة إلى إنشائها كان موقع الشركة الإلكتروني بلغة HTML الخالصة رائعًا في عام 1999، ولكن ليس في عام 2021. لذلك، كانت التكنولوجيا التي استخدمتها الشركة في وقت إنشائها (2005) رائعة جدًا - كانت Java مسؤولة عن كل من الخادم وجزء العميل (ما يسمى بصفحات Java servlet). علاوة على ذلك، إذا قمت بإنشاء عملية تجارية جديدة (تحتوي على واجهة مستخدم خاصة بها)، فسيتم تخزينها داخل قاعدة البيانات، وليس في التعليمات البرمجية الموجودة في الملف. لفهم مدى إزعاج هذا الأمر، تخيل أنك تكتب كود Java في فكرة Intellij، وتحفظه في قاعدة البيانات، ثم. عندما تريد تشغيل التعليمات البرمجية الخاصة بك، فإن نواة البرنامج تذهب إلى قاعدة البيانات وتقرأ التعليمات البرمجية الخاصة بك من هناك. وبناء على ذلك، لا يمكنك تصحيح التطبيق الخاص بك بشكل كامل. تلميح رقم 1: عندما تريد إرسال التعليمات البرمجية إلى منصة الاختبار، فإنك تحتاج إلى إنشائهاSQL скрипт، والذي سيحتوي على الكود الخاص بك. غير سارة، ولكن مقبولة؟ الحماس رقم 2: تتكون قاعدة البيانات من أكثر من 200 جدول لها اتصالات مع بعضها البعض. هذا يعني أنك بحاجة إلى معرفة الجداول التي تريد وضع التعليمات البرمجية الخاصة بك فيها، والكيانات التي يجب إنشاؤها في الجداول الأخرى. الإخراج عبارة عن برنامج نصي SQL يبلغ طوله حوالي 1000 سطر. هذا مثير للاشمئزاز حقا. احذروا الإرث. باختصار، بعد أن أدركت أن كل شيء كان في Java، ذهبت إلى JavaRush (أخيرًا وصلنا إلى موضوع الموقع!). يونيو-يوليو 2020. تم إغلاق المستويات العشرة الأولى بسرعة (ربما لمدة شهر)، لأنه لم يكن هناك شيء جديد بشكل أساسي. ثم تباطأت السرعة. يوليو-أكتوبر 2020. المستويات 10-20 مغلقة. أكتوبر-مارس 2021. المستويات 20-30 مغلقة. الآن تبدأ المتعة: في مارس 2021، بدأت في البحث عن الوظائف الشاغرة في Java وأدركت أن هناك الكثير من الكلمات غير المألوفة هناك. نوع ما من Spring، SpringBoot، Hibernate، JUnit. بعد أن اشتريت دورات فيديو على موقع ويب مشهور، لمست Spring للتو واعتقدت أنني أعرف الآن كل شيء ويمكنني القيام به. بعد ذلك، تعرفت على دورة TopJava التي يقدمها غريغوري كيسلين. على موقعه على الإنترنت، يمكنك محاولة إكمال مهمة اختبارية، وإذا نجحت، يمكنك الالتحاق بالدورة. في هذه الدورة، يمكنك إنشاء تطبيق ويب متكامل وحتى نشره على الإنترنت. مقابل هذه الأموال، سيقدمون لك مراجعة (مراجعة الكود بواسطة مبرمج أكثر خبرة)، وسيقدمون لك التعليقات ويقدمون لك النصائح في حالة حدوث مشكلات. وصلت إلى الواجب المنزلي 3 واستقلت. والسبب بسيط: إنهم يطلبون منك الكثير، لكنهم لا يعطونك أي معرفة. متطلبات الواجبات المنزلية مربكة للغاية. يتم تقديم المعلومات بشكل غير متسق للغاية. في رأيي الشخصي، هذه الدورة مطلوبة من قبل المطورين ذوي الخبرة إلى حد ما الذين يأتون من لغات أخرى مماثلة. لأنه في دورته لا يوجد عملياً أي شرح للتقنيات التي يطلب استخدامها. تحتاج أيضًا إلى معرفة Git جيدًا (يتم إرسال كل شيء إلى مستودعك الشخصي). في نهاية أبريل 2021، سأقوم بنشر سيرة ذاتية لمطور Java (بالراتب المطلوب في المستوى المتوسط+)، وأشير فيها إلى أنني في وظيفتي الأخيرة قمت بالبرمجة في Java (لقد كذبت). وفي نفس اليوم، يتلقى البنك طلبًا لوظيفة مطور Java. <h3>الفصل السابع. مقابلات جافا وصقل المهارات</h3> إذن، ما هي الخطة؟ أحتاج إلى الحصول على راتب جيد، لأنني معتاد على العيش بدخل كبير + قروض. ولذلك فإن مناصب المبتدئين ليست مناسبة لي. تحتاج إلى الحصول على موقف وسط. لكن من سيوظفني بدون خبرة؟ جاء القرار بشكل طبيعي: يشير سجل التوظيف الخاص بي إلى أنني عملت كمطور لمدة عام ولمدة 4 سنوات أخرى كخبير في قسم تكنولوجيا المعلومات في منصبي السابق. لذلك، سأقول إنني قمت بالتطوير في Java لمدة عام. وإذا سألوا عن المنتجات الجديدة، سأقول أن Java (7) القديم كان هناك ولم يدعم أي شيء. قبل مقابلتي الأولى (عن بعد)، كنت متوترًا. ليس لدي خبرة ومعرفة قليلة جداً وأطلب الكثير من المال. أعتقد: لا يهم، التجربة السلبية هي أيضًا تجربة. أتواصل عبر Skype وسيتم إجراء مقابلة معي من قبل اثنين من رؤساء الأقسام. مما جعلني أكثر خوفا. بدأت الأسئلة: OOP، جهاز HashMap، التدفقات، هياكل البيانات، ما هو الربيع، السبات، AOP. وإذا كان الأمر مقبولًا إلى حد ما قبل سبينج، فقد انهار تمامًا في الربيع. يسألني الناس: كيف تطورت في الربيع إذا كنت لا تعرف ذلك حقًا؟ أنا: قمت بنسخه ولصقه وهو يعمل، وشكراً على ذلك. هذه الإجابة أذهلتهم. ثم سألوني عن SQL، حيث كنت مثل البطة في الماء. التالي كان Git وسؤال حول rebase، والاختيار الكرزي (الذي لم أكن أعرفه أيضًا) وانتهى حول JS، حيث تم إدراجه في سيرتي الذاتية. هناك أيضًا كان هناك فشل كامل، لأنهم سألوا عن OOP JS. وبناء على نتائج المقابلة، أصبح من الواضح أن معرفتي ليست بالمهمة، وبالتالي لن أكون مؤهلاً لهذا المنصب الشاغر. في المساء، يكتب قسم الموارد البشرية أنه تمت الموافقة على ترشيحي وأنهم على استعداد للاتصال بي. لقد اختنقت بالفعل بسبب برجر في ماكدونالدز. كنت سعيدًا، ولكن بعد 3 أيام أبلغت إدارة الموارد البشرية أنهم اختاروا مرشحًا آخر. لأول مرة في تجربتي، تم سحب العرض. بعد المقابلة الأولى في Java، عززت لعبتي: أخذت دورة (وأكملتها بالكامل!) في Git من Colt Steele على موقع معروف لبيع دورات الفيديو. هذا غير تصوري لـ Git. بعد ذلك، أخذت دورة (رائعة) من Zaur Tregulov حول Spring+Hibernate. مخطط التدريب: أشاهده كما في الفيديو، وأفعل الشيء نفسه على جهاز الكمبيوتر الخاص بي، لكني أقوم بتسمية المتغيرات والفئات بشكل مختلف حتى لا أقوم بنسخ كود شخص آخر بغباء. أقوم بتحميل جميع أعمالي على موقع Github الخاص بي (وبالتالي ممارسة Git). كان ذلك في منتصف شهر مايو وبدأت المكالمات من الساعة. بدأنا في جدولة المقابلات واحدة تلو الأخرى. كان لا بد من إلغاء العديد من الدعوات للأسباب التالية: لم يقرأ قسم الموارد البشرية وصف سيرتي الذاتية ودعاني إلى منصب رفيع. ومن الجدير بالذكر أيضًا طبقة منفصلة للموارد البشرية: أولئك الذين يخلطون بين Java وJavaScript. لهذا السبب كتبت مطور Java الأوسط في عنوان سيرتي الذاتية. <h3>الفصل الثامن. قائمة الأسئلة النموذجية وكيفية إجراء المقابلات</h3>بدأت في إجراء المقابلات وشكلت تدريجيًا مجموعة من الأسئلة الأساسية في المنتصف. المطلوب: 0. OOP - تعريف، تحدث عن كل مبدأ من مبادئ OOP (+أعطي مثالاً من الحياة الواقعية). 1. يساوي ورمز التجزئة - ما هو العقد (العلاقة) بينهما؟ 2. HashMap - كيفية فهم المجموعة التي سيدخل فيها الكائن، وما هو التصادم، وفي أي بنية بيانات يتم تخزين البيانات داخل HashMap، والحجم القياسي، وكيف يزيد عدد المجموعات. 3. الدفق - ما هي أنواع العمليات، ما هو الفرق بينهما، مع إعطاء مثال على كل نوع من العمليات. 4. تجمع السلسلة، تجمع الأعداد الصحيحة - ما هو؟ 5. كومة، كومة - ما هو، ما هو الفرق؟ 6. الاختلافات بين Runnable، Thread، Future. 7. متقلبة، الذرية. 8. صلبة، قبلة، جافة - تعريفات، أمثلة من الحياة الحقيقية. 9. الوصول إلى المعدلات في جافا. 10. ما الفرق بين الفئة المجردة والواجهة. هل يمكن أن تكون الواجهة خاصة؟ 11. واجهات وظيفية. 12. قم بإدراج كافة أساليب الكائن وحدد سبب الحاجة إليها. ميزات طريقة الاستنساخ. 13. ما هو التسلسل وإلغاء التسلسل. 14. حاول التقاط الموارد - قم بوصفها، وأخبرها باستخدام الواجهة القابلة للإغلاق. 15. الاختلافات بين النهائي، وأخيرا، وضع اللمسات الأخيرة؟ 16. الزائد، تجاوز الأسلوب هو الفرق. 17. لماذا أصبحت السلسلة غير قابلة للتغيير، أخبرنا عن StringBuilder وStringBuffer. 18. ما هو التعقيد الزمني O(1)، تعقيد الذاكرة. 19. هياكل البيانات: تحدث عن الخريطة، والمجموعة، وقائمة الانتظار، وdeque، والقائمة وتنفيذها في Java (treeMap، hashSet، hashMap، arrayList، LinkedList، PriorityQueue، blockingQueue)، ووصف مدى تعقيد الإدراج (الأسوأ، المتوسط، الأفضل)، البحث وإزالة عنصر في كل بنية. 20. أنواع البيانات البدائية في جافا. لماذا هناك حاجة لكل واحد منهم؟ 21. أنواع الأخطاء. الاستثناءات المحددة وغير المحددة. 22. ما هو JVM، JRE، JDK؟ 23. من هم هواة الجمع الذين عملت معهم؟ مخضرم - بناء دورة الحياة. 24. الربيع - تعريفات Ioc، Di، دورة حياة Bean، السياق، @Bean Annotations، @Configuration، @Autowired، @Advice، @Aspect، @Service، @Repository. 25. الأدوية العامة - تعريف ما هو الحد الأدنى والحد الأعلى؟ 26. أنماط البرمجة - على الأقل Singleton (الاستعداد لمعرفة سبب كون هذا النمط مضادًا في بعض الأحيان) + Builder، Converter، Factory، Decorator، Proxt. مرغوب فيه: 26. الاختبار - أنواع الاختبارات التي تم التعامل مع المكتبات (JUnit). ما هو الوهم، الطعن، التجسس؟ 27. التمهيد الربيعي - لماذا هو مطلوب، الاستعداد لإنشاء تطبيق SpringBoot عبر الإنترنت. 28. السبات - لماذا هو مطلوب، الكيان، عمود الانضمام، التحميل البطيء مقابل التحميل المتلهف، مستويات التخزين المؤقت (الصعب). 29. راحة الربيع - لماذا هي مطلوبة، وكيفية عمل @post، @get endpoints. كيفية قراءة المعلمات/نص الطلب؟ كيفية التقديم بتنسيق json؟ 30. هياكل البيانات – الأشجار، أنواعها. 31. الخوارزميات – أنواع الفرز. بالإضافة إلى Java، قد يسألون: 1. (مطلوب!) Git - لماذا هو مطلوب، دمج العمليات، إعادة التأسيس، اختيار الكرز، الدفع، السحب، الالتزام، التسجيل، الخروج، الفرع، إعادة التعيين، الرجوع، التحديث. 2.SQL - القدرة على كتابة استعلام: ضم جدولين في جدول واحد (صلة داخلية، صلة يسرى). 3. قواعد البيانات - 3 نماذج عادية، فهارس (لماذا هي مطلوبة، الأنواع)، المفتاح الأساسي، المفتاح الخارجي. كيف تتم المقابلة النموذجية عن بعد: يرسل hr رابطًا للتكبير (Skype، Google Meeting). بحلول وقت معين، تقوم بالاتصال ويكون هناك من 1 إلى 3 أشخاص (خبير فني، رئيس، ساعة). في الحالات العنيدة بشكل خاص، ما يصل إلى 8 أشخاص. أولاً تخبرنا عن نفسك، ثم الجزء الفني، ثم قصة الوظيفة الشاغرة والوداع (يقولون متى سيتصلون بك أو ما هي الخطوات التالية). أثناء الوداع، يمكنك طلب تعليقات حول المعرفة. سألت: هل يمكنك أن تخبرني خلال إجاباتي أين تؤلمك أذنيك؟ يستجيب العديد من الأشخاص، لكن كن مستعدًا للرفض. أثناء المقابلة يقومون بتقييم: 1. قدرتك على التعبير عن أفكارك ومعرفتك باللغة الروسية (أعرف حالة تم فيها رفض مرشح بسبب ضعف معرفتك باللغة الروسية). 2. الخبرة السابقة (قد يسألونك بدقة عما فعلته في وظيفتك الأخيرة). 3. رد الفعل المناسب عند الضغط عليك (كانت هناك مقابلة واحدة عندما بدأ الناس يتحدثون بطريقة غير محترمة: تجاهل إجاباتي، ومحاولة غرس مواقفهم، وما إلى ذلك. أنهيت المقابلة بعد 15 دقيقة من البداية، وهم: لقد كانت مقابلة مرهقة!) 4. مستوى معرفتك. وسوف أخوض في مزيد من التفاصيل هنا. إن معرفة تعريفات موضوع ما لا تمثل سوى 10% مما هو متوقع منك. من الضروري أن نفهم كيف يعمل (على الأقل في المستوى الأعلى). الاستعداد للتوضيح عند أي نقطة في التطوير ستختار هذا الحل أو ذاك. وهذا أكثر أهمية بكثير من دقة تعريفك. سأقوم بتحليل هذه الأطروحة باستخدام مثالين. المثال الأول: سُئلت خلال إحدى المقابلات عن HashMap، وأعطيت التعريف: "هذه بنية بيانات تقوم بتخزين حزم المفاتيح والقيمة". ثم سأل القائم بإجراء المقابلة: ما الفرق عن TreeMap؟ الإجابة: الفرق هو أن HashMap يقوم بتجزئة المفتاح وبسبب التجزئة، يكون الوصول سريعًا. طلب القائم بإجراء المقابلة على الفور أن يخبرنا بالبنية الداخلية لـ HashMap، وفي نفس الوقت سألنا عن hashCode و يساوي. وسوف يتعمق الأمر حتى تكتفي بالإجابة أو تتوقف. لقد تعلمت الإجابة بشكل صحيح حول HashMap فقط بعد شهرين من المقابلات ودورة حول هياكل البيانات على hexlet. المثال الثاني: مفهوم SOLID. يطلبون مني أن أعطي التعريف الذي حفظته. ولكن بمجرد أن يتعلق الأمر بأمثلة الحياة الحقيقية، بدأت المشاكل. Внимание!إذا كنت لا تعرف، فلا تخترعه، ولكن قل هذا: لا أعرف هذا الموضوع، لكن يمكنني الافتراض أنه يعمل بهذه الطريقة. كثير من الخبراء الفنيين يغضبون عندما يتكلم شخص بالبدعة وكأنه يفهم الموضوع. 5. مستوى حماسك أثناء مناقشة الوظيفة. من المتوقع أن تكون مهتمًا وأن تطرح أسئلة حول الوظيفة الشاغرة (وليس فقط الأسئلة المختلقة). 6. في بعض الأحيان تساعدك الفكاهة (حول الموضوع فقط) والاهتمامات المشتركة على التواصل. لا تتردد في التحدث عن هواياتك، ربما يحب الشخص الذي تتم مقابلته أيضًا لعبة Dota/كرة القدم/الفانتازيا. وهذه ميزة إضافية لك كمرشح. أعرف حالات غض فيها مجتمع المصالح الطرف عن التدريب الفني الضعيف للمحاور (أنت رجل عادي، سنقوم بتدريبك). <h3>الفصل 9. الحصول على وظيفة، معمودية النار</h3>تم إجراء المقابلات من أواخر أبريل إلى منتصف يوليو. كانت المقابلات الأولى محرجة، لكن الوضع تحسن تدريجياً إلى مستوى مقبول. دراسة الأسئلة الشائعة والتعليقات جعلت نفسها محسوسة. أول 25 مقابلة لم تكن ناجحة. وبعد ذلك بدأت لحظات اليأس. المشاعر: ماذا لو لم يوظفوني مقابل هذا الراتب؟ وفجأة بدأت الأمور تتفاقم: ففي غضون أسبوع، قدمت ثلاث شركات مقترحات. اخترت شركة أعرف تفاصيلها، بالإضافة إلى راتب جيد وفرصة العمل عن بعد. خلال مقابلتي، سُئلت حوالي 30 سؤالًا حول Java Core وSpring، وأجبت على 97٪ منها بشكل صحيح. بعد ذلك كان هناك تواصل مع السلطات العليا وبعد 1.5 أسبوع حصلت على وظيفة معهم. أولا وقبل كل شيء، عندما تتولى أي وظيفة، فإنك تبدأ في الوصول إلى جميع الأنظمة الضرورية وتثبيت الأدوات التي تحتاجها. استغرق الأمر أسبوعًا ونصف، وتم تكليفي بالمهمة الأولى: تغيير النص الثابت في الفصل الدراسي. عندما فتحت المشروع، شعرت بالغثيان: كان هناك العديد من الوحدات داخل المشروع الواحد، والعديد من الفصول والاختبارات وما إلى ذلك. في هذه المرحلة كنت ضائعًا، لكن مطورًا ثانيًا ساعدني وأرشدني إلى السرعة. تم إصلاح الخلل في 10 دقائق، وتم نشره في Git، وتم تقديم طلب سحب (طلب لدمج فرعين حيث يتحقق المطورون الآخرون من الكود الخاص بك)، ثم تم دمجه في الفرع الرئيسي. اتضح أن كل شيء ليس بهذه الصعوبة. حتى أول مهمة كاملة... أثناء تخطيط المهام للأسبوعين المقبلين، قالوا لي: ستتكامل مع نظام آخر موجود على OpenShift. هذا هو المكان الذي أصبحت فيه الأمور مخيفة حقًا: OpenShift عبارة عن مجموعة كاملة من التقنيات: Docker وKubernetes وLinux وما إلى ذلك. كان العرق البارد يسيل على ظهري: حسنًا، لقد عملت كجوي. مباشرة بعد الاجتماع، اتصلت بالمطور، الذي طمأنني: تم كتابة محولات لهذا النظام، وكان ذلك كافيا لاستيراد فئات معينة في مشروعي، وبعد ذلك يمكنني استخدام التكامل بأمان. أصبح الأمر ممتعًا مرة أخرى، حتى أظهر المطور تكاملًا نموذجيًا: رأيت أكثر من 20 فئة تم إنشاؤها لتكامل مماثل. علاوة على ذلك، تمت ملاحظة التعليقات التوضيحية غير المرئية سابقًا @Value، و@Builder، و@NoArgsConstructor، و@Getter @Sl4f - اتضح أنه مشروع Lombook (اقرأ على الإنترنت). عندما أوضح لي المطور كيفية القيام بذلك، حاولت تدوين اتصالات جميع الفئات، ولم يعلق أي شيء في رأسي على الإطلاق. كانت اللحظة الأكثر إحراجًا هي الافتقار إلى المعرفة بـ Intellij Idea: كيفية البحث عالميًا عن مشروع، وإعادة هيكلة التعليمات البرمجية، وما إلى ذلك. بعد تولي المهمة، فهمت سبب الحاجة إلى OOP: لمثل هذا الكم الكبير من التعليمات البرمجية، من الضروري تقسيمها إلى فئات؛ يجب الإعلان عن الأساليب التي لا يتم استخدامها خارج الفصل على أنها خاصة حتى لا يتم تشغيلها عن طريق الخطأ في فصل آخر، وما إلى ذلك. بعد أن كتبت التكامل الخاص بي عن طريق القياس مع تكامل آخر، تعلمت عن وجود CheckStyle - وهو مكون إضافي خاص يتحقق من النمط من التعليمات البرمجية الخاصة بك، ولن تتمكن من ترجمة مشروعك حتى تقوم بإصلاح الأخطاء (على سبيل المثال، المسافات الزائدة، وأسماء المتغيرات ذات الأحرف الكبيرة، وأسماء المتغيرات القصيرة جدًا). بعد هزيمة CheckStyle، أرسلت الكود الخاص بي إلى كبار المطورين للمراجعة وقمت بتصحيح أخطائي في غضون أسبوع. بشكل عام، كنت محظوظًا جدًا لأنه كان لدي علاقة جيدة في فريقي مع المطور الثاني، الذي شرح الكثير من الأشياء. بعد شهر من الجهاز، تم إطلاق أول تكامل لي على منصة التكامل الوظيفية (يتم اختبار عمل جميع التطبيقات معًا)، وكل شيء يعمل هناك! فوز! كانت المهمة التالية هي إنشاء فئة تسمح بإخفاء البيانات عن طريق المفتاح في json. على سبيل المثال: يوجد json {text:"JavaRush"} -> معالجة -> {text:"****Rush"}. هناك تعقيدان هنا: قد يكون هناك تداخل {text:{mytext:"JavaRush"}}، والأمر الأكثر إزعاجًا هو التداخل داخل المصفوفة: {text: [ {mytext: "JavaRush"}، {mytext: "JavaRush" "} ] } (بالطبع تحتاج إلى إخفاء كل text.mytext). تبين أن حل هذه المشكلة أمر صعب للغاية، لكنني فعلت ذلك! هنا يقول المطور الثاني: قم بتغطية هذا التطوير بالاختبارات. كان هناك حيرة في العيون. هذه هي الطريقة التي تعرفت بها على مكتبة JUnit في القتال. جوهر اختبار الوحدة: لديك بيانات مُدخلة، وتمريرها إلى طريقة ما، ومقارنة البيانات المستلمة بالنتيجة الصحيحة (إنشاء متغير بالنتيجة الصحيحة). لقد كتبت 11 حالة لمكتبتي، حيث تأكدت من أن التطبيق لم يتعطل مع NullPointException وأنه يخفي البيانات بشكل صحيح مع أي نوع من التداخل. بعد إكمال هذه المهمة، حصلت على تكامل جديد، وكانت خصوصيته كما يلي: اضطررت إلى تصدير Spring Bean من مكتبة خارجية. في هذه المرحلة، أصبحت عميلاً منتظمًا لموقع Stack OverFlow الإلكتروني. في إحدى المرات استجاب حتى مطور Spring الرسمي. بعد تنفيذ هذا التكامل، انتهت الفترة التجريبية. هنأني مديري على اجتياز فترة الاختبار، وبدأت في كتابة هذا المقال. في المجمل، استغرقت كتابة هذا المقال 8 ساعات) شكرًا لك على اهتمامك، وآمل أن يكون المقال مفيدًا. حاولت أن أكتب اتصالات جميع الطبقات، ولا شيء عالق في رأسي على الإطلاق. كانت اللحظة الأكثر إحراجًا هي الافتقار إلى المعرفة بـ Intellij Idea: كيفية البحث عالميًا عن مشروع، وإعادة هيكلة التعليمات البرمجية، وما إلى ذلك. بعد تولي المهمة، فهمت سبب الحاجة إلى OOP: لمثل هذا الكم الكبير من التعليمات البرمجية، من الضروري تقسيمها إلى فئات؛ يجب الإعلان عن الأساليب التي لا يتم استخدامها خارج الفصل على أنها خاصة حتى لا يتم تشغيلها عن طريق الخطأ في فصل آخر، وما إلى ذلك. بعد أن كتبت التكامل الخاص بي عن طريق القياس مع تكامل آخر، تعلمت عن وجود CheckStyle - وهو مكون إضافي خاص يتحقق من النمط من التعليمات البرمجية الخاصة بك، ولن تتمكن من ترجمة مشروعك حتى تقوم بإصلاح الأخطاء (على سبيل المثال، المسافات الزائدة، وأسماء المتغيرات ذات الأحرف الكبيرة، وأسماء المتغيرات القصيرة جدًا). بعد هزيمة CheckStyle، أرسلت الكود الخاص بي للمراجعة إلى كبار المطورين وقمت بتصحيح أخطائي في غضون أسبوع. بشكل عام، كنت محظوظًا جدًا لأنه كان لدي علاقة جيدة في فريقي مع المطور الثاني، الذي شرح الكثير من الأشياء. بعد شهر من الجهاز، تم إطلاق أول تكامل لي على منصة التكامل الوظيفية (يتم اختبار عمل جميع التطبيقات معًا)، وكل شيء يعمل هناك! فوز! كانت المهمة التالية هي إنشاء فئة تسمح بإخفاء البيانات عن طريق المفتاح في json. على سبيل المثال: يوجد json {text:"JavaRush"} -> معالجة -> {text:"****Rush"}. هناك تعقيدان هنا: قد يكون هناك تداخل {text:{mytext:"JavaRush"}}، والأمر الأكثر إزعاجًا هو التداخل داخل المصفوفة: {text: [ {mytext: "JavaRush"}، {mytext: "JavaRush" "} ] } (بالطبع تحتاج إلى إخفاء كل text.mytext). تبين أن حل هذه المشكلة أمر صعب للغاية، لكنني فعلت ذلك! هنا يقول المطور الثاني: قم بتغطية هذا التطوير بالاختبارات. كان هناك حيرة في العيون. هذه هي الطريقة التي تعرفت بها على مكتبة JUnit في القتال. جوهر اختبار الوحدة: لديك بيانات مُدخلة، وتمريرها إلى طريقة ما، ومقارنة البيانات المستلمة بالنتيجة الصحيحة (إنشاء متغير بالنتيجة الصحيحة). لقد كتبت 11 حالة لمكتبتي، حيث تأكدت من أن التطبيق لم يتعطل مع NullPointException وأنه يخفي البيانات بشكل صحيح مع أي نوع من التداخل. بعد إكمال هذه المهمة، حصلت على تكامل جديد، وكانت خصوصيته كما يلي: اضطررت إلى تصدير Spring Bean من مكتبة خارجية. في هذه المرحلة، أصبحت عميلاً منتظمًا لموقع Stack OverFlow الإلكتروني. في إحدى المرات استجاب حتى مطور Spring الرسمي. بعد تنفيذ هذا التكامل، انتهت الفترة التجريبية. هنأني مديري على اجتياز فترة الاختبار، وبدأت في كتابة هذا المقال. في المجمل، استغرقت كتابة هذا المقال 8 ساعات) شكرًا لك على اهتمامك، وآمل أن يكون المقال مفيدًا. حاولت أن أكتب اتصالات جميع الطبقات، ولا شيء عالق في رأسي على الإطلاق. كانت اللحظة الأكثر إحراجًا هي الافتقار إلى المعرفة بـ Intellij Idea: كيفية البحث عالميًا عن مشروع، وإعادة هيكلة التعليمات البرمجية، وما إلى ذلك. بعد تولي المهمة، فهمت سبب الحاجة إلى OOP: لمثل هذا الكم الكبير من التعليمات البرمجية، من الضروري تقسيمها إلى فئات؛ يجب الإعلان عن الأساليب التي لا يتم استخدامها خارج الفصل على أنها خاصة حتى لا يتم تشغيلها عن طريق الخطأ في فصل آخر، وما إلى ذلك. بعد أن كتبت التكامل الخاص بي عن طريق القياس مع تكامل آخر، تعلمت عن وجود CheckStyle - وهو مكون إضافي خاص يتحقق من النمط من التعليمات البرمجية الخاصة بك، ولن تتمكن من ترجمة مشروعك حتى تقوم بإصلاح الأخطاء (على سبيل المثال، المسافات الزائدة، وأسماء المتغيرات ذات الأحرف الكبيرة، وأسماء المتغيرات القصيرة جدًا). بعد هزيمة CheckStyle، أرسلت الكود الخاص بي إلى كبار المطورين للمراجعة وقمت بتصحيح أخطائي في غضون أسبوع. بشكل عام، كنت محظوظًا جدًا لأنه كان لدي علاقة جيدة في فريقي مع المطور الثاني، الذي شرح الكثير من الأشياء. بعد شهر من الجهاز، تم إطلاق أول تكامل لي على منصة التكامل الوظيفية (يتم اختبار عمل جميع التطبيقات معًا)، وكل شيء يعمل هناك! فوز! كانت المهمة التالية هي إنشاء فئة تسمح بإخفاء البيانات عن طريق المفتاح في json. على سبيل المثال: يوجد json {text:"JavaRush"} -> معالجة -> {text:"****Rush"}. هناك تعقيدان هنا: قد يكون هناك تداخل {text:{mytext:"JavaRush"}}، والأمر الأكثر إزعاجًا هو التداخل داخل المصفوفة: {text: [ {mytext: "JavaRush"}، {mytext: "JavaRush" "} ] } (بالطبع تحتاج إلى إخفاء كل text.mytext). تبين أن حل هذه المشكلة أمر صعب للغاية، لكنني فعلت ذلك! هنا يقول المطور الثاني: قم بتغطية هذا التطوير بالاختبارات. كان هناك حيرة في العيون. هذه هي الطريقة التي تعرفت بها على مكتبة JUnit في القتال. جوهر اختبار الوحدة: لديك بيانات مُدخلة، وتمريرها إلى طريقة ما، ومقارنة البيانات المستلمة بالنتيجة الصحيحة (إنشاء متغير بالنتيجة الصحيحة). لقد كتبت 11 حالة لمكتبتي، حيث تأكدت من أن التطبيق لم يتعطل مع NullPointException وأنه يخفي البيانات بشكل صحيح مع أي نوع من التداخل. بعد إكمال هذه المهمة، حصلت على تكامل جديد، وكانت خصوصيته كما يلي: اضطررت إلى تصدير Spring Bean من مكتبة خارجية. في هذه المرحلة، أصبحت عميلاً منتظمًا لموقع Stack OverFlow الإلكتروني. في إحدى المرات استجاب حتى مطور Spring الرسمي. بعد تنفيذ هذا التكامل، انتهت الفترة التجريبية الخاصة بي. هنأني مديري على اجتياز فترة الاختبار، وبدأت في كتابة هذا المقال. في المجمل، استغرقت كتابة هذا المقال 8 ساعات) شكرًا لك على اهتمامك، وآمل أن يكون المقال مفيدًا. لمثل هذا الكم الكبير من التعليمات البرمجية، تحتاج إلى تقسيمها إلى فئات؛ يجب الإعلان عن الأساليب التي لا يتم استخدامها خارج الفصل على أنها خاصة حتى لا يتم تشغيلها عن طريق الخطأ في فصل آخر، وما إلى ذلك. بعد أن كتبت التكامل الخاص بي عن طريق القياس مع تكامل آخر، تعلمت عن وجود CheckStyle - وهو مكون إضافي خاص يتحقق من النمط من التعليمات البرمجية الخاصة بك، ولن تتمكن من ترجمة مشروعك حتى تقوم بإصلاح الأخطاء (على سبيل المثال، المسافات الزائدة، وأسماء المتغيرات ذات الأحرف الكبيرة، وأسماء المتغيرات القصيرة جدًا). بعد هزيمة CheckStyle، أرسلت الكود الخاص بي للمراجعة إلى كبار المطورين وقمت بتصحيح أخطائي في غضون أسبوع. بشكل عام، كنت محظوظًا جدًا لأنه كان لدي علاقة جيدة في فريقي مع المطور الثاني، الذي شرح الكثير من الأشياء. بعد شهر من الجهاز، تم إطلاق أول تكامل لي على منصة التكامل الوظيفية (يتم اختبار عمل جميع التطبيقات معًا)، وكل شيء يعمل هناك! فوز! كانت المهمة التالية هي إنشاء فئة تسمح بإخفاء البيانات عن طريق المفتاح في json. على سبيل المثال: يوجد json {text:"JavaRush"} -> معالجة -> {text:"****Rush"}. هناك تعقيدان هنا: قد يكون هناك تداخل {text:{mytext:"JavaRush"}}، والأمر الأكثر إزعاجًا هو التداخل داخل المصفوفة: {text: [ {mytext: "JavaRush"}، {mytext: "JavaRush" "} ] } (بالطبع تحتاج إلى إخفاء كل text.mytext). تبين أن حل هذه المشكلة أمر صعب للغاية، لكنني فعلت ذلك! هنا يقول المطور الثاني: قم بتغطية هذا التطوير بالاختبارات. كان هناك حيرة في العيون. هذه هي الطريقة التي تعرفت بها على مكتبة JUnit في القتال. جوهر اختبار الوحدة: لديك بيانات مُدخلة، وتمريرها إلى طريقة ما، ومقارنة البيانات المستلمة بالنتيجة الصحيحة (إنشاء متغير بالنتيجة الصحيحة). لقد كتبت 11 حالة لمكتبتي، حيث تأكدت من أن التطبيق لم يتعطل مع NullPointException وأنه يخفي البيانات بشكل صحيح مع أي نوع من التداخل. بعد إكمال هذه المهمة، حصلت على تكامل جديد، وكانت خصوصيته كما يلي: اضطررت إلى تصدير Spring Bean من مكتبة خارجية. في هذه المرحلة، أصبحت عميلاً منتظمًا لموقع Stack OverFlow الإلكتروني. في إحدى المرات استجاب حتى مطور Spring الرسمي. بعد تنفيذ هذا التكامل، انتهت الفترة التجريبية. هنأني مديري على اجتياز فترة الاختبار، وبدأت في كتابة هذا المقال. في المجمل، استغرقت كتابة هذا المقال 8 ساعات) شكرًا لك على اهتمامك، وآمل أن يكون المقال مفيدًا. لمثل هذا الكم الكبير من التعليمات البرمجية، تحتاج إلى تقسيمها إلى فئات؛ يجب الإعلان عن الأساليب التي لا يتم استخدامها خارج الفصل على أنها خاصة حتى لا يتم تشغيلها عن طريق الخطأ في فصل آخر، وما إلى ذلك. بعد أن كتبت التكامل الخاص بي عن طريق القياس مع تكامل آخر، تعلمت عن وجود CheckStyle - وهو مكون إضافي خاص يتحقق من النمط من التعليمات البرمجية الخاصة بك، ولن تتمكن من ترجمة مشروعك حتى تقوم بإصلاح الأخطاء (على سبيل المثال، المسافات الزائدة، وأسماء المتغيرات ذات الأحرف الكبيرة، وأسماء المتغيرات القصيرة جدًا). بعد هزيمة CheckStyle، أرسلت الكود الخاص بي إلى كبار المطورين للمراجعة وقمت بتصحيح أخطائي في غضون أسبوع. بشكل عام، كنت محظوظًا جدًا لأنه كان لدي علاقة جيدة في فريقي مع المطور الثاني، الذي شرح الكثير من الأشياء. بعد شهر من الجهاز، تم إطلاق أول تكامل لي على منصة التكامل الوظيفية (يتم اختبار عمل جميع التطبيقات معًا)، وكل شيء يعمل هناك! فوز! كانت المهمة التالية هي إنشاء فئة تسمح بإخفاء البيانات عن طريق المفتاح في json. على سبيل المثال: يوجد json {text:"JavaRush"} -> معالجة -> {text:"****Rush"}. هناك تعقيدان هنا: قد يكون هناك تداخل {text:{mytext:"JavaRush"}}، والأمر الأكثر إزعاجًا هو التداخل داخل المصفوفة: {text: [ {mytext: "JavaRush"}، {mytext: "JavaRush" "} ] } (بالطبع تحتاج إلى إخفاء كل text.mytext). تبين أن حل هذه المشكلة أمر صعب للغاية، لكنني فعلت ذلك! هنا يقول المطور الثاني: قم بتغطية هذا التطوير بالاختبارات. كان هناك حيرة في العيون. هذه هي الطريقة التي تعرفت بها على مكتبة JUnit في القتال. جوهر اختبار الوحدة: لديك بيانات مُدخلة، وتمريرها إلى طريقة ما، ومقارنة البيانات المستلمة بالنتيجة الصحيحة (إنشاء متغير بالنتيجة الصحيحة). لقد كتبت 11 حالة لمكتبتي، حيث تأكدت من أن التطبيق لم يتعطل مع NullPointException وأنه يخفي البيانات بشكل صحيح مع أي نوع من التداخل. بعد إكمال هذه المهمة، حصلت على تكامل جديد، وكانت خصوصيته كما يلي: اضطررت إلى تصدير Spring Bean من مكتبة خارجية. في هذه المرحلة، أصبحت عميلاً منتظمًا لموقع Stack OverFlow الإلكتروني. في إحدى المرات استجاب حتى مطور Spring الرسمي. بعد تنفيذ هذا التكامل، انتهت الفترة التجريبية الخاصة بي. هنأني مديري على اجتياز فترة الاختبار، وبدأت في كتابة هذا المقال. في المجمل، استغرقت كتابة هذا المقال 8 ساعات) شكرًا لك على اهتمامك، وآمل أن يكون المقال مفيدًا. أسماء المتغيرات قصيرة جدًا). بعد هزيمة CheckStyle، أرسلت الكود الخاص بي إلى كبار المطورين للمراجعة وقمت بتصحيح أخطائي في غضون أسبوع. بشكل عام، كنت محظوظًا جدًا لأنه كان لدي علاقة جيدة في فريقي مع المطور الثاني، الذي شرح الكثير من الأشياء. بعد شهر من الجهاز، تم إطلاق أول تكامل لي على منصة التكامل الوظيفية (يتم اختبار عمل جميع التطبيقات معًا)، وكل شيء يعمل هناك! فوز! كانت المهمة التالية هي إنشاء فئة تسمح بإخفاء البيانات عن طريق المفتاح في json. على سبيل المثال: يوجد json {text:"JavaRush"} -> معالجة -> {text:"****Rush"}. هناك تعقيدان هنا: قد يكون هناك تداخل {text:{mytext:"JavaRush"}}، والأمر الأكثر إزعاجًا هو التداخل داخل المصفوفة: {text: [ {mytext: "JavaRush"}، {mytext: "JavaRush" "} ] } (بالطبع تحتاج إلى إخفاء كل text.mytext). تبين أن حل هذه المشكلة أمر صعب للغاية، لكنني فعلت ذلك! هنا يقول المطور الثاني: قم بتغطية هذا التطوير بالاختبارات. كان هناك حيرة في العيون. هذه هي الطريقة التي تعرفت بها على مكتبة JUnit في القتال. جوهر اختبار الوحدة: لديك بيانات مُدخلة، وتمريرها إلى طريقة ما، ومقارنة البيانات المستلمة بالنتيجة الصحيحة (إنشاء متغير بالنتيجة الصحيحة). لقد كتبت 11 حالة لمكتبتي، حيث تأكدت من أن التطبيق لم يتعطل مع NullPointException وأنه يخفي البيانات بشكل صحيح مع أي نوع من التداخل. بعد إكمال هذه المهمة، حصلت على تكامل جديد، وكانت خصوصيته كما يلي: اضطررت إلى تصدير Spring Bean من مكتبة خارجية. في هذه المرحلة، أصبحت عميلاً منتظمًا لموقع Stack OverFlow الإلكتروني. في إحدى المرات استجاب حتى مطور Spring الرسمي. بعد تنفيذ هذا التكامل، انتهت الفترة التجريبية الخاصة بي. هنأني مديري على اجتياز فترة الاختبار، وبدأت في كتابة هذا المقال. في المجمل، استغرقت كتابة هذا المقال 8 ساعات) شكرًا لك على اهتمامك، وآمل أن يكون المقال مفيدًا. أسماء المتغيرات قصيرة جدًا). بعد هزيمة CheckStyle، أرسلت الكود الخاص بي إلى كبار المطورين للمراجعة وقمت بتصحيح أخطائي في غضون أسبوع. بشكل عام، كنت محظوظًا جدًا لأنه كان لدي علاقة جيدة في فريقي مع المطور الثاني، الذي شرح الكثير من الأشياء. بعد شهر من الجهاز، تم إطلاق أول تكامل لي على منصة التكامل الوظيفية (يتم اختبار عمل جميع التطبيقات معًا)، وكل شيء يعمل هناك! فوز! كانت المهمة التالية هي إنشاء فئة تسمح بإخفاء البيانات عن طريق المفتاح في json. على سبيل المثال: يوجد json {text:"JavaRush"} -> معالجة -> {text:"****Rush"}. هناك تعقيدان هنا: قد يكون هناك تداخل {text:{mytext:"JavaRush"}}، والأمر الأكثر إزعاجًا هو التداخل داخل المصفوفة: {text: [ {mytext: "JavaRush"}، {mytext: "JavaRush" "} ] } (بالطبع تحتاج إلى إخفاء كل text.mytext). تبين أن حل هذه المشكلة أمر صعب للغاية، لكنني فعلت ذلك! هنا يقول المطور الثاني: قم بتغطية هذا التطوير بالاختبارات. كان هناك حيرة في العيون. هذه هي الطريقة التي تعرفت بها على مكتبة JUnit في القتال. جوهر اختبار الوحدة: لديك بيانات مُدخلة، وتمريرها إلى طريقة ما، ومقارنة البيانات المستلمة بالنتيجة الصحيحة (إنشاء متغير بالنتيجة الصحيحة). لقد كتبت 11 حالة لمكتبتي، حيث تأكدت من أن التطبيق لم يتعطل مع NullPointException وأنه يخفي البيانات بشكل صحيح مع أي نوع من التداخل. بعد إكمال هذه المهمة، حصلت على تكامل جديد، وكانت خصوصيته كما يلي: اضطررت إلى تصدير Spring Bean من مكتبة خارجية. في هذه المرحلة، أصبحت عميلاً منتظمًا لموقع Stack OverFlow الإلكتروني. في إحدى المرات استجاب حتى مطور Spring الرسمي. بعد تنفيذ هذا التكامل، انتهت الفترة التجريبية الخاصة بي. هنأني مديري على اجتياز فترة الاختبار، وبدأت في كتابة هذا المقال. في المجمل، استغرقت كتابة هذا المقال 8 ساعات) شكرًا لك على اهتمامك، وآمل أن يكون المقال مفيدًا. تبين أن حل هذه المشكلة أمر صعب للغاية، لكنني فعلت ذلك! هنا يقول المطور الثاني: قم بتغطية هذا التطوير بالاختبارات. كان هناك حيرة في العيون. هذه هي الطريقة التي تعرفت بها على مكتبة JUnit في القتال. جوهر اختبار الوحدة: لديك بيانات مُدخلة، وتمريرها إلى طريقة ما، ومقارنة البيانات المستلمة بالنتيجة الصحيحة (إنشاء متغير بالنتيجة الصحيحة). لقد كتبت 11 حالة لمكتبتي، حيث تأكدت من أن التطبيق لم يتعطل مع NullPointException وأنه يخفي البيانات بشكل صحيح مع أي نوع من التداخل. بعد إكمال هذه المهمة، حصلت على تكامل جديد، وكانت خصوصيته كما يلي: اضطررت إلى تصدير Spring Bean من مكتبة خارجية. في هذه المرحلة، أصبحت عميلاً منتظمًا لموقع Stack OverFlow الإلكتروني. في إحدى المرات استجاب حتى مطور Spring الرسمي. بعد تنفيذ هذا التكامل، انتهت الفترة التجريبية الخاصة بي. هنأني مديري على اجتياز فترة الاختبار، وبدأت في كتابة هذا المقال. في المجمل، استغرقت كتابة هذا المقال 8 ساعات) شكرًا لك على اهتمامك، وآمل أن يكون المقال مفيدًا. تبين أن حل هذه المشكلة أمر صعب للغاية، لكنني فعلت ذلك! هنا يقول المطور الثاني: قم بتغطية هذا التطوير بالاختبارات. كان هناك حيرة في العيون. هذه هي الطريقة التي تعرفت بها على مكتبة JUnit في القتال. جوهر اختبار الوحدة: لديك بيانات مُدخلة، وتمريرها إلى طريقة ما، ومقارنة البيانات المستلمة بالنتيجة الصحيحة (إنشاء متغير بالنتيجة الصحيحة). لقد كتبت 11 حالة لمكتبتي، حيث تأكدت من أن التطبيق لم يتعطل مع NullPointException وأنه يخفي البيانات بشكل صحيح مع أي نوع من التداخل. بعد إكمال هذه المهمة، حصلت على تكامل جديد، وكانت خصوصيته كما يلي: اضطررت إلى تصدير Spring Bean من مكتبة خارجية. في هذه المرحلة، أصبحت عميلاً منتظمًا لموقع Stack OverFlow الإلكتروني. في إحدى المرات استجاب حتى مطور Spring الرسمي. بعد تنفيذ هذا التكامل، انتهت الفترة التجريبية الخاصة بي. هنأني مديري على اجتياز فترة الاختبار، وبدأت في كتابة هذا المقال. في المجمل، استغرقت كتابة هذا المقال 8 ساعات) شكرًا لك على اهتمامك، وآمل أن يكون المقال مفيدًا.
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION