JavaRush /Java Blog /Random-TK /Java dörediji üçin geçirilen söhbetdeşliklerden soraglary...

Java dörediji üçin geçirilen söhbetdeşliklerden soraglaryň we jogaplaryň derňewi. 3-nji bölüm

Toparda çap edildi
Salam! Specialörite okuwsyz uçar uçmagy öwrenip bolmaýşy ýaly, zerur teoretiki esaslary öwrenmek üçin uzak wagt sarp etmän Java dörediji bolmak hem mümkin däl. Bu gün hut şu meseläniň üstünde işläris: Java döredijiler üçin 250+ söhbetdeşlik soraglaryny we şoňa laýyklykda jogaplary derňemegi dowam etdireris. Ine, derňewiň birinji we ikinji bölümleri. Hawa, elbetde, bu soraglaryň hemmesi bolmazdan gowy Java dörediji bolup bilersiňiz. Şeýle-de bolsa, Java diliniň daş-töweregine gowy düşünýän bolsaňyz, size artykmaçlyk berer we geljekki iş berijiňiziň öňünde has islenýän kandidat bolar.Java dörediji üçin geçirilen söhbetdeşliklerden soraglaryň we jogaplaryň derňewi.  3-nji bölüm

20. Gaplamak üçin haýsy dil elementleri jogapkär?

.Adymyzda bolsa, encapsulation synpyň durmuşa geçiriş jikme-jikliklerini gizleýär. Classagny, synpymyz daşarky ulanylanda içerki mazmun we logika aýdyň däl. Munuň üçin diliň haýsy elementleri jogapkär? Elbetde, üýtgedijilere giriň ! Gizlemeli zatlarymyzy şahsy üýtgediji bilen belleýäris . Mysal üçin, synpyň hususy meýdanlary ýa-da käbir içerki işlemegi amala aşyrmaga kömek edýän käbir içerki usullar. Daşarky elýeterliligi üpjün etmek isleýän zadymyza, köpçülige giriş üýtgedijisini goşýarys . Mysal üçin, käbir işlemegi üpjün etmek üçin jogapkär bir usul (içinde köp hususy usul ulanylyp bilner) ýa-da synpyň hususy meýdanlaryna girmek üçin şol bir giriş we sazlaýjylar. Aý, bizde synpyň saýlanan böleklerine has çeýe we aýratyn konfigurasiýa üçin ulanyp boljak deslapky we goralýan üýtgedijilerimiz hem bar.

21. Haýsy dil elementleri miras üçin jogapkär?

Miras, başga bir klasa esaslanýan synplary döretmäge mümkinçilik berýän mehanizmdir. Java-da giňeldilen açar söz bu maksat üçin ulanylýar . Mysal üçin, bizde belli bir pişik bar we biz onuň oruntutary - Arslan döretmek isleýäris . Kodda şuňa meňzeş bir zat görüner:
public class Lion extends Cat
Bu bolsa, arslan synpynyň, statik usullardan başga, Pişik synpynyň ähli usullaryna we üýtgeýänlerine miras galýandygyny aňladýar . Şeýle hem, mirasa jogap berýän dil elementleri super . Bu şuňa meňzeş salgylanma , ýöne bu atlandyrylan obýekti aňladýan bolsa, super häzirki ene-atany aňladýar. Adatça super ulanylýar:
  1. Superklass konstruktoryna jaň etmek üçin: Mysal üçin, Pişik synpynyň içerki üýtgeýän ady bar , ony konstruktorda başlamaly. “Arslan” synp konstruktorynda şeýle görüner:

    public Lion(final String name) {
       super(name);
    }
  2. Ene meýdanlaryna we usullaryna girmek üçin: mysal üçin, Pişik synpynda başlangyç ýaş meýdany bar :

    public class Cat {
       int age = 10;
Şol bir wagtyň özünde-de, Arslan ýaly başlangyç meýdanymyz bar :
public class Lion extends Cat {
   int age = 15;
Ene obýektiň ýaş üýtgeýjisine arslan obýektinden girmek islesek , muny super arkaly etmeli :
super.name

22. Polimorfizm üçin haýsy dil elementleri jogapkär?

Polimorfizm, bir goluň obýektiniň köp görnüşi (köp ýerine ýetiriş) ukybydyr. Java-da açar sözleriň gurallarynyň we giňeldilmeginiňJava dörediji üçin geçirilen söhbetdeşliklerden soraglaryň we jogaplaryň derňewi.  3-nji bölüm polimorfizm üçin jogapkärdigini arkaýyn aýdyp bileris . gurallar - interfeýsimizi döredenimizde, mümkin bolan görnüşlerinden birini käbir synplarda durmuşa geçirýäris, ýöne bu ýeke-täk görnüş däl, şeýlemi? Durmuşa geçirýän gurallaryň nähili bolýandygyny ýadymyzdan çykaralyň :
public class Cat implements Animal
Pişik synpynda bolsa haýwan interfeýsinde görkezilen ähli abstrakt usullary durmuşa geçirmeli . Miras barada-da aýdylýar: nesil synpynda bir usulyň eýýäm bar bolan ýerine ýetirilişini ýok edip bileris. Mysal üçin: birnäçe nesil -> şol bir usulyň birnäçe dürli görnüşi. Garaz, ýa-da superklas abstraktdy we onuň nesilleriniň her biri üçin aýratyn usulda durmuşa geçirilmeli belli bir usuly bar. .Agny, usulyň köp görnüşde boljakdygyny aýdyp bileris. Mundan başga-da, @Override düşündiriş , ýerine ýetirilen usullaryň üstünde goýlan we superklassyň ýa-da interfeýsiň bir ýa-da başga bir usulyny durmuşa geçirmek ýa-da ýok etmek isleýändigimizi görkezýän bu meselede bize kömek edip biler . Bu islege bagly we ýalňyşlary tapmagy aňsatlaşdyrmak üçin ulanylýar. Bu düşündiriş bilen, superklass / interfeýs usulyny ýok etmek / durmuşa geçirmek isleýändigiňizi düzüjä görkezýärsiňiz we usul golunda ýalňyşlyk goýbermezligiňizi üpjün eder.

23. SOLID näme? Mysal beriň

SOLID, Robert Martin tarapyndan döredilen OOP üçin bäş esasy dizaýn ýörelgesiniň gysgaldylan sözidir. S - -eke-täk jogapkärçilik ýörelgesi - synpyň diňe bir maksady we ýekeje maksady bolmalydygyny aýdýan ýeke-täk jogapkärçilik ýörelgesi. .Agny, hemme zady ýerine ýetirýän sapaklary döretmeli däl. Bu ýagdaýda, “Ylahy obýekt” antipatternini köpeldip bilersiňiz. Pişik obýektiňiz bar bolsa , onda bu ýagdaý bilen baglanyşykly bolmadyk iş logikasy däl-de, diňe içerki işleýşi bilen täsir edýän usullar bolmaly. Mysal üçin, bu görnüşdäki zatlary haýsydyr bir ýerde tygşytlamak. Bu daşarky funksiýa ( Pişik bilen deňeşdirilende ) beýleki synplara geçirilmeli, wezipesi bu görnüşdäki obýektler üçin iş logikasyny üpjün etmek. O - Açyk ýapyk ýörelge - açyklyk / ýapyklyk ýörelgesi. Programma üpjünçiliginiň (synplar, interfeýsler) giňeltmek üçin açyk bolmalydygyny, ýöne üýtgetmek üçin ýapykdygyny aňladýar. Mysal üçin, eýýäm bar bolan Pişik synpynyň işleýşine meňzeş , ýöne birneme üýtgeşik funksiýa gerekdi. Pişik synpynyň işleýşini üýtgetmegiň , eýýäm ulanylan ýerlerini döwmegiň ýerine miras ýa-da kompozisiýa ulanýarys . Netijede, pişik synpynyň üýtgedilen funksiýasy bilen maksadymyza ýetdik , ýöne şol bir wagtyň özünde ony üýtgetmedik ýa-da hiç zady bozmadyk. L - Liskowyň ornuny tutmak ýörelgesi - Barbara Liskowyň ornuny tutmak ýörelgesi. Principleörelge, esasy görnüşi ulanýan funksiýanyň, esasy görnüşiniň bilmezden bilmän ulanmalydygyny aýdýar. Mysal üçin, Pişik synpymyz, özüni alyp barşyny düýpgöter üýtgetmän, nesilleriniň islendik biri bilen çalşylmalydyr . Umumy logika (özüni alyp barş) öňküligine galýar, ýöne bu ýa-da şol funksiýany durmuşa geçirmegiň jikme-jiklikleri üýtgeýär. I - Interfeýsi bölmek ýörelgesi - interfeýsi bölmek prinsipi. Bu ýörelge, bir uniwersal däl-de, köp ýöriteleşdirilen (dar gönükdirilen) interfeýsleriň bolmagynyň gowudygyny aýdýar. Mysal üçin, ulanyjy käbir interfeýsi amala aşyrýar, olardan diňe şu usul gerek, ýöne bu interfeýsde islenýän usulyň logikasy bilen hiç hili baglanyşygy bolmadyk ýene dokuz usul bar. Bu ýagdaýda ulanyjy on sany interfeýs usulyny durmuşa geçirmeli bolar, dokuzy onuň üçin zerur däl! Munuň ýerine, zerur bolsa durmuşa geçirip boljak on dürli interfeýs ýasamak has gowudyr. Dogry, ýa-da on däl, ýöne interfeýsiň umumy maksady bilen ýakyndan baglanyşykly usullary boljak birnäçe. D - baglylyk öwrülişigi ýörelgesi- garaşlylyk tersligi prinsipi. Principleörelge has ýokary derejedäki modullaryň aşaky derejedäki modullara bagly bolmaly däldigini aýdýar. Bu ýörelge "abstraksiýa jikme-jikliklere bagly bolmaly däl, jikme-jiklikler abstraksiýa bagly bolmaly" diýilýär. .Agny, interfeýslere salgylanyp, logikamyzy gurmalydyrys we diňe şondan soň zerur interfeýsleri ýerine ýetirýän synplar belli bir obýekti bu funksiýa geçirmelidiris. Mysal üçin, “ Pişik” interfeýsi we käbir ýerine ýetirişleri bar bolsa, “ Arslan we HomeCat” diýsek, özara täsir logikamyzy “ Cat” interfeýsi görnüşi bilen döredýäris we diňe şondan soň “ Lion ” ýa-da “HomeCat” -yň belli bir ýerine ýetirilişini çalyşýarys , tersine däl.

24. Synp, obýekt, interfeýs näme?

Javaadymyzda bolsa, Java OOP dilidir. Javaagny, Java programmalary obýektleriň arasyndaky täsiriň üstünde gurulýar. Görnüşi ýaly, programma garynja ýaly bolup, her garynja bir zatdyr. Java dörediji üçin geçirilen söhbetdeşliklerden soraglaryň we jogaplaryň derňewi.  3-nji bölümObýektler , bu içerki maglumatlar bilen täsirleşmek üçin dürli usullary (funksiýalary) öz içine alýan käbir toparlanan maglumatlardyr. Sapaklar bolsa obýektleri döretmek üçin görkezmeler, şablonlardyr. Differentagny, şol bir görkezmä laýyklykda gurlan, dürli ýa-da birmeňzeş maglumat bahalary bilen doldurylan köp obýekt bolup biler. Durmuşdan mysal getirmek üçin synpyň binanyň çyzgysydygyny, obýektiň bolsa bu çyzgy esasynda döredilen binadygyny aýdyp bileris. Interfeýsler, obýektleri ulanyp döredip bolmajak tapawudy bilen synplaryň analoglarydyr. Olaryň maksady Java-a abstraksiýa elementini goşmak. Has takygy, synplar we obýektleriň arasyndaky gatnaşyklara çeýeligi goşmak. Çeýeligi bilen, öň beýan edilen polimorfizmi we abstraksiýany göz öňünde tutýarys, bu bolsa programmanyň içerki arhitekturasyny gurmak üçin köp mümkinçilikleri açýar.

25. POJO synpy näme? Şeýle klasa mysal getiriň

Java dörediji üçin geçirilen söhbetdeşliklerden soraglaryň we jogaplaryň derňewi.  3-nji bölümPOJO - Plain Old Java Object - gowy köne Java obýekti: belli bir synpdan miras galan we işewürlik modeli üçin zerur bolanlardan başga hiç hili hyzmat interfeýsini amala aşyrmaýan synpyň ýönekeý obýekti. Başgaça aýdylanda , POJO synpy diňe aýratyn talaplary bolmadyk synpdyr. Onlyeke-täk talap, belli bir çarçuwa bilen baglanyşykly dürli jaňlaryň we jyňňyrtmalaryň bolmazlygydyr. Düzgün bolşy ýaly, beýle synplar beýleki synplardan miras almaýarlar ( şol bir paketdäki POJO synplaryndan başga), interfeýsleri amala aşyrmaýarlar - käwagt Serializable ýa-da Cloneable ýaly adaty kitaphanadan marker interfeýsleri üçin kadadan çykma bolýar - bellikleri ulanmaň. we üçünji tarap kitaphanalaryna bagly däl. Pöne POJO-laryň işewür logika we islendik görnüşdäki konstruktorlary bilen usullarynyň bolup biljekdigini belläp geçýärin . Synpyň semantikasyna üýtgeşme girizmeýän düşündirişlere rugsat berseňiz (obýektiň maksady we işleýiş logikasy üýtgemez), POJO-lar XML ýa-da JSON- dan deserializasiýa edilen JPA Entity subýektlerini we DTO obýektlerini hem öz içine alyp biler , düşündirişlerde görkezilen düzgünler. Şeýle hem POJO synplary üçin deň we hashCode-ny ýok etmek maslahat berilýär , sebäbi bu olaryň rollaryny has gowy ýerine ýetirmegine kömek edip biler. Mysal POJO synpy:
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. Synpda haýsy elementler bolup biler?

Synpda aşakdaky elementler bolup biler:
  • synp meýdanlary;
  • statiki synp meýdanlary;
  • başlangyç blok;
  • statiki başlangyç blok;
  • konstruktorlar (boş hemişe tertip boýunça kesgitlenýär);
  • usullary;
  • statiki usullar;
  • dürli düşündirişler (synpyň ýa-da onuň bölekleriniň üstünde asylyp bilner);
  • generika ;
  • beýleki synplardan miras almak ( giňeltmek ) ýa-da interfeýslerden ( gurallar ) durmuşa geçirmek.

27. Java-da mirasy düşündiriň. Super açar söz ulanmagyň peýdalary näme?

Oveokarda men eýýäm Java-da miras we super açar söz hakda gürleşipdim . Moreene birnäçe möhüm nokady belläsim gelýär:
  1. Diňe bir synpy miras almak mümkin: Java-da köp miras ýok (ýöne Java 8-de deslapky usullaryň peýda bolmagy bilen bu jümle gaty jedelli bolar).
  2. Hususy usullar we meýdanlar hem miras galypdyr, diňe mirasdüşerden olara girip bilmezler (ýöne, mysal üçin, hususy meýdançamyz bar bolsa we munuň üçin köpçülik ýa-da goralýan girelgeler we sazlaýjylar bar bolsa, bu meýdan bilen işleşip bolar arkaly).
  3. jemleýji synplar miras galanok.
  4. gutarnykly usullar ýok edilmeýär (ýöne miras galyp we artykmaç ýüklenip bilner).
  5. statiki usullar we üýtgeýjiler miras galanok (sebäbi olar obýektlere däl-de, synplara bagly).
  6. Abstrakt synplardan miras galanda, olaryň abstrakt usullarynyň durmuşa geçirilmegi talap edilýär ýa-da häzirki synp hem abstrakt diýip yglan edilmeli.
  7. Ene-atada deslapky däl konstruktorlar bar bolsa, çagalar synpynda artykmaç ýazylmalydyr (ýöne @Override olaryň üstünde ýazylmandyr).
  8. Nesildäki ýokaşdyrylan usullar giriş üýtgediji bilen giňeldilip bilner: hususy -> default -> goragly -> köpçülik .
  9. Nesildäki artykmaç usullar ýazylan kadadan çykmalary azaldyp biler, mysal üçin: Kadadan çykma -> IOException -> FileNotFoundException.
Java dörediji üçin geçirilen söhbetdeşliklerden soraglaryň we jogaplaryň derňewi.  3-nji bölüm

28. Usul goly näme? Dogry we nädogry gollaryň mysallaryny getiriň

Usulyň goly , usulyň ady we gelýän parametrleriň görnüşleri (we parametrleriň tertibi möhümdir). Usul goly yzyna gaýtaryş bahasyny ýa-da atýan kadadan çykmalaryny öz içine almaýar. Dogry goluň mysaly:
doSomething(int, double, double)
Nädogry goluň mysaly:
void doSomething(int firstArg, int secondArg) throws Exception
Usul goly, yzyna gaýtaryş görnüşi we atylýan kadadan çykmalar sanawy bilen bilelikde usul şertnamasy diýilýär . Bularyň hemmesi şu gün üçin. Soň görüşeris!Java dörediji üçin geçirilen söhbetdeşliklerden soraglaryň we jogaplaryň derňewi.  3-nji bölüm
Tapgyryň beýleki materiallary:
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION