Библиотека собеса по Java | вопросы с собеседований
6.38K subscribers
358 photos
4 videos
198 links
Вопросы с собеседований по Java и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/08c603b6

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
August 23, 2024
August 24, 2024
August 25, 2024
August 26, 2024
August 27, 2024
August 27, 2024
August 28, 2024
August 29, 2024
August 30, 2024
August 31, 2024
👾 -35% на курс по алгоритмам

На курсе вы на практике познакомитесь со сложными алгоритмами и научитесь писать более короткий и эффективный код – https://proglib.io/w/52359172

23 390 рублей 35 990 рублей

Что еще вас ждет на курсе:

▪️ 150 практических заданий и 47 видеолекций;

▪️ Бессрочный доступ ко всем материалам курса;

▪️ Развернутая обратная связь по всем домашним заданиям, а также ссылки на полезные дополнительные материалы.

🌚 Переходите на сайт, читайте подробности и заходите на обучение по самым выгодным условиям – https://proglib.io/w/52359172
Please open Telegram to view this post
VIEW IN TELEGRAM
September 1, 2024
💀 Как гарантированно провалить собеседование: 10 верных способов

В интернете можно найти много статей с советами, как идеально пройти собеседование: что говорить, как говорить, как себя вести, с чем приходить, как готовиться, где готовиться, какую информацию предварительно изучить. В общем, инструкций — вагон. Но, если честно, не очень хочется повторяться. Поэтому мы подготовили шуточную статью, как точно провалить собеседование.

Чтобы не завалить собеседование — забирайте наш курс:
🔵 Базовые модели ML и приложения

🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
September 1, 2024
Как реализовать immutable класс?

Чтобы реализовать immutable класс, необходимо сделать класс финальным, а его поля приватными и финальными. Значения полей устанавливаются через конструктор и не могут изменяться после создания объекта. Методы-сеттеры исключаются, а геттеры возвращают копии объектов, если поля содержат ссылки на изменяемые объекты. Такой подход гарантирует неизменяемость объектов, что повышает их безопасность и упрощает многопоточное программирование.
Please open Telegram to view this post
VIEW IN TELEGRAM
September 2, 2024
Объясните разницу между параллелизмом и многопоточностью?

Параллелизм и многопоточность — это два разных, но связанных понятия в программировании. Многопоточность означает выполнение нескольких потоков в рамках одного процесса, где каждый поток может выполняться независимо, но не обязательно одновременно. Потоки могут переключаться между собой, создавая иллюзию одновременности, однако они могут работать на одном ядре процессора.

Параллелизм, с другой стороны, означает выполнение нескольких задач одновременно на разных ядрах процессора. В контексте параллелизма, задачи действительно выполняются одновременно, что может ускорить выполнение программы, если задачи могут быть разбиты на независимые части.
Please open Telegram to view this post
VIEW IN TELEGRAM
September 3, 2024
В чем разница между final, finally и finalize() в Java?

Эти три термина часто путают, но они имеют принципиально разные значения:

🔹 final — это ключевое слово, используемое для ограничения:
▪️ Переменная: значение не может быть изменено после инициализации.
▪️ Метод: не может быть переопределён в подклассе.
▪️ Класс: запрещает наследование.

🔹 finally — это блок кода, который всегда выполняется после блока try-catch, независимо от того, было ли исключение выброшено или нет. Часто используется для освобождения ресурсов (например, закрытия файлов или потоков).

🔹 finalize() — это метод, который вызывается сборщиком мусора перед уничтожением объекта. Использовался для освобождения ресурсов, но сейчас его использование не рекомендуется из-за непредсказуемости момента вызова.
Please open Telegram to view this post
VIEW IN TELEGRAM
September 4, 2024
Разница между «Lambdas» и «Anonymous Classes»

— Лямбда-выражения имеют лаконичный синтаксис по сравнению с анонимными классами. Лямбды проще читать и писать, так как они не требуют явного объявления метода, тогда как анонимные классы содержат больше «лишнего» кода.

— Лямбды используются, когда интерфейс имеет один абстрактный метод (функциональные интерфейсы), тогда как анонимные классы могут реализовать несколько методов и применяться для интерфейсов с несколькими методами.

— Лямбды могут быть более эффективными, так как они компилируются в байт-код, который может быть оптимизирован. Анонимные классы обычно компилируются как отдельные классы, что может требовать больше ресурсов.
Please open Telegram to view this post
VIEW IN TELEGRAM
September 5, 2024
Что такое Heap и Stack?

🔹 Heap (Куча):
Это область памяти, где хранятся объекты и динамически создаваемые данные. Всё, что создаётся с помощью оператора new, помещается в кучу. Управление памятью здесь осуществляется автоматически через сборщик мусора (Garbage Collector). Память на куче выделяется динамически, и она имеет больший объём, чем стек.

🔹 Stack (Стек):
Это область памяти, где хранятся примитивные типы данных (int, float и т.д.) и ссылки на объекты, которые находятся в куче. Стек работает по принципу LIFO (последним пришёл — первым ушёл), и память выделяется под локальные переменные методов. Память на стеке освобождается автоматически, когда метод завершает выполнение.
Please open Telegram to view this post
VIEW IN TELEGRAM
September 6, 2024
В чем разница между sleep() и wait()?

🔹 sleep():

▪️ Приостанавливает выполнение текущего потока на заданное количество времени.
▪️ Не освобождает монитор (блокировку) объекта.
▪️ Вызывается как статический метод Thread.sleep(millis).

🔹 wait():

▪️ Приостанавливает текущий поток до тех пор, пока другой поток не вызовет метод notify() или notifyAll() на том же объекте.
▪️ Освобождает монитор объекта, позволяя другим потокам его использовать.
▪️ Вызывается на любом объекте, внутри синхронизированного блока synchronized.

Используйте sleep() для временной паузы, а wait() для синхронизации между потоками.
Please open Telegram to view this post
VIEW IN TELEGRAM
September 7, 2024
В чем разница между LinkedHashMap и TreeMap в Java?

🔹 Порядок хранения элементов:

▪️ LinkedHashMap сохраняет порядок вставки элементов. То есть, когда вы итерируете по коллекции, элементы будут возвращаться в том порядке, в котором они были добавлены.
▪️ TreeMap, с другой стороны, сортирует элементы по ключу. Это означает, что порядок следования элементов при итерации определяется натуральным порядком ключей (если ключи реализуют Comparable) или компаратором, который вы передадите.

🔹 Время доступа к элементам:

▪️ LinkedHashMap использует хеш-таблицу, и поэтому в среднем имеет более быстрый доступ к элементам — поиск, вставка и удаление выполняются в среднем за время, близкое к O(1).
▪️ TreeMap реализована на основе красно-чёрного дерева, что делает операции поиска, вставки и удаления в среднем более медленными — за время O(log n), так как элементы поддерживаются в отсортированном виде.

🔹 Использование в различных задачах:

▪️ LinkedHashMap подходит для задач, где важен порядок вставки элементов, например, при реализации кэша с ограниченным количеством элементов.
▪️ TreeMap полезна, когда необходимо хранить элементы в отсортированном порядке или когда важен быстрый поиск минимального/максимального ключа.
Please open Telegram to view this post
VIEW IN TELEGRAM
September 9, 2024