seniorjavist | Unsorted

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

-

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

Subscribe to a channel

Senior Java Developer

Проверка четности или нечетности числа без использования оператора %

Хотя этот трюк не намного лучше, чем использование оператора %, но иногда он все-таки более эффективен (с большими числами).

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

Senior Java Developer

Метод trimToSize()

Метод trimToSize() класса ArrayList в Java обрезает емкость экземпляра ArrayList до текущего размера списка. Этот метод используется для обрезки экземпляра ArrayList по числу содержащихся в нем элементов.

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

Senior Java Developer

Полезные и неизвестные библиотеки Java

Из этой статьи вы узнаете о некоторых не очень известных, но полезных библиотеках Java.

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

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

Senior Java Developer

Ветвление switch

В Java существует два основных типа ветвлений: if...else и switch. Первый тип проверят некое условие и если оно верно — выполняет код.

В свою очередь switch получает на вход проверяемое значение и сравнивает его с перезаписанными данными. Если какой-то случай case совпадает, то JVM выполняет соответствующий код.

Отличительной особенностью switch есть то, что все его условия статические и компилируются сразу в байткод.

#для_начинающих

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

Senior Java Developer

Метод compareTo()

Метод compareTo() используется для сравнения двух объектов. Обычно он применяется к объектам, реализующим интерфейс Comparable, чтобы определить их относительный порядок. Вот как обычно выглядит сигнатура метода compareTo():

int compareTo(T obj)


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

— Отрицательное число указывает на то, что текущий объект меньше, чем объект obj.
— Ноль указывает на то, что текущий объект равен объекту obj.
— Положительное число указывает на то, что текущий объект больше, чем объект obj.

#для_начинающих

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

Senior Java Developer

6 февраля в 18:00 состоится открытый урок «Java Concurrency на практике», где научим:

• Эффективно использовать коллекции в многопоточном окружении.
• Применять различные синхронизаторы для управления потоками.
• Анализировать thread dump'ы для выявления и устранения проблем многопоточности.

Урок будет полезен для опытных Java-разработчиков, особенно Senior уровня, которые хотят углубить знания в области многопоточности, а также повысить эффективность и безопасность кода при работе с коллекциями и синхронизаторами.

Ведущий – Роман Оборин, Senior Software Engineer.
Опыт программирования на Java — 6 лет.
Коммерческий опыт — 10 лет.
Ex-разработчик в Tesco, BNP paribas, Natera.

Это первая лекция курса «Senior Java Developer» от HeadBridge.
Желающие могут присоединиться к действующим студентам, оценить качество и уровень преподаваемого материала, задать интересующие вопросы.

Больше – в прямом эфире!
Регистрация по ссылке: https://clck.ru/38YYU5

После открытого урока будет последняя возможность поступить на обучение в первом потоке 2024 года. Студентам, прошедшим аттестацию, гарантируем выход на реальное собеседование для Senior разработчика с ЗП от 300.000₽.

Стоимость индивидуальна и зависит от необходимых знаний. Доступна оплата в рассрочку.

Реклама. ООО "Платформа непрерывного обучения" ИНН 7839405924
erid: 2VtzqvA5thM

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

Senior Java Developer

🧑‍💻 Этичный Хакер — канал, в котором вас научат кибербезопасности и хакингу с нуля.

OSINT: руководство для самых маленьких
Социальная инженерия. 10 человеческих слабостей, которые помогут управлять людьми
Пентест сайта. 12 шагов
Интервью с владельцем группировки KILLNET (скоро выйдет)

Присоединяйся к крупнейшему в СНГ комьюнити хакеров — /channel/hack_less

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

Senior Java Developer

Получение обратного массива

Используем библиотеку Apache Commons Lang.

Библиотека Apache Commons Lang представляет собой набор служебных классов для упрощения работы с классами пакета java.lang.*.

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

Senior Java Developer

#вопросы_с_собеседований
Назовите основные свойства транзакции.

Атомарность (atomicity)
гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Будут либо выполнены все её подоперации, либо не выполнено ни одной.

Согласованность (consistency). Транзакция, достигающая своего нормального завершения и, тем самым, фиксирующая свои результаты, сохраняет согласованность базы данных.

Изолированность (isolation). Во время выполнения транзакции параллельные транзакции не должны оказывать влияние на её результат.

Долговечность (durability). Независимо от проблем на нижних уровнях (к примеру, обесточивание системы или сбои в оборудовании) изменения, сделанные успешно завершённой транзакцией, должны остаться сохранёнными после возвращения системы в работу.

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

Senior Java Developer

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

Участники митапа — техлиды, руководители разработки и ведущие мобильные разработчики из команд Яндекс Go и Яндекс Про. В завершении вечера afterparty — нетворкинг, настолки, вкусная еда и напитки.

Место встречи: Москва-Сити, башня «Око»
Дата и время: 15 февраля, 18:30

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

Подробнее

Реклама. ООО "ЯНДЕКС.ТАКСИ". ИНН 7704340310.

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

Senior Java Developer

Какие подклассы класса Writer вы знаете, для чего они предназначены?

Writer — абстрактный класс, описывающий символьный вывод;
BufferedWriter — буферизованный выходной символьный поток;
CharArrayWriter — выходной поток, который пишет в символьный массив;
FileWriter — выходной поток, пишущий в файл;
FilterWriter — абстрактный класс, предоставляющий интерфейс для классов-надстроек;
OutputStreamWriter — выходной поток, транслирующий байты в символы;
PipedWriter — выходной канал;
PrintWriter — выходной поток символов, включающий методы print() и println();
StringWriter — выходной поток, пишущий в строку;

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

Senior Java Developer

Узнаем размер каталога с помощью Java

Размер файлов в Java можно получить с помощью класса File. Встроенная функция 'fileName.length()' используется для определения размера файла в байтах.

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

Подробнее можно посмотреть здесь.

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

Senior Java Developer

Какой параметр запуска JVM используется для контроля размера стека потока?

-Xss

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

Senior Java Developer

Как эффективно обрабатывать данные в высоконагруженных проектах?

Расскажет опытный эксперт на бесплатном практическом уроке «Асинхронная обработка данных и ее использование в высоконагруженных проектах» от OTUS.

На вебинаре разберём:
- применение асинхронной обработки;
- архитектуру прототипа;
- узкие места прототипа.

📅 Занятие пройдёт 15 февраля в 20:00 мск и будет приурочено к старту курса «Highload Architect». Доступна рассрочка на обучение!

🌐 Для бесплатного участия регистрируйтесь прямо сейчас: https://otus.pw/kRx6/?erid=LjN8K3xwh

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

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

Senior Java Developer

Финтех-команда, разрабатывающая передовую брокерскую платформу, ищет Senior Java Developer. Мы выводим нашего брокера на новый уровень и создаём решения, способные выдержать любую нагрузку и обеспечить доступность сервиса миллионам клиентов. Мы не поддерживаем legacy и полностью переосмысливаем все старые процессы 💻

Тебе необходимо будет писать красивый и эффективный код, разрабатывать архитектуру, писать unit-тесты.

Что мы ждём от кандидата:

•опыт от 3-х лет;
•Java 8+;
•знание Spring Framework, XML/JSON;
•опыт написания unit-тестов, k8s/OpenShift;
•опыт работы с реляционными БД.

Большим преимуществом будет, если вы понимаете, как устроен бизнес глобальных рынков.

Откликайся на вакансию по ссылке 👌

Реклама. Рекламодатель ПАО Сбербанк

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

Senior Java Developer

На связи админ! Я тут перенес в телеграм бота обновленный на самых последних данных GPT4, который также способен работать с картинками. Если вы искали такого помощника, то переходите и тестируйте его бесплатно 1 день. Далее цена за месяц будет в 3 раза дешевле, чем на офицальном сайте. Пользуйтесь: @Gpt4_NeuroBot

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

Senior Java Developer

Какие основные ограничения действуют на статические и “переменные” методы?

Как я и сказал ранее, основное ограничение обычного метода в том, что всегда должен быть некоторый экземпляр, у которого данный метод будет вызываться. А вот статический метод этого не требует, но он и не может ссылаться на ссылку this — на элементы текущего объекта — поскольку текущего объекта для него не существует.

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

Senior Java Developer

Самый необычный канал про Java, подписывайся – /channel/java_secrets 📲

Будь в курсе последних тенденций, лучших практик и отраслевых секретов Java.

Канал Секреты Java поможет тебе улучшить свой путь разработки Java.

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

Senior Java Developer

Java-разработчики, вас зовут в Тинькофф

Участвуйте в Java Weekend Offer, если ваш опыт больше 3 лет. Пройдите все этапы собеседования за выходные и, если все понравится, получите оффер.

Сможете решать сложные задачи, расти в сильной команде, работать на топовом стеке и пользоваться бенефитами.

Оставьте заявку до 14 февраля

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

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

Senior Java Developer

Перечислите принципы, которым вы следуете в многопоточном программировании?

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

• Всегда давайте значимые имена своим потокам. Процесс отладки, нахождения ошибок или отслеживание исключения в многопоточном коде – довольно сложная задача. OrderProcessor, QuoteProcessor или TradeProcessor намного информативнее, чем Thread1, Thread2 и Thread3. Имя должно отражать задачу, выполняемую данным потоком.
• Избегайте блокировок или старайтесь уменьшить масштабы синхронизации. Блокировка затратна, а переключение контекста ещё более ресурсоёмко. Пытайтесь избегать синхронизации и блокировки насколько это возможно, и организуйте критическую секцию в минимально необходимом объёме. Поэтому синхронизированный блок всегда предпочительней синхронизированного метода, дополнительно наделяя возможностью абсолютного контроля над масштабом блокировки.
• Обрабатывайте прерывание потока с особой тщательностью. Нет ничего хуже оставшегося заблокированным ресурса или системы в неконстистентном, по причине неподтверждённой транзакции, состоянии.
• Помните об обработке исключений. Выброшенные InterruptedException должны быть адекватно обработаны, а не просто подавлены. Так же не стоит пренебрегать Thread.UncaughtExceptionHandler. При использовании пула потоков необходимо помнить, что он зачастую просто «проглатывает» исключения. Так, если вы отправили на выполнение Runnable нужно обязательно поместить код выполнения задачи внутрь блока try-catch. Если в очередь пула помещается Callable, необходимо удостоверится, что результат выполнения всегда изымается помощью блокирующего get(), чтобы в случае возникновения существовала возможнотсь заново выбросить произошедшее исключение.
• Между синхронизаторами и wait() и notify() следует выбирать синхронизаторы. Во-первых, синхронизаторы, типа CountDownLatch, Semaphore, CyclicBarrier или Exchanger упрощают написание кода. Очень сложно реализовывать комплексный управляющий поток, используя wait() и notify(). Во-вторых, эти классы написаны и поддерживаются настоящими мастерами своего дела и есть шанс, что в последующих версиях JDK они будут оптимизированы изнутри или заменены более производительной внешней реализацией.
• Почти всегда использование Concurrent сollection выгоднее использования Synchronized сollection, т.к. первые более современны (используют все доступные на момент их написания новшества языка) и масштабируемы, чем их синхронизированые аналоги.

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

Senior Java Developer

Что такое «сессия»?

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

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

Senior Java Developer

Какие два класса не наследуются от Object?

Ответ:
Не ведитесь на провокации, нет таких классов: все классы прямо или через предков наследуются от класса Object!

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

Senior Java Developer

Статья, которая 100% будет полезна Java разработчикам, планирующим перейти на виртуальные потоки!

Говорим о важной фиче — виртуальных потоках Java 21. Именно благодаря ей синхронный код становится эффективным! Как это работает, какие есть подводные камни, и из-за чего ваше приложение может зависнуть: рассказали подробно и с наглядными примерами в материале.

Познакомиться с ним можно по ссылке прямо сейчас

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

Senior Java Developer

#вопросы_с_собеседований
Можно ли так реализовать метод equals?

Нельзя, так как метод hashCode() не гарантирует уникальность значения для каждого объекта.

Но для сравнения экземпляров объекта Object такой метод допустим, так как там хешкод вычисляется на основании использовании адреса объекта в памяти, поэтому он уникален для разных объектов.

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

Senior Java Developer

new vs valueOf

Старайтесь всегда использовать метод valueOf вместо конструктора в стандартных классах-оболочках примитивных типов, кроме тех случаев, когда вам нужно конкретно выделить память под новое значение. Сейчас объясню, почему.

Все оболочки, кроме чисел с плавающей точкой, от Byte до Long, имеют кэш. По умолчанию этот кэш содержит значения от -128 до 127. Следовательно, если ваше значение попадает в этот диапазон, то значение вернется из кэша. Значение из кэша достается в 3.5 раза быстрее, чем при использовании конструктора, плюс идёт экономия памяти.

Помимо этого, наиболее часто используемые значения могут также быть закэшированы компилятором и виртуальной машиной.

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

Senior Java Developer

🔥Незаменимый инструмент для автоматизации тестирования на Java

👉Освойте его на бесплатном открытом уроке «Возможности тестирования через Spring Contract Testing» от OTUS.

📖На вебинаре вы вместе с опытным экспертом познакомитесь с возможностями тестирования через Spring Contract Testing и получите ответы на любые свои вопросы по теме.

📆Занятие пройдёт 31 января в 20:00 мск и будет приурочено к старту курса «Java QA Engineer. Professional». Доступна рассрочка на обучение!

💪Пройдите бесплатный тест прямо сейчас, чтобы занять место на открытом уроке и получить запись: Пройти тест

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8K3iQd

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

Senior Java Developer

Какие классы позволяют ускорить чтение/запись за счет использования буфера?

BufferedInputStream(InputStream in)/ BufferedInputStream(InputStream in, int size),
BufferedOutputStream(OutputStream out)/BufferedOutputStream(OutputStream out, int size),
BufferedReader(Reader r)/BufferedReader(Reader in, int sz),
BufferedWriter(Writer out)/BufferedWriter(Writer out, int sz)

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

Senior Java Developer

Какие методы класса File вы знаете?

Наиболее используемые методы класса File:
boolean createNewFile(): делает попытку создать новый файл;
boolean delete(): делает попытку удалить каталог или файл;
boolean mkdir(): делает попытку создать новый каталог;
boolean renameTo(File dest): делает попытку переименовать файл или каталог;
boolean exists(): проверяет, существует ли файл или каталог;
String getAbsolutePath(): возвращает абсолютный путь для пути, переданного в конструктор объекта;
String getName(): возвращает краткое имя файла или каталога;
String getParent(): возвращает имя родительского каталога;
boolean isDirectory(): возвращает значение true, если по указанному пути располагается каталог;
boolean isFile(): возвращает значение true, если по указанному пути находится файл;
boolean isHidden(): возвращает значение true, если каталог или файл являются скрытыми;
long length(): возвращает размер файла в байтах;
long lastModified(): возвращает время последнего изменения файла или каталога;
String[] list(): возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге;
File[] listFiles(): возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге.

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

Senior Java Developer

Алгоритм Кнута – Морриса – Пратта

Алгоритм КМП осуществляет поиск текста по заданному шаблону. В этом поиске сначала компилируется заданный шаблон. Компилируя шаблон, мы пытаемся найти префикс и суффикс строки шаблона. Это поможет в случае несоответствия – не придётся искать следующее совпадение с начального индекса.

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

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

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

Senior Java Developer

Процедурное программирование

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

В Java процедуры реализуются с помощью методов. Методы в Java объявляются внутри классов и могут выполнять определенные действия или возвращать результаты. Они могут принимать аргументы и иметь локальные переменные.

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

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