№ 4931127152 Изучаем Java. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorjavist
#вопросы_с_собеседований
Скомпилируется ли код с картинки?
Да, код будет скомпилирован, потому что он следует спецификации функционального интерфейса, определяющей только один абстрактный метод. Второй метод, count, является методом по умолчанию, который не увеличивает количество абстрактных методов.
⭐️🚀 Смарт-контракты управляют миллионами транзакций в мире блокчейна. Хотите научиться их разрабатывать?
Solidity — ключевой язык программирования для создания децентрализованных приложений. Разбираем, как написать, задеплоить и протестировать смарт-контракт.
После открытого вебинара вы сможете создать свой первый контракт, поймёте принципы работы Solidity и подготовитесь к профессиональному росту в Web3-разработке.
⏰ Встречаемся 19 марта в 20:00 мск! Участники получат скидку на большое обучение «Solidity Developer».
👉 Для участия зарегистрируйтесь https://otus.pw/SmOM/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👩💻 Создание приложения Блокнот на Java 👩💻
🗓 24 марта в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java-разработчик».
На вебинаре мы разработаем полноценное приложение «Блокнот» с графическим пользовательским интерфейсом, демонстрирующее базовые принципы создания текстового редактора на Java.
В процессе занятия мы реализуем такие функциональные возможности, как:
- создание нового текстового файла, его сохранение,
- загрузка уже существующего файла,
- редактирование текста, подсчет статистических данных и другие операции, характерные для текстовых редакторов.
Особое внимание будет уделено работе с файловой системой, потоками ввода/вывода и обработке событий, что позволит создать удобное и интуитивно понятное приложение.
Спикер Александр Фисунов — Senior Kotlin Developer в SSP Software на проекте ВТБ, опытный Java-разработчик и кандидат технических наук.
🔗 Ссылка на регистрацию: https://otus.pw/xXUb/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
#вопросы_с_собеседований
Какие подклассы класса Reader вы знаете, для чего они предназначены?
• Reader
- абстрактный класс, описывающий символьный ввод;
• BufferedReader
- буферизованный входной символьный поток;
• CharArrayReader
- входной поток, который читает из символьного массива;
• FileReader
- входной поток, читающий файл;
• FilterReader
- абстрактный класс, предоставляющий интерфейс для классов-надстроек;
• InputStreamReader
- входной поток, транслирующий байты в символы;
• LineNumberReader
- входной поток, подсчитывающий строки;
• PipedReader
- входной канал;
• PushbackReader
- входной поток, позволяющий возвращать символы обратно в поток;
• StringReader
- входной поток, читающий из строки.
Удачное и неудачное использование OptionalOptional
— это контейнер для объекта, который может содержать или не содержать значение null
.
Удачным примером использования Optional
является метод orElseGet()
, который позволяет вернуть значение по умолчанию, если значение Optional
равно null
. (изображение 1)
Неудачным примером использования Optional
является метод get()
, который вызывает исключение NoSuchElementException
, если значение Optional
равно null
. (изображение 2)
Агрегация
Агрегация — это отношение между классами, когда один класс содержит ссылки на объекты другого класса. Это также называется «композицией» или «составным объектом». Важно отметить, что агрегация является одним из способов управления отношениями между классами в ООП.
Примером агрегации может быть, например, класс «Университет», который содержит коллекцию объектов класса «Студент». В этом случае, «Университет» агрегирует (содержит) множество объектов «Студент». Важно, чтобы объекты «Студент» оставались независимыми и могли существовать отдельно от объекта «Университет».
#для_продвинутых
Стек-трейс
Стек-трейс (stack trace) представляет собой список вызовов методов в обратном хронологическом порядке, начиная с метода, в котором произошло исключение. Стек-трейс позволяет отследить, какие методы были вызваны перед возникновением исключения, и предоставляет информацию о местоположении, где произошло исключение.
#для_продвинутых
👩💻 Курс «Java-разработчик»: помощь в превращении стажёра в сильного Middle
🔥 Вы платите не только за знания, но и за эффективное карьерное сопровождение. Быстрее найдя работу, вы окупите затраты и начнёте уверенно расти в доходе.
💻 Наше обучение — это живые вебинары с действующими экспертами в области, которые проведут тебя от новичка до уверенного Middle-разработчика. Ты освоишь Spring, Hibernate, PostgreSQL, Docker, Kafka, Kubernetes и другие актуальные технологии!
✔️ Трехступенчатая поддержка до полного трудоустройства
- Мы сопровождаем студента не только в момент обучения и поиска работы, но и в период адаптации после выхода в новую компанию.
✔️ Индивидуальный подход на вебинарах и консультациях
- Мы не выдаем всем «один и тот же скрипт»: во время карьерных вебинаров отвечаем на конкретные вопросы студентов.
✔️ Профессиональное резюме под руководством HR-экспертов
- Подготовка резюме и разбор «точек роста». Эксперт помогает сформулировать сильные стороны, уникальные достижения и убрать «лишнее», чтобы резюме работало на конкретные вакансии.
✔️ Поддержка после оффера
- Даем рекомендации, как вести себя в первые месяцы, какие вопросы задавать руководителю, как справляться со стрессом и «синдромом самозванца». Это особенно важно, когда студент переходит из стажерской/джуниор роли в более серьезную позицию.
Наш партнер — СберКорус, разработчик передовых цифровых решений!
👉 Оставь заявку и получи скидку на курс: https://otus.pw/jTzR/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
High cohesion
High cohesion (высокая связанность) — это принцип проектирования программного обеспечения, который означает, что компонент или модуль программы должен иметь чёткую и ограниченную ответственность, а все его функции и элементы должны быть связаны логически и тесно между собой. Это позволяет создать более структурированный и легко поддерживаемый код.
В Java принцип высокой связанности можно применить, следуя ряду практик:
1. Разделение функциональности
2. Ограниченная ответственность
3. Минимизация зависимостей
4. Принцип единственной ответственности (Single Responsibility Principle)
5. Группировка по функциональности
#для_продвинутых
Прокси-объект
Прокси-объект (Proxy Object) — это объект, который действует как промежуточный слой между клиентским кодом и реальным объектом. Прокси-объект позволяет выполнять дополнительные действия перед или после вызовов методов реального объекта, а также контролировать доступ к этим методам.
Прокси-объекты в Java реализуются с помощью интерфейсов и динамического создания классов во время выполнения. Для создания прокси-объекта в Java существует два основных способа: с использованием JDK Proxy и с использованием библиотеки CGLIB.
#для_продвинутых
👩💻 Открытый урок «Spring Boot: разбор (не)стандартных вопросов интервью»
🗓 17 марта в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework»
Продолжаем готовится к возможному собеседованию.
На уроке мы обсудим вопросы, которые могут встретиться на интервью по теме разработки на Spring.
На очереди Spring Boot.
Подключайтесь.
🔗 Ссылка на регистрацию: https://otus.pw/cZjB/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Монитор
Монитор представляет собой механизм, который обеспечивает синхронизированный доступ к критическим секциям кода, что позволяет избежать состояния гонки (race condition) и обеспечивает координацию между потоками.
Ключевое слово synchronized
может быть применено к методам или блокам кода. Когда метод или блок кода помечен как synchronized
, только один поток может выполнить этот код или метод в определенный момент времени. Если другой поток попытается войти в синхронизированный блок или вызвать синхронизированный метод, он будет ожидать, пока первый поток не завершит выполнение.
#для_продвинутых
Что такое Executor?
Понятие Executor
относится к части библиотеки java.util.concurrent
, которая предоставляет управление и выполнение задач в многопоточных приложениях. Этот интерфейс и связанные с ним классы предоставляют абстракцию для управления выполнением потоковых задач.
Основной целью интерфейса Executor
является разделение задачи выполнения задач от деталей управления потоками. Вместо того чтобы явно создавать и управлять потоками для выполнения задач, вы можете передать задачи в Executor
, который сам управляет пулом потоков и выполняет эти задачи.
#для_начинающих
ConcurrentHashMapConcurrentHashMap
— это класс из пакета java.util.concurrent
, который представляет собой реализацию хэш-таблицы, спроектированную для поддержки параллельных операций чтения и записи без необходимости блокировки всей структуры данных.
#для_начинающих
InterruptedException
Думаю, вы заметили, что мы везде обрабатываем эту ошибку. Пока поток ожидает, кто-то может прервать его работу.Thread.stop()
это устаревший метод, который просто убивал поток. Сейчас есть Thread.interrupt()
который говорит, что потоку надо закончить работу.
Ещё можно приостановить работу во время выполнения какого-то действия за счёт проверки !Thread.currentThread().isInterrupted()
.
#для_продвинутых
Напишите программу на Java для вставки данного элемента в очередь с приоритетами
Ответ на картинке.
Извлекаем имя из адреса электронной почты
Метод extractNameFromEmail
принимает строку с адресом электронной почты и возвращает подстроку до символа "@" (если символ "@" присутствует в строке) в качестве имени.
Object[] vs custom Class
Код с Object абсолютно не читабельный, когда приходится работать с возвращаемым значением в другом месте.То есть, чтобы понять что же хранит в себе возвращаемое значение — нужно вернуться в класс вызова и читать комментарии к методу, если же, конечно, они есть, а если нет, вникать в код, что не очень эффективно. Собственно, я сам этим иногда грешу, когда очень спешу. С этим можно смириться, если это очень редко, но, все же, в таких ситуациях лучше создавать новый класс. Облегчите жизнь тем, кто придет после вас.
🔴 20 марта состоится ключевая конференция по трафику и продажам в Telegram!
Будет полезно тем, кто:
— Уже работает с Telegram Ads или посевами и стремится кратно улучшать CTR, CPC, CPL, CPO, ROI и другие показатели.
— Использует Telegram для продажи услуг и инфопродуктов и хочет вывести свой бизнес на новый уровень.
— Планирует начать зарабатывать в Telegram и ищет проверенные инструменты и стратегии.
🔥Состав спикеров сильнейший:
• Ирина Хакамада — номинант Нобелевской премии Мира и одна из 10 лучших бизнес-спикеров России.
• Георгий Лобушкин — бывший пресс-секретарь Павла Дурова.
• Феликс Зинатуллин — Основатель Церебро.
• Дмитрий Форман — digital-директор «Самолёт».
• Марат Шайхетдинов — Основатель TgConf и Clickise.
• Алексей Соловьев — Лидер TON Society СНГ.
• Иван Боричев — крупнейший канал о Петербурге, первый телеграм-бар. Продажи рекламы > 15 млн. в месяц
• Дарья Фарберова — ведущий специалист по таргетированной рекламе в Контуре.
• Кирилл Сибиряк — выручка 2 млрд рублей за 2 года. Вывел 4 онлайн-школы с 0 до 100 млн+ месяц с помощью моделей продаж в Telegram.
• Павел Калюканов — продукт-менеджер TgStat, без которого статистика не была бы такой прозрачной.
И более 25 других спикеров!
Хедлайнер выступления на Afterparty конференции — группа «Город 312»! 🔥 Оторвемся под известные хиты, сделаем фото с кумирами молодости, зарядимся их энергией, и погрузимся в атмосферу праздника.
TgConf - уже зарекомендовали себя, как конференция высокого уровня с отличной организацией и действительно интересной и эффективной информацией.
— Инсайты о рекламе и Telegram, которые не найдете в открытом доступе.
— Возможность задать вопросы лидерам отрасли и получить ответы из первых уст.
— Нетворкинг, который расширит границы вашего бизнеса и даже поможет получить выгодные контракты на сотрудничество
— Закрытая Afterparty с VIP-участниками и музыкальной группой.
🗓 Когда: 20 марта
📍 Где: Main Stage, Москва
🎤 Ведущие конференции: Ярослав Бабушкин, журналист Forbes Russia и Наиль Байков — организатор аффилиат-мероприятий, ведущий телепередач и бизнес-тренер.
🎟 Приобретайте билеты на сайте.
Совсем скоро будет повышение цен!
Метод ordinal() в Enum
Метод ordinal()
является частью класса Enum
. Класс Enum
используется для создания типов данных, представляющих ограниченное множество значений, таких как перечисления (enumerations). Метод ordinal()
возвращает порядковый номер (индекс) конкретного элемента перечисления в объявленном порядке.
#для_начинающих
🚀 12-13 апреля пройдёт Третья онлайн-конференция Systems Design Online, посвящённая проектированию современных информационных систем для бизнеса.
Главная тема конференции в этом году — «Компромиссы проектирования — баланс между атрибутами качества, финансированием и сроками».
❗️ВНИМАНИЕ❗️ До 15 марта самая выгодная цена на билеты — 3 900 ₽
В 2025 году конференция Systems Design Online пройдёт в два дня:
— 12 апреля (сб) — день докладов
— 13 апреля (вс) — день воркшопов
Вас будут ждать:
— Более 20 докладов от опытных архитекторов, аналитиков и технических лидеров
— Два воркшопа с акцентом на практику
— 3 тематические секции: Архитектура, ИИ и Информационная безопасность
— Неограниченный доступ к записям всех докладов конференции
— Постоянный чат в Telegram
Конференция Systems Design Online будет интересна:
— разработчикам и аналитикам
— архитекторам и руководителям ИТ-проектов
Подробнее о конференции здесь
Следить за новостями конференции можно в Telegram-канале @systems_design_online
Абстрактные классы
Абстрактные классы — это классы, которые не могут быть инстанциированы напрямую, то есть нельзя создать объект абстрактного класса при помощи оператора new. Они предназначены для обеспечения базовой структуры и функциональности для других классов, которые наследуются от них. Абстрактные классы представляют собой в некотором роде «заготовки» для подклассов, указывая на общие атрибуты и методы, которые они должны реализовать.
#для_начинающих
unchecked exception
unchecked exception (непроверяемое исключение) относится к исключениям, которые не требуется обязательно обрабатывать или объявлять в секции throws
метода. Эти исключения наследуются от класса RuntimeException
или его подклассов. Они обычно свидетельствуют о ситуациях, которые могут возникнуть в ходе выполнения программы, но которые, как правило, связаны с ошибками программирования или непредвиденными ситуациями.
#для_начинающих
⚡️ Квиз на знание Java
Пройти тестирование — сложно! А ты справишься?
22 вопроса, 30 минут
Проверь себя - пройди квиз и оцени свой уровень навыков, а также свою готовность к обучению на курсе — «Java Developer. Advanced» от Отус.
👩💻 На курсе ты научишься профилировать приложения, настраивать GC, работать с реактивными подходами и мониторить метрики в Grafana. Пройдешь весь путь от JVM до Kubernetes, научишься анализировать «горячие точки», оптимизировать приложения и настраивать интеграции с Prometheus.
➡️ ПРОЙТИ ТЕСТ: https://otus.pw/TFYRi/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Что такое «fail-fast поведение»?
Fail-fast поведение (fail-fast behavior) — это принцип в программировании, который подразумевает, что программа должна обнаруживать ошибки и некорректные условия как можно раньше и немедленно генерировать исключения или останавливать выполнение, чтобы предотвратить дальнейшие некорректные операции и минимизировать возможные повреждения данных или неправильное поведение программы.
В Java fail-fast поведение реализуется с использованием механизмов. Если в процессе выполнения программы обнаруживается какое-либо нарушение, например, попытка доступа за пределы массива или передача недопустимого аргумента в метод, генерируется исключение, и выполнение программы прерывается.
#для_продвинутых
Прямой обход дерева
Прямой обход дерева (pre-order traversal) — это один из способов обхода бинарного дерева. В этом способе сначала посещается корневой узел, затем левое поддерево и затем правое поддерево. Прямой обход широко используется для вывода структуры дерева и выполнения операций на каждом узле в нужном порядке.
#для_продвинутых
❓ Хотите писать смарт-контракты, но кажется, что для этого нужны танцы с бубном?
🫣 Solidity пугает, инструменты кажутся сложными, а блокчейн — вообще отдельной вселенной. Но на самом деле разработка для EVM не так далека от классического программирования. Главное — разобраться с инструментами и подходами.
👉 Изучим это на открытом уроке «Обзор инструментов и методик» 11 марта в 20:00 (мск):
- Какие языки используют для блокчейн-разработки и чем они отличаются
- Как работают компиляторы и анализаторы кода для Solidity
- На что обращать внимание при написании смарт-контрактов
Блокчейн-рынок растёт, и специалисты по Solidity востребованы уже сегодня. Начните разбираться в EVM, пока другие только задаются вопросом «А что это такое?».
Все участники получат скидку на большое обучение «Solidity Developer».
👉 Регистрируйтесь и заходите в Web3 осознанно: https://otus.pw/ADzE/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Что такое ThreadGroup?ThreadGroup
представляет собой класс, предоставляемый Java для создания и управления группами потоков. Он может содержать другие подгруппы потоков, образуя иерархию. Основной целью ThreadGroup
является обеспечение единого механизма управления и мониторинга для всех потоков внутри группы.ThreadGroup
предоставляет некоторый уровень организации и управления, но в большинстве современных приложений управление потоками осуществляется с использованием более высокоуровневых конструкций, таких как классы из пакета java.util.concurrent
, которые предоставляют более гибкие и безопасные средства для работы с параллельным исполнением.
#для_продвинутых
⚡️ Квиз на знание Java
Пройти тестирование — сложно! А ты справишься?
21 вопрос, 30 минут
Проверь себя - пройди квиз и оцени свой уровень навыков, а также свою готовность к обучению на курсе — «Разработчик на Spring Framework» от OTUS.
💻 За 5 месяцев обучения ты освоишь современные возможности Spring, научишься быстро проходить путь от идеи до production-grade, создавать Web-приложения на микросервисной архитектуре и решать высокоуровневые задачи по разработке.
👉 ПРОЙТИ ТЕСТ: https://otus.pw/vhjI/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
ServletContextServletContext
— это интерфейс, который предоставляет методы для взаимодействия с контекстом сервлета. Контекст сервлета — это область, в которой работает сервлет, и предоставляет средства для обмена данными между сервлетами, а также для доступа к различным ресурсам, таким как файлы, базы данных и другие.
Некоторые из основных методов, предоставляемых интерфейсом ServletContext
, включают:getInitParameter
(String name): Возвращает значение инициализационного параметра сервлета, указанного по имени.getInitParameterNames()
: Возвращает имена всех инициализационных параметров сервлета.getAttribute
(String name): Возвращает значение атрибута, сохраненного в контексте сервлета по имени.setAttribute
(String name, Object object): Устанавливает значение атрибута в контексте сервлета.getRequestDispatcher
(String path): Возвращает объект RequestDispatcher, который используется для включения другого ресурса (например, другого сервлета или JSP-страницы) в текущий запрос.getRealPath
(String path): Преобразует виртуальный путь в абсолютный путь на сервере.
#для_продвинутых