CodeGym /Blog Jawa /Acak /Njelajah pitakonan lan jawaban saka wawancara proyek kang...
John Squirrels
tingkat
San Francisco

Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa. Bagean 3

Diterbitake ing grup
Hi! Kaya ora mungkin sinau mabur pesawat tanpa latihan khusus, sampeyan ora bisa dadi pangembang Jawa tanpa mbuwang jam sinau dhasar teori sing dibutuhake. Lan iki persis apa sing bakal ditindakake saiki: kita bakal terus njelajah pitakonan sing ditemoni sajrone wawancara kerja kanggo pangembang Jawa, lan, mesthi, kita bakal nliti jawabane. Punika bagean pisanan lan kaloro saka ringkesan iki. Ora ana keraguan sampeyan bisa dadi pangembang Jawa sing apik tanpa kabeh pitakonan kasebut. Jarene, yen sampeyan wis ngerti kabeh seluk beluk Jawa, sampeyan mesthi bakal duwe kaluwihan lan katon luwih narik kawigaten ing mata majikan sampeyan. Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 3 - 1

20. Unsur-unsur basa apa wae sing ndadekake enkapsulasi?

Elinga yen enkapsulasi babagan ndhelikake rincian implementasi kelas. Ing tembung liyane, nalika kelas kita digunakake, jeroan lan logika internal ora ketok kanggo wong njaba. Lan apa unsur basa sing tanggung jawab kanggo iki? Akses modifiers , mesthi! Apa wae sing kudu didhelikake, kita menehi tandha karo modifier pribadi . Contone, lapangan pribadi kelas utawa sawetara cara internal sing mbantu ngleksanakake sawetara fungsi internal. Lan kanggo apa wae sing pengin diwenehake akses eksternal, kita nambah modifier akses umum . Contone, cara sing ngleksanakake sawetara fungsi (sing bisa internal nggunakake akeh cara pribadi) utawa, mesthi, getter lan setter kanggo ngakses kothak pribadi kelas kang. Kita durung kasebut modifiers gawan lan dilindhungi , kang bisa digunakake luwih fleksibel lan khusus ngatur akses kanggo bagean kelas tartamtu.

21. Unsur-unsur basa apa wae sing ndadekake warisan?

Warisan minangka mekanisme sing ngidini sampeyan nggawe kelas adhedhasar kelas liyane. Jawa nduweni tembung kunci kanggo iki. Contone, umpamane kita duwe kelas Kucing , lan kita pengin nggawe kelas anak Singa . Ing kode, bakal katon kaya iki:
public class Lion extends Cat
Lan iki tegese kelas Singa marisi kabeh cara lan variabel saka kelas Cat , kajaba variabel statis. Unsur basa liyane sing nduweni tanggung jawab kanggo warisan yaiku super . Iki minangka referensi sing padha . Tembung kunci iki nuduhake obyek sing dirujuk. Tembung kunci super nuduhake wong tuwa saka obyek saiki. Biasane super digunakake:
  1. Kanggo nelpon konstruktor saka superclass. Contone, kelas Cat duwe variabel jeneng internal sing kudu diinisialisasi ing konstruktor. Ing konstruktor kelas Lion , sing bakal katon kaya iki:

    public Lion(final String name) {
       super(name);
    }

  2. Kanggo ngrujuk menyang lapangan lan cara wong tuwa. Contone, ing kelas Cat , kita duwe lapangan umur sing diinisialisasi :

    public class Cat {
       int age = 10;

Nanging kita duwe lapangan initialized padha ing Lion :
public class Lion extends Cat {
   int age = 15;
Lan yen ing obyek Singa kita pengin ngrujuk marang variabel umur obyek induk, mula kita kudu nindakake super :
super.name

22. Unsur basa apa wae kang dadi tanggung jawabe polimorfisme?

Polimorfisme minangka kemampuan obyek kanthi siji teken kanggo njupuk akeh wujud (akeh implementasine). Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 3 - 2Kita bisa kanthi yakin nyatakake yen tembung kunci sing dileksanakake lan ngluwihi tembung Jawa tanggung jawab kanggo polimorfisme. Nalika kita duwe antarmuka, ngleksanakake ngidini kita nyedhiyani siji implementasine bisa, nanging sing ora kudu mung implementasine, iku? Ayo goleki maneh carane nggunakake implements :
public class Cat implements Animal
Banjur ing kelas Cat , kita kudu ngleksanakake kabeh cara abstrak ing antarmuka Animal . Warisan uga: ing kelas anak, kita bisa ngatasi implementasine metode sing wis ana. Iki tegese karo sawetara kelas anak, kita bisa duwe sawetara overrides beda saka cara sing padha. Utawa superclass bisa abstrak lan duwe cara tartamtu sing kudu dileksanakake kanthi cara khusus ing saben kelas anak. Ing tembung liyane, cara iki bakal duwe macem-macem implementasine. Anotasi @Override uga bisa mbantu kita babagan iki. Iki diselehake ing ndhuwur cara sing dileksanakake lan nuduhake yen kita pengin ngleksanakake utawa ngalahake (yen implementasine wis ana ing superclass) cara tartamtu saka superclass utawa antarmuka. Iku opsional lan mbantu ndeteksi kesalahan luwih gampang. Sampeyan nggunakake anotasi iki kanggo ngandhani kompiler yen sampeyan pengin ngilangi / ngetrapake metode superclass / antarmuka. Compiler banjur bakal nggawe manawa sampeyan ora nggawe kesalahan ing tandha cara.

23. Apa iku SOLID? Menehi conto

SOLID minangka akronim saka limang prinsip desain OOP dhasar Robert Martin. S (Single-responsibility principle) : ngandharake yen sawijining kelas kudune mung siji tujuan/tanggung jawab. Ing tembung liyane, sampeyan ora kudu nggawe kelas sing nindakake kabeh. Yen sampeyan nindakake, sampeyan bisa ngasilake pola anti "Obyek Dewa". Yen sampeyan duwe obyek Cat , kudu duwe cara mung kanggo sesambungan karo fungsi internal, nanging ora ngemot logika bisnis sing ora ana hubungane karo conto kasebut. Contone, sawetara mekanisme kanggo nyimpen obyek saka jinis iki. Fungsi iki (eksternal kanggo entitas Kucing ) kudu dipindhah menyang kelas utawa layanan liyane, sing tugase nyedhiyakake logika bisnis kanggo obyek sing cocog. O (Prinsip mbukak-tutup) : Prinsip iki diterangake kaya ing ngisor iki: entitas piranti lunak (kelas, modul, fungsi, lan sapiturute) kudu mbukak kanggo ekstensi nanging ditutup kanggo modifikasi. Contone, umpamane kita butuh fungsi sing padha nanging rada beda karo fungsi kelas Cat sing wis ana . Tinimbang ngganti fungsi kelas Cat lan kanthi mangkono ngrusak kode ing endi wae sing wis digunakake, kita bisa nggunakake warisan utawa komposisi . Mangkono, kita entuk goal kita ngowahi fungsi saka kelas Cat , lan kita nindakake tanpa ngganti kelas dhewe lan tanpa break apa-apa. L (Prinsip Substitusi Liskov) : iki prinsip substitusi Barbara Liskov. Prinsip kasebut nyatakake yen fungsi sing njupuk jinis dhasar kudu bisa nggunakake subtipe saka jinis dhasar kasebut tanpa ngerti apa sing kedadeyan. Contone, kelas Kucing kita kudu diganti karo turunane, ujare, Singa , tanpa ngganti prilaku. Logika umum (prilaku) tetep padha, nanging rincian implementasine saka fungsi tartamtu diganti. I (Prinsip segregasi antarmuka) : prinsip iki nyatakake yen luwih apik duwe akeh antarmuka khusus (fokus sempit) tinimbang siji universal. Contone, umpamane pangembang ngetrapake sawetara antarmuka. Dheweke mung butuh salah sawijining metode, nanging antarmuka duwe sangang cara liyane sing ora ana gandhengane karo logika metode sing dibutuhake. Ing kasus iki, pangembang kudu ngleksanakake sepuluh cara antarmuka, sangang kang superfluous kanggo wong-wong mau! Nanging, luwih becik nggawe sepuluh antarmuka sing beda-beda sing bisa ditindakake yen perlu. Ya, yen ora sepuluh, banjur sawetara, saben kanthi cara sing ana hubungane karo tujuan siji antarmuka. D (prinsip inversi dependensi): Prinsip kasebut nyatakake yen modul sing luwih dhuwur kudu ora gumantung marang modul tingkat sing luwih murah. Prinsip iki uga nyatakake, "Abstraksi ngirim ora gumantung ing rincian. Rincian kudu gumantung abstraksi." Kita kudu mbangun logika kanthi ngrujuk menyang antarmuka lan ngliwati obyek konkrit kelas sing ngetrapake antarmuka sing dibutuhake. Contone, umpamane kita duwe antarmuka Cat lan sawetara implementasine, umpamane, Lion lan HouseCat . Kita mbangun logika khusus kanggo sesambungan karo antarmuka Cat . Kita mung banjur ngganti antarmuka karo implementasine tartamtu ( Singa utawa HouseCat ), nanging ora cara liyane.

24. Apa kelas, obyek, lan antarmuka?

Kita bakal ngelingi yen Jawa minangka basa OOP. Tegese, program Java dibangun adhedhasar interaksi antarane obyek. Program kaya semut, ing ngendi saben semut minangka obyek. Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 3 - 3Objek yaiku kumpulan data sing kalebu macem-macem cara (fungsi) kanggo sesambungan karo data internal iki. Kelas minangka instruksi utawa template kanggo nggawe obyek. Iki tegese kita bisa duwe akeh obyek sing dibangun miturut instruksi sing padha nanging diisi karo data sing beda (utawa padha). Njupuk conto saka urip nyata, kita bisa ngomong sing kelas minangka cithak biru saka bangunan, lan obyek iku bangunan dibangun khusus miturut cithak biru. Antarmuka padha karo kelas, nanging ora bisa digunakake kanggo nggawe obyek. Tujuane kanggo nambah abstraksi ing basa Jawa. Luwih tepat, padha nambah keluwesan kanggo hubungan antarane kelas lan obyek. Kanthi keluwesan, tegese polimorfisme lan abstraksi sing wis diterangake sadurunge, sing nggawe akeh kesempatan kanggo mbangun arsitektur internal aplikasi.

25. Kelas POJO iku opo? Wenehana tuladha kelas kasebut

Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 3 - 4A POJO (Plain Old Java Object) iku sawijining obyek kelas prasaja sing ora oleh warisan saka sembarang kelas tartamtu lan ora ngleksanakake sembarang antarmuka layanan ngluwihi sing perlu kanggo model bisnis. Ing tembung liyane, kelas POJO mung kelas tanpa syarat khusus. Siji-sijine syarat yaiku ora ana macem-macem lonceng lan peluit sing diikat menyang kerangka tartamtu. Minangka aturan, kelas iki ora oleh warisan kelas liyane (kajaba kelas POJO ing paket sing padha), ora ngleksanakake antarmuka (kadhangkala pangecualian digawe kanggo antarmuka panandha saka perpustakaan standar kayata Serializable utawa Cloneable ), ora nggunakake anotasi. , lan ora gumantung ing perpustakaan pihak katelu. Elinga yen POJO bisa duwe metode sing ngemot logika bisnis lan konstruktor apa wae. Yen kita ngidini anotasi sing ora ngganti semantik kelas (yaiku anotasi sing ora ana ora ngganti tujuan utawa logika obyek kasebut), banjur POJO uga bisa kalebu entitas JPA lan obyek DTO deserialized saka XML utawa JSON , sing aturane kasebut ing anotasi. Bab liyane sing kudu dielingi babagan kelas POJO yaiku luwih becik ngilangi metode sing padha lan kode hash amarga iki bisa mbantu dheweke nindakake peran kanthi luwih apik. Contoh kelas POJO :
public class User {
   private Long id;
   private String firstName;
   private String lastName;
   private Long age;

   public User(final Long id, final String firstName, final String lastName, final long age) {
       this.id = id;
       this.firstName = firstName;
       this.lastName = lastName;
       this.age = age;
   }

   public Long getId() {
       return this.id;
   }

   public String getFirstName() {
       return this.firstName;
   }

   public String getLastName() {
       return this.lastName;
   }

   public Long getAge() {
       return this.age;
   }

   @Override
   public boolean equals(final Object o) {
       if (this == o) return true;
       if (o == null || this.getClass() != o.getClass()) return false;
       final User user = (User) o;
       return Objects.equals(this.id, user.id) &&
               Objects.equals(this.firstName, user.firstName) &&
               Objects.equals(this.lastName, user.lastName) &&
               Objects.equals(this.age, user.age);
   }

   @Override
   public int hashCode() {
       return Objects.hash(this.id, this.firstName, this.lastName, this.age);
   }
}

26. Unsur apa wae sing bisa digayuh ing kelas?

Kelas bisa ngemot unsur ing ngisor iki:
  • lapangan conto;
  • lapangan statis;
  • blok initialization;
  • blok initialization statis;
  • konstruktor (konstruktor kosong tansah diumumake kanthi gawan);
  • cara;
  • cara statis;
  • macem-macem anotasi (sing bisa ditrapake ing kelas dhewe utawa bagean konstituen);
  • generik ;
  • warisan saka kelas liyane ( ngluwihi ) utawa implementasine saka antarmuka ( ngleksanakake ).

27. Nyritakake bab pusaka ing tanah Jawa. Apa spesifik tembung kunci super?

Ndhuwur, aku sadurunge ngomong babagan warisan lan tembung kunci super ing basa Jawa. Aku bakal nyebutake sawetara poin sing luwih penting:
  1. Kita mung bisa marisi kelas siji: Jawa ora duwe warisan pirang-pirang ing Jawa. Kanthi tekane metode standar ing Jawa 8, statement iki bakal dadi kontroversial banget.
  2. Metode lan lapangan pribadi uga diwarisake. Dheweke mung ora bisa diakses saka kelas anak (nanging yen kita, contone, duwe lapangan pribadi lan duwe getter lan setter umum utawa dilindhungi , mula bisa digunakake kanggo ngakses lapangan).
  3. kelas pungkasan ora bisa diwarisake.
  4. cara final ora bisa overridden (nanging padha bisa dipun warisaken lan overloaded).
  5. cara statis lan variabel ora diwenehi warisan (amarga ditempelake ing kelas, ora obyek).
  6. Nalika marisi kelas abstrak, metode abstrak kudu dileksanakake, utawa kelas anak uga kudu diumumake abstrak.
  7. Yen ana konstruktor non-standar ing tiyang sepah, padha kudu ditindhes ing kelas anak (nanging @Override ora ditulis ing ndhuwur).
  8. Sampeyan bisa ngluwihi modifier akses kanggo cara overridden ing kelas anak: pribadi -> gawan -> dilindhungi -> umum .
  9. Cara sing ditindhes ing kelas anak bisa mbuwang pengecualian sing luwih sempit, contone: Exception -> IOException -> FileNotFoundException.
Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 3 - 5

28. Apa sing diarani metode teken? Menehi conto tandha tangan sing bener lan salah

Tandha metode yaiku jeneng metode ditambah jinis paramèter input (urutan paramèter penting). Tandha metode ora kalebu nilai bali utawa pangecualian cara sing dibuwang. Tuladha tandha tangan sing bener:
doSomething(int, double, double)
Tuladha tandha tangan sing salah:
void doSomething(int firstArg, int secondArg) throws Exception
Tandha metode, digabungake karo jinis bali lan dhaptar pengecualian sing dibuwang, diarani kontrak metode . Iku kabeh kanggo dina iki! Ketemu maneh!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION