JavaRush /Java Blog /Random-TK /Iş üçin synag meselesi, geliň muny anyklalyň ..
timurnav
Dereje

Iş üçin synag meselesi, geliň muny anyklalyň ..

Toparda çap edildi
Dostlar, hemmäňize salam. Rus kompaniýasynda Java döredijisiniň ýagdaýy üçin synag meselesini çözmek tejribäm bilen paýlaşmak isleýärin. Derrew tabşyraryn, tabşyrygyň esasy funksiýasyny ýerine ýetirmek aýratyn kyn däl, ýöne hemişe bolşy ýaly, jikme-jiklikler we ownuk zatlar möhümdir, bu bolsa wagtynda tabşyrmagymyň öňüni aldy; ýumuş barada hiç zat jogap bermediler - boş iş ýerleri iberenimde eýýäm dolduryldy. Menden talap edilýän zatlaryň hemmesini edendigimi görmek üçin meselä göz aýlamagyňyzy maslahat berýärin. Ony nädip ýasamalydygyny bilmeýänler üçin, muňa nähili çemeleşendigim hakda köp suw goşaryn. Kimdir biri muny gyzyklandyrýan bolsa, pişige hoş geldiňiz. Derrew çözgüdiň hemmesini şu ýere goýmajagymy derrew aýdaryn, ýöne täze başlanlar üçin köp düşündiriş bolar, eger kimdir biri meniň çykyşlarymy okamak islemese, ine, github taslamasy . meseläniň teksti.
Synag meselesi No.1
Düşündiriş: API Serweri (JSON HTTP API) Ösüş Gurallary: Java Çarçuwasy: Çarçuwaly 2.4 (ýa-da has ýokary) ýa-da Bahar boot 1.2.3 (ýa-da has ýokary) Maglumat bazasy: MySQL Protokoly: HTTP, port 80 Funksiýa (haýyşlar):
  1. Adükleýji.
    • Faýly (JPG awatar suraty) serwere geçirýäris.
    • Suraty serwerdäki katalogda saklaýarys.
    • Serweriň jogaby şekiliň içki URI-dir.
  2. Täze ulanyjy goşmak.
    • Ulanyjynyň şahsy maglumatlaryny serwere geçirýäris (suratyň URI, ulanyjy ady, e-poçta we ş.m.).
    • Maglumatlary maglumatlar bazasynda saklaýarys.
    • Serweriň jogaby täze ulanyjynyň özboluşly şahsyýetidir.
  3. Ulanyjy hakda maglumat almak.
    • Üýtgeşik ulanyjy şahsyýetini serwere iberýäris.
    • Maglumat bazasyndan maglumat okamak.
    • Serweriň beren jogaby, ulanyjynyň şahsy maglumatlary (ýokarda serediň).
  4. Ulanyjynyň ýagdaýyny üýtgetmek (Onlaýn, awtonom).
    • Üýtgeşik ulanyjy şahsyýetini we täze statusyny (Onlaýn, Offline) serwere geçirýäris.
    • Ulanyjynyň ýagdaýyny üýtgetmek.
    • Serweriň jogaby - üýtgeşik ulanyjy şahsyýeti, täze we öňki ýagdaýy.
    Bellik: Serwer daşarky API / maglumat bazasyny soraýar. Bu ýönekeýleşdirilen synag meselesi bolansoň, simulirlenen giriş we wagt 5-10 sekunt gijikdirilen “stub” amala aşyrmaly.
  5. Serwer statistikasy.
    • Parametrleri serwere geçirýäris: 1. müşderiniň ýagdaýy (Onlaýn, awtonom ýa-da ýok), 2. haýyşyň özboluşly ID (wagt belgisi) (ýok bolmagy mümkin)
    • Serweriň jogaby, statusy we suratly URI bolan ulanyjylaryň sanawy, şeýle hem haýyşyň özboluşly ID (wagt belgisi).
    Bellik: Talapda parametrler bar bolsa, serwer öz jogabyny süzmeli. Eger haýyşda özboluşly ID (wagt belgisi) bar bolsa (öň kabul edilen), serwer diňe bu üýtgeşik ID-den (wagt belgisinden) soň üýtgän ulanyjylary yzyna gaýtarmaly.
Hökmany talaplar:
- IEST GOWY. - datahli maglumatlar JSON formatda. - API serweri 3-nji we 5-nji haýyşlaryň iň ýokary ähmiýetiniň bardygyny göz öňünde tutup dizaýn edilmelidir (1, 2, 4 haýyşlara görä) we mümkin boldugyça çalt tamamlanmalydyr. - Nädogry işlemek.
Goşmaça talaplar (islenýän):
- Kod resminamalary - API Serwer arhitekturasy ýokary ýük we ulalmak üçin döredilen bolmaly. - Synaglar.
Synag netijesi:
- Synag meselesiniň netijesi arhiwde we ýerleşdirilmegi üçin jikme-jik görkezmeler bilen berilmelidir. Synag meselesi üçin Docker konteýnerini gurmak üçin Dockerfile dakmak maslahat berilýär. Github.com-a göçürip alyp bilersiňiz. - Döredilen API-iň gysga resminamalary (haýyşlaryň sanawy, haýyş parametrleri, haýyş formatlary, jogap formatlary we ş.m.) bolmaly. - Synag meselesine sarp edilen wagt barada maglumat: dizaýn, programmirlemek, resminamalar we ş.m. Bu synag meselesiniň diňe bilimlere we başarnyklara baha bermek üçin niýetlenendigini we taýýar önümi (API serweri) döretmegi maksat edinmeýändigini ýadyňyzdan çykarmaň, şonuň üçin düşündirişler we sebäpler bilen ýönekeýleşdirmelere ýol berilýär.
ünsli we tejribeli programmistler indiki bölüme geçip bilerler, bu ýerde meseläniň teksti bilen iş salyşaryn. Taskumuşyň "sözbaşy" düşünmekde hiç hili kynçylyk döretmeýär, şonuň üçin diňe saýlamagymyň Bahar Boot-a düşendigini aýdaryn, ýöne öňem bir zat edendigim üçin däl-de, eýýäm hakyky taslamany ulanyp gutaranym üçin Bahar (ýöne Boot ýokdy, ýönekeýligi sebäpli düşünýärin). Serweriň işleýşine görä: 1) Faýl göçürip alyjy. Aslynda bu ýerde çylşyrymly zat ýok, diňe suratlaryň serwerde nädip saklanýandygyny anyklamaly boldum, iň amatly usul olary diňe ýörite katalogda ýerleşdirmek boldy. Aşakdaky anyk durmuşa geçirişe serederis. 2) Täze ulanyjy goşmak, ýönekeý bir operasiýa, eger-de siz CRUD programmalaryny eden bolsaňyz, onda ol maňa goldaw berer, ýok bolsa, aşakda hemme zady görersiňiz. 3) Ulanyjy hakda maglumat almak. sorag ýok - hemme zat düşnükli. 4) Ulanyjynyň ýagdaýyny üýtgetmek. meseläniň ilkinji iki nokady gün ýaly düşnükli, ýöne daşarky haýyş näme ??? 100g bolmasa düşünmek mümkin däl, hatda dogry düşünenime 100% ynamym ýok. Jikme-jiklikler. 5) Serweriň statistikasy. Bu hem gyzykly. Birinji nokat, parametrler üçin dürli wariantlar bilen usuly durmuşa geçirmegi teklip edýär, munuň gözegçilik ediji usuly bolmalydygyny göz öňünde tutup, muny nädip etmelidigi entek belli däl. ikinji nokat, wagtyň geçmegi bilen ýagdaýy üýtgän ähli ulanyjylardan soraýar, düşnükli ýaly, ýöne inçelikler bar.
Başlamak
aý, bu meseläniň üstünde işleýän wagtym bu sözlemi näçe gezek okadym! Baharda bir taslamany nädip gurmalydygyny anyklap gören bolsaňyz, ýöne näme üçindir “Bahar Boot” -yny synap görmedik bolsaňyz, gutlaýaryn, aşakda ýazjak zatlarym bilen begenersiňiz. Bir ýerde okapdym, programmistler taslamadan taslama köp mukdarda kod geçirýärdiler, bu şablon kody - maglumat bazalaryna birikmek üçin sazlamalar, hyzmat kartasy we ş.m. we ş.m., meselem, mukdaryny azaltmak üçin. işlemek üçin şablon kody Maglumatlar bazalary üçin JPA / Gibernate ulanýarys, käbir galyplary gizleýärler, ýöne sazlamak üçin ýene bir xml faýl ýa-da konfigurasiýa synplary ýazmaly. we kiçijik taslamaňyz bar bolsa, onda az kod ýazýarsyňyz, hatda tersine. Indiki baharda JPA bilen işleşýäris; köp taslamalar bar, ýöne iň amatlysy, elbetde, Bahar maglumatlary. Bu, JPA we NoSQL ýaly dürli mümkin bolan ähli zatlar bilen işleşip bilýän gaty uly taslama, bu ajaýyp jadyly, biz ony öz taslamamyzda ulanarys. Bahardan peýdalanyp, maglumat bazasynyň birikme sazlamalaryndan dynýarys diýen ýaly, Bahar biziň üçin hemme zady edýär, diňe geleşik, keş keşdigi we aýratyn ýagdaýlarda google (başgalaryna serediň) kontekst konfigurasiýasyndaky käbir sazlamalar barada zerur belliklere ýapyşmalydyrys. Theöne şol bir wagtyň özünde, täze döredilenleriň köpüsi Baharda taslama nädip döredip boljakdygyny düýbünden bilmeýärler. Taslamany işletmek we brauzerde ýerlihost: 8080 / * -den başlap baglanyşyk arkaly netijäni almak üçin ony nädip düzmelidigini hiç kim bilenok. Soň bolsa Bahar aýakgaby surata düşýär! Bahar Boot hakda belli bir mysal bilen gürleşmek has gowudyr! Boş bilen başlalyň. “Spring Boot” taslamasyny döretmek üçin “Bahar” döredijileri şablonlary döretmek üçin “konstruktor” tapdylar. Ony web sahypasynda ulanyp bilersiňiz, ýöne iň gowy görýän IDE, Intellij IDEA-da etmek has aňsat. Şeýlelik bilen: Faýl-> Täze-> Taslama Penjiräniň içinde “Bahar Initializr” goýmasyna giriň, jdk goýulmaly we URL https://start.spring.io, internet birikmesini barlaň, şonda size gerek bolar adyny saýlamak, soň bolsa ulanjak tehnologiýalarymyz, birinji etapda diňe WEB gerek - gapdalynda bir bellik goýuň, soň taslama dörediler. Maven ähli baglylyklary çekmek üçin ideýada Maven goýmasyny açmaly we täzelenme düwmesine basmaly. Müşderi-serwer aragatnaşygy üçin ähli sazlamalary öz içine alýan taýýar programma şablonyny aldyk. Ilkinji täsir etmek üçin kontroller synpyny döredeliň (MVC hakda hemmämiz eşiden bolmagymyz ahmal). Springhli bahar programmalarynda dolandyryjylaryň diýseň ýönekeý dizaýny bar - bu @Controller belligi bilen bellenen synpdyr (prefiksler mümkin, mysal üçin @RestController), bu synp gelýän haýyşlary gaýtadan işlemek üçin jogapkärdir. Dolandyryjynyň haýsydyr bir salgy üçin haýyşy tanamagy üçin bu adresi gözegçilik ediji usuly bilen karta etmeli. import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping(value = "/hello") public class DemoController { @RequestMapping(method = RequestMethod.GET) public String halloWorld() { return "Hello World!"; } @RequestMapping(value = "/{name}", method = RequestMethod.GET) public String halloName(@PathVariable("name") String name) { return "Hello, " + name + "!"; } } Geliň, bu ýerde nämeleriň bolup geçýändigini anyklalyň. @RestController . edil ýokarda ýazan düşündirişim. Galan gözegçini ulanýarys, sebäbi netijäni derrew görmek isleýäris we .jsp sahypalaryny (wow) ýazmak islemeýäris, netijäni derrew brauzerde setir hökmünde görmek has aňsat bolar. @RequestMapping diňe bir salgy üçin hökmany. Jemgyýetçilik salgysynyň prefiksi: ýerlihost: 8080. Görşümiz ýaly, tutuş synp / salam adresinde asylýar , bu bu synpyň içindäki ähli usullaryň ýerlihost: 8080 / salam prefiksiniň bardygyny aňladýar. Indiki synpyň ilkinji usuly, öz kartasynda Http protokol usuly görkezilýär - GET haýyşy (özüňiz üçin Http protokol usullary hakda okaň) Bularyň hemmesi nämäni aňladýar? localhost: 8080 / salam adresine GET haýyşy bilen, “Salam Dünýä!” setiri görnüşinde jogap alarys, barlap göreliň! “DemoApplication” synpynda, Baharyň ähli kontekstini bir el bilen işe girizip boljakdygyny aýdyp boljak bir ajaýyp düşündiriş bar - @SpringBootApplication. Bu synpyň esasy usuly jadyly bolýar, diňe “SpringApplication” -da gizlenen ähli jadylary işe girizýär, bu synpdaky kontekst menýusyna jaň etseňiz, “Run” setirinde opsiýalar peýda bolar, men ony ýaşyl bellik bilen ir işlemegi maslahat berýärin, şeýlelik bilen konsol has owadan görüner we geljekde gündeligi ondan göni okamak has aňsat bolar. Programmany işe başlalyň. konsolyň çykyşy duranda, konsolda görmeli
2015-09-02 09: 25: 36.895 INFO 5844 --- [esasy] sbcetTomcatEmbeddedServletContainer: Tomcat port (lar) -da başlady: 8080 (http) 2015-09-02 09: 25: 36.900 INFO 5844 --- [esasy] demo.DemoApplication: DemoApplication **** sekuntda başlandy (JVM 15.501 işleýär)
nirede "****" programmany işe girizmegiň dowamlylygy :) şondan soň islendik brauzerde (ýa-da egrelmek ýa-da näme ulansaňyz?) gözegçilik usulynyň kartasynyň salgysyny ýazmalysyňyz.
ýerlihost: 8080 / salam
Brauzer kanoniki görkezmeli
Salam Dünýä!
Ine size web programmasy! Dolandyryjyda başga bir usulyň bardygyny gören bolsaňyz, onuň öz salgy kartasy bar; häzirki adrese ýer eýesi goşulýar. Baharyň parametri hökmünde usula geçirilýär. Munuň üçin @PathVariable düşündirişiniň jogapkärdigini çaklamak kyn däl. Talap boýunça
ýerlihost: 8080 / salam / Adyňyz
brauzer görkezer
Salam, adyňyz!
Bahar aýakgabynyň esaslaryny kesgitledik. Indiki, maglumat bazasyny goşarys, ýöne indiki ýazgyda bolar. Hemmäňize sag bolsun aýdýaryn.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION