JavaRush /Blog Jawa /Random-JV /Tes tugas kanggo kerja, ayo dipikirake..
timurnav
tingkat

Tes tugas kanggo kerja, ayo dipikirake..

Diterbitake ing grup
Kanca-kanca, halo kabeh. Aku pengin nuduhake karo sampeyan pengalaman kanggo ngrampungake tugas test kanggo posisi pangembang Java ing perusahaan Rusia. Aku bakal langsung ngomong yen ngleksanakake fungsi utama tugas kasebut ora angel banget, nanging kaya biasane, rincian lan perkara-perkara cilik sing penting, sing ngalangi aku ora ngirim kanthi tepat wektu; dheweke ora nate mangsuli apa-apa babagan tugas kasebut - lowongan kerja. wis kebak nalika aku dikirim menyang wong-wong mau. Aku saranake sampeyan ndeleng tugas kanggo ndeleng apa aku nindakake kabeh sing dibutuhake saka aku. Lan kanggo wong-wong sing ora ngerti carane nggawe, aku bakal nambah akeh banyu babagan carane aku ditangani. Yen ana sing kasengsem ing iki, welcome to the cat. Aku bakal langsung ngomong yen aku ora bakal ngirim kabeh solusi ing kene, nanging bakal ana akeh panjelasan kanggo pemula, yen ana sing ora kasengsem maca outpouringsku, iki proyek ing github . Aku bakal miwiti karo teks tugas dhewe.
Tugas tes No. 1
Katrangan: Server API (JSON HTTP API) Piranti Pangembangan: Java Framework: Play Framework 2.4 (utawa luwih dhuwur) utawa Spring boot 1.2.3 (utawa luwih dhuwur) Database: MySQL Protocol: HTTP, port 80 Fungsi (panjaluk):
  1. Pemuat.
    • Kita nransfer file (gambar avatar JPG) menyang server.
    • Kita nyimpen gambar ing direktori ing server.
    • Tanggepan server minangka URI internal gambar.
  2. Nambahake pangguna anyar.
    • Kita nransfer data pribadhi pangguna menyang server (URI gambar, jeneng pangguna, email, lsp).
    • Kita nyimpen informasi ing database.
    • Tanggepan server minangka ID unik saka pangguna anyar.
  3. Entuk informasi babagan pangguna.
    • Kita ngirim ID pangguna unik menyang server.
    • Maca informasi saka database.
    • Tanggepan server yaiku data pribadhi pangguna (ndeleng ndhuwur).
  4. Ngganti status pangguna (Online, Offline).
    • Kita nransfer ID pangguna unik lan status anyar (Online, Offline) menyang server.
    • Ngganti status pangguna.
    • Tanggepan server - ID pangguna unik, status anyar lan sadurunge.
    Cathetan: Server takon API/database eksternal. Wiwit iki tugas test simplified, iku perlu kanggo ngleksanakake "stub" karo akses simulasi lan wektu tundha 5-10 detik.
  5. Statistik server.
    • Kita nransfer paramèter menyang server: 1. status klien (Online, Offline utawa absen), 2. ID unik (timestamp) panjalukan (bisa uga ora ana)
    • Tanggepan server minangka dhaptar pangguna kanthi status lan URI gambar, uga ID unik (cap wektu) panyuwunan.
    Cathetan: Yen panjaluk kasebut ngemot paramèter, server kudu nyaring tanggapane. Yen panjalukan ngemot ID unik (timestamp) saka panjalukan (dipuntampa sadurungé), banjur server ngirim mung pangguna sing status diganti sawise (ing wektu) ID unik iki (timestamp).
Syarat wajib:
- Ngaso. - Kabeh data ana ing format JSON. - Server API kudu dirancang njupuk menyang akun sing panjalukan 3 lan 5 duwe prioritas paling dhuwur (relatif kanggo panjalukan 1, 2, 4) lan kudu rampung cepet sabisa. - Kesalahan pangolahan.
Syarat opsional (sing dikarepake):
- Dokumentasi kode. - Arsitektur API Server kudu dirancang kanggo mbukak dhuwur lan skala. - Tes.
Hasil tes:
- Asil saka tugas test kudu kasedhiya ing arsip lan karo instruksi rinci kanggo penyebarané. Disaranake masang Dockerfile kanggo mbangun wadhah Docker kanggo tugas test. Bisa diundhuh menyang github.com. - Kudu ngemot dokumentasi singkat saka API digawe (dhaftar panjalukan, paramèter request, format request, format respon, etc.). - Informasi babagan wektu sing ditindakake kanggo tugas tes ing konteks: desain, pemrograman, dokumentasi, lsp. Wigati dimangerteni manawa tugas tes iki mung kanggo netepake kawruh lan katrampilan, lan ora ngarahake nggawe produk rampung (server API), mula diijini nyederhanakake panjelasan lan alasan.
programer enten lan experienced bisa skip bagean sabanjuré, kene aku bakal menehi hasil karo teks saka tugas dhewe. "Header" tugas ora nyebabake kesulitan kanggo mangerteni, mula aku mung bakal ujar manawa pilihanku tiba ing Spring Boot, nanging ora amarga aku wis nindakake apa wae, nanging amarga aku wis ngrampungake proyek nyata nggunakake Spring (nanging Boot ora ana, kaya aku ngerti amarga kesederhanaan). Miturut fungsi server: 1) Ngundhuh file. Sejatine ora ana sing rumit, aku mung kudu ngerti carane gambar umume disimpen ing server, ternyata cara sing paling trep yaiku nyelehake ing sawetara direktori khusus. Kita bakal katon ing implementasine tartamtu ing ngisor iki. 2) Nambah pangguna anyar, operasi prasaja, yen sampeyan wis tau nggawe aplikasi CRUD, banjur bakal ndhukung kula, yen ora, sampeyan bakal weruh kabeh ing ngisor iki. 3) Entuk informasi babagan pangguna. ora ana pitakonan - kabeh wis jelas. 4) Ngganti status pangguna. loro TCTerms pisanan tugas cetha minangka dina, nanging apa panjalukan external??? Iku ora bisa kanggo tokoh metu tanpa 100g, malah saiki aku ora 100% yakin yen aku mangertos bener. Rincian ing ngisor iki. 5) Statistik server. Iki uga menarik. Titik pisanan nyaranake ngleksanakake cara kanthi macem-macem opsi kanggo paramèter, durung jelas carane nindakake iki, amarga iki kudu dadi cara pengontrol. titik kapindho takon kabeh kedhaftar status wis diganti sawise wayahe ing wektu, misale jek cetha, nanging ana subtleties.
Miwiti
oh, ping pira aku maca ukara iki nalika nggarap tugas iki! Yen sampeyan wis tau nyoba kanggo mangerteni carane nyiyapake project ing Spring, nanging sakperangan alesan sampeyan ora tau nyoba Spring Boot, Sugeng, sampeyan bakal mung remen karo apa aku bakal nulis ing ngisor iki. Aku maca nang endi wae sing programer digunakake kanggo nransfer jumlah banget akeh kode saka project kanggo project, iki kode Cithakan - setelan kanggo nyambungake menyang database, servlet pemetaan, etc., etc, supaya, contone, kanggo ngurangi jumlah kode Cithakan kanggo nggarap Kita nggunakake JPA / Hibernate kanggo database, padha ndhelikake sawetara saka cithakan, nanging kanggo ngatur, sampeyan maneh kudu nulis file xml utawa kelas konfigurasi. lan yen sampeyan duwe proyek cilik, banjur dadi metu sing nulis kode ora kurang, nanging malah kosok balene. Sabanjure, kita ngrampungake nggarap JPA ing Spring; ana akeh proyek, nanging sing paling trep, mesthi, Spring Data. Iki minangka proyek gedhe banget sing bisa digarap kabeh bisa, kalebu JPA lan NoSQL lan akeh proyek sing beda-beda, pancen ajaib, kita bakal nggunakake ing proyek kita. Nggunakake Spring kita meh njaluk nyisihaken saka setelan sambungan database, Spring nindakake kabeh kanggo kita, kita mung kudu kelet ing annotations perlu ing transactionality, caching, lan ing kasus khusus google (ndeleng liyane) sawetara setelan liyane ing konfigurasi konteks. Nanging ing wektu sing padha, umume pangembang anyar ora ngerti carane nggawe proyek ing Spring. Ora ana sing ngerti carane ngatur kanggo mbukak proyek lan entuk asil ing browser kanthi ngetutake link sing diwiwiti karo localhost:8080/*. Lan banjur Spring Boot teka menyang gambar! Iku luwih apik kanggo pirembagan bab Spring Boot karo conto tartamtu! Ayo dadi miwiti karo kothong. Kanggo nggawe proyek Spring Boot, pangembang Spring teka karo "konstruktor" kanggo nggawe template. Sampeyan bisa nggunakake ing situs web, nanging luwih gampang kanggo nindakake ing IDE favorit, Intellij IDEA. Dadi: File-> New-> Project Ing jendhela, pindhah menyang tab Spring Initializr, jdk kudu disetel, lan URL https://start.spring.io, mriksa sambungan Internet, banjur sampeyan kudu kanggo milih jeneng, banjur teknologi sing bakal kita gunakake, ing tataran kapisan kita mung perlu WEB - sijine centhang ing jejere lan banjur project digawe. Kanggo Maven narik kabeh dependensi, kita kudu mbukak tab Maven ing idea lan klik tombol nganyari. Kita nampa cithakan aplikasi sing wis siap, sing ngemot kabeh setelan kanggo komunikasi klien-server. Kanggo entuk kesan pisanan, ayo nggawe kelas pengontrol (mungkin kabeh wis krungu babagan MVC). Ing kabeh aplikasi Spring, pengontrol duwe desain sing cukup prasaja - iki minangka kelas sing ditandhani karo anotasi @Controller (awalan bisa, contone, @RestController), kelas iki tanggung jawab kanggo ngolah panjaluk sing mlebu. Supaya controller bisa ngenali panjalukan kanggo sawetara alamat, sampeyan kudu map alamat iki kanggo cara controller. 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 + "!"; } } Ayo ngerteni apa sing kedadeyan ing kene. @RestController . persis anotasi sing daktulis ing ndhuwur. Kita nggunakake kontroler liyane amarga kita pengin langsung ndeleng asil lan ora pengin nulis kaca .jsp (wow), bakal luwih gampang kanggo kita langsung ndeleng asil ing browser minangka string. @RequestMapping mung naleni menyang alamat. Ater-ater alamat umum yaiku: localhost:8080. Kaya sing kita deleng, kabeh kelas macet ing /hello address , iki tegese kabeh metode ing kelas iki duwe awalan localhost:8080/hello. Sabanjure yaiku cara pisanan kelas, ing pemetaan dhewe, metode protokol Http dituduhake - panjaluk GET (waca babagan metode protokol Http kanggo sampeyan dhewe) Apa tegese kabeh iki? kanthi nggawe panyuwunan GET menyang alamat localhost: 8080 / hello, kita bakal nampa tanggapan kanthi bentuk string "Hello World!", Ayo dipriksa! Ing kelas DemoApplication, ana siji anotasi keren sing bisa diarani kanthi tangan siji mbukak kabeh konteks Spring - @SpringBootApplication. Cara utama kelas iki dadi gaib, mung mbukak kabeh sihir sing didhelikake ing SpringApplication, yen sampeyan nelpon menu konteks ing kelas iki, opsi bakal katon ing baris Run, aku nyaranake diluncurake awal kanthi tandha ijo, kanthi cara iki console bakal katon luwih apik lan ing mangsa ngarep bakal luwih gampang kanggo maca log langsung saka dheweke. Ayo miwiti aplikasi. nalika output console mandheg, sampeyan kudu ndeleng ing console
2015-09-02 09:25:36.895 INFO 5844 --- [ utama] sbcetTomcatEmbeddedServletContainer : Tomcat diwiwiti ing port (s): 8080 (http) 2015-09-02 09:25:36.904 INFO [5] demo.DemoApplication : Miwiti DemoApplication ing **** detik (JVM mlaku kanggo 15.501)
ing ngendi "****" minangka durasi peluncuran aplikasi :) sawise iku, ing browser apa wae (utawa curl, utawa apa wae sing sampeyan gunakake?) Sampeyan kudu ngetik alamat sing dipetakan metode controller.
localhost: 8080/hello
Browser kudu nampilake kanonik
Hello World!
Iki aplikasi web kanggo sampeyan! Yen sampeyan ngelingi ana cara liya ing pengontrol, nduweni pemetaan alamat dhewe; placeholder ditambahake menyang alamat saiki. Kang liwati menyang cara minangka parameter dening Spring. Ora angel ditebak yen anotasi @PathVariable tanggung jawab kanggo iki. Dadi ing panyuwunan
localhost: 8080/hello/Jeneng sampeyan
browser bakal nuduhake
Halo, jenengmu!
Kita wis ngurutake dhasar Spring Boot. Sabanjure, kita bakal masang database, nanging bakal ana ing kirim sabanjure. Matur nuwun kanggo kabeh.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION