seniorjavist | Unsorted

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

-

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

Subscribe to a channel

Senior Java Developer

Вложенные классы

Вложенные классы (nested classes)
это классы, определенные внутри другого класса. В Java есть два типа вложенных классов:

- Статические вложенные классы (static nested classes) — объявляются с модификатором static. Представляют собой обычные статические члены внешнего класса.
- Внутренние классы (inner classes) — объявляются без модификатора static. Связаны с экземпляром внешнего класса и имеют доступ к его членам.

Вложенные классы удобны для логической группировки классов и обеспечения инкапсуляции.

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

#это_база

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

Senior Java Developer

Thread.UncaughtExceptionHandler

Thread.UncaughtExceptionHandler
это интерфейс, который позволяет перехватывать необработанные исключения в потоках. Синтаксис: uncaughtException(Thread t, Throwable e).
Этот интерфейс можно использовать для логирования ошибок, которые приводят к аварийному завершению потока.

В этом примере создается поток, который генерирует исключение. Для него устанавливается обработчик не перехваченных исключений ExceptionHandler.

При запуске потока произойдет исключение, которое будет перехвачено обработчиком и выведено в консоль:
Перехвачено исключение в потоке Мой поток: Ошибка в потоке

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

Senior Java Developer

Дан целочисленный массив nums, вернуть [nums[i], nums[j], nums[k]] такие, что i != j, i != k, j != k, и nums[i] + nums[j] + nums[k] == 0.

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

#разбор_кода

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

Senior Java Developer

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

Чтобы погрузиться в эту тему и получить лучшие практики для работы с высокими нагрузками приходите 🗓 2 августа в 20:00 на открытый урок «Индексы в PostgreSQL» онлайн курса «Highload Architect» от OTUS. 👨‍💻 Занятие проведет преподаватель Андрей Поляков, старший разработчик в Unlimint.

На открытом уроке обсудим:
- устройство структуры данных B-tree, в которой хранятся индексы
- устройство индексов в PostgreSQL: B-дерево, хеш, GiST, SP-GiST, GIN и BRIN
- принципы построения планов запросов в PostgreSQL.

И научимся:
- пользоваться командой explain в PostgreSQL;
- строить индексы, позволяющие оптимизировать запросы;
- составлять запросы, позволяющие переиспользовать существующие индексы.

👉 Регистрируйтесь на занятие — https://otus.pw/SSIW/

Открытый урок приурочен к старту онлайн-курса «Highload Architect» в OTUS. После урока полный курс вы сможете приобрести удобным для вас способом.

Реклама. Информация о рекламодателе на сайте
www.otus.ru

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

Senior Java Developer

Конструктор по умолчанию

Конструктор по умолчанию предоставляется компилятором Java, если в классе не определен ни один другой конструктор. Конструктор по умолчанию инициализирует все поля класса значениями по умолчанию (например, 0 для числовых типов, false для типа boolean, null для ссылочных типов).

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

В этом примере мы определяем класс MyClass с двумя полями: x и y, а также определяем конструктор по умолчанию, который выводит сообщение при вызове. В методе main создаем экземпляр класса MyClass, используя конструктор по умолчанию, и выводим значения полей x и y, которые инициализированы значениями по умолчанию.

#это_база

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

Senior Java Developer

Дана входная строка s, необходимо изменить порядок слов в строке на противоположный.

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

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

#разбор_кода

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

Senior Java Developer

ThreadPool

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

В этом примере мы создаем пул потоков с фиксированным размером 2 и отправляем 5 задач для выполнения в этот пул.

Когда задача выполняется, вызывается метод run() и выводит имя текущего потока, статус “Start” и значение command. Затем вызывается метод processCommand(), приостанавливающий выполнение потока на 5 секунд. После этого выводится имя потока и статус “End”.

После отправки всех задач в пул потоков вызывается метод shutdown(), который запрещает отправку новых задач в пул. Затем вызывается метод awaitTermination() с максимальным значением времени ожидания, чтобы дождаться завершения всех задач.

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

Senior Java Developer

Хотите усовершенствовать свои навыки Java с помощью Groovy?

Начните с открытого урока "Введение в функциональное программирование в Groovy" от OTUS. Вебинар пройдёт 24 июля в 20:00 и проведет его преподаватель Андрей Поляков, старший разработчик в Unlimint.

Урок приурочен к старту онлайн-курса "Groovy Developer".

🔥На уроке вы:

- познакомитесь с понятием функциональное программирование;
- узнаете в чем отличие функционального программирования от ООП;
- познакомитесь с Closures, контекстом исполнения, областями видимости;
- познакомитесь с использованием Closures как функций.

Кому будет полезен этот урок?

Разработчикам, QA, DevOps, которые хотят более глубоко понять, как работают инструменты тестирования
и CI/CD jenkins.

После вебинара полный курс можно приобрести в рассрочку.

⚡️Для участия зарегистрируйтесь: https://otus.pw/ad7b/

Реклама. Информация о рекламодателе на сайте www.otus.ru.

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

Senior Java Developer

Мужчинам без радости в жизни

Проблема:
неправильно выстроенные отношения с девушками, как итог - зависимость, слабая позиция и непроработанные внутренние опоры. Исправить это может каждый, достаточно читать «НеНастоящий» мужчина

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

Это должен знать каждый мужчина @unreal_man

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

Senior Java Developer

interrupted()

Метод interrupted() является статическим методом класса Thread и проверяет, был ли установлен флаг прерывания у текущего потока. При этом флаг прерывания после вызова этого метода сбрасывается.

В этом примере создается новый поток, который выполняет цикл while, пока флаг прерывания не установлен. Затем главный поток останавливается с помощью sleep(), после чего вызывается метод interrupt() для нового потока, чтобы установить флаг прерывания. Когда флаг прерывания установлен, цикл while завершается и выводится сообщение "Thread has been interrupted".

Количество строк "Thread is running" может отличаться в зависимости от скорости выполнения кода.

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

Senior Java Developer

String.replace()

Метод replace() используется для замены всех вхождений одного символа или подстроки на другой символ или подстроку в исходной строке. Этот метод возвращает новую строку с замененными символами или подстроками.

В этом примере создается строка "Hello, World!" и вызывается метод replace() для замены всех вхождений символа 'l' на символ 'w'. Результат замены сохраняется в новой строке replaced. Затем исходная и измененная строки выводятся.

#это_база

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

Senior Java Developer

Перегрузка методов

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

В этом примере мы создаем два метода с именем add, но с разными параметрами. Когда мы вызываем метод add в методе main, компилятор автоматически выбирает правильную версию метода на основе типов передаваемых аргументов.

#это_база

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

Senior Java Developer

Поиск максимальной прибыли

Дан целочисленный массив prices, где prices[i] - это цена данной акции на i-й день. В каждый день вы можете принять решение о покупке и/или продаже акции. В любой момент времени вы можете держать не более одной акции. Однако вы можете купить ее и тут же продать в тот же день. Найдите и верните максимальную прибыль, которую вы можете получить.

Метод maxProfit принимает массив цен prices, где prices[i] - это цена акции в i-й день. Алгоритм находит все возможные прибыли путем вычитания цены покупки из цены продажи и добавления их в список priceGain. Затем суммирует все значения в списке priceGain и возвращает итоговую сумму как максимальную прибыль.

#разбор_кода

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

Senior Java Developer

Аргументы командной строки

Аргументы командной строки
- это массив строк, который передается в метод main при запуске программы. Эти аргументы могут быть использованы для передачи информации в программу при ее запуске.

Чтобы запустить код с аргументами командной строки, нужно передать их после имени класса при запуске программы из командной строки.
Например:
- java CommandLineArguments arg1 arg2 arg3

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

#это_база

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

Senior Java Developer

👨‍💻 Откройте новые горизонты разработки с Groovy.

Ответьте на 18 вопросов, чтобы проверить достаточно ли ваших навыков, чтобы работать с Groovy на практике и попасть на курс — «Groovy Developer» от OTUS.

На полном курсе вы научитесь применять Groovy-скрипты,
использовать статическую и динамическую типизацию кода, а также использовать средства языка для работы с БД.

👉 Пройти тест —
https://otus.pw/YHNb/

Реклама. Информация о рекламодателе на сайте www.otus.ru.

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

Senior Java Developer

❗️Как быстро разрабатывать качественный бэкенд на Kotlin?

Для этого нужно овладеть широким спектром инструментов разработки, знать Kotlin на высоком уровне, разбираться в DSL, мультиплатформенности, корутинах, передовых архитектурных шаблонах, темах высокой нагрузки, больших данных и масштабируемости.

🟠 Все это можно освоить на онлайн-курсе «Backend Developer. Professional» в OTUS.

Оставить заявку на курс и получите доступ к записям лучших открытых уроков курса уже сейчас!

👉 Оставить заявку: https://otus.pw/lFzZ/

Не пропустите возможность записаться на открытые уроки которые пройдут совсем скоро:

Разработка монолитного приложения со Spring | 31.07
Записаться можно по ссылке: https://otus.pw/yMgq/

Применимость Kotlin в различных направлениях разработки: Multimedia, ML, 3D/VR, Frontend, IoT/Robotics, Blockchain | 14.08
Записаться можно по ссылке: https://otus.pw/7oNX/

Нативная интеграция. Информация о продукте www.otus.ru

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

Senior Java Developer

«Асинхронная архитектура», о проектировании сложных распределенных систем

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

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

Курс направлен на мидлов, сеньоров, тимлидов и CTO. Отважным джунам тоже можно прийти — прокачаете мышление проектировщика, которое позволит писать более понятный и изолированный код.

Курс прикладной: будут домашки с разбором, которые готовят к реальной работе и реальным сложностям. За время курса вы сделаете проект с асинхронной архитектурой и положите себе в портфолио. Если успеете в дедлайн — получите сертификат на русском и английском языке, который можно привязать к линкедину.

Материалы курса проверены на почти 1500 учеников. На курсе учились команды из Arrival, Toptal, Яндекс, Озон, Авито, Сбер и другие.

Посмотреть программу, отзывы и бесплатный урок →

По промокоду seniorjavist10 скидка 10% до 26 июля. Платить можно самому сразу или частями. А лучше за счет компании из любой точки мира.

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

Senior Java Developer

Queue

Queue
— это интерфейс в Java Collections Framework, который представляет собой коллекцию элементов, организованных в соответствии с принципом FIFO (First In, First Out). Это означает, что элементы добавляются в конец очереди и извлекаются из начала очереди.
Queue используется в ситуациях, когда необходимо управлять порядком обработки элементов.

В этом примере мы создаем очередь строк и добавляем в нее три элемента. Затем мы извлекаем элементы из очереди с помощью метода poll(), который возвращает и удаляет элемент из начала очереди. Элементы извлекаются в том же порядке, в каком и добавляются.

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

Senior Java Developer

Sorted set

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

SortedSet имеет несколько дополнительных операций, которые позволяют использовать упорядочение элементов:
- first() и last() возвращают первый и последний элементы в множестве соответственно.
- headSet(), tailSet() и subSet() возвращают подмножества элементов, которые находятся до, после или между заданными элементами соответственно.

В этом примере мы создаем TreeSet (класс, который реализует SortedSet) и добавляем в него несколько строк. Поскольку строки реализуют интерфейс Comparable, они упорядочиваются в алфавитном порядке. Затем мы используем различные методы SortedSet для получения первого и последнего элементов, а также подмножеств элементов.

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

Senior Java Developer

Профессия «Java-разработчик». Курс с нуля до трудоустройства за 10 месяцев.

Освойте язык крупного бизнеса и финансовых технологий и научитесь разрабатывать веб-приложения на фреймворке Spring.

🎁 Мы подготовили для вас спецпредложения, чтобы решиться было проще! Выбирайте один из бонусов: 2 месяца академического отпуска, 1 месяц персональных консультаций с наставником и подготовка к техническому интервью, кешбэк 20 000 ₽ после полного прохождения программы.

Готовы попробовать прямо сейчас? Оставьте заявку, и мы расскажем, как пройти бесплатные курсы профессии!

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

Senior Java Developer

#вопросы_с_собеседований
Какие преобразования называются нисходящими и восходящими?

Восходящее преобразование
(Upcasting) — это преобразование объекта дочернего класса в объект родительского класса. Преобразование может быть выполнено неявно, так как дочерний класс является подтипом родительского класса. Восходящее преобразование позволяет нам получить доступ к членам родительского класса, но не ко всем членам дочернего класса.

Нисходящее преобразование (Downcasting) — это преобразование объекта родительского класса в объект дочернего класса. Это преобразование не может быть выполнено неявно и требует явного указания типа. Нисходящее преобразование может быть опасным, так как оно может привести к ошибке ClassCastException, если типы не совместимы.

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

Senior Java Developer

Ключевое слово instanceof

instanceof
это двоичный оператор, используемый для проверки, является ли объект (экземпляр) подтипом данного типа. Возвращает либо true, либо false.

Для демонстрации мы создали переменную name типа String и использовали оператор instanceof, чтобы проверить, является ли name экземпляром класса String. Оператор возвращает true.

#это_база

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

Senior Java Developer

Дано целое число, преобразовать его в римскую цифру.

В нашем решении метод intToRoman принимает целое число num в качестве аргумента и возвращает его римское представление в виде строки.

Внутри метода intToRoman создается пустая строка Roman, которая будет использоваться для хранения результата. Затем создается двумерный массив storeIntRoman, который содержит соответствия между арабскими и римскими числами.

Далее в цикле for перебираются все элементы массива storeIntRoman.
Внутри цикла используется цикл while, который выполняется до тех пор, пока значение num больше или равно текущему элементу массива storeIntRoman.
В теле этого цикла к строке Roman добавляется римское число, соответствующее текущему элементу массива storeIntRoman, а значение num уменьшается на соответствующее арабское число.

После завершения всех итераций цикла for возвращается строка Roman, содержащая римское представление входного числа.

#разбор_кода

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

Senior Java Developer

#вопросы_с_собеседований
Что такое сигнатура метода?

Сигнатура метода — это уникальная комбинация имени метода и списка его параметров. Сигнатура метода определяет, какие аргументы должны быть переданы методу при его вызове.

Сигнатура метода используется для определения перегрузки методов. Два или более метода считаются перегруженными, если они имеют одинаковое имя, но разные сигнатуры. То есть они принимают разные наборы параметров.

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

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

Senior Java Developer

🪙 Освой Spring и требуй повышения зарплаты!

Готов?

Пройди тест по Spring и проверь свои знания.

Ответишь
— пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса🎁 .

👉 ПРОЙТИ ТЕСТ: https://otus.pw/zzEV/

Нативная интеграция. Информация о продукте www.otus.ru

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

Senior Java Developer

Прыжки по массиву

Дан целочисленный массив nums. Изначально вы располагаетесь на первом индексе массива, и каждый элемент массива представляет собой максимальную длину вашего прыжка на этой позиции.
Возвращается true, если вы можете достичь последнего индекса, или false в противном случае.

Алгоритм использует максимальную длину прыжка в каждой позиции, чтобы определить самый дальний индекс, до которого он может добраться. Постоянно обновляя самый дальний индекс, он проверяет, возможно ли достичь последнего индекса, и возвращает соответствующий результат (True или False).

- Если текущий индекс i больше, чем farthest, это означает, что мы не можем продолжить, поэтому мы возвращаем False.
- Если farthest больше или равен последнему индексу, значит, мы достигли конца массива и возвращаем True.
- Если мы завершаем цикл, не достигнув конца массива, мы возвращаем False.

#разбор_кода

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

Senior Java Developer

ChatGPT теперь в Телеграм!
 
Откройте для себя умного и быстрого собеседника на основе технологии GPT-4.
 
- Получайте мгновенные ответы на ваши вопросы.
- Генерируйте изображения по запросу.
- Используйте бота в групповом чате.
- Редактируйте файлы.

Попробуйте бесплатно @GPTNeuralBot

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

Senior Java Developer

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

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

• 22-23 июля — Fast Track для Oracle-разработчиков, с опытом работы на PL/SQL или тех, кто готов перейти. Офер за 2 дня в команду HR Tech.

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

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

Senior Java Developer

Дан целочисленный массив nums, поверните массив вправо на k шагов.

Метод rotate принимает массив nums и целое число k. Сначала мы проверяем, что k не отрицательное число и не больше длины массива. Затем мы вызываем метод reverse, который переворачивает первую часть массива от начала до конца - k-1.

Метод reverse переворачивает вторую часть массива от конца - k до конца. Наконец, мы вызываем метод reverse, который переворачивает весь массив. Это позволяет нам получить массив, который был повернут на k шагов вправо.

Метод reverse принимает массив nums, индекс начала и индекс конца. Мы меняем местами элементы массива от начала до конца и уменьшаем индекс начала и увеличиваем индекс конца до тех пор, пока они не пересекутся.

#разбор_кода

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

Senior Java Developer

Строки (String)

Строка представляет собой массив символов. При работе со строками важно понимать, что объект String является неизменяемым (immutable).

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

Методы, используемые в примере:

- str1 + " " + str2 - конкатенация строк.
- length() - возвращает длину строки.
- toCharArray() - преобразует строку в массив символов.
- toUpperCase() - преобразует все символы строки в верхний регистр.
- toLowerCase() - преобразует все символы строки в нижний регистр.
- contains() - проверяет, содержит ли строка указанную последовательность символов.

#это_база

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