Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Java digər populyar dillərdən nə ilə fərqlənir? Nə üçün Java öyrəniləcək ilk dil olmalıdır? Gəlin Java dilini həm sıfırdan, həm də digər dillərdə proqramlaşdırma bacarıqlarını tətbiq etməklə öyrənməyinizə kömək edəcək bir plan yaradaq. Java-da istehsal kodu yaratmaqla digər dillərdə inkişaf etdirmək arasındakı fərqləri sadalayaq. Mixail Zatepyakin bu hesabatı gələcək iştirakçılar üçün görüşdə oxudu stajlar Yandex və digər başlanğıc tərtibatçılar - Java Junior görüş.


- Hamıya salam, mənim adım Mişadır. Mən Yandex.Market-in tərtibatçısıyam və bu gün sizə Java-nı niyə öyrənməli və bunu necə effektiv edəcəyinizi söyləyəcəyəm. Siz ağlabatan bir sual verə bilərsiniz: niyə uzun illər təcrübəsi olan güclü bir tərtibatçı deyil, bu hekayəni danışacağam? Fakt budur ki, mən özüm Java-nı bu yaxınlarda, təxminən bir il yarım əvvəl öyrənmişəm, buna görə də onun necə olduğunu və hansı tələlərin olduğunu hələ də xatırlayıram.

Bir il əvvəl Yandex.Market-də təcrübə keçdim. Mən Beru üçün backend hazırladım, bazarın özü üçün, yəqin ki, ondan istifadə etdiniz. İndi orada, başqa komandada işləməyə davam edirəm. Biz biznes tərəfdaşları üçün Yandex.Market üçün analitik platforma yaradırıq.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Gəlin başlayaq. Nə üçün Java dilini praktiki baxımdan öyrənin? Fakt budur ki, Java çox məşhur proqramlaşdırma dilidir. Çox böyük icması var.

Məsələn, proqramlaşdırma dillərinin populyarlığının məşhur indeksi olan belə bir TIOBE indeksi var və Java orada birinci yerdədir. Həmçinin, iş saytlarında, yəqin ki, görəcəksən ki, vakansiyaların əksəriyyəti Java ilə bağlıdır, yəni Java-da inkişaf edərək hər zaman iş tapa bilərsiniz.

İcma çox böyük olduğundan, hər hansı sualınız bəzi Stack Overflow və ya digər saytlarda cavab tapacaq. Həmçinin, Java-da inkişaf etdirərkən, əslində JVM-də kod yazırsınız, beləliklə siz asanlıqla Kotlin, Scala və JVM-dən istifadə edən digər dillərə keçə bilərsiniz.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

İdeoloji baxımdan Java-da nə yaxşıdır? Müxtəlif proqramlaşdırma dilləri var. Onlar müxtəlif problemləri həll edirlər, bunu bilirsiniz. Məsələn, Python sürətli problemləri həll etmək üçün bir sətirli skriptlər yazmaq üçün əladır.

Müsbət tərəfi, siz icra olunan kodu tam idarə edə bilərsiniz. Məsələn, bizdə avtomobillər, Yandex sürücüsüz avtomobillər var, onların kodu pluslarla yazılıb. Niyə? Java-da belə bir şey var - Garbage Collector. RAM-ı lazımsız obyektlərdən təmizləyir. Bu şey kortəbii olaraq başlayır və dünyanı dayandırır, yəni proqramın qalan hissəsini dayandırır və obyektləri saymağa gedir, obyektlərin yaddaşını təmizləyir. Əgər belə bir şey dronda işləyirsə, bu, sərin deyil. Dronunuz düz sürəcək, bu anda yaddaşını təmizləyəcək və heç yola baxmayacaq. Buna görə də, dron lehinə yazılıb.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Java hansı problemləri həll edir? Bu, ilk növbədə, illərlə, onlarla və ya yüzlərlə insan tərəfindən yazılmış böyük proqramların hazırlanması üçün bir dildir. Xüsusilə, Yandex.Market-də bir çox backend Java-da yazılmışdır. Bir neçə şəhərdə paylanmış komandamız var, hər birində on nəfər. Və kodu saxlamaq asandır, on il və ya daha çox dəstəklənir və eyni zamanda yeni insanlar daxil olur və bu kodu başa düşürlər.

Dil hansı xüsusiyyətlərə malik olmalıdır ki, içindəki kod asanlıqla dəstəklənsin və böyük komandalarda asanlıqla inkişaf etdirilə bilsin. İlk növbədə, o, oxunaqlı kod olmalıdır və mürəkkəb memarlıq həllərini həyata keçirmək asan olmalıdır. Yəni yüksək səviyyəli abstraksiyaları yazmaq asan olmalıdır və s.Bütün bunlar Javanın bizə təqdim etdiyi şeydir. Bu, obyekt yönümlü bir dildir. Yüksək səviyyəli abstraksiyaları və mürəkkəb arxitekturaları həyata keçirmək həqiqətən asandır.

Java üçün də çoxlu çərçivələr və kitabxanalar var, çünki dil 15 ildən çoxdur. Bu müddət ərzində yazıla biləcək hər şey onun üzərində yazılmışdı, ona görə də sizə lazım ola biləcək hər şey üçün tonlarla kitabxana var.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Fikrimcə, başlanğıc JA oyunçusu hansı əsas bacarıqlara sahib olmalıdır? Hər şeydən əvvəl, bu Java əsas dilini bilməkdir. Sonrakı bir növ Dependency Injection çərçivəsidir. Növbəti məruzəçi Kirill bu barədə daha dolğun danışacaq. Çox dərinə getməyəcəm. Sonrakı memarlıq və dizayn nümunələridir. Böyük proqramlar yazmaq üçün arxitektura baxımından gözəl kod yazmağı bacarmalıyıq. Və bu verilənlər bazası ilə işləmək üçün bir növ SQL və ya ORM-dir. Və bu daha çox arxa hissəyə aiddir.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Get! Java nüvəsi. Mən burada Amerikanı həqiqətən kəşf etməyəcəyəm - dilin özünü bilməlisən. Nələrə diqqət etməlisiniz. Birincisi, Java son illərdə çoxlu versiyalar buraxdı, yəni 2014-2015-ci illərdə yeddinci buraxıldı, sonra səkkizinci, doqquzuncu, onuncu, çoxlu yeni versiyalar və bir çox yeni gözəl şeylər təqdim edildi. , məsələn, Java Stream API , lambda və s. Çox gözəl, təzə, sərin şeylər istehsal kodunda istifadə olunur, müsahibələrdə soruşduqları və bilməli olduğunuz şeylər. Buna görə də Java-4 kitabxanasındakı rəfdən kitab götürməməli və gedib onu öyrənməlisiniz. Bu bizim planımızdır: Java-8 və ya daha yüksək səviyyəni öyrənirik.

Stream API, var və s. kimi yeniliklərə çox diqqət yetiririk. Onlar müsahibə zamanı soruşulur və istehsalda daim istifadə olunur. Yəni Stream API looplardan qat-qat soyuqdur, ümumiyyətlə, çox gözəl bir şeydir. Diqqət etməyinizə əmin olun.

İteratorlar, İstisnalar və s. kimi hər cür şeylər var. Özünüz kiçik kod yazdığınız müddətcə sizə əhəmiyyətsiz görünən şeylər. Bu İstisnalar sizə lazım deyil, onsuz da kimə lazımdır? Ancaq müsahibələrdə mütləq soruşulacaqlar, istehsalda sizə mütləq faydalı olacaqlar. Ümumiyyətlə, İstisnalara, iteratorlara və digər şeylərə diqqət yetirməlisiniz.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Məlumat strukturları. Struktursuz keçə bilməzsiniz, ancaq dəstlərin, lüğətlərin və vərəqlərin olduğunu bilməsəniz əla olar. Həm də strukturların müxtəlif tətbiqləri. Məsələn, Java-da eyni lüğətdə HashMap və TreeMap daxil olmaqla bir çox tətbiq var. Onlar müxtəlif asimptotiklərə malikdirlər, içəridə fərqli quruluşa malikdirlər. Onların necə fərqləndiyini və hansını istifadə edəcəyinizi bilməlisiniz.

Bu məlumat strukturlarının daxili olaraq necə işlədiyini bilsəniz, çox gözəl olacaq. Yəni, onların asimptotiklərini bilmək asan deyil - mərc nə qədər işləyir, keçid nə qədər işləyir, lakin strukturun içəridə necə işlədiyini - məsələn, HashMap-da vedrə nədir.

Ağaclara və qrafiklərə də diqqət yetirməyə dəyər. Bunlar istehsal kodunda çox rast gəlinməyən, lakin müsahibələrdə məşhur olan şeylərdir. Müvafiq olaraq, ağacları, qrafikləri eni və dərinliyi ilə keçməyi bacarmalısınız. Bütün bunlar sadə alqoritmlərdir.

İstənilən böyük kodu, kompleksi, kitabxanalardan, çox sinifli kodu istifadə edərək yazmağa başlayan kimi sistem qurmadan və asılılıqları həll etmədən bunun sizin üçün çətin olduğunu başa düşəcəksiniz. Bunlar ilk növbədə Maven və Gradledir. Onlar sizə kitabxanaları bir sətirdə layihənizə idxal etməyə imkan verir. Yəni bir sətirlik xml yazıb layihəyə kitabxanaları idxal edirsiniz. Əla sistemlər. Onlar təxminən eynidir, ya birini istifadə edin - Maven və ya Gradle.

Sonrakı - bir növ versiya idarəetmə sistemi. Git-i tövsiyə edirəm, çünki o, populyardır və çoxlu dərsliklər var. Demək olar ki, hər kəs Git-dən istifadə edir, bu gözəl bir şeydir, onsuz yaşaya bilməzsiniz.

Və bir növ inkişaf mühiti. IntelliJ İdeyasını tövsiyə edirəm. İnkişaf prosesini çox sürətləndirir, sizə çox kömək edir, sizin üçün bütün qazan kodunu yazır, ümumiyyətlə, əladır.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Slayddan keçidlər: SQLZOO, habrapost

SQL. Bir az dəstəkləyicilər haqqında. Burada əslində gülməli bir hadisə var idi. İkinci təcrübə müsahibəmdən iki gün əvvəl bir HR qız mənə zəng etdi və dedi ki, iki gündən sonra SQL və HTTP haqqında soruşacaqlar, bunu öyrənməliyəm. Mən SQL və ya HTTP haqqında demək olar ki, heç nə bilmirdim. Mən bu gözəl saytı tapdım - SQLZOO. Mən 12 saat ərzində SQL-i öyrəndim, yəni SQL sintaksisi, SELECT sorğularının necə yazılması, QOŞULUN və s. Çox gözəl saytdır, çox tövsiyə edirəm. Əslində, 12 saat ərzində indi bildiklərimin 90%-ni öyrəndim.

Verilənlər bazası arxitekturasını bilmək də əladır. Bunlar hər cür açarlar, indekslər, normallaşdırmadır. Habré-də bununla bağlı bir sıra yazılar var.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Java-da, SQL-ə əlavə olaraq, JPA kimi hər cür Obyektlə əlaqəli xəritəçəkmə sistemləri mövcuddur. Bəzi kod var. Birinci üsulda bəzi SQL kodu var - istifadəçi ID-lərində identifikatoru INFO.users-dən SEÇİN. İstifadəçilər bazasından, cədvəldən onların şəxsiyyət vəsiqələri və adları alınır.

Sonra, bir obyekti bazadan Java obyektinə çevirən müəyyən bir mapper var. Aşağıda bu kodu həqiqətən icra edən üçüncü bir üsul var. Bütün bunlar JPA istifadə edərək aşağıda yazılmış bir sətirlə əvəz edilə bilər. Eyni şeyi edir - All ByIdIn-i tapın. Yəni metodun adına əsaslanaraq sizin üçün SQL sorğusu yaradır.

Çox gözəl şey. Mən özüm SQL-i bilməyəndə JPA-dan istifadə edirdim. Ümumiyyətlə, diqqət yetirin. SQL öyrənmək üçün çox tənbəlsinizsə, bu, fəlakətdir. Və ümumiyyətlə, yanğın!

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Bahar. Kim Bahar çərçivəsi kimi bir şey eşitdi? Görürsən neçə nəfər var? Səbəbsiz deyil. Yaz hər ikinci Java backend vakansiyasının tələblərinə daxildir. Onsuz, həqiqətən də böyük inkişafda heç bir yer yoxdur. Bahar nədir? Əvvəla, bu, Dependency Injection çərçivəsidir. Bu barədə də deyəcək növbəti spiker. Qısacası, bu, bəzi siniflərin asılılıqlarını digərlərinə idxal etməyi asanlaşdırmağa imkan verən bir şeydir. Yəni, asılılıqlar haqqında biliklər sadələşdirilir.

Spring Boot, server proqramınızı bir düymə ilə işə salmağa imkan verən Spring parçasıdır. Siz THID-ə gedirsiniz, bir neçə düyməni sıxırsınız və indi server proqramınızı localhost 8080-də işə salırsınız. Yəni, hələ bir kod sətri yazmamısınız, lakin o, artıq işləyir. Çox gözəl şey. Özündən bir şey yazsan, atəş!

Bahar çox böyük bir çərçivədir. O, yalnız server proqramınızı götürmür və Asılılıq Enjeksiyonunu həll edir. REST API metodlarının yaradılması da daxil olmaqla, bir çox şeyi etməyə imkan verir. Yəni hansısa metod yazdınız və ona Get mapping annotasiyasını əlavə etdiniz. İndi artıq localhost-da sizə Salam dünya yazan bəzi metodunuz var. İki sətir kod və işləyir. Havalı şey.

Bahar həm də yazı testlərini asanlaşdırır. Böyük inkişafda sınaq olmadan heç bir yol yoxdur. Kodu sınamaq lazımdır. Bu məqsədlə Java-da sərin kitabxana JUnit 5 var. Və ümumiyyətlə JUnit, lakin ən son versiya beşincidir. Sınaq üçün hər şey, hər cür iddia və başqa şeylər var.

Və zəhmli Mockito çərçivəsi var. Təsəvvür edin ki, sınamaq istədiyiniz bəzi funksiyalarınız var. Funksionallıq çox şey edir, o cümlədən ortada bir yerdə, məsələn, şəxsiyyət vəsiqənizlə VKontakte-ə daxil olur və ID-dən VKontakte istifadəçisinin adını və soyadını alır. Yəqin ki, VKontakte-ni testlərə daxil etməyəcəksiniz, bu qəribədir. Amma siz funksionallığı test etməlisiniz, ona görə də siz Mockito-dan istifadə edərək bu sinfi yaratdınız, onu təqlid etmisiniz.

Deyəcəksiniz ki, bu sinifə belə və belə bir ID ilə sorğu gələndə hansısa soyadı qaytarır, məsələn, Vasya Pupkin. Və işləyəcək. Yəni mok bir sinif üçün bütün funksionallığı sınayacaqsınız. Çox gözəl şey.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Slayddan keçid

Dizayn nümunələri. Bu nədir? Bunlar inkişafda yaranan tipik problemlərin həlli üçün şablonlardır. İnkişaf zamanı eyni və ya oxşar problemlər tez-tez ortaya çıxır ki, bir şəkildə yaxşı həll etmək əla olardı. Buna görə də insanlar bu problemlərin həlli ilə bağlı ən yaxşı təcrübələr, müəyyən şablonlar hazırladılar.

Ən məşhur naxışları olan bir vebsayt var - refactoring.guru, onu oxuya bilərsiniz, hansı nümunələrin olduğunu öyrənə bilərsiniz, bir dəstə nəzəriyyə oxuya bilərsiniz. Problem ondadır ki, praktiki olaraq faydasızdır. Əslində, təcrübə olmadan nümunələr xüsusilə faydalı deyil.

Singletone və ya Builder kimi bəzi nümunələr haqqında eşidəcəksiniz. Bu sözləri kim eşitdi? Çox adam. Özünüzü həyata keçirə biləcəyiniz sadə nümunələr var. Amma nümunələrin əksəriyyəti: strategiya, fabrik, fasad - onları harada tətbiq etmək aydın deyil.

Təcrübədə başqasının kodunda bu nümunənin tətbiq olunduğu yeri görməyincə, onu özünüz tətbiq edə bilməyəcəksiniz. Buna görə də nümunələrlə təcrübə çox vacibdir. Və sadəcə refactoring.guru saytında onlar haqqında oxumaq çox faydalı deyil, lakin bunu mütləq etməyə dəyər.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Niyə nümunələrə ehtiyac var? Tutaq ki, sizin müəyyən bir İstifadəçi sinifiniz var. Onun İD və Adı var. Hər bir İstifadəçinin həm İD, həm də Adı olmalıdır. Sol yuxarı sinif otağıdır.

İstifadəçini işə salmağın yolları hansılardır? İki seçim var - ya konstruktor, ya da tənzimləyici. Hər iki yanaşmanın mənfi cəhətləri nələrdir?

Konstruktor. yeni İstifadəçi (7, "Bond"), tamam. İndi deyək ki, bizdə İstifadəçi sinfi yox, yeddi ədədi sahə ilə başqa bir sinif var. Ardıcıl yeddi ədəddən ibarət konstruktorunuz olacaq. Bu rəqəmlərin nədən ibarət olduğu və hansının hansı mülkə aid olduğu bəlli deyil. Dizayner əla deyil.

İkinci seçim tənzimləyicidir. Siz aydın şəkildə yazın: setId(7), setName("Bond"). Hansı mülkün hansı sahəyə aid olduğunu başa düşürsən. Amma setterin problemi var. Birincisi, nəyisə təyin etməyi unuda bilərsiniz, ikincisi, obyektiniz dəyişkən olur. Bu, mövzu üçün təhlükəsiz deyil və kodun oxunuşunu bir qədər azaldır. Buna görə insanlar sərin bir nümunə ilə gəldilər - İnşaatçı.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Bu nə ilə bağlıdır? Gəlin hər iki yanaşmanın (setter və konstruktorun) üstünlüklərini birində birləşdirməyə çalışaq. Müəyyən bir obyekt, Builder edirik, onun da Id və Ad sahələri olacaq, özü təyinedici əsasında qurulacaq və sizə bütün parametrləri ilə yeni İstifadəçi qaytaran Build metoduna sahib olacaq. Dəyişməz obyekt və təyinedici alırıq. Əla!

Problemlər nələrdir? Burada klassik Builder var. Problem ondadır ki, biz hələ də bəzi sahədə yoxlamağı unuda bilərik. Əgər ID-yə baş çəkməyi unutmuşuqsa, bu halda Builder-də o, sıfıra endirilir, çünki int tipi null edilə bilməz. Əgər “Bond” Adını qoysaq və şəxsiyyət vəsiqəsi ofisinə getməyi unutsaq, “0” id və “Bond” adlı yeni İstifadəçimiz olacaq. Sərin deyil.

Gəlin bununla mübarizə aparmağa çalışaq. Builder-də biz int-i int-ə dəyişəcəyik ki, o null olunsun. İndi hər şey əladır.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

İD-ni qoymağı unudaraq “Bond” adlı İstifadəçi yaratmağa çalışsaq, null göstərici istisnası alacağıq, çünki ID null edilə bilməz və Qurucuda null, xüsusən də göstərici istisnası var.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Amma biz hələ də ad qoymağı unuda bilərik, ona görə də biz obyektin təkrarını null olaraq təyin edirik. İndi biz Builder-dən obyektimizi quranda o, sahənin boş olmadığını yoxlayır. Və bu hamısı deyil.

Son nümunəyə baxaq. Bu vəziyyətdə, ID-nin işləmə müddətinə birtəhər null qoysaq, bunu etdiyinizi dərhal bilmək əla olardı və indi səhv etdiyiniz yaxşı deyil.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Siz istifadəçi yaratma anında deyil, ID-yə null qoyduğunuzda xəta atmalısınız. Buna görə də, Builder-də İnteger təyinedicisini int-ə dəyişəcəyik və o, dərhal null atdıqlarına and içəcək.

Qısacası, mənası nədir? Sadə bir Builder nümunəsi var, lakin hətta onun həyata keçirilməsində bəzi incəliklər var, buna görə də müxtəlif naxış tətbiqlərinə baxmaq çox gözəldir. Hər nümunənin onlarla tətbiqi var. Bütün bunlar çox maraqlıdır.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

İstehsal kodunda Builder-i necə yazırıq? Budur İstifadəçimiz. Biz ona Lombok kitabxanasından Builder rotasiyasını əlavə edirik və onun özü bizim üçün Builder yaradır. Yəni, biz heç bir kod yazmırıq, lakin Java artıq düşünür ki, bu sinifdə Builder var və biz onu belə adlandıra bilərik.

Mən artıq dedim ki, Java-da demək olar ki, hər şey üçün kitabxanalar var, o cümlədən Lombok, sərin bir kitabxana, bu, boşqab yazmamaqdan çəkinməyə imkan verir. İnşaatçı, GET.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Naxışlar memarlıq ola bilər - yalnız bir siniflə deyil, bütövlükdə sistemlə əlaqəli. Sistem dizaynında belə bir gözəl prinsip var: Tək Məsuliyyət Prinsipi. O nə danışır? Fakt budur ki, hər bir sinif öz funksionallığına görə məsuliyyət daşımalıdır. Bu halda bizim istifadəçilərlə, JSON obyektləri ilə əlaqə saxlayan Nəzarətçimiz var. JSON obyektlərini Java tətbiqinin daha sonra işləyəcəyi modellərə çevirən Fasad var. Bu modellərlə işləyən mürəkkəb məntiqə malik bir Xidmət var. Bu modelləri verilənlər bazasına yerləşdirən və verilənlər bazasından götürən Data Access Object var. Və verilənlər bazası özü var. Başqa sözlə, hamısı bir sinifdə deyil, lakin biz beş fərqli sinif hazırlayırıq və bu başqa bir nümunədir.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Java dilini az-çox öyrəndikdən sonra verilənlər bazası olacaq, digər API-lərlə işləyəcək və server proqramınızı REST API müştərilərinə təqdim edəcək öz layihənizi yazmaq əladır. Bu, CV-nizə əlavə etmək üçün əla bir şey olardı, təhsilinizə gözəl bir son olardı. Bununla gedib iş tapa bilərsiniz.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Budur mənim server proqramımın bir nümunəsi. İkinci kursda oğlanlarla kurs işi yazdım. Tədbirlərin təşkili üçün mobil proqram yazırdılar. Orada istifadəçilər VKontakte vasitəsilə daxil ola, xəritədə nöqtələr yerləşdirə, tədbirlər yarada, dostlarını onlara dəvət edə, hadisələrin şəkillərini saxlaya və s.

Layihədə nə etdim? Spring Boot-da SQL-dən istifadə etmədən server proqramı yazdı. Mən onu tanımırdım, JPA-dan istifadə edirdim. Nə edə bilərdi? OAuth-2 vasitəsilə VK-ya daxil olun. İstifadəçinin nişanını götürün, onunla VK-ya gedin, onun real istifadəçi olduğunu yoxlayın. VKontakte vasitəsilə istifadəçilər haqqında məlumat alın. O, JPA vasitəsilə də məlumat bazasında məlumat saxlaya bildi. Şəkilləri və digər faylları kompüter yaddaşında məharətlə saxlamaq və onlara olan keçidləri verilənlər bazasında saxlamaq. O zaman mən verilənlər bazasında CLOB obyektlərinin olduğunu bilmirdim, ona görə də bunu belə etdim. İstifadəçilər, müştəri proqramları üçün REST API var idi. Və əsas funksionallıq üçün vahid testləri var idi.

[…] Java dilini müvəffəqiyyətlə öyrənməyimin kiçik bir nümunəsi. Universitetdə oxuduğum ilk ildə mənə C# öyrədildi və OOP proqramlaşdırması haqqında anlayış verildi - siniflər, interfeyslər, abstraksiya nədir və nə üçün lazımdır. Bu mənə çox kömək etdi. Bu olmadan, Java öyrənmək olduqca çətindir; dərslərin nə üçün lazım olduğu aydın deyil.

Nə üçün Java-nı öyrənin və onu necə effektiv şəkildə etmək olar. Yandex hesabatı

Universitetdə oxuduğum ikinci kursda yenə Java nüvəsini öyrətdilər, amma bununla da dayanmadım, özüm Baharı öyrənməyə getdim və yuxarıda qeyd etdiyim bir kurs işi, layihəmi yazdım. Və bütün bunlarla Yandex-də təcrübə keçməyə getdim, müsahibədən keçdim və Yandex.Marketə daxil oldum. Orada Beru üçün backend yazdım, bu bizim bazarımızdır və Yandex.Marketin özü üçün.

Bundan sonra, altı ay əvvəl eyni Market daxilində başqa komandaya keçdim. Biz biznes tərəfdaşları üçün analitika edirik. Biz analitik platformadayıq, arxa tərəfdə üçümüz var, ona görə də layihəyə çox böyük təsir payım var. Çox maraqlıdır, əslində. Yəni, biz faktiki olaraq bazarda məlumatları təqdim edirik - satışlar nədir, hansı kateqoriyalarda, hansı modellərdə, biznes tərəfdaşları, böyük tanınmış şirkətlər üçün. Və cəmi üçümüz var, bu kodu yazırıq və çox gözəldir.

Çox sağ ol! Faydalı bağlantılar:
- "Java 8. Başlayanlar üçün Bələdçi".
- Məlumat strukturları.
- SQLZOO.
- Verilənlər bazasının normallaşdırılması.
- Dizayn Nümunələri.
- Dizayn nümunələri.
- Təmiz Kod.
- Effektiv Java.

Mənbə: www.habr.com

Добавить комментарий