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

Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa. Bagean 5

Diterbitake ing grup
Halo, halo! Dina iki, pangembang Jawa akeh dikarepake. Mesthi wae, aku ora bisa menehi lowongan, nanging aku bakal nyoba mbantu sampeyan entuk kawruh anyar lan nutup sawetara kesenjangan. Dadi, kita terus nganalisa 250+ pitakonan wawancara kanggo pangembang Jawa. Pranala menyang bagean sadurunge analisis ana ing pungkasan artikel.Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 5 - 1

39. Apa sing diarani modifier akses ing basa Jawa? Sebutna. Apa padha digunakake kanggo?

Aku sadurunge diterangake modifiers akses ing pitakonan bab unsur enkapsulasi Jawa. Nanging aku bakal ngelingake sampeyan. Modifiers akses ing Jawa minangka tembung kunci sing nggambarake tingkat akses sing diwenehake marang komponen Jawa tartamtu. Modifiers akses bisa dadi:
  • umum - unsur karo modifier iki bakal diakses umum. Sing. lapangan lan metode, kelas sing diumumake karo modifier umum katon ing kelas liyane saka paket saiki lan saka paket eksternal;
  • dilindhungi - unsur karo modifier iki bakal diakses saka ngendi wae ing kelas saiki paket saiki utawa ing kelas turunan, sanajan padha ing paket liyane;
  • standar , utawa ilang modifier - modifier iki digunakake implicitly nalika akses modifier ora kasebut ing kabeh. Iku padha karo sing sadurunge, kajaba visibilitas diijini ing kelas turunan sing ana ing paket liyane;
  • pribadi paling pribadi kabeh modifiers, ngidini akses menyang unsur mung ing kelas saiki.
Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 5 - 2

40. Sebutake fitur utama metode statis lan variabel

Formulasi sing aneh banget - "metode variabel". Mesthi iki nuduhake cara biasa, non-statis. Dadi, prabédan utama yaiku metode statis kalebu kelas lan, nyatane, sampeyan ora perlu nggawe conto kelas iki: mung bisa diarani nggunakake jinis kelas. Contone, kita duwe cara statis kanggo pet kucing:
public class CatService {
   public static void petTheCat(Cat cat) {
       System.out.println("Погладить кота - " + cat.getName());
   }
Kita ora butuh conto kelas CatService kanggo nyebut :
Cat cat = new Cat(7, "Bobi");
CatService.petTheCat(cat);
Nalika cara biasa digandhengake karo (milik) obyek, lan kanggo nelpon, sampeyan kudu duwe conto (obyek) ing ngendi metode kasebut bakal diarani. Contone, kucing duwe metode non-statis - meowing:
class Cat {
   public void mew() {
       System.out.println("Meow! Meow! Meow!");
   }
Kanggo nelpon cara iki, kita butuh conto tartamtu saka kucing:
Cat cat = new Cat(7, "Bobi");
cat.mew();

41. Apa watesan utama babagan metode statis lan "variabel"?

Kaya sing dakkandhakake sadurunge, watesan utama metode reguler yaiku kudu ana sawetara conto sing diarani metode iki. Nanging cara statis ora mbutuhake iki, nanging ora bisa ngrujuk marang referensi iki - menyang unsur obyek saiki - amarga obyek saiki ora ana.

42. Apa tegese tembung kunci statis? Bisa cara statis ditimpa utawa kakehan?

Unsur ditetepake dening tembung kunci statis ora kagungane obyek saka kelas, nanging rodo kanggo kelas, lan dimuat nalika kelas dhewe dimuat. Unsur statis mung siji-sijine kanggo kabeh program, lan unsur reguler mung siji-sijine kanggo obyek tartamtu. Statis bisa dadi:
  • lapangan kelas;
  • blok initialization kelas;
  • metode kelas;
  • kelas internal saka kelas (Nanging, sing isih tautologi).
Cara statis ora bisa ditindhes: kalebu kelas lan ora diwarisake, nanging ing wektu sing padha bisa kakehan.

43. Apa metode bisa statis lan abstrak ing wektu sing padha?

Aku wis kasebut ing artikel sadurunge: cara ora bisa abstrak lan statis ing wektu sing padha. Abstraksi metode tegese kudu ditimpa ing penerus. Ing wektu sing padha, cara statis kalebu kelas lan ora bisa ditindhes: iki bakal nyebabake kontradiksi, sing bakal dideleng lan kompilator bakal ngipat-ipati. Yen sampeyan duwe kahanan kaya mengkono, sampeyan kudu mikir kanthi serius babagan arsitektur aplikasi sampeyan (sawise kabeh, jelas ana sing salah).Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 5 - 3

44. Apa bisa nggunakake cara statis ing tengah-tengah biasa? kosok baline? Kenging punapa?

Cara statis bisa digunakake ing cara biasa, amarga ora ana sing nyegah. Ing wektu sing padha, kahanan mbalikke mokal: cara statis ora bisa nggunakake cara biasa tanpa referensi kanggo conto tartamtu saka kelas iki. Lan kita elinga, ing referensi iki ora kasedhiya kanggo anggota kelas statis: ana bisa dadi akeh obyek tartamtu saka kelas sing pengin, lan saben wong bakal duwe referensi kanggo dhewe nang - iki . Lan kepiye sampeyan ngerti apa link iki sing kudu sampeyan lakoni? Nanging ora bisa. Mulane, unsur statis ora bisa ngrujuk menyang non-statis, tanpa referensi kanggo obyek tartamtu. Bener, cara statis bisa nggunakake metode non-statis mung yen nduweni referensi kanggo obyek tartamtu. Contone, sing teka minangka argumentasi:
public static void petTheCat(Cat cat) {
   System.out.println("Погладить кота - " + cat.getName());
}
Ing kene kita weruh yen metode statis petTheCat nelpon cara normal, non-statis saka obyek Cat - getName .

45. Apa antarmuka? Apa ana antarmuka pungkasan?

Kaya sing dieling-eling, ora ana warisan pirang-pirang ing Jawa. Antarmuka minangka alternatif. Antarmuka katon kaya kelas banget diudani. Padha nemtokake fungsi tanpa implementasine tartamtu, kang dipun ginakaken dening kelas sing ngleksanakake (ngleksanakake) antarmuka iki. Tuladha antarmuka:
public interface Animal {
    void voice();
}
Conto implementasi antarmuka dening kelas:
class Cat implements Animal {

   @Override
   public void voice() {
       System.out.println("Meow! Meow! Meow!");
   }
}
Babagan utama sampeyan kudu ngerti babagan nggunakake antarmuka yaiku:
  1. Cara antarmuka kudu mung ngemot header, tanpa awak metode tartamtu, i.e. kudu abstrak (nanging tanpa nggunakake tembung kunci abstrak ). Pangecualian kanggo iki yaiku metode statis lan standar, sing mbutuhake awak metode.
  2. A kelas bisa ngleksanakake akeh antarmuka (kaya Aku ngandika, iki alternatif kanggo sawetara warisan), kang ditulis dipisahake dening koma: kelas Lion ngleksanakake Animal, Wild .
  3. Antarmuka digawe nggunakake antarmuka tembung kunci .
  4. Nalika ngleksanakake antarmuka dening kelas, tembung kunci punika implements .
  5. Kelas sing ngetrapake antarmuka tartamtu kudu ngetrapake kabeh metode abstrak, utawa kudu nyatakake dhewe abstrak.
  6. Tujuan utama nggunakake antarmuka yaiku kanggo ngleksanakake polimorfisme (kemampuan obyek kanggo njupuk akeh formulir).
  7. Minangka aturan, modifiers akses kanggo cara ora ditulis ing antarmuka: padha umum minangka standar , lan modifiers liyane saka umum ora bisa ditemtokake. Wiwit Java 9, sampeyan bisa nggunakake modifiers pribadi kanggo cara.
  8. Variabel antarmuka minangka final statis kanthi standar , kanthi tembung liyane, konstanta: padha kudu diinisialisasi langsung ing antarmuka.
  9. Sampeyan ora bisa nggawe obyek antarmuka.
Jawaban kanggo pitakonan apa antarmuka bisa dadi final mesthi ora. Sawise kabeh, inti saka antarmuka kudu dileksanakake. Lan kita kabeh elinga banget, final ing tingkat kelas ndadekake non-diwarisake, lan ing cilik saka antarmuka, non-implementable. Napa kita butuh antarmuka sing ora bisa ditindakake lan digunakake? Sing bener - ora perlu! Lan compiler mikir supaya)) Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 5 - 4Makna mung katon karo introduksi saka cara statis ing antarmuka karo Jawa 8, nanging iki ora ngganti kasunyatan sing antarmuka ora bisa final. Aku ngomong babagan antarmuka, banget cethek, amarga ... iki topik sing amba. Waca liyane babagan iki ing artikel babagan antarmuka ing Jawa lan prabédan antarane kelas abstrak lan antarmuka .

46. ​​Ing ngendi aku bisa miwiti lapangan statis?

Kolom statis bisa diwiwiti:
  • langsung marang deklarasi, liwat tandha padha = ;
  • ing blok initialization statis;
  • ing blok initialization non-statis, nanging sampeyan kudu ngerti yen saben obyek digawe, lapangan iki bakal ditindhes dening pamblokiran initialization iki;
  • ing konstruktor kelas. Saben-saben konstruktor iki diarani (yaiku, nalika obyek digawe liwat konstruktor iki), lapangan iki bakal ditumpuk;
  • ing cara statis;
  • ing cara non-statis;
  • ing internal statis lan non-statis, lokal lan anonim kelas.

47. Apa kelas anonim?

Kelas anonim yaiku kelas sing ora duwe jinis dhewe. Aku ngomong apa? Nalika kita ngomong bab antarmuka, Aku kasebut sing ora bisa nggawe obyek antarmuka: sampeyan mung bisa nggawe obyek saka kelas sing ngleksanakake antarmuka. Apa yen sampeyan ora pengin ngleksanakake antarmuka ing kelas, nanging sampeyan isih perlu obyek saka jinis antarmuka? Lan paling kamungkinan, iki bakal dadi kasus siji nggunakake obyek iki. Lan sampeyan ora perlu nggawe kelas implementasine lengkap. Kepiye carane sampeyan nindakake iki? Bener! Liwat kelas anonim! Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 5 - 5Ayo kita duwe sawetara antarmuka Animal :
public final interface Animal {
   public void voice();
}
Yen kita pengin instantiate antarmuka iki liwat kelas anonim:
Animal cat = new Animal() {
   @Override
   public void voice() {
       System.out.println("Meow! Meow! Meow!");
   }
};
Banjur sampeyan bisa nggunakake obyek iki kanthi aman lan cara sing ditindakake - voice . Yaiku, kelas anonim ngetrapake antarmuka iki lan kabeh metode abstrak ing kene lan saiki. Yen ora, kita ora bakal bisa nggawe antarmuka / obyek kelas abstrak, amarga ana unimplemented / cara abstrak. Kaya sing dakkandhakake, kelas anonim digunakake ora mung kanggo ngleksanakake metode abstrak saka antarmuka, nanging uga kanggo ngetrapake metode abstrak saka kelas abstrak. Pendekatan iki apik kanggo kahanan nalika obyek digunakake siji-wektu utawa implementasine diwenehi saka cara mung perlu sapisan, lan ana ora perlu kanggo nggawe kelas kapisah sing bakal ngleksanakake kelas abstrak dibutuhake / antarmuka. Nanging aku uga bakal nyathet yen panggunaan kelas anonim minangka kedadeyan langka ing karya: minangka aturan, pilihan isih diwenehake kanggo kelas biasa. Sampeyan bisa maca liyane babagan kelas anonim ing artikel iki .

48. Apa iku kelas primitif?

Kanggo kula, pitakonan iki aneh banget lan, mbok menawa, iki pitakonan jebakan, amarga ing Jawa ora ana kelas primitif: kajaba mung konsep jinis primitif, sing wis kita nimbang sadurunge. Nalika kita eling, ana 8 jinis primitif ing Jawa - byte , short , int , long , float , double , char , boolean .Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 5 - 6

49. Apa kelas "bungkus"?

Masalah utama nggunakake jinis primitif ing Jawa yaiku isih dudu kelas, lan Jawa isih dadi basa OOP. Tegese, program sing ditulis ing basa iki dikurangi dadi interaksi antarane obyek. Inggih, primitif dudu obyek. Dheweke ora duwe metode, malah sing standar saka kelas Obyek . Nah, kepiye yen kita kudu nggunakake primitif minangka kunci ing Peta ? Banjur sampeyan kudu nelpon metode hashCode . Sampeyan uga bisa nelpon cara equals ana . Apa banjur? Bisa uga ana akeh wektu sing kudu ana kelas, lan dudu primitif, sing ndadekake primitif ora digunakake lan unsur sing ora dikarepake ing program kasebut, amarga iki ngrusak ide OOP. Nanging ora kabeh iku ala kaya sing katon. Sawise kabeh, Jawa duwe konsep bungkus primitif. Saben jinis primitif duwe kelas analog:
  • byte -> Byte.class
  • singkat -> Singkat.kelas
  • int -> Integer.class
  • dawa -> Long.kelas
  • float -> Float.kelas
  • pindho -> pindho.kelas
  • char -> Karakter.kelas
  • boolean -> Boolean.class
Iki minangka perwakilan saka jinis sing prasaja, nanging ing wangun kelas lengkap kanthi macem-macem cara lan fungsional. Kanggo nggunakake kelas kasebut kanthi trep, konsep autoboxing lan unboxing dienalake. Autoboxing - konversi otomatis saka jinis primitif menyang kelas analog yen perlu (contone, int kanggo Integer ). Unboxing minangka proses mbalikke saka sing sadurunge: kanthi otomatis ngowahi kelas pambungkus primitif menyang jinis primitif (contone, Integer menyang int ). Thanks kanggo introduksi kelas bungkus primitif lan proses autoboxing lan unboxing , jinis primitif bisa dadi anggota lengkap saka basa OOP - Jawa. Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 5 - 7Kanggo mangerteni sing luwih lengkap babagan topik iki, aku banget nyaranake maca artikel iki .

50. Apa kelas Nested? Nalika digunakake?

Kelas bersarang yaiku kelas njero sing dadi anggota kelas liyane. Ing Jawa ana 4 jinis kelas internal kayata: 1. Kelas Inner Kelas iki diumumake langsung ing awak kelas liyane. Kelas njero sing bersarang bisa ngakses lapangan utawa metode pribadi saka kelas njaba. Contone, ayo nggawe kebon binatang sing bakal duwe kewan - zebra:
public class Zoo {
   class Zebra {
       public void toFeed(String food) {
           System.out.println("Дать зебре - " + food);
       }
   }
}
Ora ana sing rumit, ta? Ayo goleki conto nggawe obyek kelas njero:
Zoo.Zebra zebra = new Zoo().new Zebra();
zebra.toFeed("яблоко");
Nalika sampeyan wis weruh, iku penting kanggo nggawe obyek saka kelas rongko, adhedhasar referensi sing bisa nggawe obyek saka kelas utama. Aku uga pengin Wigati sing kelas njero nested ora bisa duwe cara statis utawa kolom statis. Iku amarga kelas njero digandhengake kanthi implisit karo obyek saka kelas njaba lan ora bisa ngumumake cara statis ing dhewe. 2. Kelas nested statis Kelas iki padha karo sing sadurunge, mung nduweni modifier akses statis sing cedhak karo deklarasi kelas. Amarga kelas iki ora nduweni akses menyang lapangan non-statis saka kelas njaba, luwih kaya bagean statis saka kelas njaba tinimbang kelas njero. Ing kasus iki, data kelas nduweni akses menyang kabeh anggota statis saka kelas njaba, malah pribadi. Conto kelas nested statis:
public class Zoo {
   static class Zebra {
       public void toFeed(String food) {
           System.out.println("Дать зебре - " + food);
       }
   }
}
Cara nggawe rada beda karo sing sadurunge:
Zoo.Zebra zebra = new Zoo.Zebra();
zebra.toFeed("яблоко");
Kene kita ora perlu obyek saka kelas njaba kanggo nggawe obyek saka kelas statis nested. Saka kelas njaba, kita mung mbutuhake jinise supaya bisa nemokake lokasi kelas bersarang. 3. Kelas lokal Kelas lokal yaiku kelas sing diumumake ing jero awak metode, lan nggawe lan nggunakake obyek saka kelas lokal mung bisa ditindakake ing metode iki. Tuladha:
public class Zoo {
   public void toFeed(String animal, String food) {
       switch(animal){
           case "зебра":
               class Zebra {
                   void toFeedZebra(String food) {
                       System.out.println("Дать зебре - " + food);
                   }
               }
               Zebra zebra = new Zebra();
               zebra.toFeedZebra(food);
               ...
Tuladha panganggone:
Zoo zoo = new Zoo();
zoo.toFeed("зебра", "яблоко");
Tanpa ndeleng kode kanggo metode toFeed , sampeyan ora bakal curiga ana kelas lokal, apa sampeyan? Kelas lokal ora bisa statis utawa transient , nanging bisa ditandhani minangka abstrak utawa final (mung UTAWA, amarga nggunakake loro modifiers iki bakal nimbulaké konflik). 4. Kelas anonim Kita wis ngomong babagan kelas anonim ing ndhuwur, lan nalika sampeyan ngelingi, bisa digawe saka rong sumber - antarmuka lan kelas. Alasan kanggo nggunakake Kelas statis lan non-statis internal digunakake amarga kadhangkala luwih apik kanggo nyelehake kelas cilik ing kelas sing luwih gedhe lan tetep bebarengan: kanthi cara iki bakal duwe kohesi sing luwih dhuwur lan tujuan umum. Bener, panggunaan kelas nested nambah enkapsulasi kode. Alesan kanggo milih kelas lokal bisa uga amarga kelas tartamtu digunakake sacara eksklusif ing siji metode. Ing kasus iki, perlu kanggo nyebar kode ing saindhenging aplikasi? Ora. Nanging ing wektu sing padha aku bakal nambah sing ing laku aku wis tau ndeleng nggunakake kelas lokal, amarga perlu kanggo wong-wong mau Highly kontrovèrsial. Inggih, alesan kanggo nggunakake kelas anonim bisa uga sing implementasine tartamtu saka antarmuka utawa kelas abstrak bakal dibutuhake mung sapisan, supaya ana ora perlu kanggo nggawe kapisah, kelas lengkap karo implementasine kanggo iki. Nanging, kanthi cara sing gampang, kita ngetrapake metode sing dibutuhake liwat kelas anonim, nggunakake obyek iki lan lali babagan iki (uga, kolektor Sampah ngelingi). Iki lan artikel ikiAnalisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 5 - 8 bakal mbantu sampeyan sinau kelas internal kanthi luwih rinci .

51. Apa modifiers akses bisa duwe kelas?

Kaya sing kita eling, ana macem-macem jinis kelas lan modifikasi akses sing beda-beda bisa ditrapake:
  • kelas njaba bisa duwe akses modifier umum utawa tanpa modifier (default modifier);
  • kelas utama ndhukung kabeh 4 akses modifiers;
  • kelas statis nested ndhukung kabeh modifiers akses kajaba dilindhungi , amarga modifier iki gawe katut warisan, kang mbantah anggota statis saka kelas (unsur statis ora dipun warisaken);
  • kelas lokal mung bisa duwe modifier gawan (i.e., ora modifier ing kabeh);
  • kelas anonim : yen ora ana deklarasi jinis kelas, mula ora ana modifikasi akses.
Iki ngendi kita bakal mandheg dina iki. Sampai jumpa lagi!Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 5 - 9
Bahan liyane ing seri:
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION