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

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

前往频道在 Telegram

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

显示更多
6 494
订阅者
+324 小时
+147
+1930
帖子存档
Можно ли перегрузить static метод? Перегрузка методов позволяет создать несколько методов с одинаковым именем, но разными списками параметров. Это работает как для обычных, так и для статических методов класса. Например, можно создать статический метод sum, который будет складывать числа. Метод можно перегрузить, создав одну версию для сложения целых чисел (int), а другую — для сложения чисел с плавающей точкой (double). При вызове метода компилятор будет выбирать нужную версию на основе типа аргументов. Это делает класс с перегруженными методами более гибким и удобным для использования.

Как получить IP адрес клиента на сервере? IP адрес клиента можно получить вызвав request.getRemoteAddr().

Что такое RecursiveTask? RecursiveTask является частью фреймворка Fork/Join в Java, введенного в Java 7. Этот фреймворк предо
Что такое RecursiveTask? RecursiveTask является частью фреймворка Fork/Join в Java, введенного в Java 7. Этот фреймворк предоставляет удобный способ распараллеливания выполнения задач. RecursiveTask является подклассом ForkJoinTask. Он предназначен для использования вместе с пулом Fork/Join (ForkJoinPool) и предоставляет специальные методы для разделения задачи на подзадачи и объединения результатов.

Что такое RecursiveTask? RecursiveTask является частью фреймворка Fork/Join в Java, введенного в Java 7. Этот фреймворк предо
Что такое RecursiveTask? RecursiveTask является частью фреймворка Fork/Join в Java, введенного в Java 7. Этот фреймворк предоставляет удобный способ распараллеливания выполнения задач. RecursiveTask является подклассом ForkJoinTask. Он предназначен для использования вместе с пулом Fork/Join (ForkJoinPool) и предоставляет специальные методы для разделения задачи на подзадачи и объединения результатов.

Что такое RecursiveTask? RecursiveTask является частью фреймворка Fork/Join в Java, введенного в Java 7. Этот фреймворк предо
Что такое RecursiveTask? RecursiveTask является частью фреймворка Fork/Join в Java, введенного в Java 7. Этот фреймворк предоставляет удобный способ распараллеливания выполнения задач. RecursiveTask является подклассом ForkJoinTask. Он предназначен для использования вместе с пулом Fork/Join (ForkJoinPool) и предоставляет специальные методы для разделения задачи на подзадачи и объединения результатов.

Какие существуют unchecked exception? Наиболее часто встречающиеся: ArithmeticException, ClassCastException, ConcurrentModificationException, IllegalArgumentException, IllegalStateException, IndexOutOfBoundsException, NoSuchElementException, NullPointerException, UnsupportedOperationException.

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

Реализуйте в Java класс, представляющий стек (stack), который поддерживает операции push, pop и получение минимального элемен
Реализуйте в Java класс, представляющий стек (stack), который поддерживает операции push, pop и получение минимального элемента (getMin) — все операции должны выполняться за константное время (O(1)). Напишите код и объясните, как вы решите эту задачу. Объяснение: В этом коде используется два стека: stack для хранения элементов стека и minStack для хранения минимальных элементов. В методе push, при добавлении нового элемента в стек проверяется, является ли он минимальным. Если да, то он также добавляется в minStack. В методе pop, при извлечении элемента из стека проверяется, является ли этот элемент минимальным. Если да, то он также удаляется из minStack. Методы top и getMin просто возвращают верхний элемент стека и минимальный элемент соответственно. Сложность: Временная сложность для всех операций: O(1). Все операции выполняются за константное время, так как мы используем два стека и не производим поиск по всему стеку для поиска минимального элемента. Пространственная сложность: O(n). Где n — количество элементов в стеке. Мы используем два стека, но их размер ограничен размером стека.

Возведение в степень Возвести число в степень можно двумя способами: 1) простое умножение; 2) используя метод Math.pow(). Исп
Возведение в степень Возвести число в степень можно двумя способами: 1) простое умножение; 2) используя метод Math.pow(). Использование библиотечной функции рекомендуется только в случае крайней необходимости, например, в случае дробной или отрицательной степени. Простое умножение в Java работает в 300-600 раз эффективнее, кроме того, его можно дополнительно оптимизировать.

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

Что делает метод Character.toString()? Метод Character.toString() в Java используется для преобразования символа в строку. Он
Что делает метод Character.toString()? Метод Character.toString() в Java используется для преобразования символа в строку. Он принимает в качестве аргумента символ типа char и возвращает строку, состоящую из одного символа. Сигнатура метода: public static String toString(char ch) Аргумент: ch — символ, который необходимо преобразовать в строку. Возвращаемое значение: Строка, состоящая из одного символа.

💪🛠️ Прокачай свой бэкенд: 9 инструментов, которые стоит знать От браузерной ИИ-песочницы PostgreSQL до суперскоростного вал
💪🛠️ Прокачай свой бэкенд: 9 инструментов, которые стоит знать От браузерной ИИ-песочницы PostgreSQL до суперскоростного валидатора email — обзор новейших инструментов, которые упростят вашу работу и повысят продуктивность. Читать статью

Что такое абстрактные классы? Абстрактные классы — это классы, которые не могут быть инстанциированы напрямую, то есть нельзя
Что такое абстрактные классы? Абстрактные классы — это классы, которые не могут быть инстанциированы напрямую, то есть нельзя создать объект абстрактного класса при помощи оператора new. Они предназначены для обеспечения базовой структуры и функциональности для других классов, которые наследуются от них. Абстрактные классы представляют собой в некотором роде «заготовки» для подклассов, указывая на общие атрибуты и методы, которые они должны реализовать.

📶 Паттерны коммуникации в распределенных системах Распределенные системы состоят из многих отдельных частей/узлов, работающи
+2
📶 Паттерны коммуникации в распределенных системах Распределенные системы состоят из многих отдельных частей/узлов, работающих вместе, но физически расположенных в разных местах. Эти части системы должны общаться друг с другом через сеть, чтобы система могла функционировать как единое целое. Хотя коммуникация критически важна, правильно ее организовать бывает непросто: разработчики иногда пытаются использовать один и тот же подход ко всем задачам коммуникации, что может быть неэффективно. Важно понимать, что существуют разные способы организации коммуникации, и выбор правильного метода зависит от конкретной задачи. Рассмотрим основные паттерны коммуникации, которые можно использовать для решения разных задач. ☑️ Запрос-ответ с HTTP Этот синхронный паттерн коммуникации предполагает, что один сервис отправляет запрос другому сервису и ожидает ответа или ошибки, блокируя свою работу до получения результата. REST, наиболее популярный архитектурный стиль для этой модели коммуникации, использует методы протокола HTTP — GET, POST, PUT и DELETE.   Однако использование этого паттерна может привести к проблемам, если сервисы образуют цепочку взаимодействий: в таком случае сбой одного из сервисов может привести к отказу всей операции, а также к расточительному использованию ресурсов и каскадным сбоям. ☑️ Общие данные Этот паттерн часто остается незамеченным, поскольку разработчики не всегда воспринимают его как модель коммуникации. В рамках этого подхода один компонент записывает данные в определенное место, а другой компонент считывает и обрабатывает эти данные. Например, один сервис может загрузить файл в облачное объектное хранилище (например, в корзину Amazon S3), а другой сервис затем извлекает этот файл для дальнейших действий. Главное преимущество этого паттерна — простота реализации и возможность обеспечения взаимодействия между устаревшими и современными системами без проблем совместимости. Однако он не подходит для сценариев, требующих низкой задержки. ☑️ Асинхронный запрос-ответ В отличие от синхронного подхода, запрос-ответ может быть реализован асинхронно и без блокировки. В этом случае получающий сервис должен явно знать место назначения для отправки ответа. Для реализации этого паттерна идеально подходят очереди сообщений, которые позволяют буферизовать несколько запросов. Основная сложность здесь — корреляция между запросом и ответом: экземпляр сервиса, отправивший запрос, может отличаться от экземпляра, получающего ответ, поэтому требуется способ отслеживания запросов. ☑️ Коммуникация на основе событий В этом подходе сервисы не общаются напрямую друг с другом, а генерируют события, которые могут быть использованы другими сервисами. Это требует наличия места для отправки данных о событиях и механизма, позволяющего получающим сервисам обнаруживать эти события. Брокеры сообщений, такие как RabbitMQ, могут обрабатывать оба этих аспекта. Издатели используют API для отправки событий в брокер, который управляет подписками и уведомляет подписчиков при поступлении события. Этот паттерн идеально подходит для создания слабосвязанных взаимодействий между сервисами. Однако брокер сообщений должен обеспечивать надежную доставку событий, их упорядочивание и согласованность. Кроме того, добавляется дополнительный компонент в систему. 👨‍💻 Подробнее читайте в статье. 📨 Материал взят из нашей еженедельной email-рассылки, посвященной бэкенду. Подпишитесь, чтобы быть в числе первых, кто получит дайджест.

Что такое Spring Batch? Spring Batch — это фреймворк для обработки больших объемов данных в приложениях Java. Он предоставляе
Что такое Spring Batch? Spring Batch — это фреймворк для обработки больших объемов данных в приложениях Java. Он предоставляет множество инструментов и функциональности для управления и выполнения множества задач в пакетном режиме, таких как чтение, обработка и запись данных. Spring Batch обеспечивает множество возможностей для управления ошибками, масштабируемостью и мониторингом задач.

🐘🧠 Оптимизация использования памяти в PostgreSQL: секреты профессионалов Сложные (и многочисленные) операции в базе данных
🐘🧠 Оптимизация использования памяти в PostgreSQL: секреты профессионалов Сложные (и многочисленные) операции в базе данных требуют солидного объема оперативной памяти — например, для создания набора результатов PostgreSQL обычно приходится: 🔹 Выполнить поиск по индексу. 🔹 Извлечь связанные строки из одной или нескольких таблиц. 🔹 Объединить, отфильтровать, агрегировать и отсортировать кортежи в пригодный для использования результат. Каждый из этих шагов требует памяти, и PostgreSQL может обрабатывать тысячи таких запросов одновременно. Так что рано или поздно перед разработчиками любого серьезного проекта встает необходимость решения нескольких сложных вопросов: 🔹 Как грамотно оптимизировать использование доступной памяти? 🔹 В каком соотношении распределить ОЗУ между несколькими типами памяти, которые необходимы PostgreSQL для эффективной работы? 🔹 Как предотвратить защитное завершение операционной системой процесса PostgreSQL, который использует слишком много памяти? Для ответов на все эти вопросы нужно определить, сколько именно памяти использует PostgreSQL для основных процессов — а это сама по себе нетривиальная задача. Советы по настройке памяти так многочисленны и разнообразны, что в них сложно сориентироваться. Поэтому в этой статье мы сведем всю мудрость экспертов к конкретным шагам, которые помогут максимально эффективно распорядиться доступной памятью. 🔗 Читать статью 🔗 Зеркало

java.util.stream.Collectors и группировка Использование Collectors.groupingBy в Java Streams позволяет легко и эффективно гру
java.util.stream.Collectors и группировка Использование Collectors.groupingBy в Java Streams позволяет легко и эффективно группировать данные, улучшая читаемость и производительность кода. Это мощный инструмент для обработки коллекций, который помогает упростить сложные операции и сделать ваш код более понятным и поддерживаемым.

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

Что такое JMapper? JMapper — это библиотека Java для преобразования объектов, которая позволяет легко и эффективно переносить
Что такое JMapper? JMapper — это библиотека Java для преобразования объектов, которая позволяет легко и эффективно переносить данные между объектами разных классов. Она обладает следующими преимуществами: Простота использования: JMapper имеет простой и понятный API, основанный на аннотациях. Эффективность: JMapper оптимизирован для производительности и может выполнять преобразования объектов очень быстро. Гибкость: JMapper поддерживает различные типы преобразований.

🤔 Кем я хочу быть – DS или ML engineer? Стоит ли понимать специфику сферы? 🗓 22 августа на вебинаре «Как меняется математик
🤔 Кем я хочу быть – DS или ML engineer? Стоит ли понимать специфику сферы? 🗓 22 августа на вебинаре «Как меняется математика в разных индустриях: от мобильных игр к фондовым рынкам» ответим на эти и другие вопросы. Приглашенный спикер: Павел Запольский – Senior Quantitative Researcher at Exness и Co-founder GrowLytics. Запустивший более 10 проектов по машинному обучению и анализу данных для ведущих компаний. 😮 На вебинаре узнаете: 🔵 Математика в бизнесе: Чем отличаются разные сферы друг от друга. Почему стоит понимать специфику сферы 🔵 ML и продуктовое IT: Чем различается математическая сложность от индустрии к индустрии. Какие к ним необходимы уровни подготовки 🔵 Баевская математика в GameDev. Баевская математика как альтернатива AB тестированию. Как математические методы применяются в разработке игр 🔵 Finance: Что такое количественные финансы и математическое моделирование. Обсудим текущие индустриальные тренды в отрасли 🔵 Backtest: Как знания математики делают ваши активы более надежными 🔵 На практике подробно разберем два математических кейса по GameDev и Backtest. ➡️ Зарегистрироваться: https://proglib.io/w/26d71d3a