Библиотека собеса по Java | вопросы с собеседований
Kanalga Telegram’da o‘tish
Вопросы с собеседований по Java и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/08c603b6 Для обратной связи: @proglibrary_feeedback_bot
Ko'proq ko'rsatish6 494
Obunachilar
+324 soatlar
+147 kunlar
+1930 kunlar
Postlar arxiv
🤔 Нужна ли математика на собеседованиях?
🗓 Сегодня в 20:00 встречаемся в прямом эфире, чтобы обсудим роль математики на собеседовании, а также поделимся инсайдами как успешно пройти техническое собеседование! https://proglib.io/w/47174041
🌟 Спикер: Станислав Петров – Senior Data Scientist.
😮 На вебинаре вы узнаете:
😱 Ошибаться — не страшно. Как ошибки и неудачные проекты могут стать ценным опытом. Почему «проекты в стол» способствуют профессиональному росту. И как преодолеть путь от junior до senior.
🙌🏻 Собеседования: можно ли к ним не готовиться?! Поделимся эффективными стратегиями подготовки и расскажем, на что работодатели обращают внимание в первую очередь.
✍️ Разберем реальные тестовые задачи, которые дают на собеседованиях на позицию Data Scientist.
🎁 Бонус: расскажем как проводить эффективное тестирование в маркетинге и их масштабируемость.
🎯 Почему важно посетить вебинар?
• Понимание математических концепций и их применение помогает успешно проходить собеседования и решать реальные задачи.
• Расширьте свой профессиональный кругозор и подготовьтесь к новым карьерным вызовам.
👉 Присоединяйтесь к нам и узнайте, как математика может помочь в вашей карьере https://proglib.io/w/47174041
❓ Что означает буква "O" в SOLID?
"O" — это Open/Closed Principle (Принцип открытости/закрытости). Классы должны быть открыты для расширения, но закрыты для модификации. Это означает, что поведение класса можно изменять через наследование или реализацию интерфейсов, не изменяя его исходный код.
🧑💻 Пример:
Вместо изменения существующего класса для добавления новой функциональности, мы можем создать новый класс, который расширит существующий, сохраняя оригинальный код неизменным.
🧪 Чем заменить Postman: 5 отличных инструментов для разработки API
Postman долгое время был основным инструментом для разработки и тестирования API, но сейчас для большинства разработчиков его ограничения стали перевешивать преимущества. Рассмотрим альтернативные инструменты, которые могут предложить больше возможностей, чем Postman — даже в бесплатной версии.
👉Читаем здесь
ℹ️ Как устроен под капотом TreeMap?
TreeMap — это реализация интерфейса Map в Java, которая сохраняет элементы в отсортированном порядке. В отличие от HashMap и LinkedHashMap, которые не гарантируют порядок, TreeMap организует элементы по естественному порядку или с помощью заданного Comparator. Это достигается с помощью красно-чёрного дерева, структуры данных, поддерживающей отсортированный порядок с высокой эффективностью.
🔹 Структура TreeMap
TreeMap основан на красно-чёрном дереве, что позволяет выполнять операции вставки, удаления и поиска за логарифмическое время:
▪️ Каждая запись (node) в TreeMap содержит ссылки на левый и правый дочерние узлы, а также на родительский узел. Красно-чёрное дерево поддерживает сбалансированность, что минимизирует высоту дерева.
▪️ Каждый узел имеет атрибут «цвет» — красный или чёрный, что позволяет TreeMap быстро балансировать дерево при добавлении или удалении элементов.
🔹 Производительность
▪️ Вставка: Добавление новых элементов выполняется за O(log n), так как операция требует соблюдения порядка и может потребовать перестройки дерева для поддержания баланса.
▪️ Удаление: Удаление элементов также выполняется за O(log n), с обязательной корректировкой баланса дерева.
▪️ Поиск: Поиск элементов по ключу также занимает O(log n), благодаря сбалансированному дереву.
🔹 Использование памяти
Каждый узел в TreeMap содержит ссылки на дочерние узлы и родительский узел, а также информацию о цвете. Из-за этого TreeMap требует больше памяти, чем обычный HashMap, но сохраняет отсортированный порядок ключей.
🔹 Преимущества и недостатки
▪️ Преимущества:
- Поддержание отсортированного порядка: TreeMap гарантирует, что элементы будут отсортированы по возрастанию (или согласно Comparator), что полезно для приложений, где важен порядок ключей.
- Быстрая навигация: TreeMap поддерживает методы для нахождения минимальных и максимальных элементов, а также диапазонные операции, такие как subMap, headMap и tailMap.
- Балансировка: Красно-чёрное дерево автоматически балансируется, что обеспечивает высокую производительность на больших наборах данных.
▪️ Недостатки:
- Более высокие временные затраты на вставку и удаление: В отличие от HashMap и LinkedHashMap, TreeMap требует логарифмическое время на операции из-за необходимости поддержания баланса.
- Более высокое потребление памяти: Дополнительные ссылки и атрибуты для балансировки увеличивают использование памяти по сравнению с HashMap.
- Не поддерживает null ключи: В TreeMap нельзя использовать null в качестве ключа, что ограничивает его использование в некоторых сценариях.
Repost from Библиотека ИИ для айтишников
⚡️Разыгрываем флагманский смартфон
«Библиотека программиста» разыгрывает один из трех смартфонов на выбор:
🔹Samsung Galaxy S24 Ultra на 1 ТБ
🔹Xiaomi 14 Ultra на 512 ГБ
🔹iPhone 16 Pro Max на 512 ГБ
🔥 А еще 99 участников розыгрыша получат скидку 50% на наш курс Базовые модели ML и приложения!
Промокод будет действителен до 20 ноября.
Условия просты:
→ подписаться на Библиотека нейротекста
→ подписаться на Библиотека нейрозвука
→ подписаться на Библиотека нейрокартинок
→ нажать на кнопку «Участвовать» под этим постом
Итоги появятся 30 октября в 20:00 по московскому времени в нашем канале Библиотека программиста. Затем мы свяжемся с победителем, который сам выберет смартфон. Тем, кто получит промокод, мы вышлем его в течение недели после окончания розыгрыша.
⚠️ Убедитесь, что вам можно написать в личные сообщения или следите за результатами — если мы не сможем с вами связаться, то не сможем и отправить приз. Доставить мы можем только в города России и Беларуси.
❓ Зачем нужен enum?
Enum используется для представления набора конечных значений, которые имеют логическую связь друг с другом. Это полезно в ситуациях, когда есть фиксированный список опций, например, дни недели, месяцы, состояния или команды.
Преимущества enum:
- Типобезопасность: Исключает ошибки, связанные с некорректными строковыми или числовыми значениями.
- Читаемость: Код становится более понятным, так как вместо магических чисел или строк используются осмысленные имена.
- Расширенные возможности: Можно добавлять методы и конструкторы, что делает enum мощнее, чем обычные константы.
❓ Что такое пагинация, и зачем она нужна в работе с базой данных?
Пагинация — это техника разделения больших объемов данных на небольшие страницы для их поэтапной загрузки. Она особенно важна, когда мы работаем с большими таблицами, чтобы не загружать все записи сразу, что может привести к перегрузке памяти и увеличению времени обработки.
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❓ Где лучше хранить пароль: в строке или в массиве символов?
Пароль лучше хранить в массиве символов, потому что:
- Строки в Java неизменяемы, и их нельзя явно удалить из памяти. Они остаются там до сборки мусора, что может привести к утечке пароля.
- Массив можно очистить вручную после использования (путём перезаписи значения), что даёт больший контроль над временем хранения данных.
Опрос «Как вы учитесь с помощью телефона: поделитесь своим опытом!»
Дорогие подписчики, мы на миссии улучшений, и вы — наш ключ! 🔑Мы хотим стать ещё круче, и для этого нужно узнать, как вы учитесь! Заполните мини-анкету о том, как вы используете мобильные приложения для прокачки знаний. ⏳ Займёт всего 5 минут — как раз успеете за чашкой кофе! А за ваш ценный вклад мы дарим 15% скидку на все курсы https://proglib.academy/ 🎁
❓ Что за принцип KISS?
❌ Неверно: KISS – это принцип, который означает «делай максимально просто". Нужно всегда делать код минималистичным и без сложных конструкций и логики.
✔️ Правильный ответ: KISS (Keep It Simple, Stupid) — это принцип, который заключается в том, чтобы создавать как можно более простой и понятный код, избегая излишней сложности и чрезмерной абстракции. Его цель — сделать код легким для понимания и сопровождения. Однако KISS не означает упрощение до ущерба функциональности. Применение KISS требует правильного баланса между простотой и выполнением поставленных задач. Важно не путать упрощение с урезанием необходимого функционала или нарушением архитектуры.
❓ Что такое String Pool?
String Pool — это специальная область памяти в Java Heap, предназначенная для хранения строковых литералов. Когда создаётся строка, JVM проверяет, есть ли уже такая строка в пуле. Если она найдена, то возвращает ссылку на существующую строку, а если нет — добавляет её в пул. Это помогает уменьшить потребление памяти, так как одинаковые строковые литералы не создаются несколько раз.
Важно отметить, что строки, созданные с помощью new String(), не попадают в пул автоматически, их нужно туда добавлять вручную с помощью метода intern().
Опрос «Как вы учитесь с помощью телефона: поделитесь своим опытом!»
Дорогие подписчики, мы на миссии улучшений, и вы — наш ключ! 🔑Мы хотим стать ещё круче, и для этого нужно узнать, как вы учитесь! Заполните мини-анкету о том, как вы используете мобильные приложения для прокачки знаний. ⏳ Займёт всего 5 минут — как раз успеете за чашкой кофе! А за ваш ценный вклад мы дарим 15% скидку на все курсы https://proglib.academy/ 🎁
👀 Задачи с собеседований: Реализация метода equals() (middle)
- Как правильно переопределить метод equals()?
💡 Ключевые моменты:
▪️ Рефлексивность — объект должен быть равен самому себе.
▪️ Симметричность — если a.equals(b), то и b.equals(a) должно быть истинно.
▪️ Транзитивность — если a.equals(b) и b.equals(c), то a.equals(c) должно быть истинно.
▪️ Непротиворечивость — несколько вызовов метода equals() на одном и том же объекте должны возвращать одно и то же значение, если объекты не изменились.
▪️ null — вызов a.equals(null) должен возвращать false.
Реализация на картинке 👆🏻
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
👉Переводчик и автор оригинальных статей
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
❓ Может ли интерфейс быть final?
Интерфейс не может быть final.
Модификатор final запрещает наследование или расширение классов, а интерфейсы по своей природе предназначены для того, чтобы быть реализованными другими классами. Поэтому интерфейсы не могут быть final, так как это противоречит их цели — служить контрактом, который может быть реализован.
❓ Что означает буква "D" в SOLID?
"D" — это Dependency Inversion Principle (Принцип инверсии зависимостей). Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций. Абстракции не должны зависеть от деталей, но детали должны зависеть от абстракций.
🧑💻 Пример:
Вместо того чтобы зависеть от конкретного класса, лучше внедрить зависимость через интерфейс или абстракцию. Например, класс Car должен зависеть не от конкретного класса DieselEngine, а от интерфейса Engine, что позволит менять тип двигателя без изменения кода автомобиля.
❓ Что такое POJO класс?
POJO (Plain Old Java Object) — это объект Java, который не зависит от каких-либо специфичных библиотек или фреймворков. Он не реализует интерфейсы, не наследуется от конкретных классов и не использует аннотации. По сути, это обычный класс, который может содержать поля, геттеры/сеттеры и методы, но не содержит сложной логики, а его назначение — быть простым носителем данных.
POJO часто используется в рамках концепции, где важна чистота и независимость кода, например, в моделях данных для ORM или сериализации.
ℹ️ Как устроен под капотом LinkedHashMap?
LinkedHashMap — это реализация интерфейса Map, которая сохраняет порядок добавления элементов. В отличие от обычного HashMap, где элементы могут быть расположены случайным образом, LinkedHashMap поддерживает последовательность вставки или порядок доступа. Это достигается благодаря использованию двусвязного списка, который связывает все элементы карты.
🔹 Структура LinkedHashMap
Основой LinkedHashMap является та же хэш-таблица, что и в HashMap, но с дополнительной структурой двусвязного списка для сохранения порядка элементов:
▪️ Каждая запись (entry) в LinkedHashMap содержит ссылки на предыдущий и следующий элементы. Это позволяет поддерживать порядок добавления или порядок последнего доступа.
▪️ Сначала выполняется хэширование ключей для быстрой вставки и поиска, как в HashMap, а уже потом запись связывается в список.
🔹 Производительность
▪️ Вставка: Добавление новых элементов выполняется за O(1), поскольку элементы добавляются в конец двусвязного списка, а хэш-таблица используется для поиска свободной позиции.
▪️ Удаление: Удаление элемента требует корректировки ссылок в двусвязном списке, что увеличивает накладные расходы, но также выполняется за O(1).
▪️ Поиск: Операция поиска по ключу происходит с использованием хэш-таблицы и выполняется за O(1), как и в HashMap.
▪️ Множественные коллизии: в худшем случае все операции будут выполняться с O(n), если допустить множественные коллизии.
🔹 Использование памяти
Каждая запись LinkedHashMap содержит дополнительные ссылки на предыдущий и следующий элементы, что увеличивает потребление памяти по сравнению с HashMap. Однако это оправдано, если важен порядок элементов.
🔹 Преимущества и недостатки
▪️ Преимущества:
- Сохранение порядка вставки: LinkedHashMap гарантирует, что элементы будут извлекаться в том порядке, в котором они были добавлены.
- Порядок доступа: Можно настроить LinkedHashMap на удаление самых старых элементов, что полезно для кэшей, где используется политика LRU (Least Recently Used).
- Предсказуемость итераций: В отличие от HashMap, где порядок элементов может изменяться, LinkedHashMap всегда сохраняет стабильный порядок.
▪️ Недостатки:
- Более высокое потребление памяти: Дополнительные ссылки на предыдущие и следующие элементы увеличивают память на каждую запись.
- Скорость: LinkedHashMap немного медленнее HashMap из-за поддержания порядка элементов.
❓ Чем отличается абстрактный класс от интерфейса?
Абстрактные классы и интерфейсы используются для обеспечения полиморфизма, но у них разные сценарии применения:
- Наследование: Абстрактный класс поддерживает единичное наследование, интерфейс — множественное.
- Реализация: Абстрактный класс может содержать поля и методы с реализацией. В то время как интерфейс (до Java 8) не мог иметь методы, после Java 8 в интерфейсах появились default методы. Поля в интерфейсах могут быть только public static final.
- Когда выбирать: Абстрактный класс — для объектов с общим поведением, интерфейсы — для описания возможностей или контрактов.
Абстрактные классы — это про кто я такой, интерфейсы — про что я могу делать.
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
