ch
Feedback
Библиотека собеса по Java | вопросы с собеседований

Библиотека собеса по Java | вопросы с собеседований

前往频道在 Telegram

Вопросы с собеседований по Java и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/08c603b6 Для обратной связи: @proglibrary_feeedback_bot

显示更多
6 494
订阅者
+324 小时
+147
+1930
帖子存档
Черные скидки на курсы в Академии! -40% до конца ноября 🔥 В честь Черной пятницы до 30 ноября запускаем распродажу на все ку
Черные скидки на курсы в Академии! -40% до конца ноября 🔥 В честь Черной пятницы до 30 ноября запускаем распродажу на все курсы proglib.academy и дарим промокод на сумму 10 000 на технику в магазине DigitalRazor (отправим вам по запросу) 🎁 Анонс новогоднего сюрприза! 🎄 Те, кто успеет приобрести курсы с 27 ноября по 27 декабря, получат шанс выиграть крутой новогодний подарок. Что это будет, пока держим в секрете – следите за новостями на нашем канале! Почему стоит выбрать нас? ⚫️ Опытные преподаватели Вас будут обучать доценты ВМК МГУ по математике, а алгоритмы расскажет разработчик из Яндекса и преподаватель МФТИ и НИУ ВШЭ. ⚫️ Бессрочный доступ ко всем курсам Проходите обучение в удобном для вас темпе, без давления жестких сроков. ⚫️ Поддержка преподавателей Не останетесь одни — вам всегда помогут разобраться с трудными темами и ответят на любые вопросы через чат и платформу Coreapp. 👉 Не уверены, подойдет ли вам курс? Начните с бесплатных вводных занятий и познакомьтесь с преподавателями и форматом обучения – Ждем вас на обучении! 🙌

Что такое проблема N+1 в JPA и как её избежать? Проблема N+1 возникает, когда для выборки данных из базы выполняется 1 основной запрос и N дополнительных запросов для каждой сущности, связанной с основной. Это происходит из-за ленивой загрузки (LAZY) связанных данных, когда каждая связанная сущность запрашивается отдельно. 📌 Пример:
List<Department> departments = departmentRepository.findAll();
for (Department department : departments) {
    System.out.println(department.getEmployees().size());
}
- Выполняется запрос для получения всех Department (1 запрос). - Для каждого департамента выполняется отдельный запрос для загрузки employees (N запросов). - Итого: 1 + N запросов вместо оптимального 1-2. 💡 Как избежать? ▪️ Использовать JOIN FETCH ▪️ Использовать EntityGraph ▪️ Настроить @Fetch(FetchMode.SUBSELECT) (Hibernate)

Что такое non-repeatable read в контексте работы с БД? Non-repeatable read (неповторяемое чтение) — это ситуация, когда одна транзакция считывает одни и те же данные дважды в рамках одной транзакции, но получает разные результаты из-за изменений, внесённых другой транзакцией между этими чтениями. 📌 Пример: - Транзакция A считывает данные: SELECT balance FROM accounts WHERE id = 1; Результат: balance = 1000. - Транзакция B обновляет те же данные и фиксирует изменения: UPDATE accounts SET balance = 1500 WHERE id = 1; COMMIT;. - Транзакция A снова считывает данные в рамках той же транзакции: SELECT balance FROM accounts WHERE id = 1; Результат: balance = 1500. В результате данные, полученные Транзакцией A, отличаются в первом и втором чтении. Non-repeatable read возможен на уровне изоляции READ COMMITTED. Чтобы предотвратить такие ситуации, используется уровень REPEATABLE READ, который гарантирует неизменность данных, считанных транзакцией, до её завершения.

🤖🛠 11 лучших ИИ-инструментов для разработки в 2024 году В мире разработки программного обеспечения искусственный интеллект
🤖🛠 11 лучших ИИ-инструментов для разработки в 2024 году В мире разработки программного обеспечения искусственный интеллект становится незаменимым помощником, способным значительно повысить продуктивность и качество кода. Представьте себе инструменты, которые не только автоматически дополняют ваш код, но и генерируют целые фрагменты, преобразуют дизайн в готовый код и обеспечивают безопасность вашего приложения. Хотите узнать, какие ИИ-инструменты помогут вам быть на шаг впереди в 2024 году? Откройте для себя решения, которые сделают ваш рабочий процесс более эффективным и инновационным. 🔗 Читать статью 🔗 Зеркало

Что такое dirty read в контексте работы с БД? Dirty read (грязное чтение) — это ситуация, когда одна транзакция считывает данные, которые были изменены другой транзакцией, но ещё не зафиксированы. Если вторая транзакция откатится, то данные, которые считала первая транзакция, окажутся недействительными. 📌 Пример: - Транзакция A обновляет баланс счета: UPDATE accounts SET balance = 1000 WHERE id = 1; - Транзакция A не фиксирует изменения (COMMIT), а баланс временно обновлён. - Транзакция B считывает баланс: SELECT balance FROM accounts WHERE id = 1; - Если транзакция A откатится (ROLLBACK), то данные, которые считала транзакция B, окажутся некорректными. Dirty read возможен только при уровне изоляции READ UNCOMMITTED. На практике этот уровень редко используется, так как приводит к нестабильности данных. Уровни изоляции вроде READ COMMITTED и выше предотвращают грязные чтения, делая транзакции более надёжными.

🔞 Java как секс! Если зубрить ее только по книжкам, то кроме теории и деградации, ты ничему не научишься В канале Java, поле
🔞 Java как секс! Если зубрить ее только по книжкам, то кроме теории и деградации, ты ничему не научишься В канале Java, полегче 🥵! ты найдешь лучшие практики написания кода. Действующий тимлид европейского финтеха, самобытно и с долей юмора, делится секретами 🤫: ➖ Гайд по Kafka(причем тут порноактриса Piper Perri)Roadmap java разработчика на 2025Самый кринжовый подарок, сделанный девушке, с помощью программированияКак java крадет твои деньгиТоп 8 ошибок при составлении резюме Самые сложные алгоритмы на моей практике. Не трать на них время Chatgpt telegram bot с нуля на java Миллиард тенге. Самая сложная задача И это только цветочки. Рекомендую!  В этом канале даже джуны становятся сеньорами 😏 🔈 Подписывайся, это самый простой способ прокачать свои хард-скиллы:  @javezka

💡 Как избавиться от WebSockets и сэкономить $1 млн в год: неожиданные решения для оптимизации Как снизить расходы на инфраст
💡 Как избавиться от WebSockets и сэкономить $1 млн в год: неожиданные решения для оптимизации Как снизить расходы на инфраструктуру и повысить эффективность? Оказывается, отказ от WebSockets может сэкономить миллионы. Вместо привычного подхода можно использовать решения, которые не только проще, но и лучше подходят для определённых задач, как, например, асинхронные очереди или SSE. Знаете ли вы, как выбрать стратегию, которая одновременно сократит затраты и улучшит масштабируемость? Разберитесь в тонкостях оптимизации и найдите способ выжать максимум из вашей системы. 🚀 🔗 Читать статью 🔗 Зеркало

Какие уровни изоляции транзакций существуют? 1️⃣ Read Uncommitted - транзакция может читать изменения, которые ещё не зафиксированы другой транзакцией. ❗️ Возможна проблема грязного чтения (dirty read). 2️⃣ Read Committed - транзакция видит только зафиксированные изменения. ❗️ Возможна проблема неповторяющегося чтения (non-repeatable read). 3️⃣ Repeatable Read - транзакция видит одни и те же данные при повторных чтениях. ❗️ Возможна проблема фантомных чтений (phantom reads), когда другая транзакция добавляет новые строки, влияющие на ваш запрос. 4️⃣ Serializable - транзакции выполняются последовательно, как если бы они шли одна за другой, что исключает фантомные чтения. ❗️ Самый медленный уровень.

🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хо
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом. Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций. Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах. 👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.

🚀 Как ускорить распределенные системы: 8 стратегий снижения времени ожидания Высокая latency — это скрытый враг, превращающи
🚀 Как ускорить распределенные системы: 8 стратегий снижения времени ожидания Высокая latency — это скрытый враг, превращающий приложение в тормозящую телегу. Особенно в распределённых системах, где данные путешествуют между серверами и каждая задержка становится катастрофой. Знаете ли вы, какие 8 стратегий помогут превратить "задумчивое" приложение в настоящего чемпиона? Что эффективнее: кэшировать, сжимать или оптимизировать запросы к базе? А что, если правильный ответ — балансировка нагрузки или вообще CDN? 💡 Найдите недостающий элемент в вашем стеке и максимально ускорьте свои приложения. 🔗 Читать статью 🔗 Зеркало

Уже завтра собеседование на Middle Java с разработчиком из МТС 20 ноября (уже завтра!) в 19:00 по мск приходи онлайн на откры
Уже завтра собеседование на Middle Java с разработчиком из МТС 20 ноября (уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика. Как это будет: 1. Мария Ядерцова ведущий Java-разработчик в МТС Диджитал и ex. Сбербанк-Технологии будет задавать реальные вопросы и задачи разработчику-добровольцу 2. Мария будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 3. В конце можно будет задать любой вопрос Марии Что узнаешь на прямом эфире от ШОРТКАТ: • Чего ждут от кандидатов на Middle позиции в Java-разработке • Какие вопросы задают на интервью и зачем • Как подготовиться к собесу, чтобы получить оффер Это бесплатно? Бесплатно Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2Vtzqwdy7mp

Вакансии «Библиотеки программиста» — ждем вас в команде! Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем: 👉контент-менеджеров для ведения телеграм-каналов Подробности тут Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴 Ждем ваших откликов 👾

🔨🐳 Секреты стройности от многоэтапной сборки Docker-образы тоже мечтают сбросить пару лишних мегабайтов и выглядеть подтяну
🔨🐳 Секреты стройности от многоэтапной сборки Docker-образы тоже мечтают сбросить пару лишних мегабайтов и выглядеть подтянутыми. Если ваши контейнеры уже начали тяжело вздыхать на старте или требуют отдельного хранилища для своих «боков», самое время узнать, как их «подсушить». В статье «Стройные контейнеры: как уменьшить Docker-образ с помощью многоэтапной сборки» раскрываются секреты того, как отправить ваш образ на диету и сделать его быстрее, легче и безопаснее. 📎 Читать статью

🛠️ Свежий релиз Docker Desktop 4.35 🐳 Токены доступа для организаций (Beta) — Эта функция улучшает управление доступом на у
🛠️ Свежий релиз Docker Desktop 4.35 🐳 Токены доступа для организаций (Beta) — Эта функция улучшает управление доступом на уровне организаций. Она позволяет централизовано управлять правами пользователей, обеспечивая лучшее управление и масштабируемость для бизнеса. 🐳 Docker Home (Beta) — Новый интерфейс Docker Home служит центральным «хабом» для доступа к продуктам Docker, управления подписками и настройками. 🐳 Интерфейс терминала в Docker Desktop — Эта функция позволяет интегрировать терминал в интерфейс Docker Desktop, упрощая работу разработчиков и снижая необходимость переключаться между CLI и GUI. 🐳 Резервное копирование томов — В Docker Desktop теперь доступна улучшенная функция резервного копирования томов, которая упрощает процесс создания бэкапов данных и делает его более удобным. 🐳 Улучшенная производительность на macOS — Введение Docker VMM для Apple Silicon улучшает производительность на Mac, ускоряя выполнение множества задач. 📎 Подробнее в блоге компании

ℹ️ Что такое нормализация базы данных, и какие существуют нормальные формы? Нормализация — это процесс приведения структуры базы данных к оптимальному виду для устранения избыточности данных и обеспечения их целостности. Процесс состоит из последовательных этапов, соответствующих нормальным формам (НФ). Основные нормальные формы (НФ): 1️⃣ Первая нормальная форма (1НФ): Данные делятся на атомарные (неделимые) значения. Пример: В одной ячейке таблицы не может быть списка телефонов, вместо этого создается отдельная строка для каждого телефона. 2️⃣ Вторая нормальная форма (2НФ): Требует выполнения 1НФ и исключения зависимости от части составного первичного ключа. Это устраняет проблему дублирования данных. Пример: Если таблица использует составной ключ (например, "Курс" и "Студент"), информация, относящаяся только к "Курсу", выносится в отдельную таблицу. 3️⃣ Третья нормальная форма (3НФ): Выполняется 2НФ и устраняются транзитивные зависимости — неключевые атрибуты должны зависеть только от ключа. Пример: Если в таблице есть "ID сотрудника", "Отдел" и "Название отдела", то "Название отдела" переносится в отдельную таблицу "Отделы". Редко используемые нормальные формы: - Нормальная форма Бойса-Кодда (BCNF): Уточнённая версия 3НФ, где каждое определяющее множество является суперключом. Используется для устранения более сложных аномалий. - Четвёртая нормальная форма (4НФ): Устраняет многозначные зависимости, которые появляются при использовании нескольких связей между одними и теми же атрибутами. - Пятая нормальная форма (5НФ): Делает базу данных устойчивой к разделению данных, устраняя зависимости соединений. Эти формы применяются в сложных сценариях, например, при проектировании корпоративных систем с огромным количеством взаимосвязей. Для большинства приложений 3НФ оказывается достаточной.

👀 Задачи с собеседований: Проверка, является ли бинарное дерево деревом поиска (middle) — Как определить, является ли заданн
👀 Задачи с собеседований: Проверка, является ли бинарное дерево деревом поиска (middle) — Как определить, является ли заданное бинарное дерево деревом поиска (BST)? 💡 Ключевые моменты: - Бинарное дерево поиска (BST) — это бинарное дерево, в котором для каждого узла все значения в левом поддереве меньше значения узла, а все значения в правом поддереве больше. - Для проверки можно использовать рекурсивный подход с отслеживанием допустимых диапазонов значений для каждого узла. - Как изменить реализацию для работы с любыми типами данных в узлах дерева? Реализация с числами в узлах на картинке 👆🏻

Какие есть методы в Stream API? 1️⃣ Промежуточные операции (Intermediate) - эти методы возвращают новый Stream, позволяя строить конвейеры: - filter(Predicate<T> predicate) — фильтрация элементов. - map(Function<T, R> mapper) — К каждому элементу применяется функция, возвращается одно значение. - flatMap(Function<T, Stream<R>> mapper) — К каждому элементу применяется функция, возвращается поток для каждого значения. Затем все потоки объединяются в один общий поток. - sorted(Comparator<T> comparator) — сортировка. - distinct() — удаление дубликатов. - limit(long maxSize) / skip(long n) — ограничение или пропуск элементов. 2️⃣ Терминальные операции (Terminal) - эти методы завершают поток и возвращают результат: - forEach(Consumer<T> action) — выполнение действия для каждого элемента. - collect(Collector<T, A, R>) — преобразование в коллекцию или другой объект. - reduce(BinaryOperator<T> accumulator) — агрегация. - count() — количество элементов. - anyMatch, allMatch, noneMatch(Predicate<T>) — проверки условий. - findFirst(), findAny() — поиск элементов. 3️⃣ Параллельные операции - для работы с большими данными: - parallel() — перевод в параллельный поток. - sequential() — возврат к последовательному выполнению. 4️⃣ Создание потоков: - Stream.of(T... values) — из значений. - Arrays.stream(T[] array) — из массива. - Stream.generate(Supplier<T>) / Stream.iterate(T seed, UnaryOperator<T>) — создание бесконечных потоков.

Что означает ключевое слово native? Ключевое слово native обозначает, что метод реализован не на Java, а, как правило, на языке C или C++. Такие методы, называемые "native-методами", позволяют Java-классам взаимодействовать с кодом на уровне операционной системы или с другими программами, что полезно при работе с аппаратными ресурсами или для повышения производительности в специфичных задачах. Native-методы подключаются через JNI (Java Native Interface), который предоставляет мост между Java и низкоуровневым кодом.

Стань Java-разработчиком с нуля до middle за 6 месяцев с гарантией трудоустройства с зарплатой 140 000+ Образовательный проек
Стань Java-разработчиком с нуля до middle за 6 месяцев с гарантией трудоустройства с зарплатой 140 000+ Образовательный проект EdMe открывает набор на курс Java-разработки для начинающих программистов и тех, кто хочет освоить Java с нуля. EdMe специализируется на подготовке высококвалифицированных IT-специалистов с уникальной моделью оплаты – после трудоустройства, чтобы сделать качественное IT-образование доступным для каждого, независимо от финансовых возможностей. ▪️ От вас нужно лишь желание учиться и готовность уделять от 15 часов в неделю на занятия. ▪️ Программа охватывает Java Core, работу с базами данных (HIBERNATE), фреймворки Spring, GIT, и подготовку к техническим собеседованиям. ▪️Практический опыт – вы будете работать над реальным проектом, развивая практические навыки. ▪️Индивидуальное менторство – ментор проведёт вас по короткому пути, объясняя, что и как учить для быстрого освоения навыков, подготовит вас к успешному прохождению собеседований. ▪️Гарантия трудоустройства: 98,9% выпускников получают оффер за 34 дня. ▪️Высокая зарплата со старта от 140 000 ₽. Мы заинтересованы в вашем успехе и поможем получить наиболее конкурентный оффер. ▪️Оплата после трудоустройства, 20% от зарплаты в течение 18 месяцев. 🗓 Старт обучения: ноябрь 2024. Чтобы начать учиться нужно оставить заявку на сайте EdMe.pro. Отбор включает несложное тестовое задание, которое под силу выполнить человеку без опыта, и собеседование. Реклама. ООО "БАКСЭТ", ИНН 4345115602. Erid 2Vtzqv9jxyc

Что такое дедлок, и как его избежать? Дедлок (взаимная блокировка) — это ситуация, при которой два или более потока навсегда блокируют друг друга, ожидая освобождения ресурсов, которые каждый из них удерживает. Такой "замкнутый круг" возникает, если два потока пытаются получить доступ к ресурсам, уже занятым друг другом. 🎯 Пример: A захватил ресурс 1 и пытается получить доступ к ресурсу 2, а поток B в это же время захватил ресурс 2 и пытается получить доступ к ресурсу 1. Это приведёт к дедлоку, так как оба потока будут в бесконечном ожидании. 💻 Как избежать: - Гарантировать, что все потоки запрашивают ресурсы в одинаковом порядке. - Использование tryLock() - Избегать слишком большого количества вложенных синхронизированных блоков, чтобы снизить вероятность взаимных блокировок.