Java Learning
18.6K subscribers
1.62K photos
1 video
3 files
1K links
№ 5079899194

Обучающий канал по Java

Ссылка для друга - https://t.iss.one/+ZEYYht6-46w5MDM6

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
LibGDX

LibGDX — это кроссплатформенный фреймворк для разработки 2D- и 3D-игр на Java. Он позволяет создавать игры для настольных компьютеров, мобильных устройств, веб-браузеров и даже консолей. LibGDX популярен среди разработчиков игр благодаря своей простоте использования, производительности и большому сообществу.

#для_продвинутых
👍111
LITIENGINE

LITIENGINE — это бесплатный, открытый и простой 2D движок для игр на Java, созданный двумя баварскими братьями. Он состоит из двух компонентов:

— Легковесная Java-библиотека, предоставляющая базовую инфраструктуру игры.
— Специальный инструмент управления проектами и редактор карт utiLITI.

LITIENGINE предназначен для быстрого прототипирования и получения видимых результатов практически мгновенно.

#для_продвинутых
👍5
SnapKit

SnapKit — это современная библиотека пользовательского интерфейса Java, которая позволяет создавать богатые клиентские приложения Java, реализующие первоначальное обещание Java, работая безупречно и нативно на рабочем столе и в браузере (WORA).

#для_продвинутых
👍10
SWT

SWT (Standard Widget Toolkit) — это кроссплатформенный виджетный набор для Java, позволяющий создавать десктопные приложения с нативным интерфейсом. Он является частью проекта Eclipse и пользуется популярностью благодаря своей производительности, простоте использования и богатому набору функций.

#для_продвинутых
👍11
jGRASP

jGRASP — это бесплатная и легкая интегрированная среда разработки (IDE) для Java, которая фокусируется на автоматической генерации визуализаций для улучшения понимания кода.

#для_продвинутых
👍4
Можно ли сузить уровень доступа/тип возвращаемого значения при переопределении метода?

• При переопределении метода нельзя сузить модификатор доступа к методу (например с public в MainClass до private в Class extends MainClass).
• Изменить тип возвращаемого значения при переопределении метода нельзя, будет ошибка attempting to use incompatible return type.
• Можно сузить возвращаемое значение, если они совместимы.
Например:

public class Animal {

public Animal eat() {
System.out.println("animal eat");
return null;
}

public Long calc() {
return null;
}

}
public class Dog extends Animal {

public Dog eat() {
return new Dog();
}
/*attempting to use incompatible return type
public Integer calc() {
return null;
}
*/
}
👍5
Быстрое нахождение чисел Фибоначчи

Смотреть статью
👍9
#Вопросы_с_собеседования
Дайте определение терминам «простой», «составной» (composite), «потенциальный» (candidate) и «альтернативный» (alternate) ключ.

Простой ключ состоит из одного атрибута (поля). Составной - из двух и более.

Потенциальный ключ - простой или составной ключ, который уникально идентифицирует каждую запись набора данных. При этом потенциальный ключ должен обладать критерием неизбыточности: при удалении любого из полей набор полей перестает уникально идентифицировать запись.

Из множества всех потенциальных ключей набора данных выбирают первичный ключ, все остальные ключи называют альтернативными.
👍7
Что такое «фреймворк Fork/Join»?

Фреймворк Fork/Join, представленный в JDK 7, - это набор классов и интерфейсов позволяющих использовать преимущества многопроцессорной архитектуры современных компьютеров. Он разработан для выполнения задач, которые можно рекурсивно разбить на маленькие подзадачи, которые можно решать параллельно.

• Этап Fork: большая задача разделяется на несколько меньших подзадач, которые в свою очередь также разбиваются на меньшие. И так до тех пор, пока задача не становится тривиальной и решаемой последовательным способом.
• Этап Join: далее (опционально) идёт процесс «свёртки» - решения подзадач некоторым образом объединяются пока не получится решение всей задачи.
Решение всех подзадач (в т.ч. и само разбиение на подзадачи) происходит параллельно.

Для решения некоторых задач этап Join не требуется. Например, для параллельного QuickSort — массив рекурсивно делится на всё меньшие и меньшие диапазоны, пока не вырождается в тривиальный случай из 1 элемента. Хотя в некотором смысле Join будет необходим и тут, т.к. всё равно остаётся необходимость дождаться пока не закончится выполнение всех подзадач.

Ещё одно замечательное преимущество этого фреймворка заключается в том, что он использует work-stealing алгоритм: потоки, которые завершили выполнение собственных подзадач, могут «украсть» подзадачи у других потоков, которые всё ещё заняты.
👍6
#вопросы_с_собеседований
Как узнать значение конкретного символа строки, зная его порядковый номер в строке?

Чтобы узнать значение конкретного символа в строке по его порядковому номеру, можно воспользоваться методом charAt(int index) класса String.

Этот метод возвращает символ, расположенный в строке по указанному индексу. Индексы нумеруются от 0 до длины строки минус 1.

Если переданный индекс находится вне диапазона длины строки, будет выброшено исключение IndexOutOfBoundsException.
👍123
#Вопросы_с_собеседования
Что такое сигнатура метода?

Это уникальная строка, которая описывает типы и порядок аргументов, а также возвращаемый тип метода. Сигнатура используется компилятором Java для различения методов с одинаковым именем, но отличающихся по своим параметрам.
👍9
conductor-oss/conductor

Conductor - это платформа, изначально созданная в Netflix для оркестровки микросервисов и событий, написанный на Java.

Conductor OSS поддерживается командой разработчиков в Orkes вместе с членами сообщества с открытым исходным кодом.

git remote set-url origin https://github.com/conductor-oss/conductor

https://github.com/conductor-oss/conductor
👍2
#вопросы_с_собеседований
Может ли метод main выбросить исключение во вне и если да, то где будет происходить обработка данного исключения?

Метод main может выбросить исключение. Это исключение будет передано в JVM (виртуальную машину Java). JVM отловит это исключение и завершит выполнение программы, выведя stack trace (трассировку стека) исключения.

Таким образом, исключение из main приведет к аварийному завершению программы.

Чтобы избежать этого, лучшей практикой является перехватывать исключения внутри main и обрабатывать их, не допуская выброса за его пределы.
👍10
👍5😁3
#Вопросы_с_собеседования

Предположим, есть метод, который может выбросить IOException и FileNotFoundException в какой последовательности должны идти блоки catch? Сколько блоков catch будет выполнено?

Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок catch(Exception ex) {}, иначе все дальнейшие блоки catch() уже ничего не смогут обработать, т.к. любое исключение будет соответствовать обработчику catch(Exception ex).

Таким образом, исходя из факта, что FileNotFoundException extends IOException сначала нужно обработать FileNotFoundException, а затем уже IOException.
👍18
Какой результат выведет эта программа?
Anonymous Quiz
25%
Not equal
32%
Ошибку при выполнении
18%
Equal
26%
Ошибку при компиляции
👍9