JavaRush /Java блог /Random UA /Кава-брейк #167. Що потрібно повторити перед співбесідою ...

Кава-брейк #167. Що потрібно повторити перед співбесідою з Java. У чому різниця між перерахуванням та ітератором у Java?

Стаття з групи Random UA

Що потрібно повторити перед співбесідою з Java

Джерело: Medium У цій статті ви знайдете 17 порад від досвідченого розробника, які допоможуть вам на співбесіді з Java. Кава-брейк #167.  Що потрібно повторити перед співбесідою з Java.  У чому різниця між перерахуванням та ітератором у Java?  - 1Я працюю в IT-індустрії більше 20 років і більшу частину цього часу витратив на роботу з Java. Крім того, я отримав чималий досвід проведення інтерв'ю з Java-розробниками. Незважаючи на те, що мова Java постійно розвивається, основні концепції здебільшого залишабося незмінними. Ось деякі поради, якими я хочу поділитися з розробниками-початківцями перед тим, як вони підуть на співбесіду. Якщо ви повторите їх, це убереже вас від грубих помилок.
  1. Клас Object знаходиться в корені ієрархії Java класів. Усі класи Java сходять до Object . Навіть якщо клас явно не розширює будь-який клас, він розширює Object . Однак клас може вільно розширювати Object явно.

  2. У Java ви можете розширювати лише один клас (множинне успадкування не допускається через неоднозначність). Однак клас може реалізовувати будь-яку кількість інтерфейсів одночасно.

  3. Інтерфейс розширює інший інтерфейс (на відміну реалізації).

  4. У Java є чотири модифікатори доступу: public (доступний всім), protected (доступний лише підкласам), private (доступний лише всередині одного класу), default (доступний всередині одного пакета). Слід зазначити, що підкласи того самого класу можуть бути у різних пакетах. Батьківський клас та підкласи не обов'язково повинні бути частиною одного й того самого пакета.

  5. Рядок класу є незмінним. Незмінність означає, що сам клас String не надає жодних методів для заміни значення посилання String . Якщо ви хочете замінити значення посилання на рядок, ви повинні явно надати значення за допомогою оператора = . Порівняйте це з класами StringBuffer або StringBuilder , в яких є такі методи, як append, тому вам не потрібно використовувати оператор = .

  6. ConcurrentHashMap ефективніший, ніж Hashtable . ConcurrentHashMap працює з сегментами базової структури даних, в якій операція запису блокує лише певний сегмент (незалежно від того, якому сегменту належить ключ). Однак у Hashtable вся структура даних буде заблокована.

  7. ConcurrentHashMap працює повільніше, ніж HashMap , оскільки HashMap не реалізована безпека потоків. HashMap може генерувати ConcurrentModificationException , якщо потік перебирає HashMap , а інший потік намагається змінити той же HashMap . ConcurrentHashMap тут не викликатиме виняток.

  8. Як реалізувати рівність двох об'єктів того самого класу, який ви визначабо? Відповідь: це можна зробити, визначивши метод hashcode() .

  9. Який результат методу toString() за промовчанням? Відповідь: це конкатенація імені класу, знака @ та значення hashcode() .

  10. Як реалізувати поліморфізм у Java? Один із способів зробити це – перевантажити метод. Інший спосіб - перевизначити метод.

  11. Як ви викликаєте конструктор суперкласу із дочірнього класу? Відповідь: це можна зробити за допомогою ключового слова super() . Метод super() без аргументів викликається завжди, навіть якщо він явно не вказано. Метод super() з аргументом має бути вказаний явно. Виклик super() (з аргументом або без аргументів) завжди повинен бути першим рядком у конструкторі дочірнього класу, якщо він потрібний для виклику.

  12. Що таке перевірені та неперевірені винятки? Відповідь: перевірені винятки – це ті, які мають бути оголошені або перехоплені у методі, де очікується їх генерація. Неперевірений виняток не має цього обмеження. java.io.IOException - приклад перевіреного виключення. Неперевірені винятки походять від класу RunTimeException .

  13. Кореневим класом ієрархії винятків є Throwable (який, своєю чергою, неявно розширює Object ). Exception і Error походять від Throwable .

  14. Починаючи з Java 8 методи можуть мати реалізацію в інтерфейсі. Методи за замовчуванням та статичні методи можуть мати реалізацію.

  15. Клас, що кваліфікується як abstract , не може бути створений. Будь-який клас, який не надає тіла для жодного з методів, повинен бути оголошений як абстрактний. Розробник може оголосити клас абстрактним, навіть якщо всі методи мають тіло, проте це не дуже рекомендується, оскільки в цьому випадку клас не може бути створений.

  16. Клас final може бути розширений. Змінної final не можна надати інше значення. Метод final може бути перевизначений.

  17. Які ключові слова є обов'язковими у конструкції try-catch-finally ? Це може бути try-catch , try-finally або всі три. При цьому catch не є обов'язковим ключовим словом.

У чому різниця між перерахуванням та ітератором у Java?

Джерело: Rrtutors У представленій вам публікації розглянуто різницю між перерахуванням та ітерацією в Java. Пакет Java.util надає два інтерфейси для обходу елементів об'єкта Collection : Enumeration (перерахування) та Iterator (ітератор). Незважаючи на те, що вони проходять через об'єкт Collection , між ними є деякі відмінності.

Відмінності між перерахуванням та ітератором

  • Час додавання до JDK: вони представлені у різний час. Перелік з'явився в JDK 1.0, тоді як ітератор був представлений JDK 1.2.

  • Видалення елементів: це основна різниця між ними. В інтерфейсі Iterator ми можемо видалити елемент при обході об'єкта Collection , тоді як ми не можемо змінити його при обході об'єкта Collection за допомогою переліку ( Enumeration ). Це з тим, що у інтерфейсі Iterator є метод remove() , а інтерфейсі Enumeration його немає.

  • Тип операції: Ітератор має тип операції fail-fast, а перерахування – fail-safe (відмовостійкий). В результаті ітератор видає виключення ConcurrentModificationException при зміні колекції під час ітерації, крім випадків, коли використовується його власний метод remove() , в той час як Enumeration не видає жодних винятків при зміні колекції під час ітерації.

Приклади перерахування та ітератора в Java

Приклад перерахування

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Enumeration;

import java.util.List;

import java.util.Vector;

public class Enumeration_Example {

      public static void main(String[] args) {

                  List laptoplist = new ArrayList(Arrays.asList( new String[] {"Samsung", "Lenovo", "Apple", "HP"}));

            Vector vectali = new Vector(laptoplist);

            delete(vectali, "Samsung");

        }

        private static void delete(Vector vectali, String laptop) {

            Enumeration lapi = vectali.elements();

            while (lapi.hasMoreElements()) {

              String s = (String) lapi.nextElement();

              if (s.equals(laptop)) {

                  vectali.remove(laptop);

              }

            }

            System.out.println("The Laptop brands includes:");

            lapi = vectali.elements();

            while (lapi.hasMoreElements()) {

              System.out.println(lapi.nextElement());

            }

      }

}
Висновок:
The Laptop brands includes: Lenovo Apple HP

Приклад ітератора:

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Iterator;

import java.util.List;

import java.util.Vector;

public class Iterator_example {

      public static void main(String[] args) {

                  List laptoplist = new ArrayList(Arrays.asList( new String[] {"Samsung", "Lenovo", "HP", "Apple"}));

            Vector vectali = new Vector(laptoplist);

            delete(vectali, "HP");

        }

        private static void delete(Vector vectali, String name) {

            Iterator a = vectali.iterator();

            while (a.hasNext()) {

              String s = (String) a.next();

              if (s.equals(name)) {

                  a.remove();

              }

            }

            // Display the names

            System.out.println("The laptop brand includes:");

            a = vectali.iterator();

            while (a.hasNext()) {

              System.out.println(a.next());

            }

      }

}
Висновок:
The laptop brand includes: Samsung Lenovo Apple
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ