This media is not supported in your browser
VIEW IN TELEGRAM
Продолжаем следить за конкурсами с денежными призами. «Цифровой прорыв» совместно с Mail.Ru Group запускают IT-чемпионат по ML, AI и Data Science. Есть три задачи:
- Модель прогноза средних цен и объемов потребления товаров (ФНС России и Росстат)
- ИИ для поиска самолетов на снимках местности при проведении поисково-спасательных операций (Росавиация)
- ИИ для распознавания категории предмета музейного фонда (Минкультуры России)
Как видите, задачи практичные и важные, на решение дается целый месяц — с 14 июля по 14 августа. В каждой из трех задач есть 25 призовых мест, за первое место дают 100 тыс. ₽. Регистрация и подробности здесь: https://proglib.io/w/24a90147
- Модель прогноза средних цен и объемов потребления товаров (ФНС России и Росстат)
- ИИ для поиска самолетов на снимках местности при проведении поисково-спасательных операций (Росавиация)
- ИИ для распознавания категории предмета музейного фонда (Минкультуры России)
Как видите, задачи практичные и важные, на решение дается целый месяц — с 14 июля по 14 августа. В каждой из трех задач есть 25 призовых мест, за первое место дают 100 тыс. ₽. Регистрация и подробности здесь: https://proglib.io/w/24a90147
🛠 Почему Java используется для разработки мобильных приложений?
Если вы подумываете заняться разработкой мобильных приложений, возникает вопрос выбора языка программирования. Одним из лучших вариантов считается Java – рассказываем почему.
https://proglib.io/sh/y7Jmec9Gnj
Если вы подумываете заняться разработкой мобильных приложений, возникает вопрос выбора языка программирования. Одним из лучших вариантов считается Java – рассказываем почему.
https://proglib.io/sh/y7Jmec9Gnj
Что делает volatile?
Во-первых, чтение/запись такого поля становятся атомарными. Это применение актуально только для
Второй и самый интересный эффект – пара событий запись-чтение для такого поля являются synchronization actions. Значит, между ними существует отношение happens-before. Это значит, что существует гарантия, что произошедшее в памяти до записи будет видно после чтения. То есть будут успешно прочитаны значения, записанные в другие переменные.
Для полного понимания темы рекомендуется к просмотру доклад Алексея Шипилёва и документация. Лучше всего эффект
Этот эффект используется для получения простой и дешевой адаптации программы к многопоточной среде без использования сложных и ошибкоопасных техник блокировок и синхронизаций.
volatile
– ключевое слово для работы с многопоточностью. Не то же самое, что volatile
в C++, не обязано делать что-либо с кэшем процессора. Оказывает на поле объекта ровно два эффекта.Во-первых, чтение/запись такого поля становятся атомарными. Это применение актуально только для
long
и double
, и не на всех платформах. Для остальных типов полей это верно и так.Второй и самый интересный эффект – пара событий запись-чтение для такого поля являются synchronization actions. Значит, между ними существует отношение happens-before. Это значит, что существует гарантия, что произошедшее в памяти до записи будет видно после чтения. То есть будут успешно прочитаны значения, записанные в другие переменные.
Для полного понимания темы рекомендуется к просмотру доклад Алексея Шипилёва и документация. Лучше всего эффект
volatile
иллюстрирует задача из этого доклада, которую часто и дают в качестве этого вопроса. Вопрос – что выведет данный код:int a; int b;Трюк в том, что помимо очевидных 21 (поток 2 отработал после 1), 00 (поток 2 отработал до 1, переменные еще не инициализированы) и 01 (поток 2 сработал между записями), может быть и неожиданные 20. Дело в том, что для операторов одного потока действует program order, он гарантирует хотя бы видимость правильной последовательности операций. Между потоками необходим «мост» из happens-before. Его даст применение модификатора
// thread 1:
a = 1;
b = 2;
// thread 2:
System.out.print(b);
System.out.print(a);
volatile
к переменной b
, неожиданный результат 20 будет исключен.Этот эффект используется для получения простой и дешевой адаптации программы к многопоточной среде без использования сложных и ошибкоопасных техник блокировок и синхронизаций.
YouTube
Алексей Шипилёв — Прагматика Java Memory Model
Ближайшая конференция — JPoint 2025, 3–4 апреля (Москва + трансляция).
Подробности и билеты: https://jrg.su/T2zfbS
— —
. . . . Встреча JUG.ru c Алексеем Шипилёвым из Oracle — Прагматика Java Memory Model.
6 февраля 2014 года.
Это самая первая (необкатанная)…
Подробности и билеты: https://jrg.su/T2zfbS
— —
. . . . Встреча JUG.ru c Алексеем Шипилёвым из Oracle — Прагматика Java Memory Model.
6 февраля 2014 года.
Это самая первая (необкатанная)…
Какими значениями инициализируются переменные по умолчанию?
• Числа инициализируются 0 или 0.0;
• char — \u0000;
• boolean — false;
• Объекты (в том числе String) — null.
• Числа инициализируются 0 или 0.0;
• char — \u0000;
• boolean — false;
• Объекты (в том числе String) — null.
⚖️ Что такое лицензирование ПО и как оно работает?
Рассказываем о классификации лицензий и даем практические советы по лицензированию программного обеспечения.
https://proglib.io/sh/6KQ4TnvaNb
Рассказываем о классификации лицензий и даем практические советы по лицензированию программного обеспечения.
https://proglib.io/sh/6KQ4TnvaNb
#вопросы_с_собеседований
Что такое JSTL (JSP Standard tag library)?
Что такое JSTL (JSP Standard tag library)?
JavaServer Pages Standard Tag Library, JSTL, Стандартная библиотека тегов JSP — расширение спецификации JSP (конечный результат JSR 52), добавляющее библиотеку JSP тегов для общих нужд, таких как разбор XML данных, условная обработка, создание циклов и поддержка интернационализации.
JSTL является альтернативой такому виду встроенной в JSP логики, как скриплеты (прямые вставки Java кода). Использование стандартизованного множества тегов предпочтительнее, поскольку получаемый код легче поддерживать и проще отделять бизнес-логику от логики отображения.
JSTL является альтернативой такому виду встроенной в JSP логики, как скриплеты (прямые вставки Java кода). Использование стандартизованного множества тегов предпочтительнее, поскольку получаемый код легче поддерживать и проще отделять бизнес-логику от логики отображения.
Что такое «fail-fast поведение»?
В Java Collections API некоторые итераторы ведут себя как fail-fast и выбрасывают
Реализация такого поведения осуществляется за счет подсчета количества модификаций коллекции (
• при изменении коллекции счетчик модификаций так же изменяется;
• при создании итератора ему передается текущее значение счетчика;
• при каждом обращении к итератору сохраненное значение счетчика сравнивается с текущим, и, если они не совпадают, возникает исключение.
fail-fast
поведение означает, что при возникновении ошибки или состояния, которое может привести к ошибке, система немедленно прекращает дальнейшую работу и уведомляет об этом. Использование fail-fast
подхода позволяет избежать недетерминированного поведения программы в течение времени.В Java Collections API некоторые итераторы ведут себя как fail-fast и выбрасывают
ConcurrentModificationException
, если после его создания была произведена модификация коллекции, т.е. добавлен или удален элемент напрямую из коллекции, а не используя методы итератора.Реализация такого поведения осуществляется за счет подсчета количества модификаций коллекции (
modification count
):• при изменении коллекции счетчик модификаций так же изменяется;
• при создании итератора ему передается текущее значение счетчика;
• при каждом обращении к итератору сохраненное значение счетчика сравнивается с текущим, и, если они не совпадают, возникает исключение.
Почитать Telegram по пути на работу или полистать избранные каналы в обеденный перерыв — привычка полезная. Она работает еще лучше, если периодически пополнять свой список чем-то новеньким.
Вот, например, ребята из Accenture Russia запустили свой канал для IT-сообщества. У них там и полезная информация на разные темы (работа с данными, облака, микросервисы, AI, DevOps, backend- и frontend-разработка, управление проектами и т.д.), и анонсы мероприятий, и розыгрыши призов в духе книжки на профтему, билета на классную конфу и не только.
Подписывайся, читай, выигрывай!
Вот, например, ребята из Accenture Russia запустили свой канал для IT-сообщества. У них там и полезная информация на разные темы (работа с данными, облака, микросервисы, AI, DevOps, backend- и frontend-разработка, управление проектами и т.д.), и анонсы мероприятий, и розыгрыши призов в духе книжки на профтему, билета на классную конфу и не только.
Подписывайся, читай, выигрывай!
#вопросы_с_собеседований
Сколько элементов будет пропущено, если Iterator.next() будет вызван после 10-ти вызовов Iterator.hasNext()?
Сколько элементов будет пропущено, если Iterator.next() будет вызван после 10-ти вызовов Iterator.hasNext()?
Forwarded from Java jobs — вакансии для java-разработчиков
👔 Middle Java Developer
⛳️ IRLIX
💼🥁 Удаленка
💵 150 000 - 200 000 рублей
Подробнее: https://proglib.io/vacancies/middle-java-developer-irlix-2021-06-23
⛳️ IRLIX
💼🥁 Удаленка
💵 150 000 - 200 000 рублей
Подробнее: https://proglib.io/vacancies/middle-java-developer-irlix-2021-06-23
Библиотека программиста
Middle Java Developer
IRLIX ⌬ IT компания
🏡 место, где работают ⓣⓡⓤⓔ ⓔⓝⓖⓘⓝⓔⓔⓡⓢ
⭐ поддерживаем на пути к результату
🍀 пропагандируем экологию мысли
🏆 #3 в рейтинге по версии Хабр Карьера
🏡 место, где работают ⓣⓡⓤⓔ ⓔⓝⓖⓘⓝⓔⓔⓡⓢ
⭐ поддерживаем на пути к результату
🍀 пропагандируем экологию мысли
🏆 #3 в рейтинге по версии Хабр Карьера
Ответ
Нисколько -
Нисколько -
hasNext()
осуществляет только проверку наличия следующего элемента.В следующий понедельник стартует Курс по многопоточному программированию на Java.
Уровень: middle/senior
Подойдёт тем, кто знает основы многопоточки и готов выйти на новый уровень.
Курс строится вокруг java.util.concurrent. Изучим всё, что там есть, как это применять на практике и сравним разные инструменты между собой. Затронем и смежные темы: мониторинг, флажки JVM, виртуальные потоки и реактивное программирование.
Разберём огромное количество кейсов, лучших практик и возможных ошибок. Курс максимально ориентирован на практику и ситуацию в 2021 году.
Через два месяца вы получите всю базу для работы на хайлоад проекте. Сможете уверенно решать задачи под разную нагрузку. Будете круто выглядеть на собеседованиях🔥
Старт: 12 июля
Длительность: 8 недель
Программа, отзывы - здесь.
Записывайся ➡️ https://fillthegaps.ru/mt2
Уровень: middle/senior
Подойдёт тем, кто знает основы многопоточки и готов выйти на новый уровень.
Курс строится вокруг java.util.concurrent. Изучим всё, что там есть, как это применять на практике и сравним разные инструменты между собой. Затронем и смежные темы: мониторинг, флажки JVM, виртуальные потоки и реактивное программирование.
Разберём огромное количество кейсов, лучших практик и возможных ошибок. Курс максимально ориентирован на практику и ситуацию в 2021 году.
Через два месяца вы получите всю базу для работы на хайлоад проекте. Сможете уверенно решать задачи под разную нагрузку. Будете круто выглядеть на собеседованиях🔥
Старт: 12 июля
Длительность: 8 недель
Программа, отзывы - здесь.
Записывайся ➡️ https://fillthegaps.ru/mt2
Forwarded from Java jobs — вакансии для java-разработчиков
#вакансия #remote #java #backend #работа #москва
Компания: Bright group (bright-group.ru)
Формат работы: удалёнка
Зарплатная вилка: от 200 до 300k net
Middle/Senior java backend-разработчик в компанию Bright Group в наш IT-продукт по управлению движением транспорта и планированию его расписания в режиме реального времени.
Наш стек: Java, Postgres, Hibernate, Spring Framework 5, Spring Boot 2
Инфраструктра: JIRA, Confluence, Gitlab/Jenkins, Docker, Kubernetes (Openshift)
✔️Требования:
📌Задачи:
🔅 Что мы предлагаем:
- Удаленный формат работы;
- Гибкий график;
- Официальное оформление, белая ЗП;
- ДМС.
🤳Контакты:
[email protected]
@avokonlehc
Всем отличного дня!
Компания: Bright group (bright-group.ru)
Формат работы: удалёнка
Зарплатная вилка: от 200 до 300k net
Middle/Senior java backend-разработчик в компанию Bright Group в наш IT-продукт по управлению движением транспорта и планированию его расписания в режиме реального времени.
Наш стек: Java, Postgres, Hibernate, Spring Framework 5, Spring Boot 2
Инфраструктра: JIRA, Confluence, Gitlab/Jenkins, Docker, Kubernetes (Openshift)
✔️Требования:
•
Опыт работы на Java от 3 лет;•
Отличное знание алгоритмов, структур данных, способность писать эффективный код;•
Опыт работы с микросервисной архитектурой;•
Уверенное понимание архитектуры сетевых приложений;•
Опыт разработки приложений, основанных на принципах ООП и паттерне MVC;•
Умение самостоятельно принимать архитектурные решения, искать нужную информацию;•
Уверенное знание SQL;•
Использовать актуальные подходы к разработке и современные технологии;•
Решать задачи в команде с системным аналитиком, frontend-разработчиками и QA-инженерами.•
Опыт разработки клиент-серверных приложений (REST, JSON);•
Опыт работы с Git, знание git flow;•
Умение работать в команде;•
Высшее техническое образование.📌Задачи:
•
Участвовать в процессе разработки функционала, начиная с проектирования и заканчивая поставкой и поддержкой;•
Исследовать и улучшать производительность приложений;•
Писать тесты, инспектировать код;•
Выстраивать взаимодействие внутри команды и снаружи (с project-менеджерами, тестировщиками, frontend-разработчиками);•
Оценивать работу людей в команде, давать обратную связь. Развивать людей в команде;•
Вести пул технических задач;•
Умение общаться и доносить свои мысли лаконично, объяснять свою позицию.🔅 Что мы предлагаем:
- Удаленный формат работы;
- Гибкий график;
- Официальное оформление, белая ЗП;
- ДМС.
🤳Контакты:
[email protected]
@avokonlehc
Всем отличного дня!
#вопросы_с_собеседований
На каком объекте происходит синхронизация при вызове static synchronized метода?
На каком объекте происходит синхронизация при вызове static synchronized метода?
У синхронизированного статического метода нет доступа к this, но есть доступ к объекту класса Class, он присутствует в единственном экземпляре и именно он выступает в качестве монитора для синхронизации статических методов. Таким образом, следующая конструкция:
public class SomeClass {
public static synchronized void someMethod() {
//code
}
}
эквивалентна такой:
public class SomeClass {
public static void someMethod(){
synchronized(SomeClass.class){
//code
}
}
}
public class SomeClass {
public static synchronized void someMethod() {
//code
}
}
эквивалентна такой:
public class SomeClass {
public static void someMethod(){
synchronized(SomeClass.class){
//code
}
}
}
Как поведёт себя уже инстанциированный итератор для collection, если вызвать collection.remove()?
При следующем вызове методов итератора будет выброшено
При следующем вызове методов итератора будет выброшено
ConcurrentModificationException
.#вопросы_с_собеседований
Расскажите о типах шаблонов проектирования.
Расскажите о типах шаблонов проектирования.
✔️Основные (Fundamental) — основные строительные блоки других шаблонов. Большинство других шаблонов использует эти шаблоны в той или иной форме.
✔️Порождающие шаблоны (Creational) — шаблоны проектирования, которые абстрагируют процесс создания экземпляра. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять созданный объект, а шаблон, порождающий объекты, делегирует создание объектов другому объекту.
✔️Структурные шаблоны (Structural) определяют различные сложные структуры, которые изменяют интерфейс уже существующих объектов или его реализацию, позволяя облегчить разработку и оптимизировать программу.
✔️Поведенческие шаблоны (Behavioral) определяют взаимодействие между объектами, увеличивая таким образом его гибкость.
✔️Порождающие шаблоны (Creational) — шаблоны проектирования, которые абстрагируют процесс создания экземпляра. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять созданный объект, а шаблон, порождающий объекты, делегирует создание объектов другому объекту.
✔️Структурные шаблоны (Structural) определяют различные сложные структуры, которые изменяют интерфейс уже существующих объектов или его реализацию, позволяя облегчить разработку и оптимизировать программу.
✔️Поведенческие шаблоны (Behavioral) определяют взаимодействие между объектами, увеличивая таким образом его гибкость.
В чем разница между классами java.util.Collection и java.util.Collections?
java.util.Collections
- набор статических методов для работы с коллекциями.java.util.Collection
- один из основных интерфейсов Java Collections Framework
.