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. 1-nji bölüm

Toparda çap edildi
Salam! JavaRush-a dürli adamlar ýygnandy. Käbirlerimiz diňe Java döredijiler bolmak isleýäris, ösüşe köp wagt we güýç sarp edýäris, beýlekiler eýýäm Java döredijiler. Bir ýa-da başga ýagdaýda synaglara - tehniki söhbetdeşliklere taýyn bolmaly. Bu synag aňsat däl we ahlak taýdan taýýarlykdan başga-da tehniki taýýarlyk hem zerurdyr. Recentlyaňy-ýakynda dou hakda Java Developer bilen söhbetdeşlik soraglarynyňSöhbetdeşlik soraglarynyň we jogaplarynyň derňewi.  1-nji bölüm uly sanawyna duş geldim . Bu soraglar dürli derejelere bölünýär - Junioretginjek, Orta we Uly. Aladalanmaň: soraglaryň hemmesi aňsat däl, ýöne ýyldyz ýyldyzy bolanlara seýrek berilýär. Soraglar gowy, ýöne köpüsine jogap bermäge synanyşasym gelýär. Bir makalanyň çägine girip bilmejekdigim düşnüklidir, ahyrsoňy, ol ýerde köp sorag bar. Şonuň üçin bu soraglara jogap berýän makalalaryň tutuş toplumy bolar. Derrew birnäçe nokady belläsim gelýär:
  1. Iň ýokary soraglar we olar üçin jogaplar bilen ajaýyp makala bar . Käbir soraglar ýokarda görkezilen sanaw bilen gabat gelýär (250+), şonuň üçin bu soraglar ýene bir gezek gaýtalanmazlygy üçin atlar.

  2. Soraglar ukrain dilinde berilýär, ýöne JavaRush-a gatnaşyjylaryň köpüsi rus dilinde gürleýänligi sebäpli (we esasanam maňa-da) jogaplar rus dilinde bolar.

  3. Jogaplar gysga bolar, sebäbi giňişleýin ýazsaňyz, käbir soraglara jogap aýratyn makala talap edip biler. Söhbetdeşlikler wagtynda şeýle jikme-jik we göwrümli jogaplar gerek däl, sebäbi söhbetdeşiňiziň size zerur temalarda söhbetdeşlik geçirmek üçin diňe bir sagady bar (we ýadyňyzda bolsa, bu ýeterlik). Çuňňur gazmagy halaýanlar üçin baglanyşyk goýaryn.

Geliň, başlalyň.

Kiçi derejeli soraglar we jogaplar

Söhbetdeşlik soraglarynyň we jogaplarynyň derňewi.  1-nji bölüm

Umumy meseleler

1. Haýsy dizaýn nagyşlaryny bilýärsiňiz? Işiňizde ulanan iki galypyňyz barada bize aýdyň.

Şablonlaryň köpdürliligi bar: olar we şu makala bilen olar bilen tanşyp bilersiňiz . Dogrusy, olar bilen jikme-jik tanyşmak isleýänler üçin “Ilki bilen kelläňizi” okamagy maslahat berýärin. Dizaýn nagyşlary " . Onuň kömegi bilen iň esasy dizaýn nagyşlaryny jikme-jik we aňsat öwrenip bilersiňiz. Söhbetdeşlikde mysal hökmünde ulanyp boljak dizaýn nagyşlary barada aýdylanda, ýadyňyza düşýänleriň käbiri:
  • Gurluşykçy , ýygy-ýygydan ulanylýan şablon, nusgawy obýekt döretmäge alternatiwadyr;
  • Polimorfizmi öz içine alýan strategiýa nagşy . .Agny, bizde bir interfeýs bar, ýöne bu interfeýsiň haýsy ýerine ýetirilişiniň funksiýa geçirilendigine baglylykda programmanyň özüni alyp barşy üýtgär (häzirki wagtda strategiýa java programmalarynda hemme ýerde ulanylýar).
Bu siziň üçin ýeterlik däl bolsa, Bahara üns beriň (öňdenem bilýän bolsaňyz), sebäbi bu çarçuwalaryň tutuş platformasydyr, bu bolsa öz gezeginde ýokary we aşak nagyşlar bilen örtülendir. Ine, meniň aýdýan zatlarymyň birnäçe mysaly:
  • Zawod - Programma kontekstinde (ýa-da BeanFactory-da);
  • Singleton - ähli noýba adaty tertipde ýeketäkdir;
  • Proksi - esasan Baharda hemme zat bu nagşy bir ýa-da beýleki görnüşde ulanýar, mysal üçin AOP;
  • Jogapkärçilik zynjyry , Bahar Howpsuzlygynyň işleýän düşünjesine esaslanýan nagyşdyr;
  • Şablon - Bahar Jdbc-de ulanylýar.

Java Core

Söhbetdeşlik soraglarynyň we jogaplarynyň derňewi.  1-nji bölüm

2. Java-da haýsy maglumat görnüşleri bar?

Java-da başlangyç maglumatlar görnüşleri bar:
  • baýt - -128-den 127 aralygyndaky bitewi sanlar, agramy 1 baýt;
  • gysga - -32768 bilen 32767 aralygyndaky bitin sanlar, agramy 2 baýt;
  • int - bitewi sanlar -2147483648-den 2147483647, agramy 4 baýt;
  • uzyn - 9223372036854775808-den 9223372036854775807 aralygyndaky bitewi sanlar, agramy 8 baýt;
  • ýüzmek - -3.4E + 38 bilen 3.4E + 38 aralygyndaky ýüzýän nokatlar, agramy 4 baýt;
  • goşa - ýüzýän nokat sanlary -1.7E + 308 bilen 1,7E + 308 aralygynda, agramy 8 baýt;
  • char - UTF-16-daky ýekeje nyşan, agramy 2 baýt;
  • boolean bahalary hakyky / ýalan , agramy 1 baýt.
Üýşmekdäki obýektleri görkezýän maglumat görnüşleri .

3. Obýekt başlangyç maglumatlar görnüşlerinden nähili tapawutlanýar?

Birinji tapawut: tutulan ýadyň mukdary: başlangyçlar gaty az alýar, sebäbi diňe öz bahasyny öz içine alýar, obýektler bolsa gaty köp dürli gymmatlyklary öz içine alyp biler: primitiwler we beýleki obýektlere salgylanmalar. Ikinji tapawut: Java obýekte gönükdirilen dil, şonuň üçin içindäki zatlaryň hemmesi obýektleriň özara täsiri arkaly işleýär we primitiwler gaty bir gabat gelmeýär (aslynda Java şonuň üçin 100% obýekte gönükdirilen dil däl). Üçünjiden, ikinjisinden aşakda: Java obýektleriň özara täsirine gönükdirilenligi sebäpli, bu obýektleri dolandyrmak üçin köp dürli mehanizmler bar. Mysal üçin, konstruktorlar, usullar, kadadan çykmalar (esasan obýektlerde işleýär) we ş.m. Aslynda, ilkinjileriň haýsydyr bir görnüşde bu obýekte gönükdirilen gurşawda işlemegi (işlemegi) üçin başlangyç görnüşler üçin örtükler oýlanyp tapyldy ( Integer , Character , Double , Boolean ...)

4. Parametrleri salgylanma we baha boýunça geçirmegiň arasynda näme tapawut bar?

Ilkinji meýdanlar öz bahasyny saklaýarlar: mysal üçin, int i = 9 goýsak ; meýdany 9 bahasyny saklaýar . Haçan-da bir obýekte salgylananymyzda, obýekte salgylanma ýa-da başga bir söz bilen aýdylanda, obýektiň salgysynyň ýadynda ýatda saklaýan meýdanymyz bar diýmekdir.
Cat cat = new Cat();
Görnüşi ýaly, bir obýekte salgylanýan meýdanlar bahalary , ýat salgysynyň bahalaryny hem saklaýar. Catagny, pişik täze Cat () obýektiň salgy bahasyny ýatda saklaýar. Bir parametri bir usula geçirenimizde, onuň bahasy göçürilýär. Ilkinji bolan ýagdaýynda, başlangyç gymmaty göçüriler. Şoňa laýyklykda usul asyl nusgasyna täsir etmejek bir göçürme bilen işlär. Salgy görnüşi bolan ýagdaýynda, ýat salgysynyň bahasy degişlilikde göçüriler, salgy salgysy görkezilen obýekt bilen deň bolar. Bu täze baglanyşygy ulanyp obýekti üýtgetsek, köne üçin üýtgediler (ahyrsoňy, ikisi-de bir obýekti görkezýär).

5. JVM, JDK, JRE näme?

JVM - Java wirtual maşyn, düzüjiniň öňünden döredilen Java bytekodyny işleýän wirtual maşyn. JRE - Java iş wagty gurşawy - aslynda Java programma dilinde işleýän programmalary we programmalary işletmek üçin JVM , adaty kitaphanalar we beýleki komponentleri öz içine alýan Java programmalaryny işletmek üçin gurşaw . Başga sözler bilen aýdylanda , JRE düzülen Java programmasyny işletmek üçin zerur zatlaryň bukjasydyr, ýöne programmany işläp düzmek üçin düzüjiler ýa-da düzüjiler ýaly gurallary we enjamlary öz içine almaýar. JDK - Java Ösüş Kitaby - JRE- iň giňeldilen toplumy , ýagny diňe bir işe girizmek üçin däl, eýsem Java programmalaryny ösdürmek üçin gurşaw. JDK JRE-de bar zatlary öz içine alýar, üstesine-de Java-da amaly programmalary döretmek üçin zerur bolan goşmaça gurallar - düzüjiler we düzüjiler (java resminamalaryny hem öz içine alýar).Söhbetdeşlik soraglarynyň we jogaplarynyň derňewi.  1-nji bölüm

6. Näme üçin JVM ulanmaly?

Aboveokarda belläp geçişimiz ýaly, Java Wirtual Machine, düzüjiniň öňünden döredilen Java bytekodyny işleýän wirtual maşyn. .Agny, JVM Java deslapky kody düşünmeýär. Şonuň üçin ilki bilen .java faýllary düzülýär , bu düzülenden soň eýýäm .class giňeltmesi bar we JVM-iň düşünýän şol bir baýt kody görnüşinde hödürlenýär. Her OS-yň öz JVM-i bar, şonuň üçin bytekod faýllaryny alan JVM, bolup geçýän OS-a uýgunlaşyp, ony ýerine ýetirýär. Aslynda dürli JVM-ler sebäpli JDK (ýa-da JRE) wersiýalary dürli OS-ler üçin tapawutlanýar (olaryň hersiniň öz JVM-i talap edilýär). Ösüşiň beýleki programmirleme dillerinde nähili işleýändigini ýadymyzdan çykaralyň. Bir programma düzýärsiňiz, soň onuň kody belli bir OS üçin maşyn kody düzülýär we soňra işledip bilersiňiz. Başgaça aýdylanda, her ulgam üçin programmanyň dürli wersiýalaryny ýazmaly. Java-da goşa kod işlemegiň (JVM kod baýtlaryny düzmek we gaýtadan işlemek) kömegi bilen platforma artykmaçlyklaryndan peýdalanyp bilersiňiz. Bir gezek kody döredip, ony kod koduna düzdük, islendik OS-a geçirdik we ýerli JVM kody işledýär. Bu Java-yň rowaýat häsiýeti - bir gezek ýazyň, islendik ýere işlediň . Bu barada has giňişleýin “ Kapotyň aşagyndaky Java programmalaryny düzmek we ýerine ýetirmekSöhbetdeşlik soraglarynyň we jogaplarynyň derňewi.  1-nji bölüm ” atly makalada okaň .

7. Baýtkod näme?

Aboveokarda aýdyşym ýaly, düzüji Java koduny aralyk baýt kodyna öwürýär (.java giňeldilen faýllar .class giňeltmesi bilen faýllara). Bytecode köp tarapdan maşyn koduna meňzeýär, diňe hakyky prosessordan däl-de, wirtualdan görkezmeler toplumyny ulanýar. Mundan başga-da, programmanyň işleýän hakyky prosessory üçin buýruklaryň ýerine ýetirilişini optimallaşdyrýan JIT düzüjisini ulanmaga gönükdirilen bölümleri öz içine alyp biler. “JIT” kompilýasiýasy, uçuşda jemleniş diýlip hem atlandyrylýar, programma işleýän wagtynda baýt koduny maşyna ýa-da başga bir formatda jemläp, baýt kody ulanyp, programmanyň öndürijiligini ýokarlandyrýan tehnologiýa. Siziň çak edişiňiz ýaly, JVM bytekod işledilende JIT düzüjisini ulanýar. Bytekodyň mysalyna göz aýlalyň: Söhbetdeşlik soraglarynyň we jogaplarynyň derňewi.  1-nji bölümGaty okalmaýar, şeýlemi? Dogrusy, bu biziň üçin görkezme däl, JVM üçin. Ine, bu meselä has gowy düşünmäge kömek etjek bir makala .

8. JavaBean-yň aýratynlyklary haýsylar?

JavaBeans belli bir düzgünli Java synpy. JavaBean ýazmagyň käbir düzgünleri :
  1. Synpda köpçülige açyk üýtgediji bilen boş (parametrleri ýok) köpçülikleýin giriş konstruktory bolmaly . Bu konstruktor, zerur däl kynçylyklar bolmazdan (parametrler bilen gereksiz dawa bolmazlygy üçin) bu synpyň obýektini döretmäge mümkinçilik berýär.

  2. Synpyň içerki meýdanlaryna standart bolmaly bolmaly we kesgitlemek usullary arkaly girip bolýar. Mysal üçin, meýdan ady bolsa , getName we setName we ş.m. Bu öz gezeginde dürli gurallara (çarçuwalara) noýba mazmunyny kynçylyksyz awtomatiki kesgitlemäge we täzelemäge mümkinçilik berýär.

  3. Synpda hashCode () we toString () deň () usullarynyň ýokaşdyrylan görnüşleri bolmaly .

  4. Synp yzygiderli bolmaly, ýagny marker interfeýsi bolmaly - Serializable ýa-da Externalizable interfeýsini durmuşa geçirmeli . Fasuliniň ýagdaýyny ygtybarly tygşytlamak, saklamak we dikeltmek üçin bu zerurdyr.

Söhbetdeşlik soraglarynyň we jogaplarynyň derňewi.  1-7-nji bölümJavaBeans görnüşleri barada bu materialdan okap bilersiňiz .

9. OutOfMemoryError näme?

OutOfMemoryError , Java wirtual maşynyň (JVM) işlemegi bilen baglanyşykly iş wagtyndaky möhüm ýalňyşlyklaryň biridir. JVM bir obýekt bölüp bilmeýän wagty jaň edilýär, sebäbi ýeterlik ýat ýok we zibil ýygnaýjy has köp ýady bölüp bilmeýär. OutOfMemoryError-yň käbir görnüşleri :
  • OutOfMemoryError: Java üýşmeleňi - ýadyň ýeterlik däldigi sebäpli obýekt Java üýşmesine bölünip bilinmez. Erroralňyşlyk ýadyň syzmagy ýa-da häzirki programma üçin deslapky üýşmek ululygy sebäpli bolup biler.

  • OutOfMemoryError: GC overhead çäkden geçdi - maglumatlaryň mukdary üýşmeleňe zordan gabat gelýändigi sebäpli, zibil ýygnaýjy hemişe işleýär we Java programmasy gaty haýal işleýär we netijede zibil ýygnaýjynyň artykmaç çägi geçdi we programma bu ýalňyşlyk bilen ýykyldy.

  • OutOfMemoryError: Talap edilýän massiwiň ululygy VM çäginden ýokary - programmanyň üýşmek ölçeginden has uly bir massiw üçin ýady bölmäge synanyşandygyny görkezýär, bu ýene-de ýadyň ýeterlik bolmazlygy sebäpli bolup biler.

  • OutOfMemoryError: Metaspace - üýşmek metadata üçin bölünen ýer gutardy (metadata sapaklar we usullar üçin görkezmeler).

  • OutOfMemoryError: sebäbe görä ululyk baýtlaryny soraň. Çalyşýan ýerden - üýşmekden ýadyňy böljek bolanda käbir şowsuzlyklar ýüze çykdy we netijede üýşmeleňde ýadyň ýetmezçiligi ýüze çykdy.

10. ackapylan yz näme? Nädip almaly?

“Stack Trace” programmada şu wagta çenli çagyrylan synplaryň we usullaryň sanawydyr. Programmanyň belli bir nokadynda yz yzyny çagyryp bilersiňiz:
StackTraceElement[] stackTraceElements =Thread.currentThread().getStackTrace();
Şeýlelik bilen, LIFO tertibi boýunça düzülen yzygiderli yz elementlerini alarys - Last In First Out . Söhbetdeşlik soraglarynyň we jogaplarynyň derňewi.  1-nji bölümJava-da, adatça, ýygyndy yzy barada gürlänlerinde, ýalňyşlyk (ýa-da kadadan çykma) ýüze çykanda konsolda görkezilýän yz yzyny aňladýar. Munuň ýaly kadadan çykmalaryň yzlaryny alyp bilersiňiz:
StackTraceElement[] stackTraceElements;
try{
                ...
} catch (Exception e) {
   stackTraceElements = e.getStackTrace();
}
Garaz, konsolda kadadan çykma yzlaryny çykarmak barada aýdýan bolsak:
try{
                ...
} catch (Exception e) {
  e.printStackTrace();
}
Mundan başga-da, ýalňyşlyk, barlanmadyk kadadan çykma ýa-da barlanmadyk kadadan çykma bar , biz işlemeýäris, ýöne diňe öňe süreris, programma ýykylanda awtomatiki usulda konsolda kadadan çykmalar yzlaryny alarys. Konsolda yz yzynyň kadasynyň kiçijik mysaly: Stack Trace hakda has giňişleýin maglumaty şu ýerdenSöhbetdeşlik soraglarynyň we jogaplarynyň derňewi.  1-nji bölüm okap bilersiňiz . Bu gün bu meselä ünsi jemläris ...Söhbetdeşlik soraglarynyň we jogaplarynyň derňewi.  1-10-njy bölüm
Tapgyryň beýleki materiallary:
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION