Java Developer | Backend
1.71K subscribers
136 photos
1 video
231 links
Авторский канал действующего java разработчика

Платформа: https://offercraft.ru

Сотрудничество @offercraft_support
Download Telegram
Leetcode. Задача. 242. Valid Anagram (easy)

Даны две строки s и t. Необходимо определить, являются ли они анаграммами друг друга. Строки являются анаграммами, если одна строка может быть получена перестановкой букв другой строки.

Пример:
Вход: s = "anagram", t = "nagaram"
Выход: true
Объяснение: "anagram" и "nagaram" являются анаграммами.


👨‍💻 Алгоритм:

Алгоритм решения:

1️⃣Проверить длины строк. Если они разные, вернуть false.

2️⃣ Использовать хэш-таблицу для подсчета частоты каждого символа в первой строке.

3️⃣ Уменьшать счетчик для символов во второй строке.

4️⃣Проверить, остались ли ненулевые счетчики.


😎 Решение:
import java.util.HashMap;

public class ValidAnagram {
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) return false;

HashMap<Character, Integer> charCount = new HashMap<>();

for (char c : s.toCharArray()) {
charCount.put(c, charCount.getOrDefault(c, 0) + 1);
}

for (char c : t.toCharArray()) {
if (!charCount.containsKey(c) || charCount.get(c) == 0) {
return false;
}
charCount.put(c, charCount.get(c) - 1);
}

return true;
}

public static void main(String[] args) {
ValidAnagram solution = new ValidAnagram();
String s = "anagram";
String t = "nagaram";
boolean result = solution.isAnagram(s, t);
System.out.println("Являются ли строки анаграммами? " + result); // Вывод: true


🖥 Java Developer | Backend | #⃣#задача #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2👏1
Что такое Spring Boot и как он отличается от Spring?
Ответ -
Spring Boot — это расширение Spring Framework, которое упрощает разработку приложений на его основе. Он предоставляет встроенные настройки и автоматическую конфигурацию, что позволяет быстро запускать приложения без необходимости ручной настройки. Это особенно полезно для создания микросервисов.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👏3👍2🔥1
🔤 Большой гайд. Пишем микросервисы на Java и Spring Boot, заворачиваем в Docker, запускаем на EKS, мониторим на Grafana

В этой статье вы увидите пошаговое создание cloud-native микросервиса на Amazon AWS, пригодное для "чтения с листа". Чтобы понять, что здесь происходит, не нужно разворачивать проект - достаточно обладать живым воображением и прочитать текст по диагонали. Если же вы всё-таки захотите повторить шаги, вам будут жизненно нужны знания вида, как создавать классы в IDE и что такое Spring.

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥1😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3😁3
🔤 Lamoda изнутри: зачем интернет-магазину 300 инженеров

В этой статье рассказывается о технической стороне компании lamoda и как она создавалась.

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1👏1
Как работает механизм Reflection в Java?
Ответ -
Reflection — это механизм, который позволяет программно исследовать и изменять структуру классов, интерфейсов, полей и методов во время выполнения. С его помощью можно создавать экземпляры классов, вызывать методы и получать доступ к полям, даже если они являются приватными. Reflection используется в фреймворках, таких как Spring и Hibernate, для динамического управления объектами.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1🔥1👏1
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1🔥1👏1
Как работает механизм сериализации в Java?
Ответ -
Сериализация — это процесс преобразования объекта в поток байтов для сохранения его состояния или передачи по сети. В Java это достигается с помощью интерфейса Serializable. Чтобы сериализовать объект, необходимо вызвать метод ObjectOutputStream.writeObject(), а для десериализации — ObjectInputStream.readObject().

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3
🔤 Большое интервью с Клиффом Кликом — отцом JIT-компиляции в Java

Клифф Клик — CTO компании Cratus (IoT сенсоры для улучшения процессов), основатель и сооснователь нескольких стартапов (включая Rocket Realtime School, Neurensic и H2O.ai) с несколькими успешными экзитами. Клифф написал свой первый компилятор в 15 лет (Pascal для TRS Z-80)! Наиболее известен за работу над С2 в Java (the Sea of Nodes IR).

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31👍1👏1
Leetcode. Задача. #325 (Maximum Size Subarray Sum Equals k). (easy)

Дан массив целых чисел nums и целое число k. Необходимо найти длину самой длинной непрерывной подстроки, сумма элементов которой равна k.

Пример:
Вход: nums = [1, -1, 5, 2, -2, 3], k = 3
Выход: 4
Объяснение: Подстрока [1, -1, 5, 2] имеет сумму 3.


👨‍💻 Алгоритм:

Алгоритм решения:

1️⃣Использовать хэш-таблицу для хранения сумм префиксов и их индексов.

2️⃣Пройтись по массиву, вычисляя текущую сумму.

3️⃣Если текущая сумма равна k, обновить максимальную длину.

4️⃣Если разница между текущей суммой и k уже есть в хэш-таблице, обновить максимальную длину.


😎 Решение:
import java.util.HashMap;

public class MaxSubarraySum {
public int maxSubArrayLen(int[] nums, int k) {
HashMap<Integer, Integer> sumIndices = new HashMap<>();
sumIndices.put(0, -1); // Сумма 0 на позиции -1 (перед началом массива)

int maxLength = 0;
int currentSum = 0;

for (int i = 0; i < nums.length; i++) {
currentSum += nums[i];

if (sumIndices.containsKey(currentSum - k)) {
maxLength = Math.max(maxLength, i - sumIndices.get(currentSum - k));
}

// Сохраняем индекс текущей суммы только если она еще не встречалась
if (!sumIndices.containsKey(currentSum)) {
sumIndices.put(currentSum, i);
}
}

return maxLength;
}

public static void main(String[] args) {
MaxSubarraySum solution = new MaxSubarraySum();
int[] nums = {1, -1, 5, 2, -2, 3};
int k = 3;
int length = solution.maxSubArrayLen(nums, k);
System.out.println("Длина самой длинной подстроки с суммой " + k + ": " + length); // Вывод: 4
}
}


🖥 Java Developer | Backend | #⃣#задача #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2👏1
Вопрос: Объясните, что такое Optional в Java и зачем он нужен?
Ответ -

Optional — это контейнер, который может содержать значение или быть пустым (null). Он используется для избежания NullPointerException и улучшения читаемости кода. Вместо того чтобы возвращать null, методы могут возвращать Optional, позволяя разработчикам явно обрабатывать случаи отсутствия значения.


🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
🔤 Знакомство с WebAssembly

Данная статья есть компиляция мыслей и идей, полученных из выступлений других людей на данную тему, плюс эпизодического опыта изучения WebAssembly в течение нескольких месяцев.

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2👏1
🔤 Java: перспективы, тренды и почему новичкам стоит его знать

Java – один из самых популярных и востребованных языков программирования в мире. Он используется в веб-разработке, разработке мобильных приложений, научных вычислениях и многих других областях.

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43🔥2
Вопрос: Что такое потокобезопасность и как ее достичь в Java?
Ответ -

Потокобезопасность означает, что несколько потоков могут безопасно взаимодействовать с объектами без риска повреждения данных. Достичь потокобезопасности можно с помощью ключевых слов synchronized, volatile, а также с использованием классов из пакета java.util.concurrent, таких как ConcurrentHashMap, CopyOnWriteArrayList и других.


🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
7👏3🔥2👍1
Что такое аннотации метаданных в Java и как они используются?
Ответ -

Аннотации метаданных — это специальные конструкции, которые добавляют метаданные к элементам программы (классам, методам и т.д.). Они могут использоваться для конфигурации фреймворков, генерации кода и валидации. Например, аннотация
@Override указывает, что метод переопределяет метод суперкласса.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2🔥2
Вопрос: Что такое Spring Framework и какие его основные модули вы знаете?
Ответ -

Spring Framework — это мощный фреймворк для разработки корпоративных приложений на Java. Он предоставляет контейнер внедрения зависимостей и различные модули для работы с различными аспектами разработки приложений. Основные модули включают:
*️⃣Spring Core: основной модуль для внедрения зависимостей.
*️⃣ Spring MVC: модуль для создания веб-приложений.
*️⃣Spring Data: модуль для работы с базами данных.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👏3👍2
Вопрос: Каковы основные принципы SOLID в объектно-ориентированном программировании?
Ответ -

SOLID — это набор пяти принципов проектирования:
*️⃣S: Single Responsibility Principle (SRP) — класс должен иметь одну ответственность.
*️⃣O: Open/Closed Principle (OCP) — классы должны быть открыты для расширения, но закрыты для модификации.
*️⃣L: Liskov Substitution Principle (LSP) — объекты подкласса должны быть заменяемыми на объекты суперкласса.
*️⃣I: Interface Segregation Principle (ISP) — клиенты не должны зависеть от интерфейсов, которые они не используют.
*️⃣D: Dependency Inversion Principle (DIP) — модули верхнего уровня не должны зависеть от модулей нижнего уровня; оба должны зависеть от абстракций.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👏2👍1🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3😁21
Please open Telegram to view this post
VIEW IN TELEGRAM
Сборка мусора в Java

Сборка мусора (Garbage Collection) в Java — это автоматический процесс управления памятью. JVM отслеживает объекты, которые больше не используются, и освобождает память, чтобы предотвратить утечки. Это позволяет разработчикам сосредоточиться на логике приложения, не беспокоясь о ручном управлении памятью.

*️⃣Кратко о структуре памяти в JVM
Куча (Heap)
Куча - это область памяти JVM, где хранятся все объекты Java и связанные с ними данные. Выделение памяти в куче происходит динамически во время выполнения программы.
Стек (Stack)
Каждый поток в Java имеет собственный стек, который содержит информацию о вызовах методов и локальных переменных. Стек устроен по принципу LIFO (last-in, first-out) и используется для управления выполнением методов и их локальными переменными.

Когда в Java создается новый объект (например, через оператор new), JVM выделяет для него память в куче (heap). Размер выделяемой памяти зависит от структуры объекта, включая его поля и связанные объекты.
После создания объект активно используется приложением. Это означает, что на объект существуют активные ссылки из других частей кода.
Обычные ссылки в Java являются сильными ссылками. Пока на объект есть хотя бы одна сильная ссылка, он остается в памяти.

Правильное применение GC в JVM может значительно улучшить производительность приложений, снизить задержки, предотвратить утечки памяти и улучшить общее управление ресурсами. В конечном итоге, это приводит к созданию более надежных, эффективных и высокопроизводительных приложений, способных удовлетворять самые разнообразные требования и условия эксплуатации.

🖥 Java Developer | Backend | #⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2