Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Paano naiiba ang Java sa iba pang mga tanyag na wika? Bakit dapat ang Java ang unang wikang matututunan? Gumawa tayo ng plano na tutulong sa iyong matuto ng Java mula sa simula at sa pamamagitan ng paglalapat ng mga kasanayan sa programming sa ibang mga wika. Ilista natin ang mga pagkakaiba sa pagitan ng paggawa ng production code sa Java at pagbuo sa ibang mga wika. Binasa ni Mikhail Zatepyakin ang ulat na ito sa isang pulong para sa mga kalahok sa hinaharap mga internship Yandex at iba pang nagsisimulang developer - Java Junior meetup.


β€” Kumusta sa lahat, ang pangalan ko ay Misha. Isa akong developer mula sa Yandex.Market, at ngayon sasabihin ko sa iyo kung bakit dapat matuto ng Java at kung paano ito gagawin nang epektibo. Maaari kang magtanong ng isang makatwirang tanong: bakit ko sasabihin ang kuwentong ito, at hindi isang malakas na developer na may maraming taon ng karanasan? Ang katotohanan ay ako mismo ay nag-aral ng Java kamakailan, mga isang taon at kalahati na ang nakalipas, kaya naaalala ko pa rin kung ano ito at kung ano ang mga pitfalls doon.

Isang taon na ang nakalipas nakakuha ako ng internship sa Yandex.Market. Binuo ko ang backend para sa Beru, para sa Market mismo, malamang na ginamit mo ito. Ngayon ay patuloy akong nagtatrabaho doon, sa ibang team. Lumilikha kami ng isang analytical platform para sa Yandex.Market para sa mga kasosyo sa negosyo.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Magsimula na tayo. Bakit matuto ng Java mula sa isang praktikal na pananaw? Ang katotohanan ay ang Java ay isang napaka sikat na programming language. Mayroon itong napakalaking komunidad.

Halimbawa, mayroong isang TIOBE index, isang sikat na index ng katanyagan ng mga programming language, at ang Java ay nangunguna doon. Gayundin, sa mga site ng trabaho, malamang na mapapansin mo na ang karamihan sa mga bakante ay tungkol sa Java, iyon ay, sa pamamagitan ng pag-develop sa Java, palagi kang makakahanap ng trabaho.

Dahil napakalaki ng komunidad, ang anumang tanong na mayroon ka ay makakahanap ng sagot sa ilang Stack Overflow o iba pang mga site. Gayundin, kapag nagde-develop sa Java, talagang nagsusulat ka ng code sa JVM, kaya madali kang lumipat sa Kotlin, Scala at iba pang mga wika na gumagamit ng JVM.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Ano ang mabuti tungkol sa Java mula sa isang ideolohikal na pananaw? Mayroong iba't ibang mga programming language. Iba't ibang problema ang nireresolba nila, alam mo yun. Halimbawa, ang Python ay mahusay para sa pagsulat ng isang linyang script upang malutas ang mga mabilisang problema.

Sa kalamangan, maaari mong ganap na kontrolin ang executable code. Halimbawa, mayroon kaming mga kotse, Yandex driverless na mga kotse, ang kanilang code ay nakasulat sa mga plus. Bakit? May ganoong bagay ang Java - Garbage Collector. Nililinis nito ang RAM ng mga hindi kinakailangang bagay. Ang bagay na ito ay kusang nagsisimula at nag-stop-the-world, ibig sabihin, ito ay humihinto sa natitirang bahagi ng programa at pumupunta upang mabilang ang mga bagay, malinaw na memorya ng mga bagay. Kung ang isang bagay ay gumagana sa isang drone, ito ay hindi cool. Ang iyong drone ay magda-drive nang diretso, sa sandaling ito ay i-clear ang memorya nito at hindi tumingin sa kalsada. Samakatuwid, ang drone ay nakasulat sa mga pros.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Anong mga problema ang nalulutas ng Java? Pangunahing wika ito para sa pagbuo ng malalaking programa na isinulat sa paglipas ng mga taon, ng dose-dosenang o daan-daang tao. Sa partikular, marami sa backend sa Yandex.Market ay nakasulat sa Java. Mayroon kaming ipinamahagi na koponan sa ilang mga lungsod, sampung tao sa bawat isa. At ang code ay madaling mapanatili, ito ay suportado sa loob ng sampung taon o higit pa, at kasabay nito, ang mga bagong tao ay pumasok at naiintindihan ang code na ito.

Anong mga katangian ang dapat taglayin ng isang wika upang ang code sa loob nito ay madaling masuportahan at para madali itong mabuo sa malalaking koponan. Una sa lahat, dapat itong nababasa na code, at dapat itong madaling ipatupad ang mga kumplikadong solusyon sa arkitektura. Iyon ay, ito ay dapat na madaling magsulat ng mataas na antas ng abstraction, atbp. Ang lahat ng ito ay kung ano ang Java ay nagbibigay sa amin. Ito ay isang object-oriented na wika. Napakadaling ipatupad ang mga abstraction na may mataas na antas at kumplikadong mga arkitektura.

Mayroon ding maraming mga balangkas at aklatan para sa Java, dahil ang wika ay higit sa 15 taong gulang. Sa panahong ito, lahat ng maaaring isulat ay nakasulat dito, kaya maraming mga aklatan para sa lahat ng maaaring kailanganin mo.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Anong mga pangunahing kasanayan, sa aking opinyon, ang dapat magkaroon ng isang nagsisimulang manlalaro ng JA? Una sa lahat, ito ay kaalaman sa Java core na wika. Susunod ay ilang uri ng Dependency Injection framework. Ang susunod na tagapagsalita, si Kirill, ay magsasalita tungkol dito nang mas ganap. Hindi ako magpapalalim. Susunod ay ang mga pattern ng arkitektura at disenyo. Kailangan nating makapagsulat ng magandang code sa arkitektura upang makapagsulat ng malalaking application. At ito ay isang uri ng SQL o ORM para sa mga gawain ng pagtatrabaho sa database. At mas nalalapat ito sa backend.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Go! Java core. Hindi ko talaga matutuklasan ang America ditoβ€”kailangan mong malaman ang wika mismo. Ano ang dapat mong bigyang pansin. Una, ang Java ay naglabas ng maraming bersyon sa mga nakaraang taon, iyon ay, noong 2014-2015 ang ikapito ay inilabas, pagkatapos ay ang ikawalo, ikasiyam, ikasampu, maraming bagong bersyon, at maraming bagong cool na bagay ang ipinakilala sa kanila. , halimbawa, ang Java Stream API , lambda, atbp. Napaka-cool, sariwa, cool na mga bagay na ginagamit sa production code, kung ano ang itatanong nila sa mga panayam at kailangan mong malaman. Samakatuwid, hindi ka dapat kumuha ng libro mula sa istante sa library ng Java-4 at alamin ito. Ito ang aming plano: natututo kami ng Java-8 o mas mataas.

Binibigyang-pansin namin ang mga inobasyon tulad ng Stream API, var, atbp. Tinatanong ang mga ito sa panahon ng mga panayam at patuloy na ginagamit sa produksyon. Iyon ay, ang Stream API ay mas cool kaysa sa mga loop, sa pangkalahatan, isang napaka-cool na bagay. Siguraduhing bigyang pansin.

At mayroong lahat ng uri ng mga bagay tulad ng mga iterator, Exceptions at iba pa. Mga bagay na tila hindi mahalaga sa iyo hangga't ikaw mismo ang sumulat ng maliit na code. Hindi mo kailangan ang mga Exception na ito, sino ang nangangailangan nito? Ngunit tiyak na tatanungin sila sa mga panayam, tiyak na magiging kapaki-pakinabang sila sa iyo sa produksyon. Sa pangkalahatan, dapat mong bigyang pansin ang Mga Pagbubukod, iterator at iba pang mga bagay.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Mga istruktura ng data. Hindi ka maaaring pumunta nang walang mga istraktura, ngunit ito ay magiging mahusay kung hindi mo lang alam na may mga set, diksyunaryo, at sheet. At iba't ibang mga pagpapatupad ng mga istruktura. Halimbawa, ang parehong diksyunaryo sa Java ay may maraming mga pagpapatupad, kabilang ang HashMap at TreeMap. Mayroon silang iba't ibang mga asymptotics, iba ang pagkakaayos sa loob. Kailangan mong malaman kung paano sila naiiba at kung kailan dapat gamitin kung alin.

Magiging napaka-cool din kung alam mo kung paano gumagana ang mga istruktura ng data na ito sa loob. Ibig sabihin, hindi madaling malaman ang kanilang mga asymptotics - kung gaano gumagana ang taya, gaano katagal gumagana ang pass, ngunit kung paano gumagana ang istraktura sa loob - halimbawa, ano ang bucket sa HashMap.

Ito rin ay nagkakahalaga ng pagbibigay pansin sa mga puno at mga graph. Ito ang mga bagay na hindi masyadong karaniwan sa production code, ngunit sikat sila sa mga panayam. Alinsunod dito, kailangan mong madaanan ang mga puno, mga graph sa lapad at lalim. Ang lahat ng ito ay mga simpleng algorithm.

Sa sandaling magsimula kang magsulat ng anumang malaking code, kumplikado, gamit ang mga aklatan, multi-class na code, malalaman mo na mahirap para sa iyo nang walang pagbuo ng mga system at lutasin ang mga dependency. Ang mga ito ay pangunahing sina Maven at Gradle. Pinapayagan ka nitong mag-import ng mga aklatan sa iyong proyekto sa isang linya. Iyon ay, sumulat ka ng isang linyang xml at nag-import ng mga aklatan sa proyekto. Mahusay na sistema. Ang mga ito ay halos pareho, gamitin ang alinman sa isa - Maven o Gradle.

Susunod - ilang uri ng version control system. Inirerekomenda ko ang Git dahil sikat ito at maraming mga tutorial. Halos lahat ay gumagamit ng Git, ito ay isang cool na bagay, hindi ka mabubuhay kung wala ito.

At ilang uri ng kapaligiran sa pag-unlad. Inirerekomenda ko ang IntelliJ Idea. Ito ay lubos na nagpapabilis sa proseso ng pag-unlad, nakakatulong sa iyo nang malaki, nagsusulat ng lahat ng boilerplate code para sa iyo, sa pangkalahatan, ito ay cool.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Mga link mula sa slide: SQLZOO, habrapost

SQL. Medyo tungkol sa mga backender. Nagkaroon talaga ng isang nakakatawang kaso dito. Dalawang araw bago ang aking ikalawang internship interview, tinawagan ako ng isang HR na babae at sinabing sa loob ng dalawang araw ay tatanungin nila ako tungkol sa SQL at HTTP, kailangan kong matutunan ito. At halos wala akong alam tungkol sa SQL o HTTP. At nakita ko ang cool na site na ito - SQLZOO. Natutunan ko ang SQL dito sa loob ng 12 oras, ang ibig kong sabihin, SQL syntax, kung paano magsulat ng SELECT query, JOIN, atbp. Napaka-cool na site, lubos kong inirerekomenda ito. Sa katunayan, sa loob ng 12 oras natutunan ko ang 90% ng nalalaman ko ngayon.

At napakagandang malaman ang arkitektura ng database. Ito ang lahat ng uri ng mga susi, index, normalisasyon. Mayroong isang serye ng mga post tungkol dito sa HabrΓ©.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Sa Java, bilang karagdagan sa SQL, mayroong lahat ng uri ng Object-relational mapping system tulad ng JPA. Mayroong ilang code. Sa unang paraan mayroong ilang SQL code - PUMILI ng pangalan ng id MULA sa info.users WHERE id IN userIds. Mula sa database ng mga gumagamit, mula sa talahanayan, nakuha ang kanilang mga ID at pangalan.

Susunod, mayroong isang tiyak na mapper na nagpapalit ng isang bagay mula sa base sa isang bagay na Java. At mayroong pangatlong paraan sa ibaba na aktwal na nagpapatupad ng code na ito. Ang lahat ng ito ay maaaring palitan gamit ang JPA ng isang linya, na nakasulat sa ibaba. Ginagawa nito ang parehong bagay - hanapin ang All ByIdIn. Iyon ay, batay sa pangalan ng pamamaraan, ito ay bumubuo ng isang SQL query para sa iyo.

Napaka-cool na bagay. Ako mismo, noong hindi ko alam ang SQL, gumamit ng JPA. Sa pangkalahatan, bigyang-pansin. Kung tinatamad kang matuto ng SQL, ito ay isang kalamidad. At, sa pangkalahatan, sunog!

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

tagsibol. Sino ang nakarinig ng bagay tulad ng Spring framework? Nakikita mo ba kung ilan kayo? Hindi nang walang dahilan. Kasama ang tagsibol sa mga kinakailangan ng bawat segundong bakante sa backend ng Java. Kung wala ito, wala talagang lugar sa isang malaking pag-unlad. Ano ang Spring? Una sa lahat, ito ay isang balangkas ng Dependency Injection. Tungkol din dito sasabihin susunod na tagapagsalita. Ngunit sa madaling salita, ito ay isang bagay na nagbibigay-daan sa iyong gawing mas madali ang pag-import ng mga dependency ng ilang mga klase sa iba. Iyon ay, ang kaalaman sa mga dependency ay pinasimple.

Ang Spring Boot ay isang piraso ng Spring na nagbibigay-daan sa iyong patakbuhin ang iyong server application gamit ang isang button. Pumunta ka sa THID, pindutin ang ilang mga pindutan, at ngayon ay mayroon ka nang server application at tumatakbo sa localhost 8080. Ibig sabihin, hindi ka pa nakakasulat ng isang linya ng code, ngunit gumagana na ito. Napaka-cool na bagay. Kung sumulat ka ng sarili mong bagay, sunog!

Ang tagsibol ay isang napakalaking balangkas. Hindi lang nito kukunin ang iyong server application at niresolba ang Dependency Injection. Pinapayagan ka nitong gumawa ng maraming bagay, kabilang ang paglikha ng mga pamamaraan ng REST API. Ibig sabihin, sumulat ka ng ilang pamamaraan at inilakip ang Kunin ang anotasyon sa pagmamapa dito. At ngayon mayroon ka nang ilang pamamaraan sa localhost na nagsusulat ng Hello world sa iyo. Dalawang linya ng code at ito ay gumagana. Cool na bagay.

Pinapadali din ng Spring ang mga pagsusulit sa pagsulat. Walang paraan nang walang pagsubok sa malaking pag-unlad. Kailangang masuri ang code. Para sa layuning ito, ang Java ay may isang cool na library JUnit 5. At JUnit sa pangkalahatan, ngunit ang pinakabagong bersyon ay ang ikalima. Mayroong lahat para sa pagsubok, lahat ng uri ng mga pahayag at iba pang mga bagay.

At mayroong isang kahanga-hangang balangkas ng Mockito. Isipin na mayroon kang ilang functionality na gusto mong subukan. Ang pag-andar ay gumagawa ng maraming bagay, kabilang ang, sa isang lugar sa gitna, nag-log in ito sa VKontakte gamit ang iyong ID, halimbawa, at natatanggap ang una at apelyido ng gumagamit ng VKontakte mula sa ID. Marahil ay hindi mo isasama ang VKontakte sa mga pagsubok, kakaiba iyon. Ngunit kailangan mong subukan ang pag-andar, kaya ginawa mo ang klase na ito, gamit ang Mockito, mok ito, imitasyon ito.

Sasabihin mo na kapag ang isang kahilingan ay dumating sa klase na ito na may ID na ganito at ganoon, ibinabalik nito ang ilang apelyido, halimbawa, Vasya Pupkin. At ito ay gagana. Ibig sabihin, susubukan mo ang lahat ng functionality para sa mok one class. Napaka-cool na bagay.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Link mula sa slide

Mga pattern ng disenyo. Ano ito? Ito ay mga template para sa paglutas ng mga tipikal na problema na lumitaw sa pag-unlad. Sa pag-unlad, madalas na lumitaw ang magkapareho o katulad na mga problema na magiging mahusay na malutas kahit papaano nang maayos. Samakatuwid, nakaisip ang mga tao ng pinakamahuhusay na kagawian, ilang partikular na template, kung paano lutasin ang mga problemang ito.

Mayroong isang website na may pinakasikat na mga pattern - refactoring.guru, maaari mong basahin ito, alamin kung anong mga pattern ang mayroon, basahin ang isang grupo ng mga teorya. Ang problema ay halos walang silbi. Sa katunayan, ang mga pattern na walang pagsasanay ay hindi partikular na kapaki-pakinabang.

Maririnig mo ang tungkol sa ilang pattern tulad ng Singletone o Builder. Sino ang nakarinig ng mga salitang ito? Maraming tao. Mayroong mga simpleng pattern na maaari mong ipatupad sa iyong sarili. Ngunit karamihan sa mga pattern: diskarte, pabrika, harapan - hindi malinaw kung saan ilalapat ang mga ito.

At hanggang sa makita mo sa pagsasanay sa code ng ibang tao ang isang lugar kung saan inilalapat ang pattern na ito, hindi mo ito mailalapat sa iyong sarili. Samakatuwid, ang pagsasanay ay napakahalaga sa mga pattern. At ang pagbabasa lamang tungkol sa mga ito sa refactoring.guru ay hindi sobrang nakakatulong, ngunit talagang sulit itong gawin.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Bakit kailangan ang mga pattern? Sabihin nating mayroon kang partikular na klase ng User. Mayroon itong Id at Pangalan. Ang bawat User ay dapat may parehong Id at Pangalan. Sa kaliwang itaas ay ang silid-aralan.

Ano ang mga paraan upang simulan ang User? Mayroong dalawang mga pagpipilian - alinman sa isang constructor o isang setter. Ano ang mga disadvantages ng parehong mga diskarte?

Tagabuo. bagong User (7, "Bond"), okay. Ngayon sabihin natin na wala kaming klase ng User, ngunit may iba pa, na may pitong numeric na field. Magkakaroon ka ng constructor na naglalaman ng pitong magkakasunod na numero. Hindi malinaw kung ano ang mga numerong ito at kung alin sa mga ito ang nabibilang sa aling pag-aari. Ang taga-disenyo ay hindi mahusay.

Ang pangalawang opsyon ay setter. Malinaw kang sumulat: setId(7), setName(β€œBond”). Naiintindihan mo kung aling pag-aari ang nabibilang sa aling larangan. Pero may problema ang setter. Una, maaaring makalimutan mong magtalaga ng isang bagay, at pangalawa, ang iyong bagay ay lumalabas na nababago. Hindi ito ligtas sa thread at bahagyang binabawasan ang pagiging madaling mabasa ng code. Iyon ang dahilan kung bakit nakaisip ang mga tao ng isang cool na pattern - Tagabuo.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Tungkol saan ito? Subukan nating pagsamahin ang mga pakinabang ng parehong diskarteβ€”setter at constructorβ€”sa isa. Gumagawa kami ng isang partikular na bagay, ang Tagabuo, na magkakaroon din ng mga field ng Id at Pangalan, na mismong bubuo batay sa setter, at magkakaroon ng paraan ng Build na magbabalik sa iyo ng isang bagong User kasama ang lahat ng mga parameter. Nakakakuha kami ng isang hindi nababagong bagay at isang setter. Malamig!

Ano ang mga problema? Narito mayroon kaming klasikong Tagabuo. Ang problema ay maaari pa rin nating kalimutang mag-check sa ilang field. At kung nakalimutan nating bisitahin ang ID, sa kasong ito sa Builder ito ay sinisimulan sa zero, dahil ang uri ng int ay hindi nullable. At kung gagawin natin ang Pangalan na "Bond" at makakalimutang bisitahin ang ID office, magkakaroon tayo ng bagong User na may id "0" at ang pangalang "Bond". Hindi cool.

Subukan nating labanan ito. Sa Builder ay babaguhin natin ang int sa int upang ito ay nullable. Ngayon ang lahat ay mahusay.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Kung susubukan naming gumawa ng User na may pangalang "Bond", nakalimutang ilagay ang kanyang ID, makakakuha kami ng null pointer exception, dahil hindi nullable ang ID, at ang Builder ay may null, partikular na pointer exception.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Ngunit maaari pa rin naming kalimutan na maglagay ng pangalan, kaya itinakda namin ang object replay sa null. Ngayon, kapag binuo namin ang aming object mula sa Builder, sinusuri nito na ang field ay hindi nullable. At hindi lang iyon.

Tingnan natin ang huling halimbawa. Sa kasong ito, kung kahit papaano ay maglalagay kami ng null sa ID runtime, magandang malaman kaagad na ginawa mo ito at hindi maganda na nagkakamali ka ngayon.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Kailangan mong maghagis ng error hindi sa sandali ng paggawa ng User, ngunit kapag nagtakda ka ng null sa ID. Samakatuwid, sa Builder ay babaguhin natin ang setter Integer sa int, at agad siyang susumpa na itinapon nila ang null.

Sa madaling salita, ano ang punto? Mayroong isang simpleng pattern ng Tagabuo, ngunit kahit na ang pagpapatupad nito ay may ilang mga subtleties, kaya napakahusay na tingnan ang iba't ibang mga pagpapatupad ng mga pattern. Ang bawat pattern ay may dose-dosenang mga pagpapatupad. Ang lahat ng ito ay napaka-interesante.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Paano namin isinusulat ang Tagabuo sa code ng produksyon? Narito ang aming Gumagamit. Nag-attach kami ng Builder rotation mula sa Lombok library dito, at ito mismo ang bumubuo ng Builder para sa amin. Iyon ay, hindi kami nagsusulat ng anumang code, ngunit iniisip na ng Java na ang klase na ito ay may isang Tagabuo, at maaari naming tawagan ito ng ganito.

Nasabi ko na na ang Java ay may mga aklatan para sa halos lahat, kabilang ang Lombok, isang cool na aklatan na nagbibigay-daan sa iyo upang maiwasan ang pagsusulat ng boilerplate. Tagabuo, GET.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Ang mga pattern ay maaaring arkitektura - nauugnay hindi lamang sa isang klase, ngunit sa sistema sa kabuuan. Mayroong napakagandang prinsipyo sa disenyo ng system: Single Responsibility Principle. Ano ang sinasabi niya? Ang katotohanan na ang bawat klase ay dapat na responsable para sa ilan sa sarili nitong pag-andar. Sa kasong ito, mayroon kaming Controller na nakikipag-ugnayan sa mga user, mga object ng JSON. Mayroong Facade, na nagko-convert ng mga object ng JSON sa mga modelo kung saan gagana ang Java application. Mayroong isang Serbisyo na may kumplikadong lohika na gumagana sa mga modelong ito. Mayroong Data Access Object na naglalagay ng mga modelong ito sa database at kinukuha ang mga ito mula sa database. At mayroong database mismo. Sa madaling salita, hindi lahat sa isang klase, ngunit gumagawa kami ng limang magkakaibang klase, at iyon ay isa pang pattern.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Sa sandaling mas marami o mas kaunting natutunan mo ang Java, magandang magsulat ng sarili mong proyekto na magkakaroon ng database, gagana sa iba pang mga API, at ilantad ang iyong server application sa mga kliyente ng REST API. Ito ay magiging isang magandang bagay upang idagdag sa iyong resume, ito ay magiging isang cool na pagtatapos sa iyong pag-aaral. Sa pamamagitan nito maaari kang pumunta at makakuha ng trabaho.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Narito ang isang halimbawa ng aking server application. Sa ikalawang taon ko, nagsulat ako ng isang term paper kasama ang mga lalaki. Nagsusulat sila ng isang mobile application para sa pag-aayos ng mga kaganapan. Doon, ang mga gumagamit ay maaaring mag-log in sa pamamagitan ng VKontakte, maglagay ng mga puntos sa mapa, lumikha ng mga kaganapan, mag-imbita ng kanilang mga kaibigan sa kanila, mag-save ng mga larawan ng mga kaganapan, atbp.

Ano ang ginawa ko sa proyekto? Sumulat ng isang server application sa Spring Boot nang hindi gumagamit ng SQL. Hindi ko siya kilala, JPA ang ginamit ko. Ano kayang gagawin nito? Mag-log in sa VK sa pamamagitan ng OAuth-2. Kunin ang token ng user, pumunta sa VK kasama nito, tingnan kung totoong user ito. Tumanggap ng impormasyon tungkol sa mga gumagamit sa pamamagitan ng VKontakte. Nagawa nitong mag-save ng impormasyon sa isang database, sa pamamagitan din ng JPA. Mahusay na mag-save ng mga larawan at iba pang mga file sa memorya ng computer, at mag-save ng mga link sa mga ito sa database. Sa oras na iyon hindi ko alam na may mga CLOB object sa database, kaya ginawa ko ito sa ganitong paraan. Nagkaroon ng REST API para sa mga user, mga application ng kliyente. At may mga unit test para sa basic functionality.

[…] Isang maliit na halimbawa ng aking matagumpay na pag-aaral ng Java. Sa aking unang taon sa unibersidad, tinuruan ako ng C# at binigyan ako ng pang-unawa sa OOP programming - kung ano ang mga klase, interface, abstraction, at bakit kailangan ang mga ito. Malaki ang naitulong nito sa akin. Kung wala ito, ang pag-aaral ng Java ay medyo mahirap; hindi malinaw kung bakit kailangan ang mga klase.

Bakit matuto ng Java at kung paano ito gagawin nang epektibo. Ulat ng Yandex

Sa aking ikalawang taon sa unibersidad, muli nilang itinuro ang Java core, ngunit hindi ako tumigil doon, nagpunta ako sa pag-aaral ng Spring sa aking sarili at nagsulat ng isang course work, ang aking proyekto, na binanggit ko sa itaas. At sa lahat ng ito, nagpunta ako para sa isang internship sa Yandex, pumasa sa isang pakikipanayam, at pumasok sa Yandex.Market. Doon ko isinulat ang backend para sa Beru, ito ang aming marketplace, at para sa Yandex.Market mismo.

After that, six months ago, I transfered to another team within the same Market. Gumagawa kami ng analytics para sa mga kasosyo sa negosyo. Nasa analytical platform kami, tatlo kami sa backend, kaya malaki ang bahagi ng impluwensya ko sa proyekto. Ito ay napaka-interesante, sa totoo lang. Iyon ay, talagang nagbibigay kami ng data sa merkado - kung ano ang mga benta, sa anong mga kategorya, sa anong mga modelo, para sa mga kasosyo sa negosyo, malalaking kilalang kumpanya. At tatlo lang kami, isinusulat namin ang code na ito, at napaka-cool.

Salamat! Mga kapaki-pakinabang na link:
- "Java 8. Gabay sa Baguhan".
- Mga Istraktura ng Data.
- SQLZOO.
- Normalization ng Database.
- Mga Pattern ng Disenyo.
- Mga pattern ng Disenyo.
- Malinis na Code.
- Epektibong Java.

Pinagmulan: www.habr.com

Magdagdag ng komento