seniorjavist | Unsorted

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

-

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

Subscribe to a channel

Senior Java Developer

AccessibleObject

AccessibleObject — это базовый класс для объектов Field, Method и Constructor. Он позволяет помечать рефлектируемый объект как подавляющий проверки контроля доступа языка Java по умолчанию при его использовании.

Контроль доступа в Java языке запрещает:
—Использование приватных членов за пределами их класса верхнего уровня;
— Членов пакета за пределами их пакета;
— Защищенных членов за пределами их пакета или подклассов;
— Публичных членов за пределами их модуля, если они не объявлены в экспортируемом пакете, и пользователь не читает их модуль.

Важно: использование AccessibleObject может привести к проблемам безопасности, поэтому его следует использовать с осторожностью.

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

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

Senior Java Developer

OutOfMemoryError

«OutOfMemoryError» ошибка в Java, указывающая на то, что приложению не хватило памяти для выполнения операции. Это может произойти, когда программа пытается выделить больше памяти, чем доступно в куче (heap), которая используется для хранения объектов и данных во время выполнения Java-приложения.

В результате JVM (Java Virtual Machine) больше не может выделить дополнительную память, и возникает ошибка «OutOfMemoryError».

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

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

Senior Java Developer

Лямбды как параметры и результаты методов

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

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

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

Senior Java Developer

Уже слышали про GitVerse?

Это новая платформа для совместной разработки и хостинга кода от СберТеха. Сервис полностью российский – работать с ним удобно, безопасно и надежно.

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

А еще:

- делать код-ревью и объединять изменения;
- оптимизировать рабочий процесс: назначать ответственных за ревью и отслеживать результат;
- получать запросы на слияние и объединять ветки;
- подписываться на обновления пользователей и репозиториев и оставаться в курсе активностей команды;
- общаться с ИТ-сообществом, узнавать новости и читать материалы про open source.

Вся функциональность GitVerse доступна разработчикам бесплатно.
Зарегистрируйтесь и откройте возможности GitVerse уже сейчас.

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

Senior Java Developer

😨Вы видели этот хардовый тест для Java QA Engineer'ов (не для новичков)? Его проходят всего 30% 

👉 Пройдите тест из 20 вопросов онлайн-курса «Java QA Engineer. Professional» и узнайте, осилите ли вы обучение в OTUS. 

🟢 Пройти тест: https://otus.pw/2brK/

💣Все, кто успешно пройдет тест, получит доступ к записям уроков курса для знакомства с форматом обучения и спец.цену на курс.

💻 За 4 месяца обучения на курсе вы освоите:
— популярные инструменты автоматизации 
— полный спектр технологий тестирования на Java
— ключевые инструменты автоматизации UI- и API-тестирования
— навыки работы с RestAssured и JsonSchemaValidator
— навыки работы с Appium
— многопоточное тестирование с помощью Selenoid

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

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

Senior Java Developer

Прямой обход дерева

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

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

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

Senior Java Developer

Сбер запускает масштабный проект и ищет Java-разработчика 😉

Присоединяйся к команде и создавай с нуля ERP-систему на современном стеке Platform V для учёта, планирования хозяйственной деятельности и расчёта заработной платы.

В работе используем:

⎯ Java 17, Spring Framework
⎯ Микросервисную архитектуру
⎯ Service Mesh, Kafka
⎯ WildFly, PostgreSQL, приложения с открытым исходным кодом
⎯ Сервисы Jenkins, Ansible, Git/BitBucket, Nexus, Jira, Confluence
⎯ Плечо друга и ценные советы ИТ-лидера

Какие задачи будут в планере:

• Участие в полном цикле разработки компонентов и сервисов с нуля
• Проектирование и разработка backend, API
• Оптимизация производительности продуктов и сервисов
• Внедрение масштабного продукта класса ERP для учёта и планирования хозяйственной деятельности в банке (и не только…)
• А ещё разработка коммерческой версии продуктов и сервисов

Расшифруй сообщение на картинке и откликайся 💚

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

Senior Java Developer

Стек-трейс

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

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

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

Senior Java Developer

Как написать собственное исключение?

Для создания собственного исключения нужно создать новый класс, который наследуется от класса Exception или RuntimeException.

В этом примере мы создаем класс CustomException, который наследуется от класса Exception.

Далее, мы используем пользовательское исключение в методе myMethod() класса MyClass. Если выполняется определенное условие, мы выбрасываем исключение CustomException с сообщением об ошибке.

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

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

Senior Java Developer

Рассмотрим задачу по созданию простого сервиса для управления задачами (To-Do list). Ваша задача — написать простую программу, которая позволяет добавлять задачи, удалять задачи и выводить список текущих задач.

Мы импортируем две библиотеки. ArrayList используется для хранения списка задач, а Scanner — для ввода данных с клавиатуры. Затем определяем класс ToDoList и объявляем переменную tasks типа ArrayList, которая будет хранить наши задачи.

Затем создаем объект Scanner для считывания ввода с клавиатуры и бесконечный цикл для взаимодействия с пользователем.

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

Таким образом, программа предоставляет простой интерфейс для взаимодействия с To-Do list, позволяя пользователю добавлять, удалять и просматривать задачи.

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

Senior Java Developer

29 февраля 12:00 МСК
Вебинар «Надежное облако для команды разработки: как увеличить маржинальность проектов» 

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

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

Вебинар будет полезен вам, если:
🔹 вы реализуете проекты по разработке;
🔹 вам требуются свободные ресурсы для тестирования и запусков;
🔹 вы хотите сократить time-to-market ваших проектов;
🔹 вам требуются мощные ресурсы для работы с AI, HPC и графикой;
🔹 вам важно снизить издержки на инфраструктуру для разработки и production.

🔗 Регистрация

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

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

Привет! Это Podlodka Crew — организатор онлайн IT-конференции по различным технологиям.

Уже 11 марта запускаем четвёртый сезон звёздной Podlodka Java Crew с Филиппом Дельгядо, Гришей Кошелевым, Владимиром Картяевым и другими топовыми спекерами. Тема — наболевшая: интеграции между сервисами.

Если вы знакомы с болью интеграций не понаслышке, то ловите подробности:
🌟Kafka и Open-API. Разберём популярный подход к проектированию серверных приложений API-First. Рассмотрим программный продукт, доступный для серверных приложений, использующих брокеры сообщений.
🌟OAuth 2.0. Выясним, что лучше: взять готовое решение или реализовать собственный сервис. Обсудим подходы к реализации функционала и научимся встраивать двухфакторную авторизацию.
🌟Service Mesh. Погрузимся в реальные кейсы внедрения и деплоймента, поделимся опытом организации взаимодействия сервисов. Посмотрим на типичные проблемы и варианты их решения.
🌟GraphQL. На воркшопе раз и навсегда определим, когда и зачем он нужен, какие у него преимущества и недостатки. Обучимся версионировать схему и API. Объясним, как масштабировать GraphQL после внедрения. Бонус: разбор разных подходов на практических кейсах.
Это не все сессии грядущего сезона.

Больше подробностей и билеты забирайте на сайте:
https://podlodka.io/javacrew

Реклама. ИП Толстая Елена Петровна ИНН:507503278104, erid:2SDnjdSigqn

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

Senior Java Developer

🔥 Годнота

Наткнулся на базу с 1700 вопросов с собеседований на Java разработчика. Фишка в том что просчитана вероятность с которой вопрос буден задан и есть примеры ответов. Теперь можно легко получить оффер, подготовившись к самым популярным вопросам 😏

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

Senior Java Developer

Ковариантность типов

Ковариантность типов — это вариантность типов в системе типов языка программирования. Ковариантность означает, что типы могут быть связаны отношением «родитель-потомок» в иерархии классов или интерфейсов, и этот относительный порядок сохраняется при передаче аргументов методам или возвращении значений из методов. Другими словами, ковариантность позволяет использовать подтип (потомок) вместо его родителя без необходимости явного приведения типов.

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

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

Senior Java Developer

Монитор

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

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

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

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

Senior Java Developer

Мёртвая нить

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

Чтобы избежать мёртвой нити, следует стремиться к тому, чтобы нити блокировали ресурсы в одном и том же порядке. Если это невозможно, можно использовать техники, такие как использование метода tryLock() из java.util.concurrent.locks.Lock, которые позволяют более гибко управлять блокировками и избегать мёртвой нити.

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

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

Senior Java Developer

Checked exceptions

Checked exceptions — это исключения, которые должны быть обработаны или объявлены в сигнатуре метода при помощи throws ключевого слова. Они обычно представляют собой ситуации, которые программист может предвидеть и обработать. Примеры таких исключений включают: IOException, SQLException, FileNotFoundException.

Если вы вызываете метод, который объявляет checked exception, вы должны либо обработать это исключение с помощью конструкции try-catch, либо продолжить передачу исключения вверх по стеку вызовов.

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

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

Senior Java Developer

Абстрактные классы

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

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

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

Senior Java Developer

Сделайте новый шаг в своей карьере: приглашаем на курс по 1C разработке мобильного приложения

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

Именно этому в Слёрме начнут учить уже в феврале — на курсе "1С разработчик: мобильное приложение + интеграция".

🌀 Вы научитесь создавать и интегрировать мобильные приложения для бизнес-решений на платформе 1С;

🔮 На реальных примерах разберёте создание HTTP-сервисов с помощью RPC;

☕️Создадите мобильное приложение с расширенным функционалом.

Курс идет 6 недель в формате потока:

Все задания и итоговый проект проверяют спикеры курса и готовят подробное код-ревью.

На время потока будет создан чат. В нём вы сможете задать любой вопрос по разработке на 1С и оперативно получить ответ.

На протяжении курса вы будете разрабатывать мобильное приложение на платформе «1С: Предприятие» и интегрировать сервисы API.

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

Реклама. ООО «Слёрм» г. Лиски, ОГРН 1193668020545

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

Senior Java Developer

Готовы улучшить свое владение Java?

Присоединяйся к нашему каналу - /channel/java_secrets 📲

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

🫡 Повышай свой уровень!

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

Senior Java Developer

ServletContext

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

Некоторые из основных методов, предоставляемых интерфейсом ServletContext, включают:

getInitParameter(String name): Возвращает значение инициализационного параметра сервлета, указанного по имени.
getInitParameterNames(): Возвращает имена всех инициализационных параметров сервлета.
getAttribute(String name): Возвращает значение атрибута, сохраненного в контексте сервлета по имени.
setAttribute(String name, Object object): Устанавливает значение атрибута в контексте сервлета.
getRequestDispatcher(String path): Возвращает объект RequestDispatcher, который используется для включения другого ресурса (например, другого сервлета или JSP-страницы) в текущий запрос.
getRealPath(String path): Преобразует виртуальный путь в абсолютный путь на сервере.

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

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

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

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