Что такое множество в Java и какие существуют его стандартные реализации?
Ответ:
Эти классы покрывают разные сценарии: от высокой производительности до потокобезопасности и сортировки.
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14🔥10👍3💯1
В статье разбирается новый API BeanRegistrar из Spring Framework 7 — он упрощает динамическую регистрацию бинов и заменяет устаревшие способы вроде BeanDefinitionRegistryPostProcessor.
Автор показывает, как с его помощью удобно программно подключать репозитории, фильтры и другие компоненты без XML и лишних аннотация.
tags: #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3🔥2
Как работает
volatile
? Гарантирует ли он атомарность операций?Ответ:
Однако volatile не обеспечивает атомарность операций. Это значит, что составные действия вроде инкремента (++) или проверки и установки значения всё равно требуют дополнительных механизмов синхронизации — например, synchronized или Atomic* классов.
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5
JNI — это встроенный интерфейс, который позволяет Java-коду вызывать функции из C или C++ и работать с нативными библиотеками операционной системы.
Он используется, когда нужно взаимодействовать с нативным кодом, применять специфичный для платформы функционал или подключить библиотеки, недоступные на Java.
Пример Java-класса:
public class HelloJNI {
public native void sayHello();
static {
System.loadLibrary("hello");
}
}
Соответствующая C-реализация:
#include <jni.h>
#include <stdio.h>
#include "HelloJNI.h"
JNIEXPORT void JNICALL Java_HelloJNI_sayHello(JNIEnv *env, jobject obj) {
printf("Hello from C!\n");
}
Функция Java_HelloJNI_sayHello должна строго соответствовать полному имени Java-класса и метода: Java_<ClassName>_<MethodName>.
Компиляция (Linux/macOS):
gcc -shared -fpic -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/linux" -o libhello.so HelloJNI.c
Использовать JNI следует с осторожностью: ошибки в нативном коде могут привести к утечкам памяти, нарушению безопасности и краху JVM.
📌 JNI особенно полезен при работе с CUDA, OpenCV, аудиобиблиотеками, нативными API и при переносе существующего C/C++-кода в Java-приложение.
tags: #обучение
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤6
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣45🔥5😁3
Как устроен Message в Kafka?
Ответ:
Все сообщения в партиции упорядочены и неизменяемы. Kafka хранит их как commit log и позволяет читать данные повторно, начиная с любого смещения.
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4🔥1
В статье объясняется, почему Spring Data JPA может тормозить: рассматриваются причины вроде open-in-view, ленивой инициализации, неправильной настройки DataSource и медленных JOIN-ов.
Автор на примерах показывает, как выявить проблемные места и оптимизировать конфигурацию, чтобы избавиться от неожиданных лагов и блокировок.
tags: #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥1
Docker — что это и для чего используется?
Ответ:
Такой контейнер можно запускать на любом сервере, где установлен Docker, независимо от операционной системы или конфигурации. Это упрощает переносимость, ускоряет развертывание и обеспечивает стабильную работу приложения в любом окружении — от локальной машины до облака.
Docker активно используется для автоматизации сборки, тестирования и доставки программ, особенно в микросервисной архитектуре и CI/CD-процессах.
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍7❤3
В предыдущей части автор построил REST API для сервиса инцидентов на Java и Spring.
В этой статье он реализует микросервис изображений с использованием S3-хранилища и показывает два способа взаимодействия между сервисами — асинхронный через Kafka и синхронный с помощью gRPC.
🔖 Предыдущая часть — КЛИК
tags: #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤3🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁15❤8🔥3
❤7😁5🔥1
В статье рассматриваются виртуальные потоки, появившиеся в Java начиная с версии 21.
Автор проводит сравнительные тесты виртуальных потоков и традиционных потоков, анализируя их влияние на производительность и управление параллелизмом в приложениях.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥2
👍7❤4
Некоторые из этих однострочников — скорее ловушки: выглядят эффектно, но легко навредят в проде, другие — простые и надёжные, их можно использовать без сомнений.
Ниже — градация от “никогда так не делайте” до “можно и нужно применять”.
a = a + b - (b = a);
list.get(new Random().nextInt(list.size()));
Files.readAllLines(Path.of("file.txt"));
str.equals(new StringBuilder(str).reverse().toString());
list.removeIf(Objects::isNull);
List.of("Java", "Developer");
Math.max(a, b);
String.join(", ", fruits);
list.stream().filter(x -> x > 10).count();
list.sort(Comparator.reverseOrder());
Знаете ещё? Пишите в комментах
tags: #обучение
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍14
Please open Telegram to view this post
VIEW IN TELEGRAM
😁49🔥6❤3