seniorjavist | Unsorted

Telegram-канал seniorjavist - Senior Java Developer

-

Изучаем Java. По вопросам сотрудничества: @seniorvladislav

Subscribe to a channel

Senior Java Developer

PushbackInputStream

PushbackInputStream — это класс, который обеспечивает возможность «откатывать» (push back) один или несколько байтов в поток ввода. Этот класс является подклассом FilterInputStream и добавляет функциональность для отката байтов.

Когда вы считываете байты из PushbackInputStream, вы можете использовать метод unread, чтобы вернуть один или несколько байтов обратно в поток. Это может быть полезно, например, если вы прочитали несколько байтов и поняли, что они не являются частью ожидаемых данных, и вы хотите вернуть их обратно для последующего считывания.

#для_продвинутых

Читать полностью…

Senior Java Developer

Метод newSingleThreadExecutor()

Метод newSingleThreadExecutor() используется для создания ExecutorService с единственным рабочим потоком. ExecutorService предоставляет удобный способ управления выполнением задач в асинхронном режиме.

В примере выше создается ExecutorService с одним рабочим потоком, и две задачи (task1 и task2) передаются на выполнение с использованием метода submit(). Закрытие ExecutorService выполняется с помощью метода shutdown(), который гарантирует, что больше никакие задачи не будут приняты, и потоки будут завершены после завершения всех текущих задач.

#для_продвинутых

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Расскажите о принципе работы алгоритма сортировки QuickSort. Напишите Java-код для реализации этого алгоритма и объясните его эффективность. Также, укажите, какие могут быть проблемы с производительностью в некоторых случаях и как можно их решить.

Алгоритм QuickSort относится к семейству алгоритмов быстрой сортировки. Он использует подход "разделяй и властвуй", разбивая массив на подмассивы, сортируя их и затем объединяя весь массив.
quickSort: Рекурсивная функция, которая разделяет массив и вызывает сама себя для подмассивов.
partition: Функция, которая определяет местоположение опорного элемента (pivot) и переставляет элементы так, чтобы элементы меньше pivot находились слева, а больше — справа.

QuickSort в среднем случае имеет сложность O(n log n), что делает его одним из самых эффективных алгоритмов сортировки. QuickSort может показывать плохую производительность в случае уже отсортированных или почти отсортированных данных. Это может быть улучшено, выбирая разумные опорные элементы или переходя к другому алгоритму, например, Insertion Sort, для небольших подмассивов.

Читать полностью…

Senior Java Developer

Почему Map не наследуется от Collection?

Это связано с различиями в их целях и использовании. Интерфейс Collection представляет собой общие методы для работы с группой объектов, таких как добавление, удаление и проверка наличия элемента. Он ориентирован на работу с коллекциями объектов, где каждый объект является элементом коллекции.

Интерфейс Map, с другой стороны, представляет собой отображение ключей на значения. Он не рассматривает элементы коллекции как отдельные объекты, а предоставляет доступ к значению, связанному с определенным ключом. Это более общий и мощный подход, который не сводится к работе с отдельными элементами коллекции.

Интерфейс Map включает в себя методы для управления парами ключ-значение и обеспечивает эффективный доступ к значениям по ключу. По этим причинам он не является подтипом Collection. Однако, классы, реализующие интерфейс Map, часто предоставляют методы, которые позволяют работать с элементами коллекции или возвращают представление коллекции ключей, значений или записей (ключ-значение).

Таким образом, хотя Map и Collection предоставляют абстракции для работы с группой объектов, они решают разные задачи, и поэтому не существует иерархического отношения наследования между ними.

#для_продвинутых

Читать полностью…

Senior Java Developer

✔️ Телеграм-канал Яндекса специально для разработчиков

Опенсорс-проекты, которые меняют мир. Большие программы для поддержки белых хакеров. Наука в ML и резиденции для молодых учёных. Подборки статей и видео, которыми вдохновляются инженеры Яндекса. Говорим об этом в канале Yandex for Developers.

Подписывайтесь
👉 @Yandex4Developers

Читать полностью…

Senior Java Developer

📖 Java books - огромная библиотека Java книг, актуальных на 2024 год.

🚀 Java Jobs - вакансии и проекты для Java разработчиков.

Java Pro - здесь собраны все возможные вопросы и ответы с собеседований Java, гайды, разбор кода и полезные библиотеки.

🔝 Маст-хэв папка Java разработчиков: /channel/addlist/ZM3J6oFNAnRlNWU6

Читать полностью…

Senior Java Developer

KeyFactory

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

Функциональные возможности:
— Преобразование ключей из спецификаций ключей (например, ASN.1 DER) и обратно.
— Генерация ключей на основе алгоритма и параметров.
— Поддержка различных алгоритмов ключей, таких как RSA, DSA, Elliptic Curve Cryptography (ECC).

#для_продвинутых

Читать полностью…

Senior Java Developer

Уже год работаешь в ИТ и готов к росту и масштабным проектам?🚀 Прокачай скиллы c Холдингом Т1!

Приглашаем Java-разработчиков в Открытую школу Т1 — программу найма в формате ИТ-интенсива: offer week + обучение без отрыва от работы.

🤚Поможем улучшить навыки и освоить новые перспективы, если ты готов к переменам в карьере, имеешь опыт работы Java-разработчиком от года и хочешь присоединиться к команде лидера* ИТ-рынка — Холдинга Т1!

📚В программу включили блоки по spring framework, docker, SOLID и др. Подробнее на сайте.

📌Как это работает?
🔹Подай заявку на сайте
⬇️Рассмотрим резюме, если твой профиль подойдет, то попросим пройти тестирование👌 При успешном прохождении — зачислим в группу
🔹Лучшим назначим интервью и направим оффер!

Формат обучения: онлайн (8 часов в неделю) Программа длится 1 месяц

🏳️Принимаем заявки до 25 февраля!

*По версии CNews Analytics 2022, TAdviser 2021 и RAEX 2023

Реклама. ООО "Т1". ИНН 7720484492.

Читать полностью…

Senior Java Developer

Узнаем IP-адрес своего компьютера

InetAddress.getLocalHost() используется для поиска частных IP - адресов, используемых в локальной сети или любой другой локальной сети.

Подробнее объяснение кода можно найти здесь.

Читать полностью…

Senior Java Developer

Как проверить, отсортирован ли массив в Java

Один из способов - это использование библиотеки Apache Commons Lang, которая предлагает статический служебный метод. isSorted() в ArrayUtils учебный класс.

Другие варианты проверки отсортирован ли массив можно найти здесь.

Читать полностью…

Senior Java Developer

Один день из жизни JVM-инженера

Можно разрабатывать на Java, а можно разрабатывать Java. Есть люди, чей код исполняет виртуальная машина — а есть люди, чей код и есть виртуальная машина.

Смотреть статью

Читать полностью…

Senior Java Developer

Какой из string классов следует использовать, когда необходимо часто обновлять данные?

Класс StringBuffer следует использовать в случае частых обновлений, поскольку он изменчив и, следовательно, пул строк не будет перегружен.

Читать полностью…

Senior Java Developer

Класс FileReader

FileReader — это класс в пакете java .io, который можно использовать для чтения потока символов из файлов. Этот класс использует либо указанную кодировку, либо кодировку платформы по умолчанию для декодирования байтов в символы.

Разберём некоторые методы класса:
read() — метод читает и передает один символ или -1, если поток завершен;
read(char [] charBuffer, int offset, int length) — считывает поток символов и сохраняет их в заданном символьном буфере. offset - это позиция, с которой начинается чтение, а length - это общее количество символов, которые необходимо прочитать. Он передает большое количество прочитанных символов либо -1, если поток завершен;
ready() — сообщает, готов ли поток к чтению. Считается, что поток готов, если его входной буфер не пуст;
getEncoding() — используется для возврата заголовка кодировки символов, которая используется потоком;
close() — закрывает поток и освобождает связанные с ним системные ресурсы.

Читать полностью…

Senior Java Developer

Приглашаем на Infra Meetup #3 — митап про надежность от Яндекс Такси и Техплатформы Екома и Райдтеха

На митапе поделимся тремя докладами об инструментах надежности в Такси, платформе биллинга Екома и Райдтеха и возможностях фреймворка userver для поддержания отказоустойчивости. В конце митапа участников ждет нетворкинг и экскурсия по питерскому офису.

Формат: офлайн или онлайн
Место встречи: Санкт-Петербург, БЦ «Бенуа»
Дата и время: 29 февраля, 18:00

Бесплатно. Количество офлайн мест ограничено. Регистрация обязательна

Подробнее

Реклама. ООО "Яндекс.Такси", ИНН: 7704340310

Читать полностью…

Senior Java Developer

Что за зверь "Matcher"?

Класс Java Matcher (java.util.regex.Matcher) создан для поиска некоторого множества вхождений регулярного выражения в одном тексте и поиска по одному шаблону в разных текстах. Класс Java Matcher имеет много полезных методов.

Например:

• boolean matches(): вернет значение true при совпадении строки с шаблоном.
• boolean find(): вернет значение true при обнаружении подстроки, совпадающей с шаблоном, и перейдет к ней.
• int start(): вернет значение индекса соответствия.
• int end(): вернет значение индекса последующего соответствия.
• String replaceAll(String str): вернет значение измененной строки подстрокой str.

Другие методы Matcher можно найти в официальной документации.

Рассмотрите простой пример работы с Pattern и Matcher.

Читать полностью…

Senior Java Developer

Стать сотрудником Яндекса быстрее и проще, чем кажется. Участвуйте в днях быстрого найма: решите тестовое, пройдите несколько секций собеседования и получите офер за несколько дней.

Ближайшее мероприятие:

• 23-24 марта — Fast Track для С++ разработчиков, офер за 2 дня в команды Фудтеха Яндекса.

Зарегистрироваться

Читать полностью…

Senior Java Developer

Java Developer — мастхев для любого джависта

За ручку проведём тебя к первому офферу, расскажем о сложных вещах простыми словами и научим смеяться с айтишных мемов.

👉🏻 Подписывайся и прокачивай свои навыки

Читать полностью…

Senior Java Developer

Реализуйте в Java класс, представляющий стек (stack), который поддерживает операции push, pop и получение минимального элемента (getMin) — все операции должны выполняться за константное время (O(1)). Напишите код и объясните, как вы решите эту задачу.

Объяснение:

В этом коде используется два стека: stack для хранения элементов стека и minStack для хранения минимальных элементов.
В методе push, при добавлении нового элемента в стек проверяется, является ли он минимальным. Если да, то он также добавляется в minStack.
В методе pop, при извлечении элемента из стека проверяется, является ли этот элемент минимальным. Если да, то он также удаляется из minStack.
Методы top и getMin просто возвращают верхний элемент стека и минимальный элемент соответственно.

Сложность:
Временная сложность для всех операций: O(1). Все операции выполняются за константное время, так как мы используем два стека и не производим поиск по всему стеку для поиска минимального элемента.

Пространственная сложность: O(n). Где n — количество элементов в стеке. Мы используем два стека, но их размер ограничен размером стека.

Читать полностью…

Senior Java Developer

Как в Java реализуется принцип "Double-Checked Locking" в контексте создания экземпляров синглтонов и какие особенности данного подхода нужно учитывать, чтобы избежать проблем с многопоточностью?

В Java, "Double-Checked Locking" используется для минимизации затрат на синхронизацию при создании экземпляров синглтонов в многопоточных средах. Этот подход включает двойную проверку: сначала проверяется, был ли уже создан экземпляр без блокировки, а затем, если экземпляр не создан, происходит блокировка и повторная проверка. Важно использовать ключевое слово volatile для переменной экземпляра синглтона, чтобы обеспечить корректную работу в многопоточной среде из-за проблем с упорядоченностью чтения/записи в Java Memory Model.

Читать полностью…

Senior Java Developer

Метод executeQuery()

Метод executeQuery() в Java используется для выполнения запросов на выбор данных из базы данных. Он возвращает объект ResultSet, который представляет набор данных, возвращаемый запросом.

Синтаксис метода executeQuery() следующий:

public ResultSet executeQuery(String sql) throws SQLException;


Аргумент sql представляет собой строку, содержащую SQL-запрос. Возвращаемое значение метода executeQuery() — это объект ResultSet, который представляет собой набор данных, возвращаемый запросом. Объект ResultSet содержит информацию о столбцах данных, содержащихся в наборе данных, а также данные из каждого столбца.

#для_продвинутых

Читать полностью…

Senior Java Developer

ZipInputStream

ZipInputStream — это класс в Java, который используется для чтения файлов ZIP. Он представляет собой фильтр входного потока, который декомпрессирует данные ZIP по мере их чтения.

#для_продвинутых

Читать полностью…

Senior Java Developer

AlgorithmParameters

Класс AlgorithmParameters используется для представления криптографических параметров в виде непрозрачного объекта. Он позволяет управлять параметрами для конкретного алгоритма.

#для_продвинутых

Читать полностью…

Senior Java Developer

MessageDigest

MessageDigest — это класс в Java, который представляет собой криптографическую хеш-функцию. Он используется для вычисления дайджеста сообщения из двоичных данных. Дайджест сообщения — это фиксированная по длине строка, которая представляет собой «отпечаток» данных. Он может использоваться для проверки целостности данных, а также для аутентификации.

#для_продвинутых

Читать полностью…

Senior Java Developer

FileNotFoundException в какой последовательности должны идти блоки catch? Сколько блоков catch будет выполнено?

Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок catch(Exception ex) {}, иначе все дальнейшие блоки catch() уже ничего не смогут обработать, т.к. любое исключение будет соответствовать обработчику catch(Exception ex).

Таким образом, исходя из факта, что FileNotFoundException extends IOException сначала нужно обработать FileNotFoundException, а затем уже IOException.

Читать полностью…

Senior Java Developer

Техническое собеседование инженеров мобильной разработки в RuStore

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

https://habr.com/ru/companies/vk/articles/793200/

Читать полностью…

Senior Java Developer

Тинькофф запускает All to Scala — бесплатный курс для опытных разработчиков, которые хотят расширить экспертизу или сменить карьерный трек.

Три четверти API в Тинькофф написаны на Scala. Этот язык быстро и эффективно работает, прост для понимания, а выполнение распараллеливается без проблем с конкурентным доступом к памяти. А главное — он отлично подходит для высоконагруженных систем, так что многие крупные компании работают именно на Scala.

Этот курс подойдет Java-, .Net-, Python- и Kotlin-разработчикам с опытом от двух лет, а также тем, кто уже базово владеет функциональным программированием, давно пишет в прод, но этот язык не знает. Занятия онлайн, так что проходить можно из любого города России, Беларуси, Армении и Казахстана.

Лекции будут раз в неделю, по вечерам, в течение трех месяцев.
Чтобы поступить, необходимо оставить заявку и пройти отборочные испытания до 20 февраля

erid:2VtzquivKyK
Реклама, АНО ДПО “Тинькофф Образование”, ИНН 7743270426

Читать полностью…

Senior Java Developer

Как мигрировать в Cassandra? Как повысить отказоустойчивость Akka-кластеров? И где обитают платежные ссылки?

Отвечаем на backend-вопросы на онлайн-митапе Мир Plat.Form — 19 февраля в 17:00 🗓

Вас ожидают:
✔ Рассказ про устройство платежных ссылок, на которых основана Система быстрых платежей. Про хранение и перенос этих ссылок в Cassandra.
✔ Доклад об отказоустойчивых Akka-кластерах, позволивших развивать СБП в сжатые сроки, выдерживая высокие требования.
✔ Q&A со спикерами после докладов.
✔ Возможность выиграть призы за вопросы спикерам.

📍Митап пройдет онлайн на YouTube — 19 февраля в 17:00 по Москве. Ссылку отправим вам на почту за час до начала митапа.

Для участия нужно зарегистрироваться.

Реклама. АО "НСПК". ИНН 7706812159

Читать полностью…

Senior Java Developer

Метод regionMatches()

Используется для сравнения подстроки одной строки с подстрокой другой строки, то есть сравниваются части строк и возвращается результат этого сравнения — true (если части строк совпали) или false (не совпали).

Параметры

ignoreCase
— логическая переменная со значение true — игнорировать регистр, со значением false — не игнорировать регистр.
toffset — позиция, с которой начнем отсчет.
other — другая строка, часть которой мы будем сравнивать.
ooffset — позиция, с которой начнем отсчет в строке other
len — количество символов для сравнения.

Читать полностью…

Senior Java Developer

Collections.min/max

Удивительно, насколько часто можно встретить написанный вручную код, который находит максимальный или минимальный элемент чего-то по какому-нибудь критерию.

Казалось бы, такая тривиальная задача должна быть давно решена. На самом деле она и так давно решена: есть методы Collections.min и Collections.max. Раньше было не очень удобно писать компараторы, но в Java-8 всё стало легче.

К примеру, вам нужно найти ключ в Map, соответствующий максимальному значению. Воспользуйтесь кодом с картинки.

Читать полностью…

Senior Java Developer

Скажите что-то на карьерном

Тинькофф в поиске крутых ИТ-спецов. С компании — профессиональный рост, интересные финтех-задачи, решение бытовых забот и работа там, где вы живете. С вас — выбрать вакансию и откликнуться тут

АО «Тинькофф Банк», ИНН 7710140679

Читать полностью…
Subscribe to a channel