seniorjavist | Unsorted

Telegram-канал seniorjavist - Senior Java Developer

-

Изучаем Java. По вопросам сотрудничества: @seniorvladislav

Subscribe to a channel

Senior Java Developer

#вопросы_с_собеседований
Что такое трассировка стека (stacktrace) и как она связана с исключением?

Трассировка стека предоставляет имена классов и методов, которые были вызваны, от запуска приложения до момента возникновения исключения.

Это очень полезный инструмент отладки, поскольку он позволяет нам точно определить, где именно в приложении было сгенерировано исключение, и первоначальные причины, которые привели к нему.

Читать полностью…

Senior Java Developer

Абстрактные классы и интерфейсы в Java

В каких случаях стоит использовать абстрактный класс, а в каких — интерфейс? Многие разработчики не видят разницы между интерфейсами и абстрактными классами, но на самом деле между ними есть весьма существенное различие. Давайте разбираться, в чем между ними разница.

Смотреть статью

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Какие классы поддерживают чтение и запись потоков в компрессированном формате?

☕️ DeflaterOutputStream — компрессия данных в формате deflate.
☕️ Deflater — компрессия данных в формат ZLIB.
☕️ ZipOutputStream — потомок DeflaterOutputStream для компрессии данных в формат Zip.
☕️ GZIPOutputStream — потомок DeflaterOutputStream для компрессии данных в формат GZIP.
☕️ InflaterInputStream — декомпрессия данных в формате deflate.
☕️ Inflater — декомпрессия данных в формате ZLIB.
☕️ ZipInputStream — потомок InflaterInputStream для декомпрессии данных в формате Zip.
☕️ GZIPInputStream — потомок InflaterInputStream для декомпрессии данных в формате GZIP.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Как отсортировать список строк с помощью лямбда-выражения?

Ответ на картинке.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Можно ли считать Final переменную константой?

Поскольку у нас не получится присвоить новое значение для final переменной, кажется, что это переменные константы. Но это только на первый взгляд. Если тип данных, на который ссылается переменная — immutable, то да, это константа.

А если тип данных mutable, то есть изменяемый, при помощи методов и переменных можно будет изменить значение объекта, на который ссылается final переменная, и в таком случае назвать ее константой нельзя. Так вот, на примере видно, что часть финальных переменных действительно константы, а часть — нет, и их можно изменить.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Как перебрать элементы LinkedList в обратном порядке, не используя медленный get(index)?

Для этого в LinkedList есть обратный итератор, который можно получить вызва метод descendingIterator().

Читать полностью…

Senior Java Developer

Метод subList()

Метод subList() класса java.util.AbstractList используется для возврата представления части этого списка между указанным fromIndex, включительно, и toIndex, исключая. (Если fromIndex и toIndex равны, возвращаемый список пуст).

Подробнее можно почитать здесь.

Читать полностью…

Senior Java Developer

Создавать отказоустойчивые и масштабируемые архитектуры под силу не каждому разработчику. Но именно этот навык особенно ценят крупные компании. Хотите получить компетенции архитектора высоких нагрузок? В OTUS пройдет 2 открытых урока, посвященных этому направлению.

🗓 8 февраля в 20:00 — «Как сделать распределенное хранилище на Tarantool Cartridge»
На уроке мы напишем распределенное и отказоустойчивое in-memory хранилище данных, используя фреймворк Tarantool Cartridge

👉 Для регистрации на занятие пройдите вступительный тест — https://otus.pw/hxxD/

🗓 22 февраля в 20:00 — «Введение в высокие нагрузки»
На уроке проанализируем, в каких единицах можно измерять нагрузку, рассмотрим преимущества и недостатки различных подходов к масштабированию, а также проблемы высоконагруженных проектов.

👉 Для регистрации на занятие пройдите вступительный тест — https://otus.pw/Dfxd/

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

⚠️ Бонус: после записи на урок вы получите 20 записей прошедших вебинаров курса

Читать полностью…

Senior Java Developer

Стать сотрудником Яндекса быстрее и проще, чем кажется. Участвуйте в днях быстрого найма: решите тестовое, пройдите несколько секций собеседования и получите офер за несколько дней.

Теперь дни быстрого найма будут проходить регулярно. Чтобы вам было удобно следить за расписанием, собрали его на отдельной странице.

Ближайшие мероприятия:

• 18–19 февраля — Fast Track для разработчиков Python или Go, или других объектно-ориентированных языков в команду FinOps

Зарегистрироваться

Читать полностью…

Senior Java Developer

Резервирование памяти

Некоторые Java-приложения очень требовательны к ресурсам и могут работать медленно. Для повышения производительности можно выделять Java-машине больше оперативной памяти.

• Xms – минимальный пул выделения памяти;
• Xmx – максимальный пул выделения памяти;
• XX:PermSize – начальный размер, который будет выделен при запуске JVM;
• XX:MaxPermSize – максимальный размер, который может быть выделен при запуске JVM.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Можно ли перегружать метод main() в Java?

Да, метод main() может быть перегружен, но JVM или виртуальная машина Java вызывает только исходный метод main().

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Сколько различных типов конструкторов существует в Java?

В Java есть 2 типа конструкторов:
1) Конструктор по умолчанию — не принимает никаких параметров.
2) Параметризованный конструктор — принимает как минимум один параметр.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Зачем нужен HashMap, если есть Hashtable?

☕️ Методы класса Hashtable синхронизированы, что приводит к снижению производительности, а HashMap - нет;
☕️ HashTable не может содержать элементы null, тогда как HashMap может содержать один ключ null и любое количество значений null;
☕️ Iterator у HashMap, в отличие от Enumeration у HashTable, работает по принципу «fail-fast» (выдает исключение при любой несогласованности данных).

Hashtable это устаревший класс и его использование не рекомендовано.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Что такое «fail-fast поведение»?

fail-fast поведение
означает, что при возникновении ошибки или состояния, которое может привести к ошибке, система немедленно прекращает дальнейшую работу и уведомляет об этом. Использование fail-fast подхода позволяет избежать недетерминированного поведения программы в течение времени.

В Java Collections API некоторые итераторы ведут себя как fail-fast и выбрасывают ConcurrentModificationException, если после его создания была произведена модификация коллекции, т.е. добавлен или удален элемент напрямую из коллекции, а не используя методы итератора.

Реализация такого поведения осуществляется за счет подсчета количества модификаций коллекции (modification count):
☕️ при изменении коллекции счетчик модификаций так же изменяется;
☕️ при создании итератора ему передается текущее значение счетчика;
☕️ при каждом обращении к итератору сохраненное значение счетчика сравнивается с текущим, и, если они не совпадают, возникает исключение.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Что такое «поток-демон» (daemon thread)?

Потоками-демонами называются потоки, работающие в фоновом режиме для нашей программы.

В Java процесс завершается тогда, когда завершается последний его поток. Даже если метод main() уже завершился, но еще выполняются порожденные им потоки, система будет ждать их завершения.
Однако это правило не относится к особому виду потоков – демонам. Если завершился последний обычный поток процесса, и остались только потоки-демоны, то они будут принудительно завершены и выполнение процесса закончится. Чаще всего потоки-демоны используются для выполнения фоновых задач, обслуживающих процесс в течение его жизни.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Для чего нужен Component Scan?

Если вы понимаете как работает Component Scan, то вы понимаете Spring.

Первый шаг для описания Spring Beans это добавление аннотации — @Component, или @Service, или @Repository.

Однако, Spring ничего не знает об этих бинах, если он не знает где искать их. То, что скажет Spring где искать эти бины и называется Component Scan. В @ComponentScan вы указываете пакеты, которые должны сканироваться.

Spring будет искать бины не только в пакетах для сканирования, но и в их подпакетах.

Читать полностью…

Senior Java Developer

☕️ Лекции по Java, МФТИ

В курсе рассматриваются базовые принципы языка Java — от объявления переменных до работы сборщика мусора.

Лектор — Java-программист с больше, чем десятью годами опыта промышленной разработки. Курс состоит из 14 лекций.

https://youtu.be/Bgs-8eJyzhg?list=PL4_hYwCyhAvblhTbPQmOF4b3kilWSpOjU

Читать полностью…

Senior Java Developer

Mockito

Пусть название Mockito не вводит вас в заблуждение. Речь не о коктейле, а о библиотеке для mock-объектов.

Mock-объекты — это объекты, которые имитируют поведение реального объекта по какой-то заданной схеме. Например, для модульного тестирования такие «поддельные» объекты могут симулировать поведение бизнес-объектов. Ну а mock-библиотека Mockito повышает удобство создания и использования mock-объектов.

https://site.mockito.org/

Читать полностью…

Senior Java Developer

JUnit: тестирование методов, вызывающих System.exit()

В определенных ситуациях нам может потребоваться, чтобы метод вызывал System.exit() и завершал работу приложения. Например, в случае если приложение должно быть запущено только один раз, а затем завершено, или в случае фатальных ошибок, таких как потеря соединений с базой данных.

Смотреть статью

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Как не допустить сериализацию?

Чтобы не допустить автоматическую сериализацию, можно переопределить private методы для создания исключительной ситуации NotSerializableException.

Любая попытка записать или прочитать этот объект теперь приведет к возникновению исключения.

Читать полностью…

Senior Java Developer

ChatGPT пришел в телеграм!

Эта нейросеть сдает экзамены в Гарвард и знает в миллион раз больше анекдотов, чем твой батя. Теперь у нее есть свой канал, там интересно: @chatgpt

Читать полностью…

Senior Java Developer

Методы equals() и hashcode() в языке Java

Смотреть статью

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Какой результат будет выведен в консоль?

Ответ:
This is abstract class constructor
This is demo class constructor

Вопрос на понимание абстрактных классов. Создать экземпляр абстрактного класса нельзя, но он все же имеет конструктор. Более того любой класс имеет конструктор, даже если он не задан явно (он будет добавлен при компиляции). Здесь важно понимать, что при создании экземпляра наследника, самой первой строкой в конструкторе класса наследника будет вызван конструктор класса родителя.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Какая разница между абстрактным классом и интерфейсом?

Абстрактный класс:
☕️ абстрактные классы имеют дефолтный конструктор; он вызывается каждый раз, когда создается потомок этого абстрактного класса;
☕️ содержит как абстрактные методы, так и не абстрактные. По большому счету может и не содержать абстрактных методов, но все равно быть абстрактным классом;
☕️ класс, который наследуется от абстрактного, должен реализовать только абстрактные методы;
☕️ абстрактный класс может содержать Instance Variable

Интерфейс:
☕️ не имеет никакого конструктора и не может быть инициализирован;
☕️ только абстрактные методы должны быть добавлены (не считая default methods);
☕️ классы, реализующие интерфейс, должны реализовать все методы (не считая default methods);
☕️ интерфейсы могут содержать только константы.

Читать полностью…

Senior Java Developer

⚡️ О каких возможностях бэкенда вы ещё не знаете? Овладей Kotlin!

➡️ Пройди тест — проверь себя!

Пройдите тест из 10 вопросов и проверь свои знания. Сможешь сдать — пройдёшь на продвинутый курс "Kotlin Backend Developer. Professional" по специальной цене!

На курсе вы научитесь владеть на высоком уровне DSL, мультиплатформенности, корутинах, передовых архитектурных шаблонах, темах высокой нагрузки, больших данных и масштабируемости.

➡️ Пройти тест и получить GIT бесплатно: https://otus.pw/7Flb/

Хочешь протестировать учебный процесс заранее? Тогда приходи на открытый урок курса!

▶️8 февраля в 20:00 «Основы бизнес-логики и разработка библиотеки для шаблона CoR»

Читать полностью…

Senior Java Developer

Всем привет 👋

В этом году мы готовим для вас много новых проектов, статей, вебинаров. И хотим узнать, чем вы живете и дышите в мире IT.

Поделитесь, пожалуйста, ссылками и ресурсами — что вы сейчас смотрите, читаете, слушаете из профессиональных ресурсов? Это займёт меньше минуты.

👉 Опрос тут

Спасибо за уделенное время 🙏

Читать полностью…

Senior Java Developer

Простой пример JDBC для начинающих

JDBC (Java DataBase Connectivity — соединение с базами данных на Java) предназначен для взаимодействия Java-приложения с различными системами управления базами данных (СУБД).

Смотреть статью

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Как, используя LinkedHashMap, сделать кэш c «invalidation policy»?

Необходимо использовать LRU-алгоритм (Least Recently Used algorithm) и LinkedHashMap с access-order. В этом случае при обращении к элементу он будет перемещаться в конец списка, а наименее используемые элементы будут постепенно группироваться в начале списка. Так же в стандартной реализации LinkedHashMap есть метод removeEldestEntries(), который возвращает true, если текущий объект LinkedHashMap должен удалить наименее используемый элемент из коллекции при использовании методов put() и putAll().

Стоит заметить, что LinkedHashMap не позволяет полностью реализовать LRU-алгоритм, поскольку при вставке уже имеющегося в коллекции элемента порядок итерации по элементам не меняется.

Читать полностью…

Senior Java Developer

Arrays, Collections: Алгоритмический минимум

Смотреть статью

Читать полностью…

Senior Java Developer

Дорожная карта Java-разработчика в 2023 году: путь с нуля до первой работы

В данной статье мы расскажем, в каком порядке изучать Java, чтобы начать свой путь в разработке и стать востребованным специалистом в 2023 году.

Смотреть статью

Читать полностью…
Subscribe to a channel