Обработка какого массива в Java быстрее?
Anonymous Quiz
49%
Отсортированного
5%
Неотсортированного
46%
Неважно какого
Какие у аннотации бывают таргеты?
Мета-аннотация
• TYPE – Объявление класса, интерфейса, аннотации или enum-а.
• FIELD – Объявление поля (включая константы enum-ов).
• METHOD – Объявление метода.
• PARAMETER – Формальный параметр в объявлении метода.
• CONSTRUCTOR – Объявление конструктора.
• LOCAL_VARIABLE – Объявление локальной переменной.
• ANNOTATION_TYPE – Объявление аннотации. Применяется для создания мета-аннотации.
• PACKAGE – Объявление пакета (в
–– С Java 8 ––
• TYPE_PARAMETER – Обявление generic типа-параметра.
• TYPE_USE – Любое использование типа. Например приведение:
–– С Java 9 ––
• MODULE – Объявление модуля.
#proglib_contest
Мета-аннотация
@Target
определяет, в каком контексте может применяться объявляемая аннотация. Допустимые контексты перечисляются значениями ElementType
. По умолчанию, если @Target
не указан, разрешены все контексты кроме TYPE_PARAMETER
. Возможные таргеты:• TYPE – Объявление класса, интерфейса, аннотации или enum-а.
• FIELD – Объявление поля (включая константы enum-ов).
• METHOD – Объявление метода.
• PARAMETER – Формальный параметр в объявлении метода.
• CONSTRUCTOR – Объявление конструктора.
• LOCAL_VARIABLE – Объявление локальной переменной.
• ANNOTATION_TYPE – Объявление аннотации. Применяется для создания мета-аннотации.
• PACKAGE – Объявление пакета (в
package-info.java
).–– С Java 8 ––
• TYPE_PARAMETER – Обявление generic типа-параметра.
• TYPE_USE – Любое использование типа. Например приведение:
(@NonNull String) myObject
.–– С Java 9 ––
• MODULE – Объявление модуля.
#proglib_contest
Forwarded from Библиотека питониста | Python, Django, Flask
Подходит к концу эпический конкурс на самый интересный контент в телеграм-каналах Библиотеки программиста. Посты собирают всё больше откликов — спасибо за ваши старания!
У всех, кто хотел поучаствовать, остался последний шанс побороться за 20 000 ₽ в каждом из каналов: @progbook, @proglibrary, @pyproglib, @frontendproglib, @javaproglib, @dsproglib, @phpproglib, @cppproglib, @mobileproglib, @goproglib, @csharpproglib, @devopsslib, @testerlib, @hackproglib. Общий призовой фонд 280 000 ₽.
До полуночи примем последние посты — в некоторых каналах шансы на победу всё ещё высокие. Лайфхак: эти каналы нетрудно вычислить по хэштегу #proglib_contest 😉.
Напоминаем, как участвовать: пишем анонс до 700 знаков к любой актуальной айтишной статье 2020-21 годов или рецензию книги для @progbook. Отправляем получившийся текст и название канала боту @proglib_contest_bot. Чей пост в канале наберёт больше откликов, тот и выиграл.
Через три дня подведем итоги и огласим список победителей. Юридическая информация: https://proglib.io/best-post-contest.
У всех, кто хотел поучаствовать, остался последний шанс побороться за 20 000 ₽ в каждом из каналов: @progbook, @proglibrary, @pyproglib, @frontendproglib, @javaproglib, @dsproglib, @phpproglib, @cppproglib, @mobileproglib, @goproglib, @csharpproglib, @devopsslib, @testerlib, @hackproglib. Общий призовой фонд 280 000 ₽.
До полуночи примем последние посты — в некоторых каналах шансы на победу всё ещё высокие. Лайфхак: эти каналы нетрудно вычислить по хэштегу #proglib_contest 😉.
Напоминаем, как участвовать: пишем анонс до 700 знаков к любой актуальной айтишной статье 2020-21 годов или рецензию книги для @progbook. Отправляем получившийся текст и название канала боту @proglib_contest_bot. Чей пост в канале наберёт больше откликов, тот и выиграл.
Через три дня подведем итоги и огласим список победителей. Юридическая информация: https://proglib.io/best-post-contest.
Библиотека программиста
Правила проведения публичного конкурса
Материалы, которые научат и помогут программировать. Книги и лекции, видеоуроки и советы, тесты знаний и обсуждение горячих тем. Присоединяйтесь!
#вопросы_с_собеседований
Расскажите про основные понятия ООП: «класс», «объект», «интерфейс».
Расскажите про основные понятия ООП: «класс», «объект», «интерфейс».
Класс – это способ описания сущности, определяющий состояние и поведение, зависящее от этого состояния, а также правила для взаимодействия с данной сущностью (контракт).
С точки зрения программирования класс можно рассматривать как набор данных (полей, атрибутов, членов класса) и функций для работы с ними (методов).
С точки зрения структуры программы класс является сложным типом данных.
Объект (экземпляр) – это отдельный представитель класса, имеющий конкретное состояние и поведение, полностью определяемое классом. Каждый объект имеет конкретные значения атрибутов и методы, работающие с этими значениями на основе правил, заданных в классе.
Интерфейс – это набор методов класса, доступных для использования. Интерфейсом класса будет являться набор всех его публичных методов в совокупности с набором публичных атрибутов. По сути, интерфейс специфицирует класс, чётко определяя все возможные действия над ним.
С точки зрения программирования класс можно рассматривать как набор данных (полей, атрибутов, членов класса) и функций для работы с ними (методов).
С точки зрения структуры программы класс является сложным типом данных.
Объект (экземпляр) – это отдельный представитель класса, имеющий конкретное состояние и поведение, полностью определяемое классом. Каждый объект имеет конкретные значения атрибутов и методы, работающие с этими значениями на основе правил, заданных в классе.
Интерфейс – это набор методов класса, доступных для использования. Интерфейсом класса будет являться набор всех его публичных методов в совокупности с набором публичных атрибутов. По сути, интерфейс специфицирует класс, чётко определяя все возможные действия над ним.
Можно ли выбрасывать исключение generic-типа?
Короткий ответ – да. Как в большинстве каверзных вопросов про дженерики, ответ становится очевидным если подумать, во что сотрутся типы-параметры.
Чтобы объявить, что метод выбрасывает исключение обобщенного типа
Короткий ответ – да. Как в большинстве каверзных вопросов про дженерики, ответ становится очевидным если подумать, во что сотрутся типы-параметры.
Чтобы объявить, что метод выбрасывает исключение обобщенного типа
T
, этот тип T
должен быть объявлен расширяющим Throwable
. Именно в Throwable
в таком случае сотрется T
при компиляции. Также в качестве типа-верхней границы можно использовать любого наследника Throwable
:class MyClass<T extends IOException> {
void foo() throws T {
// ...
}
}
This media is not supported in your browser
VIEW IN TELEGRAM
Готовы хакнуть онлайн-магазин М.ВидеоЭльдорадо и обнулить цены на топовую игровую технику и iPhone 12?📱
Участвуйте в битве Tech monsters night от М.ВидеоЭльдорадо, решите задачи конкурса лучше и быстрее других — и получите шанс обладать одним из тридцати крутых призов, оригинальным мерчем и должностью в компании.
Когда:
🔘 17.05-03.06 — Пройдите регистрацию в личном кабинете и ловите уведомления организатора в телеграм-канале.
🔘 04.06-05.06 — Tech Monsters Night: решайте задачи битвы с 22:00 до 03:00, и сразу знакомьтесь с результатами.
🔘 05.05-01.08 — Забирайте свой фирменный мерч или мощную технику. Лучший получит возможность выиграть one night offer.
Зарегистрироваться - https://i.techmn.ru/Cgbwp
До встречи на Tech Monsters Night 🌃
Кто монстр, тот знает.
Участвуйте в битве Tech monsters night от М.ВидеоЭльдорадо, решите задачи конкурса лучше и быстрее других — и получите шанс обладать одним из тридцати крутых призов, оригинальным мерчем и должностью в компании.
Когда:
🔘 17.05-03.06 — Пройдите регистрацию в личном кабинете и ловите уведомления организатора в телеграм-канале.
🔘 04.06-05.06 — Tech Monsters Night: решайте задачи битвы с 22:00 до 03:00, и сразу знакомьтесь с результатами.
🔘 05.05-01.08 — Забирайте свой фирменный мерч или мощную технику. Лучший получит возможность выиграть one night offer.
Зарегистрироваться - https://i.techmn.ru/Cgbwp
До встречи на Tech Monsters Night 🌃
Кто монстр, тот знает.
Какие существуют стандартные загрузчики классов?
В JVM встроено как минимум три стандартных загрузчика:
🔘 Bootstrap – встроенная в JVM нативная реализация, родитель для всех остальных загрузчиков. Загружает часть стандартных классов
🔘 Platform – отвечает за загрузку стандартных классов Java-рантайма. До Java 9 назывался Extension и занимался загрузкой расширений. Гарантируется, что ему будут видны (но не факт что загружены непосредственно им) все стандартные классы Java SE и JDK;
🔘 System (Application) – загружает классы из classpath) конкретного приложения;
Перед тем как загрузить класс,
Иллюстрация смысла этой иерархии – загрузчики web-сервера Apache Tomcat. Прикладной код каждого web-приложения работает на своем отдельном загрузчике изолированно от других приложений. Даже один и тот же класс-singleton у каждого приложения будет собственный. Системные классы и общие библиотеки при том грузятся их родительскими загрузчиками, только один раз для сервера.
#Классы
В JVM встроено как минимум три стандартных загрузчика:
🔘 Bootstrap – встроенная в JVM нативная реализация, родитель для всех остальных загрузчиков. Загружает часть стандартных классов
java.*
;🔘 Platform – отвечает за загрузку стандартных классов Java-рантайма. До Java 9 назывался Extension и занимался загрузкой расширений. Гарантируется, что ему будут видны (но не факт что загружены непосредственно им) все стандартные классы Java SE и JDK;
🔘 System (Application) – загружает классы из classpath) конкретного приложения;
Перед тем как загрузить класс,
ClassLoader
проверит, не может ли это сделать его родитель. Если класс уже загружен, то загрузка не потребуется.Иллюстрация смысла этой иерархии – загрузчики web-сервера Apache Tomcat. Прикладной код каждого web-приложения работает на своем отдельном загрузчике изолированно от других приложений. Даже один и тот же класс-singleton у каждого приложения будет собственный. Системные классы и общие библиотеки при том грузятся их родительскими загрузчиками, только один раз для сервера.
#Классы
Давно думали над переходом от разработчика к тимлиду? Тогда успейте записаться на бесплатный вебинар от GeekBrains X AGIMA и узнайте, из кого получаются хорошие тимлиды.
- Почему тимлид в AGIMA считается отдельной профессией, а не ролью;
- Какие навыки тимлида ценятся на рынке и в компании AGIMA;
- Как разработчики становятся тимлидами и как мы выстраиваем институт тимлидерства.
За 1,5 часа вы сможете послушать выступление, задать интересующие вопросы и прокачать свои скиллы. Как бонус вы получаете методические материалы и запись вебинара.
Вебинар состоится 27 мая в 19:00. Узнавайте подробности и записывайтесь здесь. Перед началом вебинара отправляется уведомление.
- Почему тимлид в AGIMA считается отдельной профессией, а не ролью;
- Какие навыки тимлида ценятся на рынке и в компании AGIMA;
- Как разработчики становятся тимлидами и как мы выстраиваем институт тимлидерства.
За 1,5 часа вы сможете послушать выступление, задать интересующие вопросы и прокачать свои скиллы. Как бонус вы получаете методические материалы и запись вебинара.
Вебинар состоится 27 мая в 19:00. Узнавайте подробности и записывайтесь здесь. Перед началом вебинара отправляется уведомление.
Опишите процесс создания экземпляра класса
Сначала класс и цепочка его предков должны быть загружены, сверху вниз. Рассмотрим ClassLoader и процесс загрузки классов в будущих постах. Здесь важно сказать, что класс загружается только один раз, при первом к нему обращении в рамках одного класслоадера.
После загрузки каждого класса выделяется память под его статические поля и выполняются статические блоки инициализации. В будущем возможно будет ленивой не только загрузка всего класса, но и инициализация его статических финальных полей.
Далее инстанциируется сам экземпляр. Как и с загрузкой классов, процесс выполняется для всей цепочки наследования, с самого дальнего родителя:
1. Выделяется память в куче для экземпляра, получается ссылка на этот экземпляр;
2. Выполняются инициализации нестатических полей и блоков инициализации в порядке объявления;
3. Вызывается конструктор;
Статические поля интерфейсов не инициализируются при создании объекта, а другого состояния интерфейс не имеет – это исключает вопрос порядка инициализации предков при множественном наследовании.
В процессе конструирования объекта может возникать проблема виртуального вызова в конструкторе, свойственная для многих языков. Effective Java Item 17 рекомендует не использовать переопределяемые методы в расширяемом классе. Иллюстрация неочевидного поведения в результате приведена ниже:
Сначала класс и цепочка его предков должны быть загружены, сверху вниз. Рассмотрим ClassLoader и процесс загрузки классов в будущих постах. Здесь важно сказать, что класс загружается только один раз, при первом к нему обращении в рамках одного класслоадера.
После загрузки каждого класса выделяется память под его статические поля и выполняются статические блоки инициализации. В будущем возможно будет ленивой не только загрузка всего класса, но и инициализация его статических финальных полей.
Далее инстанциируется сам экземпляр. Как и с загрузкой классов, процесс выполняется для всей цепочки наследования, с самого дальнего родителя:
1. Выделяется память в куче для экземпляра, получается ссылка на этот экземпляр;
2. Выполняются инициализации нестатических полей и блоков инициализации в порядке объявления;
3. Вызывается конструктор;
Статические поля интерфейсов не инициализируются при создании объекта, а другого состояния интерфейс не имеет – это исключает вопрос порядка инициализации предков при множественном наследовании.
В процессе конструирования объекта может возникать проблема виртуального вызова в конструкторе, свойственная для многих языков. Effective Java Item 17 рекомендует не использовать переопределяемые методы в расширяемом классе. Иллюстрация неочевидного поведения в результате приведена ниже:
#вопросы_с_собеседований
Зачем нужен equals(). Чем он отличается от операции ==?
Зачем нужен equals(). Чем он отличается от операции ==?
Forwarded from Java jobs — вакансии для java-разработчиков
👨🏻💻Middle Java Developer, Serpstat, удалённо или в офис, Одесса, Киев
О компании:
🔸В команду Serpstat (международный HighLoad проект) ищем Middle Java Developer
🔸Технологии, которые используем в компании: Java, RabbitMQ, Kafka, ClickHouse, Apache Storm. Строим наш продукт по принципам SOLID, DRY, DIE, KISS, YAGNI.
🔸Serpstat — это 245 000+ пользователей, продукт представлен в 230 странах, базы данных Google для всех стран, 230 баз ключевиков, более 300 серверов, больше 250 Тб данных
Что мы ожидаем от Вас:
🔸Опыт разработки на Java от 2 лет.
🔸Знание и понимание принципов ООП.
🔸Знание, понимание и следование принципам SOLID, DRY, DIE, KISS, YAGNI.
🔸Отличные знания SQL, опыт проектирования баз данных и оптимизации запросов.
🔸Понимание работы DNS, HTTP 1/2.
🔸Опыт работы с RabbitMQ, Kafka.
🔸Знание Spring Boot, Spring Web, Spring Data.
🔸Знание Git / Maven.
🔸Знание Unix систем.
Что мы готовы предложить:
🔸Удобный график: с 8-10 до 17-19
🔸Зарплата по итогам собеседования.
🔸Возможность работать в офисе в Одессе, Киеве, или полностью удаленно
🔸Оплачиваемые больничные и отпуск
🔸Посещение профильных конференции за счет компании (мы оплачиваем 50% стоимости билета на мероприятие и проезда), а также участие в конференциях и семинарах организаторами которых является Netpeak Group
🔸Возможность обучения и развития: опыт и помощь наших сотрудников, помощь в профессиональной адаптации и обучение куратора на протяжении всего испытательного срока
🔸Карьерную лестницу и карту знаний, которые дают прозрачное понимание того, что надо сделать, чтобы перейти на новую ступеньку.
Подробности вакансии: https://career.netpeak.group/vacancy/middle-java-developer-serpstat/
Контакт: @twen_netpeak
О компании:
🔸В команду Serpstat (международный HighLoad проект) ищем Middle Java Developer
🔸Технологии, которые используем в компании: Java, RabbitMQ, Kafka, ClickHouse, Apache Storm. Строим наш продукт по принципам SOLID, DRY, DIE, KISS, YAGNI.
🔸Serpstat — это 245 000+ пользователей, продукт представлен в 230 странах, базы данных Google для всех стран, 230 баз ключевиков, более 300 серверов, больше 250 Тб данных
Что мы ожидаем от Вас:
🔸Опыт разработки на Java от 2 лет.
🔸Знание и понимание принципов ООП.
🔸Знание, понимание и следование принципам SOLID, DRY, DIE, KISS, YAGNI.
🔸Отличные знания SQL, опыт проектирования баз данных и оптимизации запросов.
🔸Понимание работы DNS, HTTP 1/2.
🔸Опыт работы с RabbitMQ, Kafka.
🔸Знание Spring Boot, Spring Web, Spring Data.
🔸Знание Git / Maven.
🔸Знание Unix систем.
Что мы готовы предложить:
🔸Удобный график: с 8-10 до 17-19
🔸Зарплата по итогам собеседования.
🔸Возможность работать в офисе в Одессе, Киеве, или полностью удаленно
🔸Оплачиваемые больничные и отпуск
🔸Посещение профильных конференции за счет компании (мы оплачиваем 50% стоимости билета на мероприятие и проезда), а также участие в конференциях и семинарах организаторами которых является Netpeak Group
🔸Возможность обучения и развития: опыт и помощь наших сотрудников, помощь в профессиональной адаптации и обучение куратора на протяжении всего испытательного срока
🔸Карьерную лестницу и карту знаний, которые дают прозрачное понимание того, что надо сделать, чтобы перейти на новую ступеньку.
Подробности вакансии: https://career.netpeak.group/vacancy/middle-java-developer-serpstat/
Контакт: @twen_netpeak
Serpstat
Serpstat – Go-to Platform to Speed up Search Marketing Goals Achievement
A powerful tool for ✓ Backlinks Analysis ✓ Rank Tracking ✓ Keyword Research ✓ Competitor Analysis ✓ Site Audit
Что такое ковариантность и контравариантность?
Формально, ковариантность/контравариантность типов – это сохранение/обращение порядка наследования для производных типов. Проще говоря, когда у ковариантных сущностей типами-параметрами являются родитель и наследник, они сами становятся как бы родителем и наследником. Контравариантные наоборот, становятся наследником и родителем.
Легче всего осознать эти понятия на примерах:
🔘 Ковариантность:
🔘 Контравариантность: в качестве параметра метода
Отношение типов «можно присвоить» – не совсем наследование, такие типы называются совместимыми (отношение «is a»).
Существует еще одно связанное понятие – инвариантность. Инвариантность – это отсутствие свойств ковариантности и контрвариантности. Дженерики без вайлдкардов инвариантны:
Массивы ковариантны: в переменную
Переопределение методов начиная с Java 5 ковариантно относительно типа результата и типов исключений.
#Язык
#Дженерики
Формально, ковариантность/контравариантность типов – это сохранение/обращение порядка наследования для производных типов. Проще говоря, когда у ковариантных сущностей типами-параметрами являются родитель и наследник, они сами становятся как бы родителем и наследником. Контравариантные наоборот, становятся наследником и родителем.
Легче всего осознать эти понятия на примерах:
🔘 Ковариантность:
List<Integer>
можно присвоить в переменную типа List<? extends Number>
(как будто он наследник List<Number>
).🔘 Контравариантность: в качестве параметра метода
List<Number>#sort
типа Comparator<? super Number>
может быть передан Comparator<Object>
(как будто он родитель Comparator<Number>
)Отношение типов «можно присвоить» – не совсем наследование, такие типы называются совместимыми (отношение «is a»).
Существует еще одно связанное понятие – инвариантность. Инвариантность – это отсутствие свойств ковариантности и контрвариантности. Дженерики без вайлдкардов инвариантны:
List<Number>
нельзя положить ни в переменную типа List<Double>
, ни в List<Object>
.Массивы ковариантны: в переменную
Object[]
можно присвоить значение типа String[]
.Переопределение методов начиная с Java 5 ковариантно относительно типа результата и типов исключений.
#Язык
#Дженерики
Метод equals() - определяет отношение эквивалентности объектов.
При сравнении объектов с помощью == сравнение происходит лишь между ссылками. При сравнении по переопределённому разработчиком equals() - по внутреннему состоянию объектов.
При сравнении объектов с помощью == сравнение происходит лишь между ссылками. При сравнении по переопределённому разработчиком equals() - по внутреннему состоянию объектов.
От написания кода до релиза — DevOps-инженер все держит под контролем! Поэтому спрос на этих специалистов всего лишь за 2 года вырос на 70%
Хочешь освоить по-настоящему востребованную профессию? Образовательная платформа GeekBrains открывает набор на Факультет DevOps
Даже если вы никогда не работали в IT, вы получите востребованную и высокооплачиваемую специальность. Сможете использовать методологии Agile и Scrum, оптимизировать CI/CD и работать с облачными технологиями.
18 месяцев обучения, 4 полноценных проекта в портфолио, качественное резюме, диплом гособразца о переподготовке и помощь в трудоустройстве — и это все в сопровождении с топовыми экспертами-практиками, которые поделятся личным опытом и ответят на любые ваши вопросы.
Первый платеж за обучение можно совершить через 6 месяцев. Скорее регистрируйтесь, ведь сейчас на курс действует скидка 35% → https://gb.ru/link/p_7ItX
Хочешь освоить по-настоящему востребованную профессию? Образовательная платформа GeekBrains открывает набор на Факультет DevOps
Даже если вы никогда не работали в IT, вы получите востребованную и высокооплачиваемую специальность. Сможете использовать методологии Agile и Scrum, оптимизировать CI/CD и работать с облачными технологиями.
18 месяцев обучения, 4 полноценных проекта в портфолио, качественное резюме, диплом гособразца о переподготовке и помощь в трудоустройстве — и это все в сопровождении с топовыми экспертами-практиками, которые поделятся личным опытом и ответят на любые ваши вопросы.
Первый платеж за обучение можно совершить через 6 месяцев. Скорее регистрируйтесь, ведь сейчас на курс действует скидка 35% → https://gb.ru/link/p_7ItX
Пришло время подвести итоги конкурса на лучший контент #proglib_contest. Искренне благодарим всех, кто принял активное участие, без вашей поддержки конкурс бы не получился.
Победителем канала Библиотека джависта становится автор поста — барабанная дробь 🥁 — https://yangx.top/javaproglib/2513.
Победитель определен по количеству лайков под постом среди других конкурсных сообщений. За победный пост автор получает 20 000 ₽. В ближайшее время мы свяжемся с победителем и отправим приз — оставайтесь на связи.
Спасибо, что читаете нас! ✨
Победителем канала Библиотека джависта становится автор поста — барабанная дробь 🥁 — https://yangx.top/javaproglib/2513.
Победитель определен по количеству лайков под постом среди других конкурсных сообщений. За победный пост автор получает 20 000 ₽. В ближайшее время мы свяжемся с победителем и отправим приз — оставайтесь на связи.
Спасибо, что читаете нас! ✨
Telegram
Библиотека джависта
Какая разница между @ElementCollection, @OneToMany и @ManyToMany?
Все эти аннотации – часть Java Persistence API. С их использованием мы регулярно сталкиваемся в реализациях JPA, таких как Hibernate.
Когда в базу данных сохраняется сущность, в которой…
Все эти аннотации – часть Java Persistence API. С их использованием мы регулярно сталкиваемся в реализациях JPA, таких как Hibernate.
Когда в базу данных сохраняется сущность, в которой…
#вопросы_с_собеседований
Для чего используется PushbackInputStream?
Для чего используется PushbackInputStream?
Разновидность буферизации, обеспечивающая чтение байта с последующим его возвратом в поток. Класс PushbackInputStream представляет механизм «заглянуть» во входной поток и увидеть, что оттуда поступит в следующий момент, не извлекая информации.
У класса есть дополнительный метод unread().
У класса есть дополнительный метод unread().
Forwarded from Java jobs — вакансии для java-разработчиков
Вакансия: Java – разработчик, middle – senior
Компания: #Usetech
Локация: офисы Москва, Ростов-на-Дону, Барнаул, Томск или удаленная работа.
ЗП: от 200 до 300 K NET
Контакты: [email protected]
@SofiaGardash
Откликнуться
C 2006 года Usetech осуществляет полный спектр работ в области заказной разработки ПО для своих Заказчиков в отраслях: ритейл, финансы, телеком, ИТ и государственном секторе.
На протяжении последних лет компания активно участвует в создании цифровой экосистемы страны. Нашими прорывными решениями пользуются миллионы людей по всему миру, а мировые тренды находят отражение в разработанном нами ПО (Ml, Al, Blockchain, Big Data, нейросети, роботизированные сервисы и многое другое).
Сегодня мы приглашаем принять участие в разработке платформы для принципиально нового уровня жизни миллионов людей. Мы ищем профессионалов, способных мыслить глобально и создавать тренды. У тебя есть уникальный шанс вписать свое имя в историю цифровизации страны!
Задачи:
• Выполнение технической декомпозиции задач;
• Оценка трудозатрат по тикетам;
• Наставничество новых / начинающих разработчиков в команде;
• Реализация и ревью ключевой функциональности в системе;
• Участие в планировании и высокоуровневой оценке новых фич;
• Документирование своего кода, участие в разработке технических документов для сопровождения и сдачи системы;
• Разработка системы, построенную на микросервисной архитектуре;
• Разработка новых сервисов, рефакторинг и развитие существующих;
• Доработка существующую функциональность;
• Работать в команде по методологии Scrum.
Мы ожидаем:
• Высшее техническое образование;
• Опыт разработки 3-хзвенных приложений от 5 лет;
• Отличное знание и опыт программирования на языке Java (JavaSE 8-11, Spring);
• Умение и опыт планирования, декомпозиции, распределения и контроля работ разработки и развертывания ППО;
• Умение и опыт проектирования программного обеспечения;
• Хорошее знание и опыт работы со средствами сборки;
• Знание и опыт работы: со средствами непрерывной интеграции, с системой отслеживания ошибок, юнит-тестирования и оценки покрытия тестами, использования технологий интеграции приложений;
• Глубокие знания и опыт коммерческой работы со Spring Framework, JDBC, Spring JDBC Templates/MyBatis;
• Отличные знания SQL: оптимизация запросов, проектирование модели данных для соответствия требованиям по производительности.
Мы предлагаем:
• Работу в стабильной и активно развивающейся IT-компании, где нет бюрократии, и все сотрудники знают друг друга в лицо;
• Интересные и сложные проектные задачи на основе современного стека технологий;
• Социальный пакет (полис медицинского страхования (ДМС), оплата обучения);
• Регулярные внутренние семинары, посвященные новым технологиям и самым актуальным темам в области разработки, аналитики и тестирования;
• Прозрачная система профессионального роста, ежегодный пересмотр заработной платы в сторону увеличения.
• Гибкое начало рабочего дня (старт работы с 08.00 – 12.00);
• Свободный стиль одежды.
Компания: #Usetech
Локация: офисы Москва, Ростов-на-Дону, Барнаул, Томск или удаленная работа.
ЗП: от 200 до 300 K NET
Контакты: [email protected]
@SofiaGardash
Откликнуться
C 2006 года Usetech осуществляет полный спектр работ в области заказной разработки ПО для своих Заказчиков в отраслях: ритейл, финансы, телеком, ИТ и государственном секторе.
На протяжении последних лет компания активно участвует в создании цифровой экосистемы страны. Нашими прорывными решениями пользуются миллионы людей по всему миру, а мировые тренды находят отражение в разработанном нами ПО (Ml, Al, Blockchain, Big Data, нейросети, роботизированные сервисы и многое другое).
Сегодня мы приглашаем принять участие в разработке платформы для принципиально нового уровня жизни миллионов людей. Мы ищем профессионалов, способных мыслить глобально и создавать тренды. У тебя есть уникальный шанс вписать свое имя в историю цифровизации страны!
Задачи:
• Выполнение технической декомпозиции задач;
• Оценка трудозатрат по тикетам;
• Наставничество новых / начинающих разработчиков в команде;
• Реализация и ревью ключевой функциональности в системе;
• Участие в планировании и высокоуровневой оценке новых фич;
• Документирование своего кода, участие в разработке технических документов для сопровождения и сдачи системы;
• Разработка системы, построенную на микросервисной архитектуре;
• Разработка новых сервисов, рефакторинг и развитие существующих;
• Доработка существующую функциональность;
• Работать в команде по методологии Scrum.
Мы ожидаем:
• Высшее техническое образование;
• Опыт разработки 3-хзвенных приложений от 5 лет;
• Отличное знание и опыт программирования на языке Java (JavaSE 8-11, Spring);
• Умение и опыт планирования, декомпозиции, распределения и контроля работ разработки и развертывания ППО;
• Умение и опыт проектирования программного обеспечения;
• Хорошее знание и опыт работы со средствами сборки;
• Знание и опыт работы: со средствами непрерывной интеграции, с системой отслеживания ошибок, юнит-тестирования и оценки покрытия тестами, использования технологий интеграции приложений;
• Глубокие знания и опыт коммерческой работы со Spring Framework, JDBC, Spring JDBC Templates/MyBatis;
• Отличные знания SQL: оптимизация запросов, проектирование модели данных для соответствия требованиям по производительности.
Мы предлагаем:
• Работу в стабильной и активно развивающейся IT-компании, где нет бюрократии, и все сотрудники знают друг друга в лицо;
• Интересные и сложные проектные задачи на основе современного стека технологий;
• Социальный пакет (полис медицинского страхования (ДМС), оплата обучения);
• Регулярные внутренние семинары, посвященные новым технологиям и самым актуальным темам в области разработки, аналитики и тестирования;
• Прозрачная система профессионального роста, ежегодный пересмотр заработной платы в сторону увеличения.
• Гибкое начало рабочего дня (старт работы с 08.00 – 12.00);
• Свободный стиль одежды.