👨🏻💻 Java Developer Middle+
Локация: Удалённо
Компания: ООО Картнода
Заработная плата: от 250 000 до 350 000 руб.
Занятость: Полная
Наша IT-команда ищет Java разработчика с опытом работы от 3 лет в области финтеха и банковских технологий.
ОЖИДАЕМЫЕ РЕЗУЛЬТАТЫ:
▪️ Глубокое понимание полного цикла разработки программного обеспечения (проектирование, разработка, тестирование и развертывание);
▪️ Практический опыт работы с Java;
▪️ Знания и опыт работы с Spring framework, Hibernate, системами обмена сообщениями и PostgreSQL;
▪️ Технологический стек: Java 11, Spring Boot, Spring Data, Redis, PostgreSQL, MS SQL Server, Kubernetes, GitLab, микросервисы, RabbitMQ, Kong gateway.
ПРЕИМУЩЕСТВА:
▪️ Знание Redis, RabbitMQ, GitLab CI, Kubernetes;
▪️ Опыт работы в финтехе или банковской сфере от 3-х лет;
▪️ Понимание принципов работы с платежами в электронной коммерции и технологиями платежных карт;
▪️ Навыки командной работы и подход к решению проблем.
МЫ ПРЕДЛАГАЕМ:
▪️ Гибкие условия трудоустройства (ИП, самозанятость и др.);
▪️ Удалённый формат работы;
▪️ Стабильный и прозрачный доход с возможностью обсуждения зарплаты по результатам собеседования;
▪️ Возможности для личностного роста и карьерного развития в компании/стартапе с инновационными финансовыми технологиями.
📩 Для отклика отправляйте резюме на: charos@cartnoda.ru
Локация: Удалённо
Компания: ООО Картнода
Заработная плата: от 250 000 до 350 000 руб.
Занятость: Полная
Наша IT-команда ищет Java разработчика с опытом работы от 3 лет в области финтеха и банковских технологий.
ОЖИДАЕМЫЕ РЕЗУЛЬТАТЫ:
▪️ Глубокое понимание полного цикла разработки программного обеспечения (проектирование, разработка, тестирование и развертывание);
▪️ Практический опыт работы с Java;
▪️ Знания и опыт работы с Spring framework, Hibernate, системами обмена сообщениями и PostgreSQL;
▪️ Технологический стек: Java 11, Spring Boot, Spring Data, Redis, PostgreSQL, MS SQL Server, Kubernetes, GitLab, микросервисы, RabbitMQ, Kong gateway.
ПРЕИМУЩЕСТВА:
▪️ Знание Redis, RabbitMQ, GitLab CI, Kubernetes;
▪️ Опыт работы в финтехе или банковской сфере от 3-х лет;
▪️ Понимание принципов работы с платежами в электронной коммерции и технологиями платежных карт;
▪️ Навыки командной работы и подход к решению проблем.
МЫ ПРЕДЛАГАЕМ:
▪️ Гибкие условия трудоустройства (ИП, самозанятость и др.);
▪️ Удалённый формат работы;
▪️ Стабильный и прозрачный доход с возможностью обсуждения зарплаты по результатам собеседования;
▪️ Возможности для личностного роста и карьерного развития в компании/стартапе с инновационными финансовыми технологиями.
📩 Для отклика отправляйте резюме на: charos@cartnoda.ru
#ЧеКак
🤔 Паттерн Singleton в Java
Singleton — это паттерн проектирования, который обеспечивает наличие только одного экземпляра класса. Он часто применяется для управления ресурсами, такими как подключения к базе данных. Рассмотрим его реализацию.
🚩 Че как?
🟠 Поле
🟠 Конструктор
🟠 Метод
Развернутый аналог:
👉 Новости 👉 Платформа
Singleton — это паттерн проектирования, который обеспечивает наличие только одного экземпляра класса. Он часто применяется для управления ресурсами, такими как подключения к базе данных. Рассмотрим его реализацию.
instance
хранит единственный экземпляр класса.private
, чтобы предотвратить создание новых экземпляров.getInstance()
создаёт экземпляр только при первом вызове (ленивая инициализация).Развернутый аналог:
// Экземпляр можно также создавать сразу, а не лениво:
private static final Singleton instance = new Singleton();
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓 Какой метод класса
String используется для получения подстроки?
String используется для получения подстроки?
Anonymous Quiz
45%
substring()
30%
subString()
25%
getSubstring()
0%
extract()
#Вакансии
👨🏻💻 Java Developer в Web3
Локация: Удалённо
Компания: Мэттер Лабс (Matter Labs)
ЗП: от 5 400 до 6 700 USD
Занятость: Полная
🚩 Обязанности
▪️Разработка и поддержка блокчейн-платформ и приложений на Java.
▪️Проектирование и реализация высокопроизводительных и безопасных блокчейн-решений.
▪️Взаимодействие с командой разработчиков и другими отделами для обеспечения интеграции блокчейн-решений.
▪️Анализ требований к проекту и разработка технических спецификаций.
🚩 Требования
▪️Глубокие знания Java и опыт разработки на этом языке не менее 3 лет.
▪️Опыт работы с блокчейн-технологиями и понимание основных принципов блокчейна.
▪️Опыт разработки децентрализованных приложений и работы со смарт-контрактами будет являться преимуществом.
▪️Знание фреймворков, таких как Spring, Hibernate и других, связанных с Java.
▪️Навыки работы с базами данных и системами контроля версий.
▪️Способность самостоятельно решать задачи и эффективно работать в команде.
▪️Знание английского языка на уровне, позволяющем читать техническую документацию и общаться в команде.
💬 Резюме отправлять: @limar_sheref
👉 Новости 👉 Платформа
👨🏻💻 Java Developer в Web3
Локация: Удалённо
Компания: Мэттер Лабс (Matter Labs)
ЗП: от 5 400 до 6 700 USD
Занятость: Полная
▪️Разработка и поддержка блокчейн-платформ и приложений на Java.
▪️Проектирование и реализация высокопроизводительных и безопасных блокчейн-решений.
▪️Взаимодействие с командой разработчиков и другими отделами для обеспечения интеграции блокчейн-решений.
▪️Анализ требований к проекту и разработка технических спецификаций.
▪️Глубокие знания Java и опыт разработки на этом языке не менее 3 лет.
▪️Опыт работы с блокчейн-технологиями и понимание основных принципов блокчейна.
▪️Опыт разработки децентрализованных приложений и работы со смарт-контрактами будет являться преимуществом.
▪️Знание фреймворков, таких как Spring, Hibernate и других, связанных с Java.
▪️Навыки работы с базами данных и системами контроля версий.
▪️Способность самостоятельно решать задачи и эффективно работать в команде.
▪️Знание английского языка на уровне, позволяющем читать техническую документацию и общаться в команде.
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЧеКак
🤔 Чем singleton отличается от prototype?
В контексте паттернов проектирования:
🟠 Singleton гарантирует, что класс имеет только один экземпляр в приложении и предоставляет глобальную точку доступа к этому экземпляру.
🟠 Prototype позволяет создавать объекты, клонируя существующий объект, что позволяет избежать затрат на создание объектов стандартным способом (через new), особенно если это сложный процесс создания.?
👉 Новости 👉 Платформа
В контексте паттернов проектирования:
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓 Как объявить класс в коде?
Anonymous Quiz
87%
class MyClass {}
9%
new class MyClass {}
0%
select * from class MyClass {}
4%
MyClass extends class {}
#Вакансии
👨💻 Java разработчик
Локация: Удаленно в РФ
Компания: Фамтех
ЗП: от 250 000 до 370 000 р. на руки
Занятость: Полная
Грейд: Middle/ Middle+/ Senior
🚩 Обязательные требования:
▪️Java 11 (SpringBoot 2.3) (Backend);
▪️PostgreSQL, Liquibase, RabbitMQ, Kafka, REST, k8s, Jenkins, Gitlab, Kibana, Grafana, Prometheus, Zabbix, SonarCube, Jmeter, Selenium, Junit, Cucumber;
▪️Опыт коммерческой разработки на Java от 3 лет (Spring, Boot);
▪️Способность решать задачи самостоятельно и работать в команде;
▪️Участие в управлении командами разработки совместно с СРО.
🚩 Дополнительные требования
▪️Опыт работы в крупных проектах;
▪️Использование методологии agile.
🚩 Задачи на проекте
▪️Занятие технологически сложными задачами проекта и проектировать архитектуру сервисов в сотрудничестве с командой;
▪️Передача опыта и внедрение лучших практик как в код, так и в процессы;
▪️Принятие решений по найму и развитию сотрудников, участие в технических интервью;
▪️Поиск оптимальных решений, балансирующих потребности бизнеса, сроки релиза и техническое совершенство вместе с командой.
🚩 Мы предлагаем
▪️Удаленка;
▪️оформление в аккредитованную IT компанию или ИП/ГПХ;
▪️Работа по московскому времени;
▪️ДМС после прохождения испытательного срока;
▪️Реферальная программа: бонус за рекомендации;
▪️Выдаем технику для работы или можете работать на своей;
▪️Пересмотр заработной платы раз в год.
💬 Резюме отправлять: @romanchuk_ye
👉 Новости 👉 Платформа
Локация: Удаленно в РФ
Компания: Фамтех
ЗП: от 250 000 до 370 000 р. на руки
Занятость: Полная
Грейд: Middle/ Middle+/ Senior
▪️Java 11 (SpringBoot 2.3) (Backend);
▪️PostgreSQL, Liquibase, RabbitMQ, Kafka, REST, k8s, Jenkins, Gitlab, Kibana, Grafana, Prometheus, Zabbix, SonarCube, Jmeter, Selenium, Junit, Cucumber;
▪️Опыт коммерческой разработки на Java от 3 лет (Spring, Boot);
▪️Способность решать задачи самостоятельно и работать в команде;
▪️Участие в управлении командами разработки совместно с СРО.
▪️Опыт работы в крупных проектах;
▪️Использование методологии agile.
▪️Занятие технологически сложными задачами проекта и проектировать архитектуру сервисов в сотрудничестве с командой;
▪️Передача опыта и внедрение лучших практик как в код, так и в процессы;
▪️Принятие решений по найму и развитию сотрудников, участие в технических интервью;
▪️Поиск оптимальных решений, балансирующих потребности бизнеса, сроки релиза и техническое совершенство вместе с командой.
▪️Удаленка;
▪️оформление в аккредитованную IT компанию или ИП/ГПХ;
▪️Работа по московскому времени;
▪️ДМС после прохождения испытательного срока;
▪️Реферальная программа: бонус за рекомендации;
▪️Выдаем технику для работы или можете работать на своей;
▪️Пересмотр заработной платы раз в год.
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 590. N-ary Tree Postorder Traversal
Дано корневое дерево с n-арной структурой, верните обход дерева в постфиксном порядке для значений его узлов.
Сериализация входных данных n-арного дерева представлена в обходе уровней. Каждая группа детей разделяется значением null (см. примеры).
Пример:
👨💻 Алгоритм:
1⃣ Инициализируйте стек для хранения узлов и список для хранения значений узлов в обратном порядке.
2⃣ Начните с корневого узла и добавьте его в стек. Пока стек не пуст, извлекайте узлы из стека, добавляя их значения в начало списка, и добавляйте всех его детей в стек.
3⃣ В конце верните список значений узлов.
😊 Решение:
👉 Новости 👉 Платформа
Задача: 590. N-ary Tree Postorder Traversal
Дано корневое дерево с n-арной структурой, верните обход дерева в постфиксном порядке для значений его узлов.
Сериализация входных данных n-арного дерева представлена в обходе уровней. Каждая группа детей разделяется значением null (см. примеры).
Пример:
Input: root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
Output: [2,6,14,11,7,3,12,8,4,13,9,10,5,1]
class Solution {
public List<Integer> postorder(Node root) {
LinkedList<Node> stack = new LinkedList<>();
LinkedList<Integer> output = new LinkedList<>();
if (root == null) {
return output;
}
stack.add(root);
while (!stack.isEmpty()) {
Node node = stack.pollLast();
output.addFirst(node.val);
for (Node item : node.children) {
if (item != null) {
stack.add(item);
}
}
}
return output;
}
class Node {
public int val;
public List<Node> children;
public Node() {}
public Node(int _val, List<Node> _children) {
val = _val;
children = _children;
}
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЧеКак
🤔 Какие минусы есть у пула строк с точки зрения безопасности?
Пул строк (String Pool) в Java представляет собой особую область памяти в методной области (Metaspace начиная с Java 8), где хранятся строковые литералы.
🚩 Минусы
➖ Уязвимость к анализу памяти (Memory Analysis)
Поскольку строковые литералы хранятся в пуле строк и не уничтожаются до тех пор, пока JVM работает, злоумышленник, получивший доступ к дампу памяти, может извлечь чувствительные данные, такие как пароли, токены или личные данные, если они были сохранены как строковые литералы.
➖ Уязвимость к атакам по кэшированию (Caching Attacks)
Злоумышленник может попытаться использовать кэширование строк для проведения атак. Например, если однажды созданный строковый литерал остается в пуле строк, его можно найти и использовать повторно, даже если оригинальная строка больше не используется программой.
➖ Ограниченная гибкость в управлении памятью
Разработчики не могут явно контролировать удаление строк из пула строк. Это может привести к тому, что строковые литералы будут оставаться в памяти дольше, чем нужно, что увеличивает риск их обнаружения при анализе памяти.
➖ Потенциальная уязвимость к атакам типа "Deduplication"
Если две строки с одинаковым содержимым помещаются в пул строк, они будут указывать на один и тот же объект. Это может позволить злоумышленнику, знающему об этой особенности, попытаться извлечь чувствительные данные путем поиска дубликатов строк.
🚩 Пример уязвимости к анализу памяти
🚩 Как уменьшить риски
🟠 Избегайте использования строк для хранения чувствительных данных
Вместо строк используйте массивы символов (
🟠 Используйте библиотеки безопасности
Используйте специализированные библиотеки, которые обеспечивают более безопасное управление чувствительными данными, такие как Java Cryptography Architecture (JCA).
🟠 Минимизируйте использование строковых литералов для чувствительных данных
Не храните пароли, ключи и другие конфиденциальные данные как строковые литералы.
🟠 Шифрование данных
Шифруйте данные перед их хранением или передачей. Даже если данные будут извлечены из памяти, без ключа расшифровки они останутся бесполезными.
👉 Новости 👉 Платформа
Пул строк (String Pool) в Java представляет собой особую область памяти в методной области (Metaspace начиная с Java 8), где хранятся строковые литералы.
Поскольку строковые литералы хранятся в пуле строк и не уничтожаются до тех пор, пока JVM работает, злоумышленник, получивший доступ к дампу памяти, может извлечь чувствительные данные, такие как пароли, токены или личные данные, если они были сохранены как строковые литералы.
Злоумышленник может попытаться использовать кэширование строк для проведения атак. Например, если однажды созданный строковый литерал остается в пуле строк, его можно найти и использовать повторно, даже если оригинальная строка больше не используется программой.
Разработчики не могут явно контролировать удаление строк из пула строк. Это может привести к тому, что строковые литералы будут оставаться в памяти дольше, чем нужно, что увеличивает риск их обнаружения при анализе памяти.
Если две строки с одинаковым содержимым помещаются в пул строк, они будут указывать на один и тот же объект. Это может позволить злоумышленнику, знающему об этой особенности, попытаться извлечь чувствительные данные путем поиска дубликатов строк.
public class Example {
public static void main(String[] args) {
String password = "secretPassword123"; // Строка хранится в пуле строк
System.out.println("Password is set.");
}
}
Вместо строк используйте массивы символов (
char[]
), так как их содержимое можно обнулить после использования. char[] password = new char[] {'s', 'e', 'c', 'r', 'e', 't'};
// Очистка массива после использования
java.util.Arrays.fill(password, '\0');
Используйте специализированные библиотеки, которые обеспечивают более безопасное управление чувствительными данными, такие как Java Cryptography Architecture (JCA).
Не храните пароли, ключи и другие конфиденциальные данные как строковые литералы.
Шифруйте данные перед их хранением или передачей. Даже если данные будут извлечены из памяти, без ключа расшифровки они останутся бесполезными.
Please open Telegram to view this post
VIEW IN TELEGRAM