fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید 👈

Java Interview Tasks

Java Interview Tasks

رفتن به کانال در Telegram

Реальные вопросы и задачи с собеседований. Оригинальный авторский контент. Актуальный материал. Уровень вопросов от junior до supersenior. Автор канала - @alexzelentsov По рекламе: @alexzelentsov

نمایش بیشتر
4 896
مشترکین
اطلاعاتی وجود ندارد24 ساعت
+137 روز
+18830 روز
آرشیو پست ها
Этот код компилируется, но выдает совершенно неправильный результат: [0, -1, -2, -3, 3, 1, 2] Для Comparator, необходимо реализовать один метод compare(), который принимает два integer значения и возвращают int значение, знак которого показывает, какой из входных параметров больше. Метод Integer.max() принимает два целочисленных значения и возвращает int, поэтому с точки зрения Java, он соответствует интерфейсу Comparator. Однако знак возвращаемого значения не показывает, какой из входных данных больше. Например max(2,3)=3, а в случае компаратора должен был бы вернуть отрицательное значение. Поэтому сортировка работает некорректно. Чтобы исправить этот код, вы можете указать Comparator.naturalOrder().

Напечатает ли код числа в отсортированном порядке?
Anonymous voting

Напечатает ли код числа в отсортированном порядке?
Напечатает ли код числа в отсортированном порядке?

Ответ к вопросу про реализации unionLists: Ниже представлены реализации метода
public List<String> unionLists(List<String> l1, List<String> l2);
, и комментарии, почему они могут быть неверными:
public List<String> unionLists(List<String> l1, List<String> l2) {
    l1.addAll(l2);
    return l1;
}
Incorrect Reason: Эта реализация изменяет исходный список l1, что может быть неприемлемо, если l1 immutable. Будет exception .
public List<String> unionLists(List<String> l1, List<String> l2) {
    l2.addAll(l1);
    return l2;
}
Incorrect Reason: Аналогично l2 может быть immutable.
public List<String> unionLists(List<String> l1, List<String> l2) {
    List<String> l3 = new ArrayList<>();
    l3.addAll(l1);
    l3.addAll(l2);
    return l3;
}
Тут проблемы с immutable l1 и l2 нет.

Какая реализация метода public List unionLists(List l1, List l2); верная?
Anonymous voting

3
3

2
2

1
1

Какая реализация метода верная? (мы не знаем какая конкретно реализация List придет в метод)
java 
public List<String> unionLists(List<String> l1, List<String> l2);

Правильный ответ: key=keyline Как видите, содержимое начинается с ключа, что не соответствует нашим ожиданиям. Давайте внимательнее изучим: map.computeIfAbsent("key", StringBuilder::new) .append("line").append("\n"); Здесь мы создаем новую запись в мапе, если она еще не была создана. Мы использовали метод референс для новых записей. Но какой конструктор StringBuilder мы вызываем здесь? Если вы преобразите ссылку на метод в лямбда-выражение, вы получите следующее: map.computeIfAbsent("key", str -> new StringBuilder(str)) .append("line").append("\n"); Теперь результат более понятен. Функция, переданная в computeIfAbsent(), имеет аргумент, который является ключом, переданным в качестве первого параметра. Легко забыть об этом, поскольку обычно вам не нужен этот аргумент, и если он вам нужен, вы можете захватить переменную key. В лямбда-выражении вы можете просто проигнорировать этот аргумент. Однако, когда используется ссылка на метод, компилятор ищет конструктор, который принимает строку. Поскольку в StringBuilder фактически есть такой конструктор, компиляция успешно завершается, но вновь созданный StringBuilder не будет пустым. Было бы правильнее использовать лямбда-выражение и конструктор по умолчанию здесь. Ссылка на метод здесь совсем не подходит.

Что напечатает код?
Anonymous voting

Что напечатает код?
Что напечатает код?

Здесь автор кода по ошибке попытался обрезать все строки внутри списка, но метод forEach позволяет использовать все элементы коллекции, но не позволяет их обновлять. Он принимает функциональный интерфейс Consumer, чей абстрактный метод accept() возвращает void, поэтому результат вызова trim() игнорируется. Было бы правильнее использовать метод replaceAll() в данном случае.

Что делает метод trimAll?
Anonymous voting

Что делает метод trimAll?
Что делает метод trimAll?

Проблема в порядке операций, что может ввести в заблуждение - тернарный оператор имеет низкий приоритет Пример кода, который однозначно будет пониматься:

photo content

Что напечатает код?
Anonymous voting

Что вернет метод?
Что вернет метод?

Как вы считаете, как они должны разделить вознаграждение, чтобы все было честно?
Anonymous voting