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 4

Diterbitake ing grup
Hello, kabeh! Dina iki aku nerusake review pitakonan wawancara pangembang Jawa. Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 4 - 1

29. Bisa bali digunakake ing konstruktor?

Ya, nanging mung tanpa nilai ing sisih tengen tembung kunci bali . Sampeyan bisa nggunakake bali; minangka statement helper ing konstruktor kanggo urgently siksa (interrupted) eksekusi kode luwih lan rampung initialization saka obyek. Contone, umpamane kita duwe kelas Kucing , lan yen Kucing ora duwe omah ( isHomeless = true , banjur kita pengin mungkasi initialization lan ora ngisi kolom liyane (sawise kabeh, dheweke ora dingerteni, amarga kucing ora duwe omah) :
public Cat(int age, String name, boolean isHomeless) {
   if (isHomeless){
       this.isHomeless = isHomeless;
       return;
   }
   this.isHomeless = isHomeless;
   this.age = age;
   this.name = name;
}
Nanging yen kita ngomong babagan nilai konkrit, tembung kunci bali ora bisa ngasilake nilai tartamtu amarga:
  • nalika wara-wara konstruktor a, sampeyan ora bakal duwe apa-apa kaya jinis bali;
  • minangka aturan, konstruktor diarani sacara implisit sajrone instantiation;
  • konstruktor ora cara: iku mekanisme kapisah kang siji waé kanggo initialize variabel Kayata, IE, kita nggunakake operator anyar kanggo nggawe obyek.
Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 4 - 2

30. Apa pangecualian bisa dibuwang saka konstruktor?

Konstruktor nggarap pangecualian kanthi cara sing padha karo metode. Metode ngidini kita mbuwang pengecualian kanthi nulis mbuwang <ExceptionType> ing header metode. Lan konstruktor ngidini kita nindakake perkara sing padha. Nalika kita marisi lan nemtokake konstruktor kelas anak, kita bisa nggedhekake jinis pangecualian - contone, IOException -> Exception (nanging ora kosok balene). Ayo dadi nggunakake konstruktor kelas Cat minangka conto konstruktor mbuwang pangecualian. Contone, nalika nggawe obyek, kita pengin ngetik jeneng lan umur saka console:
public Cat() throws IOException {
   BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
   this.name = reader.readLine();
   this.age = Integer.parseInt(reader.readLine());
}
Wiwit reader.readLine () mbuwang IOException, kita nulis ing header minangka pangecualian bisa di buwang.

31. Apa wae unsur header kelas? Tulis tuladha

Kanggo nggambarake unsur-unsur sing nggawe header kelas, ayo deleng skema cilik:
  • unsur wajib katon ing kurung <>
  • unsur opsional ana ing {}
{access modifier}{static}{final}{abstract}<class name>{inheritance of Parent class}{implementation of interfaces} Dadi, sing kita duwe: {access modifier} — mung umum lan standar akses modifiers kasedhiya kanggo kelas. {statis} - modifier statis nuduhake yen kelas iki statis; mung ditrapake kanggo kelas batin (kelas ing kelas liyane). {final} — iki modifier final , mesthi, kang ndadekake kelas uninheritable (conto out-of-the-box String ). {abstrak} - modifier abstrak , sing nuduhake yen kelas kasebut bisa uga duwe metode sing ora ditindakake. Modifier iki konflik karo modifier final . Header kelas mung bisa duwe salah siji amarga modifier abstrak tegese kelas kasebut bakal diwarisake lan unsur abstrak bakal dileksanakake. Nanging final nuduhake yen iki versi final saka kelas, lan iku ora bisa dipun warisaken. Bener, bebarengan nggunakake loro modifiers bakal absurd. Compiler ora bakal ngidini kita nindakake iki. <class> minangka tembung kunci wajib sing nuduhake deklarasi kelas. <class name> minangka jeneng kelas prasaja sing dadi pengenal kelas Jawa tartamtu. Jeneng kelas qualified kebak kasusun saka jeneng paket qualified plus '.' plus jeneng kelas prasaja. {warisan saka kelas Induk} minangka indikasi kelas induk (yen ana) nggunakake tembung kunci extends . Contone, ... ngluwihi ParentClass . {implementation of interfaces} — dhaptar antarmuka sing dileksanakake kelas iki (yen ana), nggunakake tembung kunci implements . Contone: ... ngleksanakake FirstInterface, SecondInterface ... Minangka conto, nimbang judhul kelas saka kelas Singa , sing marisi Cat lan ngleksanakake antarmuka WildAnimal :
public final class Lion extends Cat implements WildAnimal
Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 4 - 3

32. Apa wae unsur-unsur header metode? Tulis tuladha

Nalika nimbang unsur sing nggawe header metode, ayo maneh nimbang skema cilik:
  • unsur wajib katon ing kurung <>
  • unsur opsional ana ing {}
{akses modifier}{static}{abstract}{final}{sinkronisasi} {native} <return value><method name> <(>{method parameters}<}>{throw exceptions} {access modifier} — kabeh akses modifiers kasedhiya kanggo metode - umum , dilindhungi , standar , pribadi . {statis} - modifier statis , sing nuduhake yen metode kasebut statis lan mulane digandhengake karo kelas, dudu obyek. {abstrak} - modifier abstrak , sing nuduhake yen metode kasebut ora ana implementasine (badan). Kanggo bisa digunakake kanthi bener, kelas sing nyatakake metode kasebut uga kudu duwe modifier abstrak . Kaya ing header kelas, modifier iki konflik karo modifier final , lan uga konflik karo modifier statis , amarga cara abstrak tegese overriding metode ing turunan, lan cara statis ora bisa ditindhes . akses simultaneous menyang saka Utas beda. Yen cara ora statis, banjur ditutup kanggo obyek iki mutex. Yen cara statis, banjur ditutup kanggo mutex saka kelas saiki. {native} — modifier asli nuduhake yen metode kasebut ditulis ing basa pamrograman liyane. <return type> — jinis nilai sing cara kudu bali. Yen metode kasebut ora ngasilake apa-apa, banjur batal . <jeneng metode> - jeneng jeneng metode, yaiku pengenal ing sistem. {paramèter metode} - paramèter sing ditampa metode: perlu kanggo ngleksanakake fungsine. {thrown exceptions}mbalang <ExceptionType> — dhaptar pangecualian sing dicenthang sing cara iki bisa dibuwang. Aku bakal nawakake ing ngisor iki minangka conto header metode:
public static void main(String[] args) throws IOException

33. Nggawe konstruktor standar ing kelas anak yen siji durung ditetepake ing kelas dhasar (nanging konstruktor beda ditetepake)

Aku ora yakin aku ngerti pitakonan, nanging bisa uga tegese kita duwe sawetara konstruktor kaya iki ing kelas induk:
public Cat(int age, String name) {
   this.age = age;
   this.name = name;
}
Ing kasus kasebut, ing kelas induk, kita kudu nemtokake konstruktor sing bakal nginisialisasi wong tuwa (yaiku nelpon konstruktor induk):
public class Lion extends Cat {

   public Lion(int age, String name) {
       super(age, name);
   }
}
Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 4 - 4

34. Kapan tembung kunci iki digunakake?

Ing Jawa, iki nduweni rong makna sing beda. 1. Iku referensi kanggo obyek saiki, contone this.age = 9 . Yaiku, iki nuduhake obyek sing digunakake lan kode kasebut nuduhake . Tujuan utama yaiku ningkatake keterbacaan kode lan ngindhari ambiguitas. Contone, yen kolom conto lan argumen metode duwe jeneng sing padha:
public void setName(String name) {
   this.name = name;
}
Yaiku, this.name minangka kolom obyek, dene jeneng minangka parameter metode. Referensi iki ora bisa digunakake ing cara statis. 2. Ing konstruktor, iki bisa diarani kaya metode, contone this(value) . Ing kasus iki, iku bakal telpon kanggo konstruktor liyane saka kelas padha. Sejatine, sampeyan bisa nelpon loro konstruktor sajrone proses nggawe obyek:
public Cat(int age, String name) {
   this(name);
   this.age = age;
}

public Cat(String name) {
   this.name = name;
}
Nalika nelpon konstruktor pisanan kanggo nggawe obyek Cat , loro lapangan conto bakal sukses diinisialisasi. Ana sawetara nuansa ing kene:
  1. iki () mung dianggo ing konstruktor a.
  2. A referensi kanggo konstruktor liyane kudu ing baris pisanan saka pamblokiran konstruktor (awak). Iki tegese konstruktor ora bisa nelpon luwih saka siji (liyane) konstruktor saka sawijining kelas.
Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 4 - 5

35. Apa iku initializer?

Sa adoh aku ngerti, pitakonan iki babagan pamblokiran initialization biasa lan statis. Ayo dadi elinga dhisik apa initialization. Inisialisasi yaiku nggawe, aktivasi, persiapan, lan definisi lapangan. Nyiapake program utawa komponen sing siap digunakake. Sampeyan bakal kelingan yen sampeyan nggawe obyek, variabel kelas bisa diwiwiti langsung nalika diumumake:
class Cat {
   private int age = 9;
   private String name = "Tom";
Utawa nyetel sawise kasunyatan liwat konstruktor:
class Cat {
   private int age;
   private String name;

   public Cat(int age, String name) {
       this.age = age;
       this.name = name;
   }
Nanging ana cara liya: sampeyan bisa nyetel variabel instance nggunakake blok inisialisasi, sing bentuke kurung kriting {} ing njero kelas, tanpa jeneng (kaya metode utawa konstruktor tanpa jeneng):
class Cat {
   private int age;
   private String name;

   {
       age = 10;
       name = "Tom";
   }
Blok inisialisasi minangka potongan kode sing dimuat nalika obyek digawe. Pamblokiran kuwi biasane digunakake kanggo nindakake petungan Komplek tartamtu sing dibutuhake nalika kelas dimuat. Asil petungan kasebut bisa disetel minangka nilai variabel. Saliyane pamblokiran initialization biasa, ana sing statis. Padha katon padha nanging duwe tembung kunci statis ing ngarepe kurung kriting bukaan:
class Cat {
   private static int age;
   private static String name;

   static{
       age = 10;
       name = "Tom";
   }
Blok iki padha karo sing sadurunge. Nanging yen sing biasa dieksekusi nalika saben obyek diinisialisasi, banjur sing statis dieksekusi mung sapisan, nalika kelas dimuat. Minangka aturan, pitungan kompleks tartamtu ditindakake ing blok statis, digunakake kanggo miwiti variabel kelas statis. Watesan sing padha ditrapake kanggo blok statis sing ditrapake kanggo metode statis: sampeyan ora bisa nggunakake data non-statis, kayata referensi kanggo obyek saiki ( iki ) ing blok statis. Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 4 - 6Saiki kita bisa ndeleng urutan initialization kelas (bebarengan karo kelas induk) supaya luwih ngerti nalika persis pamblokiran initialization dijaluk.

36. Diwenehi kelas Anak umum sing ngluwihi Parent, nulis metu urutan initialization saka obyek

Nalika mbukak kelas Anak , urutan initialization bakal kaya ing ngisor iki:
  1. Bidang kelas statis saka kelas Induk .
  2. Blok initialization statis saka kelas Induk .
  3. Bidang statis saka kelas Сhild .
  4. Blok inisialisasi statis saka kelas Anak .
  5. Bidang non-statis saka kelas Induk .
  6. Blok inisialisasi non-statis saka kelas Induk .
  7. Konstruktor kelas induk .
  8. Bidang non-statis saka kelas Сhild .
  9. Blok inisialisasi non-statis saka kelas Сhild .
  10. Konstruktor saka kelas Сhild .
Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 4 - 7

37. Apa hubungane antarane kelas (obyek) sing sampeyan ngerti?

Ana rong jinis variabel ing Jawa: jinis primitif lan referensi kanggo obyek lengkap.
  • Hubungan IS-A
Prinsip IS-A OOP adhedhasar warisan kelas utawa implementasi antarmuka. Contone, yen kelas Singa marisi Cat , banjur kita ngomong yen Singa iku Kucing :
Lion IS-A Cat
(nanging ora saben Kucing iku Singa ) Kahanan sing padha ana karo antarmuka. Yen kelas Lion ngetrapake antarmuka WildAnimal , mula uga ana ing hubungan kasebut:
Lion IS-A WildAnimal
  • Hubungan HAS-A
Jinis hubungan iki ing ngendi siji kelas nggunakake kelas liyane, uga disebut "asosiasi". Asosiasi yaiku siji kelas sing nuduhake kelas liyane (utawa referensi bebarengan). Contone, kelas Mobil bisa ngrujuk kelas Penumpang , sing bakal dadi hubungan ing ngisor iki:
Car HAS-A Passenger
Lan kosok balene: yen Penumpang duwe referensi kanggo Mobil , banjur iki bakal dadi hubungan:
Passenger HAS-A Car

38. Sesambungan objek asosiatif apa sing sampeyan ngerti?

Agregasi lan komposisi ora luwih saka kasus asosiasi khusus. Agregasi minangka sesambungan ing ngendi siji obyek dadi bagean liyane. Contone, penumpang bisa uga ana ing mobil. Apa maneh, bisa uga ana sawetara penumpang utawa ora ana (lan yen kita ngomong babagan Tesla, bisa uga ora ana driver). Tuladhane:
public class Car {
   private List passengers = new ArrayList<>();

 void setPassenger(Passenger passenger) {
     passengers.add(passenger);
 }

   void move() {
       for (Passenger passenger : passengers) {
           System.out.println("Transporting passenger - " + passenger.toString());
       }
       passengers.clear();
   }
}
Ing tembung liyane, jumlah penumpang (ing sembarang) ora penting kanggo kita: fungsi saka kelas Car ora gumantung iki. Agregasi uga nuduhake yen obyek liyane nggunakake siji obyek, obyek pisanan bisa digunakake dening obyek liyane. Contone, siswa sing padha bisa uga ana ing klub nyulam lan band rock lan bebarengan melu kelas Spanyol. Minangka sampeyan bisa mbayangno, agregasi minangka hubungan asosiatif sing luwih longgar antarane kelas. Komposisi minangka hubungan sing luwih kenceng ing ngendi obyek ora mung bagean saka obyek liyane, nanging karya siji obyek gumantung banget marang liyane. Contone, mobil duwe mesin. Mesin bisa uga ana tanpa mobil, nanging ora ana gunane ing njaba mobil. Lan mobil ora bisa mlaku tanpa mesin:
public class Car {
   private Engine engine;

   public Car(Engine engine) {
       this.engine = engine;
   }

   void startMoving() {
       engine.start();
           ...
   }
Komposisi uga nuduhake yen obyek liyane nggunakake obyek, obyek pisanan ora bisa dadi kagungane obyek liyane. Bali menyang contone, mesin mung bisa dadi siji mobil, ora loro utawa luwih bebarengan. Aku rumangsa cukup kanggo dina iki, mula kita mandheg ing kene.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION