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 5

Diterbitake ing grup
Halo, halo! Pangembang Jawa saiki akeh dikarepake. Mesthi wae, aku ora bisa menehi lowongan kerja, nanging aku bakal nyoba mbantu sampeyan entuk kawruh anyar lan ngisi sawetara kesenjangan. Dadi ayo nerusake review pitakonan wawancara pangembang Jawa. Sampeyan bisa nemokake pranala menyang bagean review sadurunge ing pungkasan artikel. Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 5 - 1

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

Aku sadurunge dijamin akses modifiers ing pitakonan bab unsur Jawa digunakake kanggo entuk enkapsulasi. Nanging isih, aku bakal ngelingake sampeyan. Modifiers akses ing Jawa minangka tembung kunci sing nggambarake tingkat akses sing diwenehake marang komponen Jawa tartamtu. Modifiers akses ing ngisor iki ana:
  • public - unsur sing ditandhani karo modifier iki umum. Ing tembung liya, lapangan lan cara, lan kelas sing diumumake karo modifier umum katon ing kelas liyane ing paket dhewe lan ing paket eksternal;
  • dilindhungi - unsur sing ditandhani karo modifier iki bisa diakses saka ngendi wae ing kelas dhewe ing paket saiki utawa kelas asale, sanajan ana ing paket liyane;
  • standar (utawa ora ana modifier ing kabeh) ditrapake implisit nalika ora akses modifier dituduhake. Iku padha karo sadurunge, kajaba sing katon ing kelas asalé ditemokaké ing paket liyane;
  • pribadi - iki paling pribadi saka kabeh modifiers. Iki ngidini akses menyang unsur mung ing kelas saiki.

40. Sebutake fitur utama metode statis lan non-statis

Bentenane utama yaiku metode statis kalebu kelas. Nyatane, sampeyan ora perlu nggawe conto kelas iki - cara statis bisa diarani mung saka jinis kelas. Contone, umpamane kita duwe cara statis kanggo ngelus kucing:
public class CatService {
   public static void petTheCat(Cat cat) {
       System.out.println("Pet the cat: " + cat.getName());
   }
Kita ora butuh conto kelas CatService kanggo nyebut:
Cat cat = new Cat(7, "Bobby");
CatService.petTheCat(cat);
Miturut kontras, cara biasa kaiket (milik) obyek. Kanggo nelpon, sampeyan kudu duwe conto (obyek) ing ngendi metode kasebut bakal diarani. Contone, umpamane kucing kita duwe metode non-statis meow() :
class Cat {
   public void meow() {
       System.out.println("Meow! Meow! Meow!");
   }
Kanggo nelpon cara iki, kita butuh conto tartamtu saka kucing:
Cat cat = new Cat(7, "Bobby");
cat.meow();

41. Apa watesan utama sing ditrapake kanggo metode statis lan non-statis?

Kaya sing dakkandhakake sadurunge, watesan utama metode biasa (non-statis) yaiku kudu ana sawetara conto sing diarani metode kasebut. Nanging cara statis ora mbutuhake iki. Kajaba iku, metode statis ora bisa nggunakake referensi iki kanggo unsur obyek amarga saiki ana obyek saiki kanggo metode kasebut.

42. Apa tegese tembung kunci statis? Apa cara statis bisa ditindhes utawa kakehan?

Unsur sing ditandhani nganggo tembung kunci statis ora kalebu ing sawijining instance saka kelas, nanging kanggo kelas kasebut dhewe. Iku dimuat nalika kelas dhewe dimuat. Unsur statis padha kanggo kabeh program, nalika unsur non-statis padha mung kanggo obyek tartamtu. Unsur ing ngisor iki bisa dadi statis:
  • lapangan saka kelas;
  • blok initialization saka kelas;
  • metode kelas;
  • kelas nested saka kelas (mesthi, iki uga 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 mangsuli iki ing artikel sadurunge: cara ora bisa abstrak lan statis ing wektu sing padha. Yen metode abstrak, tegese kudu ditimpa ing kelas bocah. Nanging cara statis kalebu kelas, lan ora bisa diganti. Iki nggawe kontradiksi, sing compiler bakal sok dong mirsani lan njaluk upset babagan. Yen sampeyan nemokake dhewe ing kahanan iki, sampeyan kudu mikir kanthi serius babagan kabeneran arsitektur aplikasi sampeyan (petunjuk: ana sing jelas salah). Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 5 - 2

44. Apa metode statis bisa digunakake ing tengah-tengah metode non-statis? Lan kosok balene? Kenging punapa?

Kita bisa nggunakake cara statis ing cara non-statis. Ora ana sing ngalangi. Yen ngandika, ngelawan ora bisa: cara statis ora bisa nggunakake cara non-statis tanpa referensi conto tartamtu saka kelas. Elingi, anggota statis saka kelas ora duwe akses menyang referensi iki : sampeyan bisa duwe akeh obyek konkrit saka kelas sing kaya, lan saben wong bakal ngemot referensi iki , kang poto-referensi. Dadi carane nemtokake referensi iki digunakake? Eh, sampeyan ora. Mulane unsur statis ora bisa ngrujuk marang sing ora statis tanpa referensi menyang obyek tartamtu. Sejatine, cara statis bisa nggunakake cara non-statis mung yen ana referensi kanggo obyek tartamtu. Contone, siji sing teka minangka argumen metode:
public static void petTheCat(Cat cat) {
   System.out.println("Pet the cat: " + cat.getName());
}
Kene kita waca sing ing statis petTheCat () cara nelpon getName , cara non-statis biasa saka obyek Cat .

45. Apa antarmuka? Apa ana antarmuka pungkasan?

Kita bakal ngelingi yen Jawa ora duwe pirang-pirang warisan. Antarmuka minangka alternatif. Antarmuka kaya kelas sing diudani. Dheweke nemtokake fungsi nanging dudu implementasi konkrit. Tugas kasebut ditinggalake menyang kelas sing ngetrapake antarmuka kasebut. Tuladha antarmuka:
public interface Animal {
    void speak();
}
Conto implementasi antarmuka dening kelas
class Cat implements Animal {

   @Override
   public void speak() {
       System.out.println("Meow! Meow! Meow!");
   }
}
Mangkene perkara utama sing kudu dingerteni babagan nggunakake antarmuka:
  1. Cara antarmuka mung kudu ngemot header. Dheweke kudu ora duwe awak metode tartamtu, yaiku kudu abstrak (sanajan ora nggunakake tembung kunci abstrak ). Ana pangecualian: cara statis lan metode standar, sing mbutuhake awak metode.

  2. A kelas bisa ngleksanakake akeh antarmuka (kaya aku ngandika, antarmuka minangka alternatif kanggo sawetara warisan). Jeneng antarmuka dipisahake kanthi koma ing header metode: kelas Singa ngetrapake Animal, Wild .

  3. Antarmuka digawe nggunakake tembung kunci antarmuka .

  4. Nalika kelas ngleksanakake antarmuka, kita nggunakake tembung kunci 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 (kanggo menehi obyek kemampuan kanggo njupuk akeh formulir).

  7. Minangka aturan, akses modifiers kanggo cara ora dituduhake ing antarmuka: padha umum minangka standar, lan sampeyan ora bisa nemtokake modifiers liyane saka umum . Miwiti karo Java 9, sampeyan bisa nggunakake modifiers pribadi ing cara.

  8. Kanthi gawan, variabel antarmuka minangka final statis . Ing tembung liya, iku konstanta - kudu diinisialisasi langsung ing antarmuka.

  9. Sampeyan ora bisa nggawe conto antarmuka.

Jawaban kanggo pitakonan apa antarmuka bisa dadi final, mesthi, ora. Pancen, kabeh titik duwe antarmuka yaiku supaya bisa ditindakake. Lan kita kabeh elinga banget, modifier final ing tingkat kelas ndadekake kelas ora diwarisake, lan ing cilik saka antarmuka - ora implementable. Napa kita butuh antarmuka sing ora bisa ditindakake lan digunakake? Sampeyan bener - kita ora bakal! Lan compiler setuju. :) Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 5 - 3Bener, karo introduksi saka cara antarmuka statis wiwit Jawa 8, bisa uga ana titik, nanging iki ora ngganti kasunyatan sing antarmuka ora bisa final. Aku wis mung ngedika bab antarmuka banget superficially, awit iki topik sing wiyar. Kanggo luwih lengkap babagan iki, deleng artikel babagan antarmuka ing Jawa lan prabédan antarane kelas abstrak lan antarmuka .

46. ​​Ngendi kolom statis bisa diwiwiti?

Kolom statis bisa diwiwiti:
  • langsung sawise deklarasi, nggunakake tandha padha ( = );
  • ing blok initialization statis;
  • ing blok inisialisasi non-statis (nanging sampeyan kudu ngerti yen saben obyek digawe, lapangan statis bakal ditindih nalika pemblokiran initialization iki dieksekusi;
  • ing konstruktor kelas. Saben-saben konstruktor diarani (yaiku, saben obyek digawe nggunakake konstruktor iki), lapangan bakal ditumpuk;
  • ing cara statis;
  • ing cara non-statis;
  • ing kelas statis lan non-statis, lokal, lan anonim.

47. Apa kelas anonim?

Kelas anonim yaiku kelas sing ora duwe jinis dhewe. Aku ngomong apa? Nalika kita ngedika bab antarmuka, Aku kasebut sing ora bisa nggawe Kayata saka obyek: sampeyan mung bisa nggawe Kayata saka kelas sing ngleksanakake antarmuka. Apa yen sampeyan ora pengin sawetara kelas kanggo ngleksanakake antarmuka nanging mbutuhake obyek sing ngleksanakake antarmuka? Lan iki kamungkinan mung nggunakake obyek. Lan sampeyan ora perlu nggawe kelas implementasine lengkap. Kepiye carane sampeyan nindakake? Bener! Kanthi nggunakake kelas anonim! Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 5 - 4Upaminipun kita duwe sawetara antarmuka Animal :
public final interface Animal {
   public void speak();
}
Yen kita pengin nggunakake kelas anonim kanggo instantiate antarmuka sing diwenehake:
Animal cat = new Animal() {
   @Override
   public void speak() {
       System.out.println("Meow! Meow! Meow!");
   }
};
Banjur, sampeyan bisa kanthi aman nggunakake obyek iki lan dileksanakake ngandika () cara. Ing tembung liya, kelas anonim ngetrapake antarmuka lan kabeh metode abstrak, ing kene lan saiki. Yen ora, kita ora bakal bisa nggawe antarmuka / obyek kelas abstrak amarga bakal ana cara unimplemented / abstrak. Kaya sing dakkandhakake, kelas anonim digunakake ora mung kanggo ngetrapake metode abstrak antarmuka nanging uga kanggo ngetrapake metode abstrak saka kelas abstrak. Pendekatan iki apik kanggo kahanan nalika obyek digunakake sapisan utawa nalika implementasine metode tartamtu dibutuhake mung sapisan. Ora perlu nggawe kelas kapisah sing bakal ngetrapake kelas / antarmuka abstrak sing dibutuhake. Nanging aku uga nyathet yen kelas anonim arang digunakake ing karya. Minangka aturan, kelas biasa isih diwenehi pilihan. Sampeyan bisa maca liyane babagan kelas anonim kene ing artikel iki .

48. Apa iku kelas primitif?

Aku iki pitakonan mblusukake, bisa uga pitakonan trick, amarga Jawa ora duwe kelas primitif. Mung ana konsep jinis primitif, sing dianggep sadurunge. Kita kelingan yen Jawa nduweni 8 jinis primitif: byte , short , int , long , float , double , char , boolean .

49. Apa iku kelas bungkus?

Masalah utama nggunakake jinis primitif ing Jawa yaiku dudu kelas, lan Jawa minangka basa OOP. Sing, program sing ditulis ing basa iki jumlah interaksi antarane obyek. Nanging primitif dudu obyek. Dheweke ora duwe metode, malah metode standar kelas Obyek . Nanging kepiye yen kita kudu nggunakake primitif minangka kunci ing Peta ? Banjur kita kudu nelpon metode hashCode () . Sampeyan uga bisa nelpon cara padha () ana. Apa banjur? Ana oodles lan oodles wektu ngendi sampeyan kudu kelas, ora primitif. Iki ndadekake primitif unsur unusable lan undesirable ing program amarga padha nglanggar banget idea saka OOP. Nanging kahanan kasebut ora kaya sing dikira. Sawise kabeh, Jawa duwe konsep bungkus primitif. Ing Jawa, saben jinis primitif duwe kembar - kelas bungkus.
  • byte -> Byte.class
  • singkat -> Singkat.kelas
  • int -> Integer.class
  • dawa -> Long.kelas
  • float -> Float.kelas
  • pindho -> pindho.kelas
  • char -> Karakter.kelas
  • boolean -> Boolean.class
Jinis iki makili jinis prasaja, nanging ing kelas lengkap karo Bunch saka macem-macem cara lan mbiyantu. Konsep autoboxing lan unboxing diwenehake supaya kelas kasebut bisa digunakake kanthi gampang. Autoboxing minangka konversi otomatis saka jinis primitif menyang kelas analog, yen perlu (contone, ngowahi int dadi Integer ). Unboxing minangka proses ngelawan: konversi otomatis kelas pambungkus primitif menyang jinis primitif (contone, ngowahi Integer dadi int ). Thanks kanggo introduksi kelas bungkus primitif lan proses autoboxing lan unboxing , jinis primitif saiki dadi anggota lengkap Jawa minangka basa OOP. Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 5 - 5Kanggo diskusi sing luwih jero babagan topik iki, aku nyaranake maca artikel iki .

50. Apa iku kelas nested? Ing ngendi iku digunakake?

Kelas bersarang yaiku kelas sing dadi anggota kelas liyane. Ana 4 jinis kelas nested ing basa Jawa: 1. Inner class Kelas iki diumumake langsung ing awak kelas liyane. Kelas njero minangka kelas nested non-statis lan bisa ngakses sembarang lapangan pribadi utawa cara conto saka kelas njaba. Contone, ayo nggawe kebon binatang sing ngemot kewan - zebra:
public class Zoo {
   class Zebra {
       public void eat(String food) {
           System.out.println("Zebra eats " + food);
       }
   }
}
Ora rumit, ta? Ayo goleki conto nggawe conto kelas njero:
Zoo.Zebra zebra = new Zoo().new Zebra();
zebra.eat("apple");
Nalika sampeyan wis katon, iku perlu kanggo nggawe obyek saka kelas enclosing. Banjur sampeyan nggunakake referensi obyek kanggo nggawe conto saka kelas utama. Aku uga pengin nuduhake yen kelas njero (kelas nested non-statis) ora bisa duwe metode statis utawa kolom statis. Iki amarga kelas njero digandhengake kanthi implisit karo conto saka kelas njaba, mula ora bisa ngumumake metode statis ing awake dhewe. 2. Kelas nested statis Kelas iki padha karo kategori sadurungé, nanging padha duwe modifier akses statis ing deklarasi kelas. Wiwit kelas iki ora nduweni akses menyang lapangan non-statis saka kelas njaba, katon luwih kaya bagean statis saka kelas njaba tinimbang kelas njero. Nanging kelas iki nduweni akses menyang kabeh anggota statis saka kelas njaba, malah pribadi. Conto kelas nested statis:
public class Zoo {
   static class Zebra {
       public void eat(String food) {
           System.out.println("Zebra eats " + food);
       }
   }
}
Iki digawe kanthi rada beda saka sadurunge:
Zoo.Zebra zebra = new Zoo.Zebra();
zebra.eat("apple");
Kene kita ora perlu obyek saka kelas njaba kanggo nggawe obyek saka kelas nested statis. Kita mung kudu ngerti jeneng kelas nested kanggo nemokake ing kelas njaba. 3. Kelas lokal Kelas lokal yaiku kelas sing diumumake ing jero awak metode. Obyek saka kelas lokal bisa digawe lan digunakake mung ing cara enclosing. Tuladha:
public class Zoo {
   public void feed(String animal, String food) {
       switch(animal) {
           case "zebra":
               class Zebra {
                   public void eat(String food) {
                       System.out.println("Zebra eats " + food);
                   }
               }
               Zebra zebra = new Zebra();
               zebra.eat(food);
               ...
Iki contone:
Zoo zoo = new Zoo();
zoo.feed("zebra", "apple");
Yen sampeyan ora weruh kode kanggo feed () cara, sampeyan bakal ora malah Suspect sing kelas lokal ana, sampeyan? A kelas lokal ora bisa statis utawa dilut , nanging bisa ditandhani minangka abstrak utawa final (siji UTAWA liyane, nanging ora loro, amarga bebarengan nggunakake loro modifiers iki nggawe konflik). 4. Kelas anonim Kita wis ngomong babagan kelas anonim ing ndhuwur, lan sing bakal sampeyan eling, bisa digawe saka rong sumber - antarmuka lan kelas. Alasan kanggo nggunakake kelas statis lan non-statis Nested digunakake amarga kadhangkala luwih apik kanggo nampilake kelas cilik ing kelas sing luwih umum lan tetep bebarengan supaya padha duwe kohesi sing luwih dhuwur lan tujuan umum. Sejatine, kelas bersarang ngidini sampeyan nambah enkapsulasi kode sampeyan. Sampeyan bisa uga milih nggunakake kelas lokal yen kelas digunakake sacara eksklusif ing siji metode. Ing kasus iki, apa kita kudu nyebar kode liwat aplikasi? Ora. Sing ngandika, Aku bakal nambah sing ing pengalaman aku wis tau ndeleng wong nggunakake kelas lokal, amarga apa padha perlu utawa ora Highly kontroversial. Sampeyan bisa uga nggunakake kelas anonim nalika implementasi tartamtu saka antarmuka utawa kelas abstrak dibutuhake mung sapisan. Ing kasus kasebut, ora perlu nggawe kelas sing kapisah lan lengkap kanthi implementasine. Nanging, kita tetep prasaja lan ngleksanakake cara sing kudu kita gunakake kanthi kelas anonim, nggunakake obyek kasebut, banjur kelalen (mesthi wae, tukang sampah ora lali). Pangerten sampeyan babagan kelas bersarang bakal ditambah karo artikel ing kene.

51. Apa modifiers akses bisa duwe kelas?

Ana macem-macem jinis kelas lan modifikasi akses sing beda ditrapake kanggo dheweke:
  • kelas njaba bisa duwe modifier akses umum utawa ora ana modifier (modifier standar);
  • kelas njero (kelas nested non-statis) bisa duwe salah siji saka 4 akses modifiers;
  • kelas statis nested bisa duwe salah siji saka modifiers akses kajaba dilindhungi amarga modifier iki nggadahi warisan, kang contradicts sembarang anggota statis saka kelas (anggota statis ora dipun warisaken);
  • kelas lokal mung bisa duwe modifier standar (yaiku ora ana modifier);
  • kelas anonim ora deklarasi kelas, supaya ora duwe akses modifier ing kabeh.
Iki ngendi kita bakal mungkasi kanggo dina iki. Sampai jumpa lagi!Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 5 - 6
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION