JavaRush /Java Blogu /Random-AZ /Hiylə və ya Java-da təcrübəsi olmayan orta java tərtibatç...
Юрий
Səviyyə
Москва

Hiylə və ya Java-da təcrübəsi olmayan orta java tərtibatçısı kimi işə necə girmək olar

Qrupda dərc edilmişdir
Bütün Java tələbələrinə və peşəkarlarına salamlar. Ola bilsin ki, mənim hekayəm bəziləri üçün bunu necə etmək, bəziləri üçün isə bunu necə etməmək üçün nümunə olacaq. 19 oktyabr 2021-ci ildir və bu gün mən böyük bir şirkətdə Java orta tərtibatçısı kimi sınaq müddətini (3 ay) tamamladım. Java inkişafında əvvəllər təcrübəm yox idi. 4 iyun 2020-ci ilə qədər mən Java haqqında heç nə bilmirdim. Mən Javaist kimi işə götürüləndə söz vermişdim ki, sınaq müddətindən keçsəm, uğur hekayəsi yazacağam.Bu məqalə iki məntiqi hissəyə bölünəcək: Karyera fonu ( 1-5-ci fəsillər, Java ilə əlaqəli deyil., lakin karyeranız haqqında bilik əldə edə biləcəyiniz). Javaist olmaq (6-9-cu fəsillər - Java öyrənmək, müsahibələr, işə düzəlmək, ilk real təcrübə). <h3>Fəsil 1. İqtisadçı</h3>JavaRush-a hansı bilik səviyyəsi ilə gəldiyimi başa düşmək üçün özüm haqqında bioqrafik qeyd verməliyəm. 2013, noyabr, səhər saat 8. Mən Taqankada qəhvəxanada oturub SQL təlimatlarını təkrarlayıram. Bir saatdan sonra bankın maliyyə departamentində aparıcı iqtisadçı vəzifəsinə müsahibəm var. Bu, mənim dəvət aldığım yeganə müsahibədir və mən bunu 100% verməliyəm. Onun xatirinə mən Sankt-Peterburqdan uçub mətbəxdə qohumlarımın yanında qaldım ki, onsuz da cüzi qənaətimi xərcləməyim. 30 dəqiqə keçir, vetçina və pendirli pancake yeyilir və biz əziz arzumuza doğru hərəkət etməliyik. Amma hər şey titrəyir. Müsahibədə uğursuz olsam nə olar? Yaxşı, olmadı. Banka gedirəm, bilet alıram və görüş otağında müsahibimi gözləyirəm. Zaman çox uzun müddət keçir. Təxminən 35 yaşlarında bir kişi və eyni yaşda bir qadın içəri girir. Onlar özlərini təqdim edir və sizə özləri haqqında danışmağı xahiş edirlər: "Yuri, bu, xoşdur." 21 yaşım var, Peterburqda universitetin birində qiyabi oxuyuram, 3 ay bankda kassir işləmişəm. Başa düşdüm ki, oxuduğum şey bu deyil, iş bazarına baxmağa başladım və gördüm ki, Moskvada iqtisadçıların SQL tələbi var. Beləliklə, mən onu öyrəndim, kurslara getdim (MS SQL Administrasiyası - məndə belə idi, buna görə getdim) və siz mənə zəng etdiniz. Onlar şirkətdən, etdikləri işdən danışırlar (sözlərin çoxu anlaşılmazdır), sonra sizdən imtahan vermənizi xahiş edirlər. Testin SQL üzrə 3 sualı var: 1. Cədvəl verilmiş, id = 10 olan bütün qeydləri çıxarın. 2. İki cədvəl verilmiş, onları birləşdirin və hər birindən bir sütun göstərin. 3. Şöbələri qruplaşdırın və hər bir şöbə üçün işçilərin sayını verin. Bu sorğuları yazmağım çox utancvericidir. Bunun ardınca işdən gözləntilərimin müzakirəsi gəlir. Və mənə sehrli ifadəni deyirlər: “Müsahibəyə görə təşəkkür edirəm, sizə zəng edəcəyik”. Bir həftə keçir və mənə onlarla işləməyi təklif edirlər. Eyforiya, şok, sevinc! Və nə pul üçün: əlində 70 min rubl! Bəli, zəngin olacağam! Moskvaya gəlirəm, məskunlaşıram, mərkəzdə otaq kirayələyirəm. İlk günlər eyforiyadır. 10 gündən sonra dərketmə başlayır: hara gəldim? Mən heç nə başa düşmürəm! Mən hər ay bütün bank üzrə idarəetmə hesabatları hazırlamalı idim. Təbii ki, mənim üçün də sizinlə eyni idi, əziz oxucu. Mən banklararası kredit, svoplar, xərclərin bölüşdürülməsi, xərclər və s. terminlərini latınca sehr kimi qəbul etdim. Bu yolda məsələnin texniki tərəfinə yiyələnməli oldum: MS Access (bütün hesabatlar orada VBA vasitəsilə həyata keçirilirdi), MS SQL (Access əvəzinə yeni yaddaş kimi), Oracle (əvvəlcə onu Oracle adlandırdım və isterikaya səbəb oldum. proqramçılar arasında). Və birdən başa düşməyə başlayıram ki, texniki tərəf mənim üçün daha maraqlıdır. Mürəkkəb sorğular yaratmaq cəhdləri var (nəticədə verilənlər bazası mənim skriptlərimdən asılır və qəzəbli idarəçilər bunu kimin etdiyini anlamağa çalışırlar). Amma əsas iş maliyyədir, hansı ki, məni əsəbiləşdirməyə başlayır. Bir ay yarımdan sonra heç bir nəticə verə bilməyəcəyim üçün istefa məktubu yazıram (düzünü desəm, məndən heç nə gözləmirdilər). Maliyyə departamentinin rəhbəri onu cırıb deyir: “Boş-boş işlərə qarışma”. Bir aydan sonra yenidən ərizə yazıram və bu cür həyasızlıqdan şoka düşən şöbə müdiri (sonradan bankın idarə heyətinin sədri oldu) hədsiz çaşqınlıqla imzalayır: oğlanın 21 yaşı var, daha yuxarısı yoxdur. təhsil, onlara həm maaş, həm də güvən verildi, amma özünü belə aparır. İşdən çıxarılma səbəbləri daha iki amil idi: təkəbbürlərinə sakit reaksiya verə bilmədiyim rəis və belimin ağrımağa başladığı narahat stul. Bu, inanılmaz dərəcədə gülməli, amma motiv budur. İşdən çıxanda düşündüm ki, indi daha da rahatlaşacam. Amma orda yoxdu. <h3>Fəsil 2. 70 müsahibə</h3>Bankdan çıxaraq dərindən nəfəs aldım. "Mən bunu belə təşkil edəcəyəm, hamı heyrətə gələcək." Müsahibələr təyin olundu, onların maaşları daha yüksək idi və görünürdü ki, hesabatla məşğul olmağa ehtiyac qalmayacaq. 4 müsahibə var, məni işə götürən yoxdur. 5, 6 müsahibə - eyni şey. Bir qızla kirayədə yaşayırdım və o, işə düzəldi və gəlir çatışmazlığımı ödəyə bildi. Amma hələ nə vaxta qədər heç bir gəlirim olmayacaq deyə bilmirdim. Müsahibələrə getdim (analitik vakansiyaları) və onlar əsasən SQL və VBA haqqında soruşdular. Bilməyənlər üçün VBA Excel, Access və digər MS Office məhsullarında proqramlaşdırma dilidir. 10 müsahibə keçirilir - heç nə. 20, 30 - heç nə. Təcrübə və ali təhsilin olmaması (bu, mənə kiçik bir şey kimi görünür) hər kəsi utandırır. 40 müsahibə və ümidsizlik içəri girməyə başlayır. 55-60 müsahibə müddətində mən 1C öyrənməyə başlayıram. Artıq həyat yoldaşı olmuş qız Sankt-Peterburqa getməyi xahiş edir, çünki heç olmasa orada öz mənzili var. Və 70-ci müsahibədə məni 50.000 rubla Sankt-Peterburqun sənaye zonasında kiçik bir şirkətdə 1C verilənlər bazası administratoru (1C inkişaf etdiricisi olmaq perspektivi ilə) olmağa dəvət etdilər. İndi bu karyera yüksəlişidir! <h3>Fəsil 3. Əfsanənin qayıdışı</h3>Boz Sankt-Peterburq sənaye zonasında mikroavtobusun (korporativ nəqliyyat) pəncərəsindən baxıb, bir saat qırx bir yol qət edərək başa düşdüm ki, bacarmıram. belə yaşa. Öz-özünə yazılmış sistemin ilk toxunuşu ilə 1C-yə maraq itdi. Plan lazım idi. Və o, yetkinləşdi: axşamlar SQL-i öyrənir, eyni zamanda tanınmış iş saytını izləyirdi. İşdən çıxarılmağın son tətikçisi vəziyyət idi: baş direktor məni planlaşdırılan tətilə buraxmaq istəmədi, baxmayaraq ki, biletlər artıq alınmışdı. Tətildən sonra ərizə yazıram və yenidən Moskvadakı vakansiyalar üçün CV göndərirəm. Bir daha mənə Moskva vaxtı ilə böyük bir bankda müsahibə təklif edirlər. Yenə qohumlarımın mətbəxinə gəlib müsahibəyə gedirəm. Ünvanı yazanda gözlərimə inana bilmədim - bu, işləmək arzusunda olduğum bina idi (Moskvada sonuncu iqamətgahım olanda tikilməkdə idi). Vəzifə informasiya sistemlərinə dəstək üzrə baş mütəxəssis adlanırdı. ofisə gedirəm Məni dəbli pencək və cins şalvarda olan təxminən 30 yaşlı kişi qarşılayır. 15-ci mərtəbəyə qalxdıq, şəhərin panoramasını görəndə nəfəsim kəsildi: Stalinist hündürmərtəbəli binaların hamısı görünürdü. Binanın bütün üslubu çox müasir idi: müdirin kabinetində şərab soyuducuları, dəbli akvariumlar, ağ-qara üslubda çılpaq qadın rəsmləri var idi. Bu, "vay" effektinə səbəb oldu. Müdirlə söhbət həmişəki kimi olmadı: 40 dəqiqəyə yaxın o, bankda baş verənlərdən danışdı. Heç nə başa düşmədim, amma başımı tərpətdim. Soruşanda: nə vaxt məndən soruşmağa başlayacaqsan? Diqqət etmirdi. Bir daha “texniki müsahibə nə vaxtdır?” sualıma “bəli, onsuz da sizi işə götürəcəyik, öhdəsindən gələ bilməsəniz, sizi işdən çıxaracağıq” cavabı verildi. Təbəssümlə deyildi və başa düşdüm ki, hər şey, xəyal yenidən gerçəkləşdi! <h3>Fəsil 4. İT sahəsində özünüzü tapmaq </h3>Yeni yerə gələndə məni niyə dərhal işə götürdüklərini başa düşdüm. Şöbə işçisinin tipik portretini təsvir edəcəyəm: orta yaş 55, moskvalı, Moskva Dövlət Universitetinin təhsili, sovet dövründə müdafiə elmi-tədqiqat institutunda işləyib, 90-cı illərdə bank sektoruna keçid, 20 ildir burada işləyir. il.Yarısı kişi,yarısı qadındır. Ətrafdakı interyerlərlə tam dissonansa girdilər. Mühasibat uçotu üçün hesabat proqramlarının aparılmasında iştirak etdik. Təbii ki, bunların hamısı 90-cı illərin sonu və 2000-ci illərin əvvəllərində tərtibatçılar tərəfindən yazılmış qədim VBA və SQL skriptlərində idi. 2015-ci il idi və avtomatlaşdırma MS Access vasitəsilə idi. Yəni son dərəcə kasıb görünürdü. Amma bir nüans var idi - müştərinin (mühasibatlığın) istədiyini təmin etdilər. Və tam vaxtında və tələb olunan formada. Yalnız onlar bunun necə işlədiyini bilirdilər və hətta Onotole də inkişaflarının mürəkkəbliyini təsəvvür edə bilmirdi. Və istənilən İT meneceri, hətta ən böyük istəklə belə, onları işdən çıxara bilməzdi - baş mühasib bankın idarə heyətinə getdi və mühasibatlıq şöbəsinin maraqlarına xidmət edən istənilən işçini müdafiə etdi. Menecer mənim Troya atı rolunu oynamağımı istədi: mən onların bütün inkişaflarını öyrəndim, sonra məlumatları yeni sistemə köçürdüm. Onda köhnə işçilər işdən çıxarıla, mən də yeni sistemə keçə bilərəm. Əvvəlcə onların proseslərini araşdırdım və VBA koduna baxdım. Tədricən VBA kodunu oxumağı öyrəndim. Bir il sonra kodun özünü necə yazacağımı artıq bilirdim. Tipik tapşırıq: verilənlər bazası verilir, ondan məlumatları çıxarın və müəyyən bir formatda Excel-ə qoyun. İndi, Zadornovun dediyi kimi, dərindən nəfəs alın: şöbənin bütün hesabatları (və bu, gündəlik 50, aylıq 20 hesabatdır!) əl ilə idarə olunurdu! Karl, başa düşürsən ki, insanlar hər gün 50 hesabatda əlləri ilə tarixləri +1-ə dəyişirlər! Otururlar, 1-10 dəqiqə bir hesabatın nəticəsini gözləyirlər və digərini işə salırlar! Üstəlik, gündəlik hesabatlar müəyyən bir vaxtda işə salınmalıdır və Allah gecikməməsin! Onlar təkcə hesabat vermir, həm də dəyişənlərdən istifadə etmədən verilənlər bazasında prosedurları əl ilə icra edirlər! Yəni, @startDate = '2015-01-01' dəyişənini istifadə etmək əvəzinə, 20 yerdə eyni tarixi əl ilə dəyişəcəklər! Bütün bunlara baxdıqdan sonra Python öyrənməyə başladım, və VBA, SQL və Tapşırıq planlaşdırıcısı ilə birlikdə bütün bunları iki il ərzində avtomatlaşdırdım. Yalnız avtomatlaşdırılmış deyil, həm də bir çox hesabatları sürətləndirdi: MS Access + VBA-dan MS SQL + TSQL-in xeyrinə imtina etsəniz, məhsuldarlığın dəfələrlə artmasına nail ola bilərsiniz. Mənim rekordum hesabat yaratmağı sürətləndirir100bir dəfə! Amma həmkarlarım belə avtomatlaşdırmadan son dərəcə narazı idilər, ona görə də məni xalq düşməni elan etdilər (təqaüdə çıxana qədər sakit oturmaq istəyirdilər). Vaxt keçdi və məlumat miqrasiyası uğurlu oldu. Menecer məni çox qiymətləndirdi: əgər karyeramın əvvəlində işə səhər saat 8-də gəlirdimsə, bir müddətdən sonra saat 12:00-a qədər istənilən vaxt gələ bilərdim, maaş və vəzifədə daimi artım, həftə sonları iş üçün ödəniş daha çox ikiqat məbləğdən çox, işə gecikdiyiniz halda evə taksi, mobil rabitə, bir sözlə - elit! <h3>Fəsil 5. Qızıl Qəfəs</h3>Birdən 3,5 ildən sonra yeni İT rəhbərliyi gəlir və deyir ki, mənim məlumatları köçürdüyüm sistemə artıq ehtiyac yoxdur. Amma köhnə sistem qalacaq. Menecerim karyera nərdivanında irəliləyir və məni daha mütərəqqi bir şöbəyə keçməyə dəvət edir. Proqressiv departamentin rəhbəri ilə görüşdə başa düşürəm ki, bu departamentin texnologiya yığını mənə məlum deyil: Oracle, .net, C#, Linux və s. + Potensial patrona qarşı antipatiya. Menecerimə deyirəm ki, məni mütərəqqi şöbə maraqlandırmır və o, rahatlıqla məni unudur. Və sonra sual yaranır: bundan sonra nə etməli? Gəlir artıq layiqli idi, Junior dev məni bu maaşa işə götürməzdi. Bacarıqlarım haqqında düşünəndən sonra başa düşdüm ki, maşın öyrənməsinə keçməliyəm. İnstitutda ancaq ikrah hissi yaradan riyazi statistika ilə ilk qarşılaşmaya qədər hər şey maraqlı idi. Budur, altı aydır stupor! Vaxt keçdi və bir gün gəzərkən Moskvanın xəritəsində yaxşı restoranların göstəriləcəyi bir sayt haqqında düşündüm. HTML, CSS, JS öyrənməyə başladım. Mən 3 ay təhsil aldım; tam hüquqlu veb sayt yaratmaq üçün biliyə malik deyildim, amma işdə təcrübə edə bildim. Bir fikir yarandı: mühasiblər üçün bir portal yaratmaq ki, bir düymədən istifadə edərək özləri üçün istənilən hesabatı yükləyə bilsinlər. Portalın yaradılması 2 ay çəkdi və SPA (Tək səhifə tətbiqi) veb proqramı Node.js backend ilə React js-də doğuldu. SQL skriptlərini geri işə saldım (Hibernate kimi çərçivələr haqqında bilmirdim), Python-u işə saldı və əlavə məlumatları MongoDb-də saxladı (məsələn, sayt istifadəçiləri haqqında). Xarici olaraq, sayt çox layiqli görünürdü (bootstrap 4, dəbli animasiya). Mən hələ də bu layihə ilə fəxr edirəm. Amma kodumu bankın veb tərtibatçılarına göstərəndə onlar heyrətə gəldilər. SİZİN BİR SİNFİNİZ DEYİL! Yalnız xüsusiyyətlər, yalnız sərt! Məni təriflədilər, amma dedilər ki, Orta tam stack tərtibatçısı olmaq üçün hələ çox oxumalıyam. Analitik kimi işə düzəlməyə çalışdım, amma xüsusi təkliflər olmadı. Düşünürəm ki, mən orada deyildim, tam stack tərtibatçısının CV-ni göndərəcəm. Zənglər gəldi, amma müsahibələr zamanı mən kontrplak kimi Parisin üzərində uçdum: məsələn, HashMap, HashSet nə olduğunu və nə üçün lazım olduğunu bilmirdim. OOP, proqramlaşdırma nümunələri, alqoritmlər, testlər, Git haqqında ən kiçik bir fikir yox idi. Əsas şeyləri bilməməkdən çoxdan unudulmuş utanc hissini xatırladım. Birdən maliyyə şirkətində müştəri analitikasının rəhbəri kimi iş təklifi gəlir. Bir həftə əvvəl ölkə pandemiya səbəbindən bağlandı. Maliyyə şirkətində işə düzəldim, amma ikiqat hiss var idi: bir tərəfdən yüksək maaş isti idi, digər tərəfdən texniki tərəfdən minimal inkişaf olardı. Qurğunun quraşdırılmasından və distant işin tətbiqindən bir həftə keçdi. Qeyri-iş günləri maliyyə sektoruna aid olmadığından biz həmişəki kimi işləyirdik. Yeni müdir çox çılğın bir insan oldu: o, Facebook-u qırmaq, müştəriləri öyrənmək üçün öz neyron şəbəkələrini yaratmağı təklif etdi (heyətdə məlumat alimi olmadan). Yeni işçilərə bir həftə ərzində Python öyrənmək təklif edildi və s. Ödənişsiz istirahət günləri normaya çevrildi. İşdən çıxmaq axmaqlıq idi: pandemiya zamanı haradan iş tapacaqsınız? Amma 2 aydan sonra rüblük bonusların olmayacağı elan edildikdən sonra səbri tükəndi. Nüans ondan ibarətdir ki, biz əmək haqqı ilə bağlı razılığa gələndə işə qəbul zamanı hr dedi ki, əmək haqqı maaşa (60%) və rüblük bonusa (40%) bölünür, həmişə ödənilir. Yanlış seçim edildiyi aydın oldu və biz yeni iş axtarmağa başlamalıyıq. <h3>Fəsil 6. Java-nı mənimsəməyə başlamaq</h3>Mayın gözəl bir günündə mən “Developer” vakansiyasına müsahibəyə dəvət alıram. Sığorta sənayesində bir şirkətə sığorta məhsullarını inkişaf etdirəcək şəxs lazımdır. Proqramlaşdırma təcrübəsi lazımdır, lakin bu, şirkətin "unikal" inkişafı olduğundan, xüsusi bir dilə ehtiyac yoxdur. Git və sair də lazımdır. İki günə müsahibə təyin etdim və boş vaxtlarımda Git-in əsaslarını öyrəndim. Müsahibə zamanı məndən Python, JS, Git, SQL haqqında soruşdular. “Metodun həddindən artıq yüklənməsi” anlayışından başqa hər şeyə cavab verdim və məni 2 həftə ərzində işə dəvət etdilər. Məlum olub ki, şirkət sistemi çoxdan alıb. Java-da yazılmışdır (ön və arxa), onunla proqramlaşdırma dilini bilmədən (daha doğrusu, quraşdırılmış Jelly proqramlaşdırma dilindən istifadə etməklə) biznes prosesləri yarada bilərsiniz. Yaxşı səslənir, amma əslində hər şey təhrif edilib. Lirik yayınma: istənilən texnologiyanın öz dövrü və öz miqyası var. 2000-ci ildə bütün hesabatları yalnız Excel-də etmək gözəldir. 2021-ci ildə eyni şeyi etmək çox yaxşı deyil. Təmiz HTML-də şirkət veb saytı 1999-cu ildə gözəl idi, lakin 2021-ci ildə yox. Beləliklə, şirkətin yaradıldığı zaman (2005) istifadə etdiyi texnologiya çox gözəl idi - Java həm server, həm də müştəri hissəsi üçün cavabdeh idi (Java servlet səhifələri adlanır). Üstəlik, yeni bir iş prosesi (öz UI var) yaratsanız, o, fayldakı kodda deyil, verilənlər bazasında saxlanılır. Bunun nə qədər əlverişsiz olduğunu başa düşmək üçün təsəvvür edin ki, Java kodunu Intellij ideyasında yazırsınız, onu Database-də saxlayın və sonra. kodunuzu işə salmaq istədiyiniz zaman proqramın nüvəsi verilənlər bazasına gedir və kodunuzu oradan oxuyur. Müvafiq olaraq, siz ərizənizi tam olaraq sazlaya bilməzsiniz. İpucu №1: Testbench-ə kodu təqdim etmək istədiyiniz zaman yaratmalısınız digər tərəfdən, texniki tərəfdə minimal inkişaf olacaq. Qurğunun quraşdırılmasından və distant işin tətbiqindən bir həftə keçdi. Qeyri-iş günləri maliyyə sektoruna aid olmadığından biz həmişəki kimi işləyirdik. Yeni müdir çox çılğın bir insan oldu: o, Facebook-u qırmaq, müştəriləri öyrənmək üçün öz neyron şəbəkələrini yaratmağı təklif etdi (heyətdə məlumat alimi olmadan). Yeni işçilərə bir həftə ərzində Python öyrənmək təklif edildi və s. Ödənişsiz istirahət günləri normaya çevrildi. İşdən çıxmaq axmaqlıq idi: pandemiya zamanı haradan iş tapacaqsınız? Amma 2 aydan sonra rüblük bonusların olmayacağı elan edildikdən sonra səbri tükəndi. Nüans ondan ibarətdir ki, biz əmək haqqı ilə bağlı razılığa gələndə işə qəbul zamanı hr dedi ki, əmək haqqı maaşa (60%) və rüblük bonusa (40%) bölünür, həmişə ödənilir. Yanlış seçim edildiyi aydın oldu və biz yeni iş axtarmağa başlamalıyıq. <h3>Fəsil 6. Java-nı mənimsəməyə başlamaq</h3>Mayın gözəl bir günündə mən “Developer” vakansiyasına müsahibəyə dəvət alıram. Sığorta sənayesində bir şirkətə sığorta məhsullarını inkişaf etdirəcək şəxs lazımdır. Proqramlaşdırma təcrübəsi lazımdır, lakin bu, şirkətin "unikal" inkişafı olduğundan, xüsusi bir dilə ehtiyac yoxdur. Git və sair də lazımdır. İki günə müsahibə təyin etdim və boş vaxtlarımda Git-in əsaslarını öyrəndim. Müsahibə zamanı məndən Python, JS, Git, SQL haqqında soruşdular. “Metodun həddindən artıq yüklənməsi” anlayışından başqa hər şeyə cavab verdim və məni 2 həftə ərzində işə dəvət etdilər. Məlum olub ki, şirkət sistemi çoxdan alıb. Java-da yazılmışdır (ön və arxa), onunla proqramlaşdırma dilini bilmədən (daha doğrusu, quraşdırılmış Jelly proqramlaşdırma dilindən istifadə etməklə) biznes prosesləri yarada bilərsiniz. Yaxşı səslənir, amma əslində hər şey təhrif edilib. Lirik yayınma: istənilən texnologiyanın öz dövrü və öz miqyası var. 2000-ci ildə bütün hesabatları yalnız Excel-də etmək gözəldir. 2021-ci ildə eyni şeyi etmək çox yaxşı deyil. Təmiz HTML-də şirkət veb saytı 1999-cu ildə gözəl idi, lakin 2021-ci ildə yox. Beləliklə, şirkətin yaradıldığı zaman (2005) istifadə etdiyi texnologiya çox gözəl idi - Java həm server, həm də müştəri hissəsi üçün cavabdeh idi (Java servlet səhifələri adlanır). Üstəlik, yeni bir iş prosesi (öz UI var) yaratsanız, o, fayldakı kodda deyil, verilənlər bazasında saxlanılır. Bunun nə qədər əlverişsiz olduğunu başa düşmək üçün təsəvvür edin ki, Java kodunu Intellij ideyasında yazırsınız, onu Database-də saxlayın və sonra. kodunuzu işə salmaq istədiyiniz zaman proqramın nüvəsi verilənlər bazasına gedir və kodunuzu oradan oxuyur. Müvafiq olaraq, siz ərizənizi tam olaraq sazlaya bilməzsiniz. İpucu №1: Testbench-ə kodu təqdim etmək istədiyiniz zaman yaratmalısınız digər tərəfdən, texniki tərəfdə minimal inkişaf olacaq. Qurğunun quraşdırılmasından və distant işin tətbiqindən bir həftə keçdi. Qeyri-iş günləri maliyyə sektoruna aid olmadığından biz həmişəki kimi işləyirdik. Yeni müdir çox çılğın bir insan oldu: o, Facebook-u qırmaq, müştəriləri öyrənmək üçün öz neyron şəbəkələrini yaratmağı təklif etdi (heyətdə məlumat alimi olmadan). Yeni işçilərə bir həftə ərzində Python öyrənmək təklif edildi və s. Ödənişsiz istirahət günləri normaya çevrildi. İşdən çıxmaq axmaqlıq idi: pandemiya zamanı haradan iş tapacaqsınız? Amma 2 aydan sonra rüblük bonusların olmayacağı elan edildikdən sonra səbri tükəndi. Nüans ondan ibarətdir ki, biz əmək haqqı ilə bağlı razılığa gələndə işə qəbul zamanı hr dedi ki, əmək haqqı maaşa (60%) və rüblük bonusa (40%) bölünür, həmişə ödənilir. Yanlış seçim edildiyi aydın oldu və biz yeni iş axtarmağa başlamalıyıq. <h3>Fəsil 6. Java-nı mənimsəməyə başlamaq</h3>Mayın gözəl bir günündə mən “Developer” vakansiyasına müsahibəyə dəvət alıram. Sığorta sənayesində bir şirkətə sığorta məhsullarını inkişaf etdirəcək şəxs lazımdır. Proqramlaşdırma təcrübəsi lazımdır, lakin bu, şirkətin "unikal" inkişafı olduğundan, xüsusi bir dilə ehtiyac yoxdur. Git və sair də lazımdır. İki günə müsahibə təyin etdim və boş vaxtlarımda Git-in əsaslarını öyrəndim. Müsahibə zamanı məndən Python, JS, Git, SQL haqqında soruşdular. “Metodun həddindən artıq yüklənməsi” anlayışından başqa hər şeyə cavab verdim və məni 2 həftə ərzində işə dəvət etdilər. Məlum olub ki, şirkət sistemi çoxdan alıb. Java-da yazılmışdır (ön və arxa), onunla proqramlaşdırma dilini bilmədən (daha doğrusu, quraşdırılmış Jelly proqramlaşdırma dilindən istifadə etməklə) biznes prosesləri yarada bilərsiniz. Yaxşı səslənir, amma əslində hər şey təhrif edilib. Lirik yayınma: istənilən texnologiyanın öz dövrü və öz miqyası var. 2000-ci ildə bütün hesabatları yalnız Excel-də etmək gözəldir. 2021-ci ildə eyni şeyi etmək çox yaxşı deyil. Təmiz HTML-də şirkət veb saytı 1999-cu ildə gözəl idi, lakin 2021-ci ildə yox. Beləliklə, şirkətin yaradıldığı zaman (2005) istifadə etdiyi texnologiya çox gözəl idi - Java həm server, həm də müştəri hissəsi (sözdə Java servlet səhifələri) üçün cavabdeh idi. Üstəlik, yeni bir iş prosesi (öz UI var) yaratsanız, o, fayldakı kodda deyil, verilənlər bazasında saxlanılır. Bunun nə qədər əlverişsiz olduğunu başa düşmək üçün təsəvvür edin ki, Java kodunu Intellij ideyasında yazırsınız, onu Database-də saxlayın və sonra. kodunuzu işə salmaq istədiyiniz zaman proqramın nüvəsi verilənlər bazasına gedir və kodunuzu oradan oxuyur. Müvafiq olaraq, siz ərizənizi tam olaraq sazlaya bilməzsiniz. İpucu №1: Testbench-ə kodu təqdim etmək istədiyiniz zaman yaratmalısınız müştəriləri öyrənmək üçün öz neyron şəbəkələrinizi yaradın (işçi heyətində məlumat alimi olmadan). Yeni işçilərə bir həftə ərzində Python öyrənmək təklif edildi və s. Ödənişsiz istirahət günləri normaya çevrildi. İşdən çıxmaq axmaqlıq idi: pandemiya zamanı haradan iş tapacaqsınız? Amma 2 aydan sonra rüblük bonusların olmayacağı elan edildikdən sonra səbri tükəndi. Nüans ondan ibarətdir ki, biz əmək haqqı ilə bağlı razılığa gələndə işə qəbul zamanı hr dedi ki, əmək haqqı maaşa (60%) və rüblük bonusa (40%) bölünür, həmişə ödənilir. Yanlış seçim edildiyi aydın oldu və biz yeni iş axtarmağa başlamalıyıq. <h3>Fəsil 6. Java-nı mənimsəməyə başlamaq</h3>Mayın gözəl bir günündə mən “Developer” vakansiyasına müsahibəyə dəvət alıram. Sığorta sənayesində bir şirkətə sığorta məhsullarını inkişaf etdirəcək şəxs lazımdır. Proqramlaşdırma təcrübəsi lazımdır, lakin bu, şirkətin "unikal" inkişafı olduğundan, xüsusi bir dilə ehtiyac yoxdur. Git və sair də lazımdır. İki günə müsahibə təyin etdim və boş vaxtlarımda Git-in əsaslarını öyrəndim. Müsahibə zamanı məndən Python, JS, Git, SQL haqqında soruşdular. “Metodun həddindən artıq yüklənməsi” anlayışından başqa hər şeyə cavab verdim və məni 2 həftə ərzində işə dəvət etdilər. Məlum olub ki, şirkət sistemi çoxdan alıb. Java-da yazılmışdır (ön və arxa), onunla proqramlaşdırma dilini bilmədən (daha doğrusu, quraşdırılmış Jelly proqramlaşdırma dilindən istifadə etməklə) biznes prosesləri yarada bilərsiniz. Yaxşı səslənir, amma əslində hər şey təhrif edilib. Lirik yayınma: istənilən texnologiyanın öz dövrü və öz miqyası var. 2000-ci ildə bütün hesabatları yalnız Excel-də etmək gözəldir. 2021-ci ildə eyni şeyi etmək çox yaxşı deyil. Təmiz HTML-də şirkət veb saytı 1999-cu ildə gözəl idi, lakin 2021-ci ildə yox. Beləliklə, şirkətin yaradıldığı zaman (2005) istifadə etdiyi texnologiya çox gözəl idi - Java həm server, həm də müştəri hissəsi (sözdə Java servlet səhifələri) üçün cavabdeh idi. Üstəlik, yeni bir iş prosesi (öz UI var) yaratsanız, o, fayldakı kodda deyil, verilənlər bazasında saxlanılır. Bunun nə qədər əlverişsiz olduğunu başa düşmək üçün təsəvvür edin ki, Java kodunu Intellij ideyasında yazırsınız, onu Database-də saxlayın və sonra. kodunuzu işə salmaq istədiyiniz zaman proqramın nüvəsi verilənlər bazasına gedir və kodunuzu oradan oxuyur. Müvafiq olaraq, siz ərizənizi tam olaraq sazlaya bilməzsiniz. İpucu №1: Testbench-ə kodu təqdim etmək istədiyiniz zaman yaratmalısınız müştəriləri öyrənmək üçün öz neyron şəbəkələrinizi yaradın (işçi heyətində məlumat alimi olmadan). Yeni işçilərə bir həftə ərzində Python öyrənmək təklif edildi və s. Ödənişsiz istirahət günləri normaya çevrildi. İşdən çıxmaq axmaqlıq idi: pandemiya zamanı haradan iş tapacaqsınız? Amma 2 aydan sonra rüblük bonusların olmayacağı elan edildikdən sonra səbri tükəndi. Nüans ondan ibarətdir ki, biz əmək haqqı ilə bağlı razılığa gələndə işə qəbul zamanı hr dedi ki, əmək haqqı maaşa (60%) və rüblük bonusa (40%) bölünür, həmişə ödənilir. Yanlış seçim edildiyi aydın oldu və biz yeni iş axtarmağa başlamalıyıq. <h3>Fəsil 6. Java-nı mənimsəməyə başlamaq</h3>Mayın gözəl bir günündə mən “Developer” vakansiyasına müsahibəyə dəvət alıram. Sığorta sənayesində bir şirkətə sığorta məhsullarını inkişaf etdirəcək şəxs lazımdır. Proqramlaşdırma təcrübəsi lazımdır, lakin bu, şirkətin "unikal" inkişafı olduğundan, xüsusi bir dilə ehtiyac yoxdur. Git və sair də lazımdır. İki günə müsahibə təyin etdim və boş vaxtlarımda Git-in əsaslarını öyrəndim. Müsahibə zamanı məndən Python, JS, Git, SQL haqqında soruşdular. “Metodun həddindən artıq yüklənməsi” anlayışından başqa hər şeyə cavab verdim və məni 2 həftə ərzində işə dəvət etdilər. Məlum olub ki, şirkət sistemi çoxdan alıb. Java-da yazılmışdır (ön və arxa), onunla proqramlaşdırma dilini bilmədən (daha doğrusu, quraşdırılmış Jelly proqramlaşdırma dilindən istifadə etməklə) biznes prosesləri yarada bilərsiniz. Yaxşı səslənir, amma əslində hər şey təhrif edilib. Lirik yayınma: istənilən texnologiyanın öz dövrü və öz miqyası var. 2000-ci ildə bütün hesabatları yalnız Excel-də etmək gözəldir. 2021-ci ildə eyni şeyi etmək çox yaxşı deyil. Təmiz HTML-də şirkət veb saytı 1999-cu ildə gözəl idi, lakin 2021-ci ildə yox. Beləliklə, şirkətin yaradıldığı zaman (2005) istifadə etdiyi texnologiya çox gözəl idi - Java həm server, həm də müştəri hissəsi (sözdə Java servlet səhifələri) üçün cavabdeh idi. Üstəlik, yeni bir iş prosesi (öz UI var) yaratsanız, o, fayldakı kodda deyil, verilənlər bazasında saxlanılır. Bunun nə qədər əlverişsiz olduğunu başa düşmək üçün təsəvvür edin ki, Java kodunu Intellij ideyasında yazırsınız, onu Database-də saxlayın və sonra. kodunuzu işə salmaq istədiyiniz zaman proqramın nüvəsi verilənlər bazasına gedir və kodunuzu oradan oxuyur. Müvafiq olaraq, siz ərizənizi tam olaraq sazlaya bilməzsiniz. İpucu №1: Testbench-ə kodu təqdim etmək istədiyiniz zaman yaratmalısınız <h3>Fəsil 6. Java-nı mənimsəməyə başlamaq</h3>Mayın gözəl bir günündə mən “Developer” vakansiyasına müsahibəyə dəvət alıram. Sığorta sənayesində bir şirkətə sığorta məhsullarını inkişaf etdirəcək şəxs lazımdır. Proqramlaşdırma təcrübəsi lazımdır, lakin bu, şirkətin "unikal" inkişafı olduğundan, xüsusi bir dilə ehtiyac yoxdur. Git və sair də lazımdır. İki günə müsahibə təyin etdim və boş vaxtlarımda Git-in əsaslarını öyrəndim. Müsahibə zamanı məndən Python, JS, Git, SQL haqqında soruşdular. “Metodun həddindən artıq yüklənməsi” anlayışından başqa hər şeyə cavab verdim və məni 2 həftə ərzində işə dəvət etdilər. Məlum olub ki, şirkət sistemi çoxdan alıb. Java-da yazılmışdır (ön və arxa), onunla proqramlaşdırma dilini bilmədən (daha doğrusu, quraşdırılmış Jelly proqramlaşdırma dilindən istifadə etməklə) biznes prosesləri yarada bilərsiniz. Yaxşı səslənir, amma əslində hər şey təhrif edilib. Lirik yayınma: istənilən texnologiyanın öz dövrü və öz miqyası var. 2000-ci ildə bütün hesabatları yalnız Excel-də etmək gözəldir. 2021-ci ildə eyni şeyi etmək çox yaxşı deyil. Təmiz HTML-də şirkət veb saytı 1999-cu ildə gözəl idi, lakin 2021-ci ildə yox. Beləliklə, şirkətin yaradıldığı zaman (2005) istifadə etdiyi texnologiya çox gözəl idi - Java həm server, həm də müştəri hissəsi (sözdə Java servlet səhifələri) üçün cavabdeh idi. Üstəlik, yeni bir iş prosesi (öz UI var) yaratsanız, o, fayldakı kodda deyil, verilənlər bazasında saxlanılır. Bunun nə qədər əlverişsiz olduğunu başa düşmək üçün təsəvvür edin ki, Java kodunu Intellij ideyasında yazırsınız, onu Database-də saxlayın və sonra. kodunuzu işə salmaq istədiyiniz zaman proqramın nüvəsi verilənlər bazasına gedir və kodunuzu oradan oxuyur. Müvafiq olaraq, siz ərizənizi tam olaraq sazlaya bilməzsiniz. İpucu №1: Testbench-ə kodu təqdim etmək istədiyiniz zaman yaratmalısınız <h3>Fəsil 6. Java-nı mənimsəməyə başlamaq</h3>Mayın gözəl bir günündə mən “Developer” vakansiyasına müsahibəyə dəvət alıram. Sığorta sənayesində bir şirkətə sığorta məhsullarını inkişaf etdirəcək şəxs lazımdır. Proqramlaşdırma təcrübəsi lazımdır, lakin bu, şirkətin "unikal" inkişafı olduğundan, xüsusi bir dilə ehtiyac yoxdur. Git və sair də lazımdır. İki günə müsahibə təyin etdim və boş vaxtlarımda Git-in əsaslarını öyrəndim. Müsahibə zamanı məndən Python, JS, Git, SQL haqqında soruşdular. “Metodun həddindən artıq yüklənməsi” anlayışından başqa hər şeyə cavab verdim və məni 2 həftə ərzində işə dəvət etdilər. Məlum olub ki, şirkət sistemi çoxdan alıb. Java-da yazılmışdır (ön və arxa), onunla proqramlaşdırma dilini bilmədən (daha doğrusu, quraşdırılmış Jelly proqramlaşdırma dilindən istifadə etməklə) biznes prosesləri yarada bilərsiniz. Yaxşı səslənir, amma əslində hər şey təhrif edilib. Lirik yayınma: istənilən texnologiyanın öz dövrü və öz miqyası var. 2000-ci ildə bütün hesabatları yalnız Excel-də etmək gözəldir. 2021-ci ildə eyni şeyi etmək çox yaxşı deyil. Təmiz HTML-də şirkət veb saytı 1999-cu ildə gözəl idi, lakin 2021-ci ildə yox. Beləliklə, şirkətin yaradıldığı zaman (2005) istifadə etdiyi texnologiya çox gözəl idi - Java həm server, həm də müştəri hissəsi (sözdə Java servlet səhifələri) üçün cavabdeh idi. Üstəlik, yeni bir iş prosesi (öz UI var) yaratsanız, o, fayldakı kodda deyil, verilənlər bazasında saxlanılır. Bunun nə qədər əlverişsiz olduğunu başa düşmək üçün təsəvvür edin ki, Java kodunu Intellij ideyasında yazırsınız, onu Database-də saxlayın və sonra. kodunuzu işə salmaq istədiyiniz zaman proqramın nüvəsi verilənlər bazasına gedir və kodunuzu oradan oxuyur. Müvafiq olaraq, siz ərizənizi tam olaraq sazlaya bilməzsiniz. İpucu №1: Testbench-ə kodu təqdim etmək istədiyiniz zaman yaratmalısınız Təmiz HTML-də şirkət veb saytı 1999-cu ildə gözəl idi, lakin 2021-ci ildə yox. Beləliklə, şirkətin yaradıldığı zaman (2005) istifadə etdiyi texnologiya çox gözəl idi - Java həm server, həm də müştəri hissəsi (sözdə Java servlet səhifələri) üçün cavabdeh idi. Üstəlik, yeni bir iş prosesi (öz UI var) yaratsanız, o, fayldakı kodda deyil, verilənlər bazasında saxlanılır. Bunun nə qədər əlverişsiz olduğunu başa düşmək üçün təsəvvür edin ki, Java kodunu Intellij ideyasında yazırsınız, onu Database-də saxlayın və sonra. kodunuzu işə salmaq istədiyiniz zaman proqramın nüvəsi verilənlər bazasına gedir və kodunuzu oradan oxuyur. Müvafiq olaraq, siz ərizənizi tam olaraq sazlaya bilməzsiniz. İpucu №1: Testbench-ə kodu təqdim etmək istədiyiniz zaman yaratmalısınız Təmiz HTML-də şirkət veb saytı 1999-cu ildə gözəl idi, lakin 2021-ci ildə yox. Beləliklə, şirkətin yaradıldığı zaman (2005) istifadə etdiyi texnologiya çox gözəl idi - Java həm server, həm də müştəri hissəsi (sözdə Java servlet səhifələri) üçün cavabdeh idi. Üstəlik, yeni bir iş prosesi (öz UI var) yaratsanız, o, fayldakı kodda deyil, verilənlər bazasında saxlanılır. Bunun nə qədər əlverişsiz olduğunu başa düşmək üçün təsəvvür edin ki, Java kodunu Intellij ideyasında yazırsınız, onu Database-də saxlayın və sonra. kodunuzu işə salmaq istədiyiniz zaman proqramın nüvəsi verilənlər bazasına gedir və kodunuzu oradan oxuyur. Müvafiq olaraq, siz ərizənizi tam olaraq sazlaya bilməzsiniz. İpucu №1: Testbench-ə kodu təqdim etmək istədiyiniz zaman yaratmalısınızSQL скрипт, kodunuzu ehtiva edəcək. Xoşagəlməz, lakin dözümlüdür? Zest #2: Verilənlər bazası bir-biri ilə əlaqəsi olan 200-dən çox cədvəldən ibarətdir. Bu o deməkdir ki, kodunuzu hansı cədvəllərə atacağınızı və digər cədvəllərdə hansı obyektlərin yaradılması lazım olduğunu bilməlisiniz. Çıxış ~ 1000 sətir uzunluğunda bir SQL skriptidir. Bu, həqiqətən də iyrəncdir. Mirasdan çəkinin. Bir sözlə, hər şeyin Java-da olduğunu anlayıb JavaRush-a keçdim (nəhayət saytın mövzusuna çatdıq!). İyun-iyul 2020. İlk 10 səviyyə tez bağlandı (bəlkə də bir ay), çünki prinsipial olaraq yeni heç nə yox idi. Sonra sürət azaldı. İyul-oktyabr 2020. 10-20 səviyyələri bağlandı. Oktyabr-Mart 2021. 20-30 səviyyələri bağlandı. İndi əyləncə başlayır: 2021-ci ilin mart ayında Java vakansiyalarına baxmağa başladım və orada çoxlu tanış olmayan sözlərin olduğunu başa düşdüm. Bir növ Spring, SpringBoot, Hibernate, JUnit. Tanınmış bir veb saytında video kurslar alıb, Bahara toxundum və düşündüm ki, indi hər şeyi bilirəm və edə bilərəm. Bundan sonra Qriqori Kislinin TopJava kursuna rast gəldim. Onun saytında siz test tapşırığını yerinə yetirməyə cəhd edə bilərsiniz və uğur qazansanız, kursu keçə bilərsiniz. Bu kursda siz tam hüquqlu veb proqram yaradırsınız və hətta onu İnternetdə dərc edirsiniz. Bu pul müqabilində onlar sizə rəy verəcək (daha təcrübəli proqramçı tərəfindən kodun nəzərdən keçirilməsi), rəy bildirəcək və problem yarandıqda sizə məsləhətlər verəcək. 3-cü ev tapşırığını verdim və çıxdım. Səbəb sadədir: sizdən çox şey tələb edirlər, amma sizə heç bir bilik vermirlər. Ev tapşırığı tələbləri çox qarışıqdır. Məlumat son dərəcə ziddiyyətli şəkildə təqdim olunur. Mənim subyektiv fikrimcə, bu kurs digər oxşar dillərdən gələn kifayət qədər təcrübəli tərtibatçılar üçün lazımdır. Çünki onun kursunda istifadə etməyi xahiş etdiyi texnologiyaların izahı praktiki olaraq yoxdur. Siz həmçinin Git-i yaxşı bilməlisiniz (hər şey şəxsi deponuza göndərilir). 2021-ci ilin aprel ayının sonunda mən Java proqramçısı üçün (orta+ səviyyədə arzu olunan əmək haqqı ilə) CV göndərirəm ki, orada qeyd edirəm ki, son işimdə Java-da proqramlaşdırmışam (yalan danışmışam). Həmin gün banka Java developer vəzifəsi üçün müraciət daxil olur. <h3>Fəsil 7. Java Müsahibələri və Bacarıqların Təcrübəsi</h3>Beləliklə, plan nə idi? Mən yaxşı maaş almalıyam, çünki mən artıq xeyli gəlir + kreditlə yaşamağa öyrəşmişəm. Ona görə də kiçik vəzifələr mənə uyğun deyil. Orta iş tapmaq lazımdır. Bəs təcrübəsiz məni kim işə götürəcək? Qərar təbii olaraq gəldi: əmək kitabçamda qeyd olunur ki, mən bir il developer, daha 4 il əvvəlki vəzifəmdə İT departamentində ekspert kimi işləmişəm. Beləliklə, mən bir ildir Java-da inkişaf etdiyimi söyləyəcəyəm. Və yeni məhsullar haqqında soruşsalar, deyəcəyəm ki, köhnə Java (7) orada idi və heç bir şeyi dəstəkləmirdi. İlk (uzaqdan) müsahibəmdən əvvəl əsəbi idim. Təcrübəm yoxdur, çox az biliyim var və çoxlu pul istəyirəm. Düşünürəm: əhəmiyyət vermə, mənfi təcrübə də təcrübədir. Mən Skype vasitəsilə əlaqə saxlayıram və iki şöbə müdiri ilə müsahibə verəcəyəm. Bu məni daha da kədərləndirdi. Suallar başladı: OOP, HashMap cihazı, axınlar, məlumat strukturları, Spring, Hibernate, AOP nədir. Əgər Spinqdən əvvəl daha çox və ya daha az dözümlü idisə, Baharda tamamilə dağıldı. İnsanlar məndən soruşurlar: əgər həqiqətən bilmirsinizsə, Baharda necə inkişaf etdiniz? Mən: Kopyaladım, yapışdırdım, işləyir və bunun üçün təşəkkür edirəm. Bu cavab onları əyləndirdi. Sonra SQL haqqında soruşdular, mən suda ördək kimi oldum. Sonrakı Git və rebase, cherry-pick (mən də bilmədiyim) haqqında sual idi və CV-də qeyd edildiyi üçün JS haqqında bitirdim. Orada da tam uğursuzluq oldu, çünki onlar OOP JS haqqında soruşdular. Müsahibənin nəticələrinə əsasən məlum oldu ki, mənim biliklərim comme il faut deyil və buna görə də bu vakansiyaya uyğun gəlməyəcəyəm. Axşam HR yazır ki, namizədliyim təsdiqlənib və mənə zəng etməyə hazırdırlar. Əslində McDonald's-da burgerdən boğulmuşdum. Sevindim, amma 3 gündən sonra HR başqa namizəd seçdiklərini bildirdi. Təcrübəmdə ilk dəfə təklif geri götürüldü. Java-da ilk müsahibədən sonra mən oyunumu gücləndirdim: Colt Steele-dən Git-də video kurslar satmaq üçün tanınmış bir saytda kurs keçdim (və onu tamamilə başa vurdum!). Bu mənim Git haqqında təsəvvürümü dəyişdi. Sonra Zaur Trequlovdan Bahar+Qışlama haqqında (brilliant) kurs aldım. Təlim sxemi: Videodakı kimi baxıram, kompüterimdə də eyni şeyi edirəm, amma başqasının kodunu axmaqcasına köçürməmək üçün dəyişənləri və sinifləri fərqli adlandırıram. Mən bütün işlərimi Github-a yükləyirəm (bununla da Git-i məşq edirəm). May ayının ortaları idi və saatdan zənglər başladı. Müsahibələri bir-bir planlaşdırmağa başladıq. Bir çox dəvətlər aşağıdakı səbəblərə görə ləğv edilməli oldu: HR mənim CV-nin təsvirini oxumadı və məni yüksək vəzifəyə dəvət etdi. Ayrı bir HR kastasını da qeyd etmək lazımdır: Java ilə JavaScript-i qarışdıranlar. Buna görə də CV-nin başlığına Middle Java developer yazdım. <h3>Fəsil 8. Tipik sualların siyahısı və müsahibələrin necə keçdiyi</h3>Mən müsahibələrə getməyə başladım və tədricən ortada əsas suallar toplusunu formalaşdırdım. Tələb olunur: 0. OOP - tərif, OOP-un hər bir prinsipi haqqında danışın (+real həyatdan nümunə verin). 1. Bərabər və hashcode - onlar arasında müqavilə (əlaqə) nədir? 2. HashMap - obyektin hansı vedrəyə girəcəyini, toqquşmanın nə olduğunu, HashMap daxilində verilənlərin hansı verilənlər strukturunda saxlandığını, standart ölçüsünü, vedrələrin sayının necə artdığını necə başa düşmək olar. 3. Stream - hansı növ əməliyyatlar, onlar arasında fərq nədir, hər bir əməliyyat növünə nümunə verin. 4. String pool, Integer pool - bu nədir? 5. Yığın, yığın - bu nədir, fərq nədir? 6. Runnable, Thread, Future arasındakı fərqlər. 7. Uçucu, atomik. 8. Solid, Kiss, Dry - təriflər, real həyatdan nümunələr. 9. Java-da modifikatorlara giriş. 10. Abstrakt siniflə interfeys arasında fərq nədir. İnterfeys şəxsi ola bilərmi? 11. Funksional interfeyslər. 12. Bütün Obyekt metodlarını sadalayın və onların nə üçün lazım olduğunu söyləyin. Klonlama metodunun xüsusiyyətləri. 13. Serializasiya və serializasiya nədir. 14. Resurslarla tutmağa çalışın - bunun nə olduğunu təsvir edin, Closeable interfeysindən istifadə edərək deyin. 15. Final, nəhayət, yekunlaşma arasındakı fərqlər? 16. Həddindən artıq yüklənmə, Metodun üstünlüyü fərqdir. 17. String niyə dəyişməz hala gətirildi, bizə StringBuilder və StringBuffer haqqında məlumat verin. 18. Zaman mürəkkəbliyi nədir O(1), yaddaş mürəkkəbliyi. 19. Məlumat strukturları: xəritə, set, növbə, deque, siyahı və onların Java-da tətbiqi (treeMap, hashSet, hashMap, arrayList, linkedList, priorityQueue, blockingQueue) haqqında danışın, daxiletmənin mürəkkəbliyini (ən pis, orta, ən yaxşı) təsvir edin, axtarış, hər bir strukturda bir elementin çıxarılması. 20. Java-da primitiv verilənlər tipləri. Onların hər biri nə üçün lazımdır? 21. Səhvlərin növləri. Yoxlanmış və qeyd olunmamış istisnalar. 22. JVM, JRE, JDK nədir? 23. Hansı kolleksiyaçılarla işləmisiniz? Maven - Həyat dövrü qurun. 24. Bahar - Ioc Tərifləri, Di, Bean Lifecycle, Context, @Bean Annotations, @Configuration, @Autowired, @Advice, @Aspect, @Service, @Repository. 25. Generics - aşağı və yuxarı həddi nəyin tərifi? 26.Proqramlaşdırma nümunələri - ən azı Singleton (bəzən bunun niyə anti-pattern olduğunu söyləmək istəyi) + Builder, Adapter, Factory, Decorator, Proxt. Arzuolunan: 26. Test - kitabxanaların (JUnit) işlədiyi test növləri. Mock, Stab, Spy nədir? 27. Yaz çəkmə - niyə lazımdır, SpringBoot tətbiqini onlayn etməyə hazır olmaq. 28. Hibernate - niyə lazımdır, Müəssisə, qoşulma sütunu, tənbəl və həvəsli yükləmə, keş səviyyələri (sərt). 29. Bahar istirahəti - niyə lazımdır, @post, @get son nöqtələri necə etmək olar. Parametrləri/sorğu orqanını necə oxumaq olar? json formatında necə təqdim etmək olar? 30. Məlumat strukturları - ağaclar, onların növləri. 31. Alqoritmlər - çeşidləmə növləri. Java-dan əlavə, onlar soruşa bilərlər: 1. (Tələb olunur!) Git - nə üçün lazımdır, əməliyyatlar birləşir, rebase, albalı seç, itələyir, çək, commit, log, checkout, filial, sıfırla, geri qaytar, təzələ. 2.SQL - sorğu yazmaq bacarığı: iki cədvəli birinə birləşdirin (daxili birləşmə, sol birləşmə). 3. Verilənlər bazaları - 3 normal forma, indekslər (nə üçün lazımdır, növlər), ilkin açar, xarici açar Tipik uzaqdan müsahibə necə gedir: hr böyütmək üçün keçid göndərir (Skype, Google Meeting). Müəyyən vaxta qədər siz qoşulursunuz və orada 1-dən 3 nəfərə qədər (texniki ekspert, patron, saat) var. Xüsusilə inadkar hallarda, 8 nəfərə qədər. Əvvəlcə özünüz haqqında danışırsınız, sonra texniki hissə, sonra vakansiya və vidalaşma haqqında hekayə (sizinlə nə vaxt əlaqə saxlayacaqlarını və ya növbəti addımların necə olacağını deyirlər). Əlvida zamanı biliklə bağlı rəy istəyə bilərsiniz. Soruşdum: “Cavablarım zamanı qulaqlarınızın harada ağrıdığını deyə bilərsinizmi?” Bir çox insan cavab verir, lakin rədd olunmağa hazır olun. Müsahibə zamanı qiymətləndirirlər: 1. Fikirlərinizi ifadə etmək bacarığınızı və rus dilini bilmənizi (mən belə bir hal bilirəm ki, rus dilini zəif bildiyi üçün namizəd rədd edilib). 2. Əvvəlki təcrübə (son işinizdə nə etdiyinizi diqqətlə soruşa bilərlər). 3. Sizə təzyiq edildikdə adekvat reaksiya (bir müsahibədə insanlar hörmətsiz danışmağa başladılar: cavablarıma məhəl qoymamaq, öz mövqelərini aşılamağa çalışmaq və s. Mən müsahibəni başlayandan 15 dəqiqə sonra bitirdim və onlar: gərgin müsahibə oldu!) 4. Bilik səviyyəniz. Burada daha ətraflı danışacağam. Mövzunun təriflərini bilmək sizdən gözlənilənlərin yalnız 10%-ni təşkil edir. Bunun necə işlədiyini başa düşmək lazımdır (ən azı yuxarı səviyyədə). İnkişafın hansı mərhələsində bu və ya digər həlli seçəcəyinizi izah etmək istəyi. Bu, tərifinizin düzgünlüyündən daha vacibdir. Bu tezisi iki misaldan istifadə edərək təhlil edəcəyəm. Birinci misal: müsahibə zamanı məndən HashMap haqqında soruşdular və mən tərif verdim: “bu, əsas və dəyər paketlərini saxlayan məlumat strukturudur”. Sonra müsahibi soruşdu: TreeMap-dən fərqi nədir? Cavab: Fərq ondadır ki, HashMap açarı hash edir və hashing sayəsində giriş sürətlidir. Müsahibimiz dərhal bizə HashMap-ın daxili strukturunu söyləməyi və eyni zamanda hashCode və bərabərləri haqqında soruşmağı xahiş etdi. Cavabdan razı qalana və ya dayanana qədər o, daha da dərinləşəcək. HashMap haqqında düzgün cavab verməyi yalnız 2 aylıq müsahibələrdən və hexlet-də məlumat strukturları kursundan sonra öyrəndim. İkinci misal: SOLID konsepsiyası. Məndən əzbərlədiyim tərifi verməyi xahiş edirlər. Amma real həyat nümunələrinə gələn kimi problemlər başladı. Внимание!Əgər bilmirsinizsə, onu icad etməyin, amma deyin: Mən bu mövzunu bilmirəm, amma onun belə işlədiyini güman edə bilərəm. Bir insan mövzunu başa düşürmüş kimi bidət danışanda bir çox texniki ekspertlər hiddətlənir. 5. İş müzakirəsi zamanı həvəs səviyyəniz. Sizi maraqlandıracaq və vakansiya ilə bağlı suallar verəcəksiniz (yalnız uydurma deyil). 6. Bəzən yumor (yalnız mövzu ilə bağlı) və ümumi maraqlar ünsiyyət qurmağa kömək edir. Hobbiləriniz haqqında danışmaqdan çekinmeyin; bəlkə də müsahibimiz Dota/futbol/fantaziyanı sevir. Və bu, bir namizəd kimi sizin üçün bir artıdır. Maraqlar cəmiyyətinin müsahibə verənin zəif texniki hazırlığına göz yumduğu halları bilirəm (Sən normal oğlansan, biz səni öyrədəcəyik). <h3>Fəsil 9. İş əldə etmək, odun vəftizi</h3>Müsahibələr aprelin sonundan iyulun ortalarına qədər aparılıb. İlk müsahibələr utancverici idi, lakin tədricən vəziyyət məqbul səviyyəyə qədər yaxşılaşdı. Ümumi sualları və rəyləri öyrənmək özlərini hiss etdirdi. İlk 25 müsahibə uğursuz alınıb. Bundan sonra ümidsizlik anları başladı. Hisslər: əgər məni bu maaşa işə götürməzlərsə? Birdən işlər qızışmağa başladı: bir həftə ərzində üç şirkət təkliflər təqdim etdi. Xüsusiyyətlərini bildiyim bir şirkət seçdim, üstəlik yaxşı maaş və uzaqdan işləmək imkanı var. Müsahibəm zamanı mənə Java core və Spring haqqında 30-a yaxın sual verildi, onların 97%-nə düzgün cavab verdim. Bundan sonra yuxarı orqanlarla əlaqə yarandı və 1,5 həftədən sonra onlarla işə düzəldim. İlk növbədə, hər hansı bir işə gəldikdə, bütün lazımi sistemlərə çıxış əldə etməyə və sizə lazım olan alətləri quraşdırmağa başlayırsınız. Bir həftə yarım çəkdi və mənə ilk tapşırıq verildi: sinifdə statik mətni dəyişdirmək. Layihəni açanda özümü pis hiss etdim: bir layihənin içərisində çoxlu modullar, çoxlu dərslər, testlər və s. Bu anda mən itirdim, amma ikinci bir tərtibatçı mənə kömək etdi və məni sürətləndirdi. Səhv 10 dəqiqə ərzində düzəldildi, Git-də dərc olundu, çəkmə sorğusu edildi (digər tərtibatçıların kodunuzu yoxladığı iki filialı birləşdirmək tələbi) və sonra əsas filiala birləşdirildi. Məlum oldu ki, hər şey o qədər də çətin deyil. İlk tam hüquqlu tapşırığa qədər... Növbəti iki həftə üçün tapşırıqları planlaşdırarkən mənə dedilər: OpenShift-də yerləşən başqa bir sistemlə inteqrasiya edəcəksən. Burada işlər həqiqətən qorxunc oldu: OpenShift bütöv texnologiyalar toplusudur: Docker, Kubernetes, Linux və s. Soyuq tər kürəyimdən aşağı axdı: yaxşı, mən Cəvist işləyirdim. Görüşdən dərhal sonra tərtibatçıya zəng etdim, o, məni əmin etdi: bu sistem üçün adapterlər yazılmışdı və layihəmə müəyyən sinifləri idxal etmək kifayət idi, bundan sonra inteqrasiyadan təhlükəsiz istifadə edə bildim. Tərtibatçı tipik inteqrasiyanı göstərənə qədər yenidən əyləncəli oldu: oxşar inteqrasiya üçün yaradılmış 20-dən çox sinif gördüm. Bundan əlavə, əvvəllər görünməmiş qeydlər @Value, @Builder, @NoArgsConstructor, @Getter qeyd edildi. @Sl4f - Lombook layihəsi olduğu ortaya çıxdı (İnternetdə oxuyun). Tərtibatçı mənə bunu necə edəcəyimi izah edəndə mən bütün siniflərin əlaqələrini yazmağa çalışdım və heç nə başımda qalmadı. Ən utanc verici məqam Intellij Idea haqqında məlumatın olmaması idi: layihə üçün qlobal axtarış, kod refaktorinqi və s. Tapşırığı öhdəsinə götürərək, OOP-nin nə üçün lazım olduğunu başa düşdüm: belə böyük miqdarda kod üçün onu siniflərə bölmək lazımdır; sinifdən kənarda istifadə olunmayan metodlar təsadüfən başqa sinifdə işə salınmamaq üçün özəl elan edilməlidir və s. İnteqrasiyamı başqa inteqrasiya ilə analogiyaya yazaraq, CheckStyle - stili yoxlayan xüsusi plaqinin mövcudluğu haqqında öyrəndim. kodunuzdan istifadə edə bilməyəcəksiniz və səhvləri düzəltməyincə layihənizi tərtib edə bilməyəcəksiniz (məsələn, əlavə boşluqlar, böyük hərflərlə dəyişən adlar, çox qısa dəyişən adları). CheckStyle-ı məğlub etdikdən sonra kodumu nəzərdən keçirmək üçün yüksək səviyyəli tərtibatçılara göndərdim və bir həftə ərzində səhvlərimi düzəltdim. Ümumiyyətlə, mənim komandamda çox şeyi izah edən ikinci tərtibatçı ilə yaxşı münasibət qurduğum üçün çox şanslı idim. Cihazdan bir ay sonra İnteqrasiya-Funksional stenddə ilk inteqrasiyam işə salındı ​​(bütün proqramların işi birlikdə sınaqdan keçirilir) və hər şey orada işlədi! Qələbə! Növbəti vəzifə json-da açarla məlumatları gizlətməyə imkan verən bir sinif yaratmaq idi. Məsələn: json var {text:"JavaRush"} -> emal -> {text:"****Rush"}. Burada iki mürəkkəblik var: yuvalama {text:{mytext:"JavaRush"}} ola bilər və daha xoşagəlməz olanı serialın içərisində yuvalanmasıdır: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (əlbəttə ki, bütün mətn.mytext gizlətmək lazımdır). Bu problemi həll etmək olduqca çətin oldu, amma mən bunu etdim! Burada ikinci tərtibatçı deyir: bu inkişafı testlərlə əhatə edin. Gözlərdə çaşqınlıq vardı. JUnit kitabxanası ilə döyüşdə belə tanış oldum. Vahid testinin mahiyyəti: giriş məlumatınız var, onu metoda keçirin və alınan məlumatları düzgün nəticə ilə müqayisə edin (düzgün nəticə ilə dəyişən yaradın). Kitabxanam üçün 11 iş yazdım, orada tətbiqin NullPointException ilə qəzaya uğramadığını və istənilən növ yuva ilə məlumatları düzgün gizlətdiyini yoxladım. Bu tapşırığı yerinə yetirdikdən sonra mənə yeni inteqrasiya verildi, onun özəlliyi aşağıdakılardan ibarət idi: Mən xarici kitabxanadan Spring Bean ixrac etməli oldum. Bu zaman mən Stack OverFlow veb saytının daimi müştərisi oldum. Bir dəfə hətta rəsmi Spring developer cavab verdi. Bu inteqrasiyanı həyata keçirdikdən sonra sınaq müddətim başa çatdı. Müdir məni sınaq müddətini keçdiyinə görə təbrik etdi və mən bu yazını yazmağa başladım. Ümumilikdə bu yazını yazmaq 8 saat çəkdi) Diqqətiniz üçün təşəkkürlər, ümid edirəm məqalə faydalı oldu. Bütün siniflərin əlaqələrini yazmağa çalışdım və heç nə ağlıma gəlmədi. Ən utanc verici məqam Intellij Idea haqqında məlumatın olmaması idi: layihə üçün qlobal axtarış, kod refaktorinqi və s. Tapşırığı öhdəsinə götürərək, OOP-nin nə üçün lazım olduğunu başa düşdüm: belə böyük miqdarda kod üçün onu siniflərə bölmək lazımdır; sinifdən kənarda istifadə olunmayan metodlar təsadüfən başqa sinifdə işə salınmamaq üçün özəl elan edilməlidir və s. İnteqrasiyamı başqa inteqrasiya ilə analogiyaya yazaraq, CheckStyle - stili yoxlayan xüsusi plaqinin mövcudluğu haqqında öyrəndim. kodunuzdan istifadə edə bilməyəcəksiniz və səhvləri düzəltməyincə layihənizi tərtib edə bilməyəcəksiniz (məsələn, əlavə boşluqlar, böyük hərflərlə dəyişən adlar, çox qısa dəyişən adları). CheckStyle-ı məğlub etdikdən sonra kodumu nəzərdən keçirmək üçün yüksək səviyyəli tərtibatçılara göndərdim və bir həftə ərzində səhvlərimi düzəltdim. Ümumiyyətlə, mənim komandamda çox şeyi izah edən ikinci tərtibatçı ilə yaxşı münasibət qurduğum üçün çox şanslı idim. Cihazdan bir ay sonra İnteqrasiya-Funksional stenddə ilk inteqrasiyam işə salındı ​​(bütün proqramların işi birlikdə sınaqdan keçirilir) və hər şey orada işlədi! Qələbə! Növbəti vəzifə json-da açarla məlumatları gizlətməyə imkan verən bir sinif yaratmaq idi. Məsələn: json var {text:"JavaRush"} -> emal -> {text:"****Rush"}. Burada iki mürəkkəblik var: yuvalama {text:{mytext:"JavaRush"}} ola bilər və daha xoşagəlməz olanı serialın içərisində yuvalanmasıdır: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (əlbəttə ki, bütün mətn.mytext gizlətmək lazımdır). Bu problemi həll etmək olduqca çətin oldu, amma mən bunu etdim! Burada ikinci tərtibatçı deyir: bu inkişafı testlərlə əhatə edin. Gözlərdə çaşqınlıq vardı. JUnit kitabxanası ilə döyüşdə belə tanış oldum. Vahid testinin mahiyyəti: giriş məlumatınız var, onu metoda keçirin və alınan məlumatları düzgün nəticə ilə müqayisə edin (düzgün nəticə ilə dəyişən yaradın). Kitabxanam üçün 11 iş yazdım, orada tətbiqin NullPointException ilə qəzaya uğramadığını və istənilən növ yuva ilə məlumatları düzgün gizlətdiyini yoxladım. Bu tapşırığı yerinə yetirdikdən sonra mənə yeni inteqrasiya verildi, onun özəlliyi aşağıdakılardan ibarət idi: Mən xarici kitabxanadan Spring Bean ixrac etməli oldum. Bu zaman mən Stack OverFlow veb saytının daimi müştərisi oldum. Bir dəfə hətta rəsmi Spring developer cavab verdi. Bu inteqrasiyanı həyata keçirdikdən sonra sınaq müddətim başa çatdı. Müdir məni sınaq müddətini keçdiyinə görə təbrik etdi və mən bu yazını yazmağa başladım. Ümumilikdə bu yazını yazmaq 8 saat çəkdi) Diqqətiniz üçün təşəkkürlər, ümid edirəm məqalə faydalı oldu. Bütün siniflərin əlaqələrini yazmağa çalışdım və heç nə ağlıma gəlmədi. Ən utanc verici məqam Intellij Idea haqqında məlumatın olmaması idi: layihə üçün qlobal axtarış, kod refaktorinqi və s. Tapşırığı öhdəsinə götürərək, OOP-nin nə üçün lazım olduğunu başa düşdüm: belə böyük miqdarda kod üçün onu siniflərə bölmək lazımdır; sinifdən kənarda istifadə olunmayan metodlar təsadüfən başqa sinifdə işlədilməməsi üçün özəl elan edilməlidir və s. İnteqrasiyamı başqa inteqrasiya ilə analogiyaya yazaraq, CheckStyle - stili yoxlayan xüsusi plaqinin mövcudluğu haqqında öyrəndim. kodunuzdan istifadə edə bilməyəcəksiniz və səhvləri düzəltməyincə layihənizi tərtib edə bilməyəcəksiniz (məsələn, əlavə boşluqlar, böyük hərflərlə dəyişən adlar, çox qısa dəyişən adları). CheckStyle-ı məğlub etdikdən sonra kodumu nəzərdən keçirmək üçün yüksək səviyyəli tərtibatçılara göndərdim və bir həftə ərzində səhvlərimi düzəltdim. Ümumiyyətlə, mənim komandamda çox şeyi izah edən ikinci tərtibatçı ilə yaxşı münasibət qurduğum üçün çox şanslı idim. Cihazdan bir ay sonra İnteqrasiya-Funksional stenddə ilk inteqrasiyam işə salındı ​​(bütün proqramların işi birlikdə sınaqdan keçirilir) və hər şey orada işlədi! Qələbə! Növbəti vəzifə json-da açarla məlumatları gizlətməyə imkan verən bir sinif yaratmaq idi. Məsələn: json var {text:"JavaRush"} -> emal -> {text:"****Rush"}. Burada iki mürəkkəblik var: yuvalama {text:{mytext:"JavaRush"}} ola bilər və daha xoşagəlməz olanı serialın içərisində yuvalanmasıdır: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (əlbəttə ki, bütün mətn.mytext gizlətmək lazımdır). Bu problemi həll etmək olduqca çətin oldu, amma mən bunu etdim! Burada ikinci tərtibatçı deyir: bu inkişafı testlərlə əhatə edin. Gözlərdə çaşqınlıq vardı. JUnit kitabxanası ilə döyüşdə belə tanış oldum. Vahid testinin mahiyyəti: giriş məlumatınız var, onu metoda keçirin və alınan məlumatları düzgün nəticə ilə müqayisə edin (düzgün nəticə ilə dəyişən yaradın). Kitabxanam üçün 11 iş yazdım, orada tətbiqin NullPointException ilə qəzaya uğramadığını və istənilən növ yuva ilə məlumatları düzgün gizlətdiyini yoxladım. Bu tapşırığı yerinə yetirdikdən sonra mənə yeni inteqrasiya verildi, onun özəlliyi aşağıdakılardan ibarət idi: Mən xarici kitabxanadan Spring Bean ixrac etməli oldum. Bu zaman mən Stack OverFlow veb saytının daimi müştərisi oldum. Bir dəfə hətta rəsmi Spring developer cavab verdi. Bu inteqrasiyanı həyata keçirdikdən sonra sınaq müddətim başa çatdı. Müdir məni sınaq müddətini keçdiyinə görə təbrik etdi və mən bu yazını yazmağa başladım. Ümumilikdə bu yazını yazmaq 8 saat çəkdi) Diqqətiniz üçün təşəkkürlər, ümid edirəm məqalə faydalı oldu. Belə böyük miqdarda kod üçün onu siniflərə bölmək lazımdır; sinifdən kənarda istifadə olunmayan metodlar təsadüfən başqa sinifdə işə salınmamaq üçün özəl elan edilməlidir və s. İnteqrasiyamı başqa inteqrasiya ilə analogiyaya yazaraq, CheckStyle - stili yoxlayan xüsusi plaqinin mövcudluğu haqqında öyrəndim. kodunuzdan istifadə edə bilməyəcəksiniz və səhvləri düzəltməyincə layihənizi tərtib edə bilməyəcəksiniz (məsələn, əlavə boşluqlar, böyük hərflərlə dəyişən adlar, çox qısa dəyişən adları). CheckStyle-ı məğlub etdikdən sonra kodumu nəzərdən keçirmək üçün yüksək səviyyəli tərtibatçılara göndərdim və bir həftə ərzində səhvlərimi düzəltdim. Ümumiyyətlə, mənim komandamda çox şeyi izah edən ikinci tərtibatçı ilə yaxşı münasibət qurduğum üçün çox şanslı idim. Cihazdan bir ay sonra İnteqrasiya-Funksional stenddə ilk inteqrasiyam işə salındı ​​(bütün proqramların işi birlikdə sınaqdan keçirilir) və hər şey orada işlədi! Qələbə! Növbəti vəzifə json-da açarla məlumatları gizlətməyə imkan verən bir sinif yaratmaq idi. Məsələn: json var {text:"JavaRush"} -> emal -> {text:"****Rush"}. Burada iki mürəkkəblik var: yuvalama {text:{mytext:"JavaRush"}} ola bilər və daha xoşagəlməz olanı serialın içərisində yuvalanmasıdır: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (əlbəttə ki, bütün mətn.mytext gizlətmək lazımdır). Bu problemi həll etmək olduqca çətin oldu, amma mən bunu etdim! Burada ikinci tərtibatçı deyir: bu inkişafı testlərlə əhatə edin. Gözlərdə çaşqınlıq vardı. JUnit kitabxanası ilə döyüşdə belə tanış oldum. Vahid testinin mahiyyəti: giriş məlumatınız var, onu metoda keçirin və alınan məlumatları düzgün nəticə ilə müqayisə edin (düzgün nəticə ilə dəyişən yaradın). Kitabxanam üçün 11 iş yazdım, orada tətbiqin NullPointException ilə qəzaya uğramadığını və istənilən növ yuva ilə məlumatları düzgün gizlətdiyini yoxladım. Bu tapşırığı yerinə yetirdikdən sonra mənə yeni inteqrasiya verildi, onun özəlliyi aşağıdakılardan ibarət idi: Mən xarici kitabxanadan Spring Bean ixrac etməli oldum. Bu zaman mən Stack OverFlow veb saytının daimi müştərisi oldum. Bir dəfə hətta rəsmi Spring developer cavab verdi. Bu inteqrasiyanı həyata keçirdikdən sonra sınaq müddətim başa çatdı. Müdir məni sınaq müddətini keçdiyinə görə təbrik etdi və mən bu yazını yazmağa başladım. Ümumilikdə bu yazını yazmaq 8 saat çəkdi) Diqqətiniz üçün təşəkkürlər, ümid edirəm məqalə faydalı oldu. Belə böyük miqdarda kod üçün onu siniflərə bölmək lazımdır; sinifdən kənarda istifadə olunmayan metodlar təsadüfən başqa sinifdə işə salınmamaq üçün özəl elan edilməlidir və s. İnteqrasiyamı başqa inteqrasiya ilə analogiyaya yazaraq, CheckStyle - stili yoxlayan xüsusi plaqinin mövcudluğu haqqında öyrəndim. kodunuzdan istifadə edə bilməyəcəksiniz və səhvləri düzəltməyincə layihənizi tərtib edə bilməyəcəksiniz (məsələn, əlavə boşluqlar, böyük hərflərlə dəyişən adlar, çox qısa dəyişən adları). CheckStyle-ı məğlub etdikdən sonra kodumu nəzərdən keçirmək üçün yüksək səviyyəli tərtibatçılara göndərdim və bir həftə ərzində səhvlərimi düzəltdim. Ümumiyyətlə, mənim komandamda çox şeyi izah edən ikinci tərtibatçı ilə yaxşı münasibət qurduğum üçün çox şanslı idim. Cihazdan bir ay sonra İnteqrasiya-Funksional stenddə ilk inteqrasiyam işə salındı ​​(bütün proqramların işi birlikdə sınaqdan keçirilir) və hər şey orada işlədi! Qələbə! Növbəti vəzifə json-da açarla məlumatları gizlətməyə imkan verən bir sinif yaratmaq idi. Məsələn: json var {text:"JavaRush"} -> emal -> {text:"****Rush"}. Burada iki mürəkkəblik var: yuvalama {text:{mytext:"JavaRush"}} ola bilər və daha xoşagəlməz olanı serialın içərisində yuvalanmasıdır: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (əlbəttə ki, bütün mətn.mytext gizlətmək lazımdır). Bu problemi həll etmək olduqca çətin oldu, amma mən bunu etdim! Burada ikinci tərtibatçı deyir: bu inkişafı testlərlə əhatə edin. Gözlərdə çaşqınlıq vardı. JUnit kitabxanası ilə döyüşdə belə tanış oldum. Vahid testinin mahiyyəti: giriş məlumatınız var, onu metoda keçirin və alınan məlumatları düzgün nəticə ilə müqayisə edin (düzgün nəticə ilə dəyişən yaradın). Kitabxanam üçün 11 iş yazdım, orada tətbiqin NullPointException ilə qəzaya uğramadığını və istənilən növ yuva ilə məlumatları düzgün gizlətdiyini yoxladım. Bu tapşırığı yerinə yetirdikdən sonra mənə yeni inteqrasiya verildi, onun özəlliyi aşağıdakılardan ibarət idi: Mən xarici kitabxanadan Spring Bean ixrac etməli oldum. Bu zaman mən Stack OverFlow veb saytının daimi müştərisi oldum. Bir dəfə hətta rəsmi Spring developer cavab verdi. Bu inteqrasiyanı həyata keçirdikdən sonra sınaq müddətim başa çatdı. Müdir məni sınaq müddətini keçdiyinə görə təbrik etdi və mən bu yazını yazmağa başladım. Ümumilikdə bu yazını yazmaq 8 saat çəkdi) Diqqətiniz üçün təşəkkürlər, ümid edirəm məqalə faydalı oldu. dəyişən adları çox qısadır). CheckStyle-ı məğlub etdikdən sonra kodumu nəzərdən keçirmək üçün yüksək səviyyəli tərtibatçılara göndərdim və bir həftə ərzində səhvlərimi düzəltdim. Ümumiyyətlə, mənim komandamda çox şeyi izah edən ikinci tərtibatçı ilə yaxşı münasibət qurduğum üçün çox şanslı idim. Cihazdan bir ay sonra İnteqrasiya-Funksional stenddə ilk inteqrasiyam işə salındı ​​(bütün proqramların işi birlikdə sınaqdan keçirilir) və hər şey orada işlədi! Qələbə! Növbəti vəzifə json-da açarla məlumatları gizlətməyə imkan verən bir sinif yaratmaq idi. Məsələn: json var {text:"JavaRush"} -> emal -> {text:"****Rush"}. Burada iki mürəkkəblik var: yuvalama {text:{mytext:"JavaRush"}} ola bilər və daha xoşagəlməz olanı serialın içərisində yuvalanmasıdır: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (əlbəttə ki, bütün mətn.mytext gizlətmək lazımdır). Bu problemi həll etmək olduqca çətin oldu, amma mən bunu etdim! Burada ikinci tərtibatçı deyir: bu inkişafı testlərlə əhatə edin. Gözlərdə çaşqınlıq vardı. JUnit kitabxanası ilə döyüşdə belə tanış oldum. Vahid testinin mahiyyəti: giriş məlumatınız var, onu metoda keçirin və alınan məlumatları düzgün nəticə ilə müqayisə edin (düzgün nəticə ilə dəyişən yaradın). Kitabxanam üçün 11 iş yazdım, orada tətbiqin NullPointException ilə qəzaya uğramadığını və istənilən növ yuva ilə məlumatları düzgün gizlətdiyini yoxladım. Bu tapşırığı yerinə yetirdikdən sonra mənə yeni inteqrasiya verildi, onun özəlliyi aşağıdakılardan ibarət idi: Mən xarici kitabxanadan Spring Bean ixrac etməli oldum. Bu zaman mən Stack OverFlow veb saytının daimi müştərisi oldum. Bir dəfə hətta rəsmi Spring developer cavab verdi. Bu inteqrasiyanı həyata keçirdikdən sonra sınaq müddətim başa çatdı. Müdir məni sınaq müddətini keçdiyinə görə təbrik etdi və mən bu yazını yazmağa başladım. Ümumilikdə bu yazını yazmaq 8 saat çəkdi) Diqqətiniz üçün təşəkkürlər, ümid edirəm məqalə faydalı oldu. dəyişən adları çox qısadır). CheckStyle-ı məğlub etdikdən sonra kodumu nəzərdən keçirmək üçün yüksək səviyyəli tərtibatçılara göndərdim və bir həftə ərzində səhvlərimi düzəltdim. Ümumiyyətlə, mənim komandamda çox şeyi izah edən ikinci tərtibatçı ilə yaxşı münasibət qurduğum üçün çox şanslı idim. Cihazdan bir ay sonra İnteqrasiya-Funksional stenddə ilk inteqrasiyam işə salındı ​​(bütün proqramların işi birlikdə sınaqdan keçirilir) və hər şey orada işlədi! Qələbə! Növbəti vəzifə json-da açarla məlumatları gizlətməyə imkan verən bir sinif yaratmaq idi. Məsələn: json var {text:"JavaRush"} -> emal -> {text:"****Rush"}. Burada iki mürəkkəblik var: yuvalama {text:{mytext:"JavaRush"}} ola bilər və daha xoşagəlməz olanı serialın içərisində yuvalanmasıdır: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush" "} ] } (əlbəttə ki, bütün mətn.mytext gizlətmək lazımdır). Bu problemi həll etmək olduqca çətin oldu, amma mən bunu etdim! Burada ikinci tərtibatçı deyir: bu inkişafı testlərlə əhatə edin. Gözlərdə çaşqınlıq vardı. JUnit kitabxanası ilə döyüşdə belə tanış oldum. Vahid testinin mahiyyəti: giriş məlumatınız var, onu metoda keçirin və alınan məlumatları düzgün nəticə ilə müqayisə edin (düzgün nəticə ilə dəyişən yaradın). Kitabxanam üçün 11 iş yazdım, orada tətbiqin NullPointException ilə qəzaya uğramadığını və istənilən növ yuva ilə məlumatları düzgün gizlətdiyini yoxladım. Bu tapşırığı yerinə yetirdikdən sonra mənə yeni inteqrasiya verildi, onun özəlliyi aşağıdakılardan ibarət idi: Mən xarici kitabxanadan Spring Bean ixrac etməli oldum. Bu zaman mən Stack OverFlow veb saytının daimi müştərisi oldum. Bir dəfə hətta rəsmi Spring developer cavab verdi. Bu inteqrasiyanı həyata keçirdikdən sonra sınaq müddətim başa çatdı. Müdir məni sınaq müddətini keçdiyinə görə təbrik etdi və mən bu yazını yazmağa başladım. Ümumilikdə bu yazını yazmaq 8 saat çəkdi) Diqqətiniz üçün təşəkkürlər, ümid edirəm məqalə faydalı oldu. Bu problemi həll etmək olduqca çətin oldu, amma mən bunu etdim! Burada ikinci tərtibatçı deyir: bu inkişafı testlərlə əhatə edin. Gözlərdə çaşqınlıq vardı. JUnit kitabxanası ilə döyüşdə belə tanış oldum. Vahid testinin mahiyyəti: giriş məlumatınız var, onu metoda keçirin və alınan məlumatları düzgün nəticə ilə müqayisə edin (düzgün nəticə ilə dəyişən yaradın). Kitabxanam üçün 11 iş yazdım, orada tətbiqin NullPointException ilə qəzaya uğramadığını və istənilən növ yuva ilə məlumatları düzgün gizlətdiyini yoxladım. Bu tapşırığı yerinə yetirdikdən sonra mənə yeni inteqrasiya verildi, onun özəlliyi aşağıdakılardan ibarət idi: Mən xarici kitabxanadan Spring Bean ixrac etməli oldum. Bu zaman mən Stack OverFlow veb saytının daimi müştərisi oldum. Bir dəfə hətta rəsmi Spring developer cavab verdi. Bu inteqrasiyanı həyata keçirdikdən sonra sınaq müddətim başa çatdı. Müdir məni sınaq müddətini keçdiyinə görə təbrik etdi və mən bu yazını yazmağa başladım. Ümumilikdə bu yazını yazmaq 8 saat çəkdi) Diqqətiniz üçün təşəkkürlər, ümid edirəm məqalə faydalı oldu. Bu problemi həll etmək olduqca çətin oldu, amma mən bunu etdim! Burada ikinci tərtibatçı deyir: bu inkişafı testlərlə əhatə edin. Gözlərdə çaşqınlıq vardı. JUnit kitabxanası ilə döyüşdə belə tanış oldum. Vahid testinin mahiyyəti: giriş məlumatınız var, onu metoda keçirin və alınan məlumatları düzgün nəticə ilə müqayisə edin (düzgün nəticə ilə dəyişən yaradın). Kitabxanam üçün 11 iş yazdım, orada tətbiqin NullPointException ilə qəzaya uğramadığını və istənilən növ yuva ilə məlumatları düzgün gizlətdiyini yoxladım. Bu tapşırığı yerinə yetirdikdən sonra mənə yeni inteqrasiya verildi, onun özəlliyi aşağıdakılardan ibarət idi: Mən xarici kitabxanadan Spring Bean ixrac etməli oldum. Bu zaman mən Stack OverFlow veb saytının daimi müştərisi oldum. Bir dəfə hətta rəsmi Spring developer cavab verdi. Bu inteqrasiyanı həyata keçirdikdən sonra sınaq müddətim başa çatdı. Müdir məni sınaq müddətini keçdiyinə görə təbrik etdi və mən bu yazını yazmağa başladım. Ümumilikdə bu yazını yazmaq 8 saat çəkdi) Diqqətiniz üçün təşəkkürlər, ümid edirəm məqalə faydalı oldu.
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION