JavaRush /Blog Jawa /Random-JV /Top 50 Pitakonan Wawancara Inti Jawa lan Jawaban. Bagean ...

Top 50 Pitakonan Wawancara Inti Jawa lan Jawaban. Bagean 2

Diterbitake ing grup
Top 50 Pitakonan Wawancara Inti Jawa lan Jawaban. Bagean 1 Top 50 Pitakonan Wawancara Inti Jawa lan Jawaban.  Bagean 2 - 1

Koleksi

25. Punapa ingkang dipunwastani Koleksi wonten ing basa Jawi?

Koleksi minangka kerangka sing dirancang kanggo nyimpen lan ngapusi obyek. Digunakake kanggo nindakake operasi ing ngisor iki:
  • nggoleki;
  • ngurutake;
  • manipulasi;
  • tambahan;
  • pambusakan.
Kabeh kelas lan antarmuka kanggo framework Koleksi ana ing java.utilpaket.

26. Apa kelas lan antarmuka kasedhiya ing framework Koleksi?

Antarmuka:
  • Koleksi;
  • Dhaptar;
  • Setel;
  • Peta;
  • Diurutake Set;
  • Peta Diurut;
  • antri.
Kelas:
  • Dhaptar:
    1. ArrayList;
    2. LinkedList;
    3. Vektor (deprecated).
  • Sets:
    1. HashSet;
    2. LinkedHashSet;
    3. PohonSet.
  • Peta:
    1. HashMap
    2. TreeMap
    3. HashTable (ora digunakake)
    4. LinkedHashMap
  • antri
    1. Antrian Prioritas.

27. Punapa ingkang dipuntegesi urut-urutan lan urut-urutan ing kumpulan?

dhawuh:

Iki tegese item sing disimpen ing koleksi adhedhasar nilai sing ditambahake menyang koleksi. Kanthi cara iki, kita bisa ngulang nilai-nilai saka koleksi kanthi urutan tartamtu. Kanthi tembung liya, iki tegese unsur-unsur koleksi kasebut nduweni urutan tartamtu dhewe miturut sing disusun. Kanggo pemahaman sing luwih apik, koleksi sing ora dipesen nyimpen unsur-unsur kasebut kanthi urutan acak. Contone, Set.

Diurut:

Iki tegese klompok unsur diurutake dadi koleksi adhedhasar data unsur koleksi. Tegese, ora mung koleksi sing diurutake, nanging uga urutan unsur gumantung saka nilai-nilai kasebut. Urutan iki bisa diganti yen sampeyan ngurutake miturut nilai unsur sing beda.

28. Apa koleksi sing ana karo antarmuka List? Kepiye cara kerja karo List?

Nilai-nilai unsur ing sheet adhedhasar indeks-padha diurutake miturut indeks. Pengulangan unsur diidini (yaiku, sampeyan bisa nambah obyek sing padha menyang koleksi kaping pirang-pirang lan bakal apik).

Dhaptar Array:

Koleksi sing paling umum. Ateges, iku array kanthi ukuran ngembangaken dinamis. Tugas ngatur ukuran array dumunung ing koleksi. Penting kanggo kita ngerti yen ing umume kasus iki sing kudu digunakake. Kekhasan:
  • telusuran cepet lan telusuran indeks cepet;
  • koleksi diurutake miturut indeks, nanging ora diurutake;
  • ngleksanakake antarmuka RandomAccess;
  • alon-alon nambah ing tengah dhaftar.
Tuladha:
public class A {

   public static void main(String[] args) {
       ArrayList names = new ArrayList<>();
       names.add("John");
       names.add("John");
       names.add("Roman");
       names.add("Ivan");
   }

}
>> output

   [John, John, Roman, Ivan]
Output nuduhake manawa iki minangka unsur sing bisa diulang. Padha ditampilake ing urutan kang padha direkam. Apa maneh sing kudu diwaca? Ya, ana akeh informasi, sampeyan ora perlu ninggalake JavaRush:

Daftar sing disambung:

Iki minangka koleksi sing saben unsur nduweni pranala menyang unsur sadurunge lan sabanjure. Link iki ngidini sampeyan pindhah saka siji unsur menyang liyane. Nalika nambahake unsur, pranala menyang unsur sadurunge lan sabanjure mung ganti: Top 50 Pitakonan Wawancara Inti Jawa lan Jawaban.  Bagean 2 - 2
  • unsur disambungake kanggo saben liyane, sing, dhaftar pindho disambung wis dileksanakake;
  • kacepetan operasi sakabèhé katon luwih murah tinimbang ing ArrayList;
  • pilihan banget kanggo nomer akeh sisipan lan pambusakan menyang tengah Uploaded;
  • ngleksanakake antarmuka dhaftar Antrian lan Deque, lan mulane wis cara kanggo digunakake.
Tuladha:
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("One");
linkedList.add("Two");
linkedList.add("Three");

29. Nyritakake babagan koleksi Peta lan implementasine?

Map minangka koleksi kunci-nilai. Ana kunci unik lan nilai sing cocog karo nilai kasebut. equals()Cara uga digunakake hashcode()kanggo nemtokake keunikan kunci.

HashMap:

  • ora diurut utawa dhawuh;
  • digunakake yen urutan lan ngurutake ora penting;
  • ndhukung null key.
Tuladha:
public class CollectionExample {

   public static void main(String[] args) {
       HashMap positions = new HashMap<>();
       positions.put("junior", "Ivan");
       positions.put("middle", "Roman");
       positions.put("senior", "Vasily");
       positions.put("team lead", "Anton");
       positions.put("arthitect", "Andrew");
       positions.put("senior", "John");
       System.out.println(positions);
   }
}

// вывод в консоль
// {junior=Ivan, middle=Roman, senior=John, team lead=Anton, arthitect=Andrew}
Tombol tansah unik, supaya mung siji senior direkam.

LinkedHashMap:

  • njaga urutan sisipan;
  • luwih alon tinimbang HashMap;
  • iterasi samesthine bakal luwih cepet tinimbang ing HashMap.
Tuladha:
public class CollectionExample {

   public static void main(String[] args) {
       LinkedHashMap<String, String> positions = new LinkedHashMap<>();
       positions.put("junior", "Ivan");
       positions.put("middle", "Roman");
       positions.put("senior", "Vasily");
       positions.put("team lead", "Anton");
       positions.put("arthitect", "Andrew");
       positions.put("senior", "John");
       System.out.println(positions);
   }
}

// вывод в консоль
// {junior=Ivan, middle=Roman, senior=John, team lead=Anton, arthitect=Andrew}

TreeMap:

A implementasi map sing tansah entri diurutake miturut urutan alam tombol sing, utawa luwih, nggunakake comparator yen siji kasedhiya ing konstruktor nalika peta digawe. Tuladha:
  1. Tanpa komparator

    public class CollectionExample {
    
       public static void main(String[] args) {
           TreeMap<Integer, String> positions = new TreeMap<>();
           positions.put(1, "Ivan");
           positions.put(3, "Roman");
           positions.put(2, "Vasily");
           positions.put(10, "Anton");
           positions.put(7, "Andrew");
           positions.put(1, "John");
           System.out.println(positions);
       }
    }
    
    // вывод в консоль
    // {1=John, 2=Vasily, 3=Roman, 7=Andrew, 10=Anton}
  2. Kanthi komparator

    public class CollectionExample {
    
       public static void main(String[] args) {
           //используем реализацию Strategy Pattern'a и добавим компаратор:
           TreeMap<Integer, String> positions = new TreeMap<>(Comparator.reverseOrder());
           positions.put(1, "Ivan");
           positions.put(3, "Roman");
           positions.put(2, "Vasily");
           positions.put(10, "Anton");
           positions.put(7, "Andrew");
           positions.put(1, "John");
           System.out.println(positions);
       }
    }
    
    // вывод в консоль
    // {10=Anton, 7=Andrew, 3=Roman, 2=Vasily, 1=John}
We ndeleng sing ngurutake ing urutan munggah dipun ginakaken minangka standar, nanging iki bisa diganti dening nambah comparator kanggo konstruktor. TreeMap uga diterangake ing kene .

30. Marang kita babagan koleksi Set lan implementasine?

Set minangka sakumpulan unsur unik, lan iki minangka fitur utama. Tegese, Set ora ngidini unsur sing padha diulang. Penting ing kene yen obyek sing ditambahake duwe metode sing ditindakake equals .

HashSet:

  • ora diurut utawa dhawuh. Ing hood ana HashMap karo placeholder kanggo Nilai. Deleng dhewe;)
  • nggunakake hashCode kanggo nambah obyek;
  • Sampeyan kudu digunakake nalika sampeyan kudu duwe obyek unik lan urutane ora penting.
Tuladha:
public class CollectionExample {

   public static void main(String[] args) {
       HashSet<String> positions = new HashSet<>();
       positions.add("junior");
       positions.add("junior");
       positions.add("middle");
       positions.add("senior");
       positions.add("team lead");
       positions.add("architect");
       System.out.println(positions);
   }
}

// вывод в консоль
// [senior, middle, team lead, architect, junior]
Ing kene sampeyan bisa ndeleng manawa unsur "junior", sing ditambahake kaping pindho, mung ana ing siji conto. Lan urutan ora padha nalika nambah.

LinkedHashSet:

  • versi dhawuh saka HashSet;
  • ndhukung dhaptar pindho disambung kanggo kabeh unsur;
  • Gunakake nalika sampeyan butuh pesenan ing pengulangan.
Tuladha:
public class CollectionExample {

   public static void main(String[] args) {
       LinkedHashSet<String> positions = new LinkedHashSet<>();
       positions.add("junior");
       positions.add("junior");
       positions.add("middle");
       positions.add("senior");
       positions.add("team lead");
       positions.add("architect");
       System.out.println(positions);
   }
}

// вывод в консоль
// [senior, middle, team lead, architect, junior]

WitSet:

  • siji saka rong koleksi sing diurutake;
  • nggunakake struktur wit abang-ireng lan mesthekake yen unsur ing urutan munggah;
  • Ing hood iku TreeMap karo stub ing nilai. Lan unsur TreeSet minangka kunci kanggo TreeMap (ndeleng uga;)).
Tuladha:
public class CollectionExample {

   public static void main(String[] args) {
       TreeSet<String> positions = new TreeSet<>();
       positions.add("junior");
       positions.add("junior");
       positions.add("middle");
       positions.add("senior");
       positions.add("team lead");
       positions.add("architect");
       System.out.println(positions);
   }
}

// вывод в консоль
// [architect, junior, middle, senior, team lead]

Pangecualian

31. Apa Pengecualian?

Pangecualian minangka masalah sing bisa kedadeyan nalika runtime. Iki minangka kahanan sing luar biasa sing kedadeyan amarga sawetara sebab. Diagram pusaka istiméwa katon kaya iki (sampeyan kudu ngerti kanthi ati;)): Top 50 Pitakonan Wawancara Inti Jawa lan Jawaban.  Bagean 2 - 3Diagram kasebut nuduhake yen, ing umum, kabeh pangecualian dipérang dadi rong klompok - pangecualian lan kesalahan. Kesalahan - JVM digunakake kanggo nampilake kesalahan sawise aplikasi kasebut ora ana gunane maneh. Contone, StackOverFlowError, sing ujar manawa tumpukan kebak lan program ora bisa mlaku maneh. Pangecualian - pangecualian sing digawe kanthi program ing kode. Ana macem-macem pangecualian, dicenthang lan ora dicenthang, nanging sing utama yaiku ana, lan bisa kejiret lan aplikasi kasebut terus dienggo. Pengecualian, sabanjure, dipérang dadi sing warisan saka RuntimeException lan turunan Exception liyane. Ana cukup informasi babagan masalah iki. Kita bakal ngomong babagan pengecualian sing dicenthang / ora dicenthang ing ngisor iki.

32. Kepiye JVM nangani pengecualian?

Cara kerjane? Sanalika pangecualian dibuwang nang endi wae, runtime nggawe Obyek Pengecualian (disebut ExcObj). Iki nyimpen kabeh informasi sing dibutuhake kanggo karya - pangecualian dhewe sing dibuwang lan papan sing kedadeyan. Nggawe ExcObjlan transmisi menyang runtime ora luwih saka "mbuwang pangecualian." ExcObjngandhut cara sing bisa digunakake kanggo njaluk menyang panggonan istiméwa iki di buwang. Kumpulan metode iki diarani Call Stack. Sabanjure, sistem runtime nggoleki cara ing Call Stack sing bisa nangani pengecualian. Yen nemokake pawang sing cocog, yaiku, jinis pangecualian cocog karo jinis pawang, kabeh apik. Yen ora nemokake, banjur runtime ngliwati kabeh menyang pawang pangecualian standar, sing nyiapake respon lan metu. Iki katon kaya:
/**
* Пример, в котором показываются две опции — когда находится обработчик для исключения и когда нет.
*/
class ThrowerExceptionExample {

   public static void main(String[] args) throws IllegalAccessException {

       ThrowerExceptionExample example = new ThrowerExceptionExample();

       System.out.println(example.populateString());
   }

   /**
    * Здесь происходит перехват одного из возможных исключений — {@link IOException}.
    * А вот второй будет пробрасываться дальше вверх по вызову.
    */
   private String populateString() throws IllegalAccessException {
       try {
           return randomThrower();
       } catch (IOException e) {
           return "Caught IOException";
       }
   }

   /**
    * Здесь две опции: or бросается {@link IOException} or {@link IllegalAccessException}.
    * Выбирается случайным образом.
    */
   private String randomThrower() throws IOException, IllegalAccessException {
       if (new Random().nextBoolean()) {
           throw new IOException();
       } else {
           throw new IllegalAccessException();
       }
   }
}
Ing kasus kita, CallStack bakal katon kaya:

randomThrower() => populateString() => main(String[] args)
Ana rong pilihan: siji utawa istiméwa liyane bakal dibuwang kanthi acak. Kanggo IOException kabeh iku ok, yen kui, banjur asil karya bakal "Caught IOException":. Nanging yen ana pangecualian liya sing ora ana panangan, program bakal mandheg kanthi output ing ngisor iki:

Exception in thread "main" java.lang.IllegalAccessException
  at ThrowerExceptionExample.randomThrower(CollectionExample.java:38)
  at ThrowerExceptionExample.populateString(CollectionExample.java:24)
  at ThrowerExceptionExample.main(CollectionExample.java:15)

33. Kepiye programer nangani pengecualian?

Ing pitakonan ing ndhuwur, kita wis nggunakake tembung kunci tartamtu kanggo nggarap pangecualian, saiki kita kudu ngomong kanthi luwih rinci. Apa tembung kunci?
  • nyoba
  • nyekel
  • uncalan
  • mbalang
  • pungkasane
Iku penting kanggo Wigati sing nyekel, uncalan lan uncalan mung bisa digunakake karo java.lang.Throwable. Iki ora bakal bisa digunakake karo jinis liyane. Saiki kita bakal ngrembug nyoba, nyekel lan pungkasane.
  • try-catch-finallyminangka konstruksi sing ngidini sampeyan nyekel lan nangani pangecualian kanthi bener.
  • try- mung ana siji wektu, ing ngendi logika kedadeyan;
  • catch- blok sing nampa sawetara jinis pangecualian; bisa uga ana akeh. Contone, blok nyoba bakal mbuwang sawetara pengecualian sing ora ana hubungane karo saben liyane;
  • finally- "Pungkasane" pemblokiran iki. Iki pemblokiran sing bakal kaleksanan ing kasus, preduli saka apa wis rampung ing nyoba, nyekel.
Iki katon kaya:
try {
   // сюда передают тот code, который может вызвать исключение.
} catch (IOException e) {
   // первый catch блок, который принимает IOException и все его подтипы(потомки).
   // Например, нет file при чтении, выпадает FileNotFoundException, и мы уже соответствующе
   // обрабатываем это.
} catch (IllegalAccessException e) {
   // если нужно, можно добавить больше одного catch блока, в этом нет проблем.
} catch (OneException | TwoException e) {
   // можно даже объединять несколько в один блок
} catch (Throwable t) {
   // а можно сказать, что мы принимаем ВСЁ))))
} finally {
   // этот блок может быть, а может и не быть.
   // и он точно выполнится.
}
Waca kanthi teliti katrangan conto kasebut lan kabeh bakal jelas)

34. uncalan lan uncalan ing Jawa

uncalan

throwdigunakake nalika sampeyan kudu nggawe pangecualian anyar. Iki digunakake kanggo nggawe lan mbuwang pengecualian khusus. Contone, pangecualian sing ana gandhengane karo validasi. Biasane, kanggo validasi, dheweke entuk warisan saka RuntimeException. Tuladha:
// пример пробрасывания исключения
throw new RuntimeException("because I can :D");
Iku penting sing construction iki mung bisa digunakake dening soko sing warisan saka Throwable. Yaiku, sampeyan ora bisa ngomong iki:
throw new String("How тебе такое, Илон Маск?");
Sabanjure, karya utas diakhiri lan telusuran diwiwiti kanggo pawang sing bisa ngolah. Nalika iku ora ketemu, iku pindhah menyang cara sing disebut, lan telusuran bakal munggah baris telpon nganti salah siji nemokake handler cocog utawa ninggalake aplikasi mlaku. Ayo katon:
// Пример, который демонстрирует работу throw
class ThrowExample {

   void willThrow() throws IOException {
       throw new IOException("Because I Can!");
   }

   void doSomething() {
       System.out.println("Doing something");
       try {
           willThrow();
       } catch (IOException e) {
           System.out.println("IOException was successfully handled.");
       }
   }

   public static void main(String args[]) {
       ThrowExample throwExample = new ThrowExample();
       throwExample.doSomething();
   }
}
Yen kita mbukak program kasebut, kita entuk asil ing ngisor iki:

Doing something
IOException was successfully handled.

mbalang

throws- mekanisme kang cara bisa uncalan siji utawa luwih istiméwa. Padha ditambahake dipisahake karo koma. Ayo ndeleng carane gampang lan prasaja:
private Object willThrow() throws RuntimeException, IOException, FileNotFoundException
Kajaba iku, penting kanggo dicathet yen bisa uga ana pengecualian sing dicenthang lan ora dicenthang. Mesthi wae, pangecualian sing ora dicenthang bisa uga ora ditambahake menyang throws, nanging sopan santun ngomong liya. Yen iki minangka checkable, banjur nggunakake metode sing ngasilake, sampeyan kudu ngolah. Ana rong pilihan:
  1. Tulis try-catchnganggo pengecualian warisan sing cocog lan ndhuwur.
  2. Gunakake throwskanthi cara sing padha supaya wong liya wis ngalami masalah iki: D

35. Pangecualian sing dicenthang lan ora dicenthang ing Jawa

Ana rong jinis pangecualian ing Jawa - dicenthang lan ora dicenthang.

Pengecualian sing dicenthang:

Iki minangka pangecualian sing dicenthang ing wektu kompilasi. Yen sawetara kode ing cara mbuwang pangecualian sing dicenthang sajrone pangecualian, metode kasebut kudu diproses nggunakake try-catch, utawa diterusake luwih lanjut. Contone, sing maca gambar saka path "/users/romankh3/image.png", nganyari. ing sawetara cara (kanggo kita iki ora penting) lan nyimpen maneh.
class CheckedImageExample {
   public static void main(String[] args) {
       File imageFile = new File("/users/romankh3/image.png");
       BufferedImage image = ImageIO.read(imageFile);
       updateAndSaveImage(image, imageFile);
   }

   private static void updateAndSaveImage(BufferedImage image, File imageFile) {
       ImageIO.write(image, "png", imageFile);
   }
}
Kode kasebut ora bakal dikompilasi, amarga cara statis ImageIO.read()mbuwang ImageIO.write()IOException, sing dicenthang lan kudu ditangani. Ana rong pilihan ing kene sing wis kita rembugan ing ndhuwur: salah siji nggunakake try-catch, utawa nerusake luwih. Kanggo asimilasi sing luwih apik, kita bakal nindakake iki lan iki. Sing, updateAndSavekita mung bakal nerusake ing cara, banjur nggunakake ing cara utama try-catch:
class CheckedImageExample {
   public static void main(String[] args) {
       File imageFile = new File("/users/romankh3/image.png");
       try {
           BufferedImage image = ImageIO.read(imageFile);
           updateAndSaveImage(image, imageFile);
       } catch (IOException e) {
           e.printStackTrace();
       }
   }

   private static void updateAndSaveImage(BufferedImage image, File imageFile) throws IOException {
       ImageIO.write(image, "png", imageFile);
   }
}

Pangecualian sing ora dicenthang:

Iki minangka pangecualian sing ora dicenthang ing tahap kompilasi. Yaiku, cara bisa ngasilake RuntimeException, nanging kompiler ora bakal ngelingake sampeyan supaya bisa nangani. Kaya sing dituduhake ing ngisor iki, kita duwe kabeh sing diwarisake saka RuntimeException lan Error ora dicenthang. Top 50 Pitakonan Wawancara Inti Jawa lan Jawaban.  Bagean 2 - 4Coba program Jawa ing ngisor iki. Kode kompilasi apik, nanging mbuwang pengecualian nalika mbukak ArrayIndexOutOfBoundsException. Compiler ngidini kanggo kompilasi amarga ArrayIndexOutOfBoundsExceptioniku pangecualian sing ora dicenthang. Kahanan umum karo array, sing bisa dadi:
class CheckedImageExample {
   public static void main(String[] args) {
       int[] array = new int[3];
       array[5] = 12;
   }
}
Asil bakal:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
  at main(CheckedImageExample.java:12)
Oalah, apa sampeyan wis ngerti yen ing Jawa ora ana sing menehi jeneng cekak? Sing luwih gedhe, luwih apik. Dheweke, Spring Framework, sukses banget ing iki: mung njupuk sawetara kelas BeanFactoryPostProcessor )))

36. Apa iku try-with-resources?

Iki minangka mekanisme sing kabeh sumber daya kudu ditutup kanthi bener. Iku piye wae ora cetha, bener?) Kaping pisanan, apa sumber daya ... Sumber daya minangka obyek, sawise nggarap sing kudu ditutup, yaiku, nelpon close(). Sumber daya iku kabeh obyek sing ngleksanakake antarmuka AutoClosable, sing banjur nindakake antarmuka Closeable. Penting kanggo kita ngerti yen kabeh InputStreamiku OutpuStreamsumber daya lan kudu dirilis kanthi bener lan sukses. Iki sebabe kita kudu nggunakake try-with-resourcestruktur kasebut. Mangkene apa sing katon:
private void unzipFile(File zipFile) throws IOException {
   try(ZipInputStream zipOutputStream = new ZipInputStream(new FileInputStream(zipFile))) {
       ZipEntry zipEntry = zipOutputStream.getNextEntry();
       while (zipEntry != null) {

       }
   }
}

private void saveZipEntry(ZipEntry zipEntry) {
   // логика сохранения
}
Ing conto iki, sumber daya ZipInputStream, sawise nggarap sampeyan kudu nutup. Lan supaya ora mikir babagan nelpon cara close(), kita mung nemtokake variabel iki ing blok nyoba, kaya sing ditampilake ing conto, lan ing blok iki kita nindakake kabeh sing perlu. Apa sing ditindakake tuladha? Iku bakal unzip arsip zip. Kanggo nindakake iki, sampeyan kudu nggunakake InputStream'om. Sampeyan bisa nemtokake luwih saka siji variabel; padha dipisahake karo titik koma. Apa masalahe? Nanging sampeyan bisa nggunakake finallypemblokiran, sampeyan bisa ngomong. Ing ngisor iki artikel sing njlèntrèhaké masalah karo pendekatan iki. Iku uga njlèntrèhaké kabèh dhaftar gagal sing bisa kanggo wong sing nglirwakake nggunakake desain iki. Aku nyaranake maca ;) Ing bagean pungkasan ana pitakonan / jawaban babagan topik Multithreading. Profil GitHubku
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION