JavaRush /Java блог /Random /Кофе-брейк #167. Что нужно повторить перед собеседованием...

Кофе-брейк #167. Что нужно повторить перед собеседованием по Java. В чем разница между перечислением и итератором в Java?

Статья из группы Random

Что нужно повторить перед собеседованием по 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
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Aura20 Уровень 16
25 октября 2022
Ребята, это шутка или нет? я 15 лвл знаю 70%гэ ответов,изучаясь лишь здесь,обычноде на собеседовании на джуна спрашиввют про какоето дерево или spring
Aleksey Уровень 51
14 октября 2022

Класс, квалифицируемый как abstract, не может быть создан.
Чего??? Может имелось ввиду объект abstract класса???
Константин Уровень 34
13 октября 2022
Будто нечто старое. Вектор применяется.