В чем заключается особенность работы метода clone () с полями объекта типа ссылки?
При клонировании объектов копируются только примитивные значения и значение ссылок на объекты. Это значит, что если объект имеет во внутреннем поле ссылку на другой объект, то будет клонирована только эта ссылка, сам же этот другой объект клонирован не будет. Собственно, это и называют — поверхностным клонированием.
Ну а что, если вам нужно полноценное клонирование с клонированием всех вложенных объектов? Как сделать, чтобы это были не копии ссылок, а полноценные клоны объекты с другими занимаемыми ячейками памяти в куче?
На самом деле все довольно просто — для этого вам нужно в каждом классе этих внутренних объектов также переопределить метод clone() и добавить интерфейс маркер — Cloneable. Тогда будут скопированные не ссылки на объекты, а сами объекты, ведь теперь они тоже имеют возможность копировать себя.
👨💻 Как работать с архитектурой высоконагруженных систем?
Пройдите вступительный тест и ответьте на 29 вопросов, чтобы понять готовы ли вы стать архитектором, которые работают с высокими нагрузками и попасть на курс — «Highload Architect» от OTUS.
На полном курсе вы научитесь:
- Правильно использовать шаблоны: кеширование, реплицирование, шардирование, а также инструменты, такие как индексы, ClickHouse, Tarantool, RabbitMQ и Kafka, redis;
- Обеспечивать отказоустойчивость веб-приложений даже при падении серверов;
- Уметь создавать веб-приложения, которые легко масштабировать.
Время прохождения теста ограниченно: 25 минут
👉 Пройти тест — https://otus.pw/LFqK/
💣 После прохождения у вас будет возможность записаться на курс по спец. цене и оформить рассрочку. А также вы получите доступ к записям 20 открытых уроков курса.
Реклама. Информация о рекламодателе на сайте www.otus.ru.
Метод containsKey()
Метод java.util.HashMap.containsKey() используется для проверки того, отображается ли конкретный ключ в HashMap или нет. Он принимает ключевой элемент в качестве параметра и возвращает True, если этот элемент есть в коллекции.
☕️ Изучаем Spiring для Java
Spiring — это огромный и самый популярный Java-фреймворк для создания веб-приложений.
Весь его функционал основан на понимании Spiring Core — именно он и разбирается в этом видео.
https://youtu.be/Us40dUnbw80
Как спроектировать архитектуру нагруженного twitter-like приложения? Разберемся 🗓 14 апреля в 20:00 на открытом уроке вместе с Андреем Поляковым, старшим разработчиком в Unlimint.
На открытом уроке мы:
- спроектируем типовую архитектуру нагруженного twitter-like приложения,
- определим пользовательские сценарии и узкие места прототипа,
- обсудим один из самых популярных вопросов на system design interview.
👉 Чтобы записаться на урок, пройдите вступительное тестирование — https://otus.pw/LFoCF/
Занятие является бесплатной пробной частью онлайн-курса «Highload Architect». Оплата курса возможна в рассрочку.
Реклама. Информация о рекламодателе на сайте www.otus.ru.
Final класс
Нельзя расширять класс, объявленный как final. Проще говоря, никакой класс не может наследоваться от данного.
Прекрасным примером final класса в JDK является String. Первый шаг к созданию неизменяемого класса — пометить его как final, и тогда нельзя будет его расширить.
Три задачи на знание Java от ChatGPT
Попросили языковую модель ChatGPT составить три задачи на знание Java: простую, среднюю и сложную.
Смотреть статью
Обработка исключений в Java в функциональном стиле
В данной статье автор предоставит информацию о собственной библиотеке для обработки исключений (Exception) в функциональном стиле.
Смотреть статью
#вопросы_с_собеседований
Что не так с кодом?
Он не скомпилируется. Это вопрос на знание иерархии исключений: FileNotFoundException
унаследован от IOException
, первый catch будет перехватывать все исключения, а в следующий блок catch управление передано не будет. Поэтому возникнет ошибка: exception FileNotFoundException has already been caught
.
Тут вакансия для Java-разработчиков от подписчиков — ребят из Финтеха Яндекса. Обещает давать интересные задачи, уважать и баловать. Стоит присмотреться 👀
Работать нужно с сервисами, которые уже заслужили доверие миллионов и продолжают активно развиваться. Java-разработчик будет заниматься продуктовым движком, бизнес-логикой и инфраструктурой. Для этого пригодятся знания Kotlin, Spring Boot, Kubernetes, Grafana + Prometheus, YDB, PostgreSQL, ClickHouse и Kafka.
Финтех Яндекса — молодой сервис, где не любят бюрократию и сложные процессы. Здесь легко придумывать новое, менять готовое, да хоть сразу предлагать идеи CEO (если получится его поймать). Работать можно и из дома, и из офиса в Москве или Белграде.
Всяческие корпоративные блага прилагаются. Подробности на сайте, и там же можно ответить на один вопрос — и сразу попасть в Телеграм с рекрутёром
Разработайте приложение на Java за 4 занятия, даже если никогда не программировали — на бесплатном курсе «Основы разработки на Java».
Язык программирования Java — универсальный и мощный язык, на котором пишут сайты, интернет-магазины, приложения, даже telegram-ботов. А в разработке Android-приложений Java наряду с родственным ему Kotlin считается главным языком программирования. Это перспективный язык программирования, который подойдёт тем, кому важна надёжность и стабильность кода.
Если сейчас вы выбираете язык программирования для изучения, вы можете присмотреться к Java. На бесплатном курсе «Основы разработки на Java» вы изучите основы синтаксиса языка Java, а в качестве практики разработаете приложение для публикации фото из NASA и перепишете его под Telegram API. Для обучения на курсе не обязательно иметь опыт в программировании.
Записаться на бесплатный курс → https://netolo.gy/blty
Реклама. ООО «Нетология» LatgC5K3b
Устроиться в Яндекс за два дня — реально
Weekend Offer Backend 1–2 апреля
1–2 апреля участвуйте в Weekend Offer Backend, решите задания, пройдите две секции, пообщайтесь с командами и получите офер. В мероприятии участвуют разные сервисы Яндекса, так что можно будет решить, что подходит именно вам.
Формат работы обсуждается индивидуально с каждым кандидатом: работать можно удалённо, в смешанном режиме или в коворкинге в одном из 20 городов России и мира.
Ждём инженеров с опытом коммерческой разработки от трёх лет на одном из языков: Java, Python, C++, Go Scala — или тех, кто готов работать на этих языках.
Зарегистрироваться
#вопросы_с_собеседований
В каких пакетах расположены классы потоков ввода/вывода?java.io
, java.nio
. Для работы с потоками компрессированных данных используются классы из пакета java.util.zip
.
Напишите метод, который на вход получает коллекцию объектов, а возвращает коллекцию уже без дубликатов
Ответ на картинке.
Sealed классы Java в действии: создание надежных и безопасных приложений
Sealed (закрытые или запечатанные) классы были представлены в Java 15 в качестве способа ограничить иерархию наследования класса или интерфейса.
Sealed класс или интерфейс ограничивает набор классов, которые могут наследовать или реализовывать его, что может помочь предотвратить потенциальные ошибки и сделать код более удобным в сопровождении.
Смотреть статью
#вопросы_с_собеседований
Можно ли переопределить статический или частный метод в Java?
Частный метод недоступен вне класса, поэтому он не будет переопределен подклассом. Следовательно, его нельзя переопределить. Точно так же статический метод не может быть переопределен, потому что если мы создадим статические методы с одним и тем же именем метода и сигнатурой как в базовом, так и в производном классе, производный класс скроет методы в базовом классе. Это известно как сокрытие метода.
Хотите создавать на Kotlin высокопроизводительные серверные приложения?
🔥Приглашаем 12 апреля в 20:00 мск на открытый вебинар "Практика применения машины состояний в разработке" в OTUS.
📚 На вебинаре мы рассмотрим как теоретические, так и практические аспекты использования машины состояний, а также пределы их применения.
В результате вебинара вы:
- Научитесь более широко применять конечные автоматы в задачах разработки и получать более эффективный код.
👉 Регистрация на вебинар: https://otus.pw/D9Uw/
Вебинар является частью онлайн-курса «Kotlin Backend Developer. Professional». Курс доступен в рассрочку.
Реклама. Информация о рекламодателе на сайте www.otus.ru
Как запустить Java-приложение с помощью CRaC в контейнере Docker
CRaC (Coordinated Restore at Checkpoint) — это проект OpenJDK, разработанный Azul для решения проблемы «медленного» запуска виртуальной машины Java в микросервисной среде.
Смотреть статью
#вопросы_с_собеседований
Дайте определение понятию «конструктор»
Конструктор — это специальный метод, у которого отсутствует возвращаемый тип и который имеет то же имя, что и класс, в котором он используется. Конструктор вызывается при создании нового объекта класса и определяет действия необходимые для его инициализации.
🔴 «Кто прод ронял, тот в цирке не смеется»
Если вам знаком термин SDLC (жизненный цикл разработки ИТ-продукта), вы знаете, что эксплуатация — важнейший этап для команды. А одним из критических свойств системы является сопровождаемость.
📢📢 Подключайтесь в понедельник 13 марта в 20:00 мск к отрытому уроку онлайн-курса «Software Architect» в OTUS. На занятии мы рассмотрим архитектурное свойство “сопровождаемость” на примере соответствующих сервисов k8s: Pod, Deployment, ReplicaSet.
🎓 Занятие проведет Анатолий Бурнашев, эксперт центра практик обеспечения надёжности в MTS.Digital.
❗️ Не упустите возможность познакомиться с преподавателем и форматом обучения! Продолжить обучение можно в рассрочку.
➡️ Для участия пройдите вступительный тест: https://otus.pw/meOc/Реклама. Информация о рекламодателе на сайте otus.ru
Изобретаем велосипед на Java — пишем свой Framework (DI, ORM, MVC and etc)
Смотреть статью
Пишем Java веб-приложение на современном стеке. С нуля до микросервисной архитектуры. Часть 2
Смотреть статью
Vector API в Java: краткий обзор и тестирование
Vector API в Java сейчас — это модуль, который предоставляет возможность выполнять векторные вычисления, ускоряемые аппаратно.
Смотреть статью
#вопросы_с_собеседований
Сравните Iterator и ListIterator
• ListIterator
расширяет интерфейс Iterator
• ListIterator
может быть использован только для перебора элементов коллекции List
;
• Iterator
позволяет перебирать элементы только в одном направлении, при помощи метода next()
. Тогда как ListIterator
позволяет перебирать список в обоих направлениях, при помощи методов next()
и previous()
;
• ListIterator
не указывает на конкретный элемент: его текущая позиция располагается между элементами, которые возвращают методы previous()
и next()
.
• При помощи ListIterator
вы можете модифицировать список, добавляя/удаляя элементы с помощью методов add()
и remove()
. Iterator
не поддерживает данного функционала.
Как готовиться к собеседованию на Java-разработчика?
▶️Приходите 15 марта в 20:00 на открытый урок: «Введение в Java Collections: списки и O(n)»
Занятие пройдет в рамках специализации «Java Developer» в OTUS (возможна рассрочка).
👨💻Вместе с преподавателем мы познакомимся со списками в Java и изучим особенности их использования и получим ответ на самый популярный вопрос на собеседованиях по Java. В результате урока вы будете знать основные особенности списков в java и скорости их работы.
❕Занятие подойдет всем желающим изучить способы хранения коллекций данных в и подготовиться к собеседованию.
👉 Перед занятием ЗАРЕГИСТРИРУЙТЕСЬРеклама. Информация о рекламодателе на сайте www.otus.ru
Для работы в международной команде базового английского может не хватить. Держите 5 советов, которые помогут подготовиться к общению с иностранными коллегами.
Если хотите подтянуть язык для работы в IT — попробуйте Яндекс Практикум. Они запустили курсы специально для разработчиков, аналитиков и продакт-менеджеров.
В основе обучения — занятия с личным преподавателем, дополнительно вас ждёт разговорная практика с иностранными IT-специалистами. Они помогут освоить язык на примере собеседований, стендапов, ревью и других рабочих встреч. Будет проще пройти реальное англоязычное собеседование, если вы уже тренировали его на занятиях.
Записывайтесь на бесплатную консультацию к куратору. Он определит ваш уровень языка и расскажет о курсе.