JavaRush /Blog Jawa /Random-JV /Analisis pitakonan lan wangsulan saka wawancara kanggo pa...

Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa. Bagian 6

Diterbitake ing grup
Hello, World! Terus berkembang penting banget kanggo pangembang apa wae. Sawise kabeh, yen sampeyan mandheg, ana risiko dadi ora diklaim lan mabur metu saka pasar: jagad IT terus berkembang lan maju, lan sampeyan kudu maju. Nanging sanajan ing wektu sing padha, ora mung fokus ing teknologi anyar lan seger, supaya ora lali, supaya bisa ngomong, babagan klasik (topik klasik). Dina iki aku pengin nerusake analisis pitakonan babagan topik "klasik" kanggo pangembang Jawa. Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 6 - 1Aku Wigati sing jawaban sandi dudu wewenang final - iki mung carane aku ndeleng jawaban sing bener kanggo pitakonan iki, lan sampeyan bisa uga ora setuju karo sawetara wong. Iki bakal cukup normal, mula aja lali nuduhake pendapat sampeyan ing komentar. Pranala menyang bagean analisis ana ing pungkasan artikel.Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 6 - 2

Pustaka lan standar

52. Apa Hibernate? Apa bedane JPA lan Hibernate?

Aku mikir kanggo njawab pitakonan iki, kita kudu ngerti apa JPA . JPA minangka spesifikasi sing njlèntrèhaké pemetaan obyek-relasional saka obyek Jawa sing prasaja lan nyedhiyakake API kanggo nyimpen, njupuk, lan ngapusi obyek kasebut. Yaiku, kaya sing kita eling, database relasional (DB) ditampilake ing wangun tabel sing saling gegandhengan. Lan JPA minangka standar sing ditampa kanthi akeh sing nggambarake carane obyek bisa sesambungan karo database relasional. Kaya sing sampeyan ngerteni, JPA minangka sesuatu sing abstrak lan ora nyata. Iku kaya gagasan dhewe, pendekatan. Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 6 - 3Ing wektu sing padha, Hibernate minangka perpustakaan khusus sing ngetrapake paradigma JPA . Tegese, kanthi bantuan perpustakaan iki sampeyan bisa nggarap database relasional liwat obyek sing makili data saka database (Entity). Kaya sing dikandhakake, perpustakaan iki cedhak banget karo cita-cita JPA lan bisa uga dadi populer. Lan sing sampeyan ngerti, popularitas panggunaan minangka argumentasi sing apik kanggo pangembangan lan perbaikan luwih lanjut. Kajaba iku, ing mburi panggunaan sing kerep ana komunitas gedhe sing wis ngrampungake kabeh pitakonan sing bisa lan ora mungkin sing ana gandhengane karo alat iki. Iki minangka conto buku sing nliti kanthi rinci kabeh sudhut peteng teknologi iki. Yaiku, Hibernate wis ditliti sabisane lan, ternyata dipercaya. Bener, ora ana gunane sanajan implementasine JPA sing cocog ing sisih Spring biasane nggunakake Hibernate ing hood.

53. Apa sing diarani cascading? Kepiye cara digunakake ing Hibernate?

Kaya sing dakkandhakake sadurunge, ing komunikasi Hibernate ditindakake liwat obyek data sing diarani entitas . Entitas iki makili sawetara tabel tartamtu ing database, lan sing elinga, ing kelas Jawa bisa ngemot referensi kanggo kelas liyane. Hubungan kasebut dibayangke ing basis data. Ing basis data, minangka aturan, iki minangka kunci asing (kanggo OneToOne, OneToMany, ManyToOne) utawa tabel penengah (kanggo ManyToMany). Sampeyan bisa maca liyane babagan hubungan antarane entitas ing artikel iki . Nalika entitas sampeyan duwe pranala menyang entitas liyane sing gegandhengan, anotasi diselehake ing ndhuwur pranala kasebut kanggo nunjukake jinis sambungan: @OneToOne, @OneToMany, @ManyToOne, @ManyToMane, ing parameter sing sampeyan bisa nemtokake nilai properti - cascade - the jinis cascade kanggo sambungan iki. JPA duwe cara khusus kanggo sesambungan karo entitas (terus-terusan, simpen, gabung...) . Jinis Cascading digunakake kanthi tepat kanggo nuduhake kepiye data sing gegandhengan kudu ditindakake nalika metode kasebut digunakake ing entitas target. Dadi, apa strategi cascading (jinis cascading)? Standar JPA nuduhake panggunaan enem jinis cascading:
  • PERSIST - operasi nyimpen bakal kelakon ing cascade (kanggo nyimpen () lan persist () cara ). Yaiku, yen kita nyimpen entitas sing digandhengake karo entitas liya, uga disimpen ing basis data (yen durung ana)

  • MERGE - operasi nganyari bakal kedadeyan ing kaskade (kanggo metode gabungan () )

  • Mbusak - operasi mbusak dumadi ing cascade ( mbusak () metode )

  • ALL - ngemot telung operasi kaskade bebarengan - PERSIST - MERGE - REMOVE

JPA nduweni konsep entitas sing terus-terusan - entitas sing digandhengake karo data ing basis data, sing dikontrol dening sesi saiki (sambungan) . Yen sampeyan ngganti, nanging ora nyimpen owah-owahan ing database, data ing database isih bakal diganti.
  • DETACH - entitas sing gegandhengan ora bakal dikelola dening sesi ( metode detach() ). Tegese, nalika owah-owahan, ora bakal ana owah-owahan otomatis ing data ing basis data - ditransfer saka status kegigihan menyang detached (entitas sing ora dikelola JPA)

  • REFRESH - saben-saben entitas dianyari karo data saka database ( refresh () - nganyari obyek suwek), entitas related dianyari ing cara sing padha. Contone, sampeyan ngganti data sing dijupuk saka database lan pengin ngasilake nilai asline. Ing kasus iki, operasi iki bakal migunani kanggo sampeyan.

Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 6 - 4Hibernate ndhukung kabeh operasi cascading standar iki, nanging uga ngenalake telung operasi dhewe:
  • REPLICATE - Digunakake nalika kita duwe luwih saka siji sumber data lan kita pengin data disinkronake (Cara hibernate - replika). Kabeh entitas kudu duwe pengenal (id) supaya ora ana masalah karo generasine (supaya entitas sing padha ora duwe id sing beda kanggo basis data sing beda)

  • SAVE_UPDATE - cascade save/delete (kanggo metode Hibernate - saveOrUpdate )

  • KUNCI minangka operasi kuwalik menyang DETACHED : nransfer entitas sing dicopot bali menyang negara persistence , yaiku. entitas bakal dilacak maneh dening sesi saiki

Yen jinis runtun ora dipilih, ora ana operasi ing entitas sing bakal duwe pengaruh marang entitas liyane sing ana gandhengane.

54. Apa kelas Entitas bisa abstrak?

Ing spesifikasi JPA ing paragraf 2.1 Kelas Entitas ana baris: " Kelas abstrak lan konkrit bisa dadi entitas ." Dadi jawabane ya, kelas abstrak bisa dadi entitas lan bisa dianotasi karo @Entity.

55. Apa manajer entitas? Apa tanggung jawabe?

Kaping pisanan, aku pengin nyathet yen EntityManager minangka salah sawijining komponen utama JPA , sing digunakake kanggo interaksi entitas karo database. Umumé, diarani cara interaksi antarane entitas lan database (terus-terusan, gabung, mbusak, copot) ... Nanging aku uga bakal nyathet yen komponen iki, minangka aturan, ora siji kanggo kabeh aplikasi: paling asring iku entheng lan asring dibusak lan sing anyar digawe nggunakake EntityManagerFactory . Yen kita nggambar paralel karo JDBC , ing ngendi EntityManagerFactory bakal dadi analog saka DataSource , banjur EntityManager bakal dadi analog saka Connection . Sadurungé aku nyebutake entitas kegigihan , minangka entitas sing dikontrol dening sambungan saiki. Dadi: entitas iki dikelola kanthi tepat dening EntityManager , sing ana hubungane karo sambungan saiki lan TransactionManager , sing tanggung jawab kanggo mbukak / nutup transaksi. Luwih ing tokoh ing ngisor iki sampeyan bisa ndeleng siklus urip entitas: Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 6 - 5EntityManager ngatur entitas nalika ana ing tataran Ngatur (ing wektu iki terus-terusan, amarga nduweni sambungan karo EntityManager). Tegese wis ora anyar maneh lan durung dibusak. Kita bisa ngomong yen entitas anyar utawa dibusak, iku uga suwek, amarga iku ora dikelola dening EntityManager. Ana macem-macem strategi kanggo EntityManager. Tegese, bisa uga ana siji EntityManager tunggal kanggo kabeh aplikasi, utawa sing anyar bisa digawe saben wektu, kanggo saben sambungan. Yen sampeyan nggunakake Spring, banjur nggawe / mbusak EntityManager dikontrol kanthi otomatis ing hood (nanging iki ora ateges sampeyan ora bisa ngatur ^^). Perlu dikandhakake yen siji utawa luwih EntityManagers mbentuk konteks kegigihan . Konteks ketekunan minangka lingkungan ing ngendi entitas disinkronake karo entitas sing padha ing database (kaya sing dakkandhakake, iki mung bisa digunakake kanggo entitas sing terus-terusan). Yen sampeyan luwih jero babagan JPA (sing dakkarepake banget), sampeyan bakal nemokake konsep kasebut asring banget.

56. Apa kelas Assert? Apa gunane?

Aku wis ora krungu saka kelas kuwi ing JPA , aku bakal nganggep sing iki nuduhake kelas JUnit perpustakaan, kang digunakake kanggo testing unit kode. Kelas perpustakaan iki, Assert , digunakake kanggo mriksa asil eksekusi kode ( assert minangka pernyataan yen sampeyan duwe negara / data tartamtu ing panggonan tartamtu). Contone, sampeyan nyoba cara sing kudu nggawe kucing. Sampeyan mbukak cara lan entuk sawetara asil:
Cat resultOfTest = createCat();
Nanging sampeyan kudu nggawe manawa digawe kanthi bener, ta? Mulane, sampeyan sadurunge nggawe kucing tartamtu - expectedCat - kanthi manual kanthi persis paramèter sing dikarepake saka kucing sing dipikolehi saka cara createCat () . Sabanjure, sampeyan nggunakake kelas Assert kanggo verifikasi asil:
Assert.assertEquals(resultOfTest, expectedCat);
Yen kucing beda-beda, pangecualian AssertionError bakal dibuwang , sing ngandhani yen asil sing dikarepake ora konvergen. Kelas Assert nduweni macem-macem cara sing nyakup akeh tugas kanggo mriksa asil sing dikarepake. Ing ngisor iki sawetara:
  • assertTrue(<boolean>) - nilai samesthine sing ditampa minangka argumen kudu bener

  • assertFalse(<boolean>) - nilai samesthine sing ditampa minangka argumen kudu palsu

  • assertNotEquals(<object1>, <object2>) - obyek sing ditampa minangka argumen kudu beda yen dibandhingake nggunakake padha ( palsu )

  • assertThrows(<ClassNameOfException>.class, <exceptionObject>) - argumen kaloro samesthine minangka pangecualian saka kelas sing ditemtokake dening argumen pisanan (yaiku, minangka aturan, ing panggonan argumen kapindho, metode diarani sing kudu mbuwang pangecualian saka jinis sing dibutuhake)

String

57. Watak Aksara Jawa

String minangka kelas standar ing Jawa, tanggung jawab kanggo nyimpen lan manipulasi nilai senar (urutan karakter), minangka kelas sing ora bisa diganti ( aku nulis babagan immutable sadurungé ), i.e. Data obyek saka kelas iki ora bisa diganti sawise digawe. Aku kaya kanggo langsung Wigati sing kelas StringBuilder lan StringBuffer rong kelas sakbenere podho rupo karo mung prabédan sing siji saka wong-wong mau dimaksudaké kanggo nggunakake ing lingkungan multi-Utas (StringBuffer). Kelas-kelas iki padha karo String , nanging ora kaya, bisa diowahi . Yaiku, obyek, yen wis digawe, ngidini modifikasi senar sing diwakili tanpa nggawe obyek anyar. Bener, cara kasebut beda karo metode String standar lan dituju kanggo nyukupi kabutuhan kanggo ngganti senar (ora ana gunane sing diarani tukang). Waca liyane babagan String , StringBuffer lan StringBuilder ing artikel iki .

58. Apa macem-macem cara kanggo nggawe obyek String? Ing ngendi iku digawe?

Cara sing paling umum kanggo nggawe string yaiku kanthi nemtokake nilai sing dibutuhake ing kurung ganda:
String str = "Hello World!";
Sampeyan uga bisa nindakake iki langsung liwat anyar :
String str = new String("Hello World!");
Sampeyan bisa nggawe string wiwit saka macem-macem karakter:
char[] charArr = {'H','e','l','l','o',' ', 'W','o','r','l','d','!'};
String str = new String(charArr);
Minangka asil saka cara toString mlaku ing sawetara obyek:
String str = someObject.toString();
Kaya asil saka cara liya, ngasilake perwakilan senar. Tuladhane:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String str =  reader.readLine();
Kaya sing sampeyan ngerteni, bisa uga ana akeh cara kanggo nggawe senar. Nalika obyek String digawe, disimpen ing blumbang senar , kang bakal kita pirembagan luwih rinci ing salah siji pitakonan ing ngisor iki.

59. Kepiye carane mbandhingake rong senar ing basa Jawa lan carane ngurutake?

Kanggo mbandhingake nilai-nilai ing Jawa, tandha dobel padha == digunakake . Yen kita kudu mbandhingake sawetara nilai sing prasaja kaya int , kita bakal nggunakake. Nanging cara iki ora ditrapake kanggo mbandhingake obyek sing lengkap. Ing kasus iki, mung bakal mbandhingake referensi - apa padha nuding obyek sing padha utawa ora. Yaiku, nalika mbandhingake rong obyek kanthi nilai kolom internal sing padha, mbandhingake liwat == bakal menehi asil palsu : sanajan lapangan obyek sing padha, obyek kasebut manggoni sel memori sing beda. Lan obyek saka kelas String , senadyan kesederhanaan sing ngapusi, isih dadi obyek. Lan perbandingan liwat == uga ora ditrapake kanggo wong-wong mau (sanajan ana blumbang senar). Kene cara standar saka kelas Obyek teka menyang muter - witjaksono , kang kudu ditindhes ing kelas kanggo bisa bener (yen ora, minangka standar mbandhingaké nggunakake == ). Ditimpa ing kelas String , mula kita njupuk lan nggunakake:
String firstStr = "Hello World!";
String secondStr = "Hello World!";
boolean isEquals = firstStr.equals(secondStr);
Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 6 - 6Kita ngomong babagan perbandingan sing cocog, saiki ayo goleki perbandingan sing cocog. Sawise kabeh, kanggo ngurutake soko kita kudu ngerti miturut prinsip apa sing kudu diurutake. Kanggo nindakake iki, sampeyan bisa nggunakake set diurutake standar - TreeSet . Sampeyan bisa maca liyane babagan macem-macem koleksi ing Jawa ing artikel iki . Dhaptar iki dianggo adhedhasar algoritma wit abang-ireng lan ngurutake set kasebut miturut prinsip ngurutake sing ditemtokake. Kaya sing dakkandhakake sadurunge, sampeyan kudu ngerti carane ngurutake obyek saka jinis tartamtu. Komparator digunakake kanggo nyetel metode perbandingan kanggo ngurutake . Biasane iki kudu dileksanakake kanggo kelas sing pengin diurutake, nanging ing kasus String wis dileksanakake. Mulane, kita mung nambah baris sing kita butuhake menyang TreeSet , lan bakal ngurutake:
TreeSet<String> sortedSet = new TreeSet<>();
sortedSet.add("B");
sortedSet.add("C");
sortedSet.add("A");
sortedSet.forEach(System.out::println);
Output konsol:
A B C

60. Menehi algoritma kanggo ngowahi senar menyang karakter. Tulis kode sing cocog

Kaya sing dakkandhakake sadurunge, obyek saka kelas String duwe macem-macem cara migunani. Salah sijine yaiku toCharArray . Cara iki ngowahi string dadi array karakter:
String str = "Hello world";
char[] charArr = str.toCharArray();
Sabanjure, kita duwe macem-macem karakter sing bisa diarani kanthi indeks:
char firstChar = charArr[0]; // H

61. Carane Ngonversi senar kanggo Uploaded byte lan bali? Tulis kode sing cocog

Padha karo metode toCharArray , kelas String nduweni metode getBytes sing ngasilake array byte saka string:
String str = "Hello world";
byte[] byteArr = str.getBytes();
byte firstChar = byteArr[6]; // 119
Bagian analisis saiki wis rampung logis. Matur nuwun kanggo perhatian sampeyan!Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 6 - 7
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION