#вопросы_с_собеседований Может ли метод main выбросить исключение во вне и если да, то где будет происходить обработка данного исключения?
Метод main может выбросить исключение. Это исключение будет передано в JVM (виртуальную машину Java). JVM отловит это исключение и завершит выполнение программы, выведя stack trace (трассировку стека) исключения.
Таким образом, исключение из main приведет к аварийному завершению программы.
Чтобы избежать этого, лучшей практикой является перехватывать исключения внутри main и обрабатывать их, не допуская выброса за его пределы.
#Вопросы_с_собеседования Что такое сигнатура метода?
Это уникальная строка, которая описывает типы и порядок аргументов, а также возвращаемый тип метода. Сигнатура используется компилятором Java для различения методов с одинаковым именем, но отличающихся по своим параметрам.
Фреймворк Fork/Join, представленный в JDK 7, - это набор классов и интерфейсов позволяющих использовать преимущества многопроцессорной архитектуры современных компьютеров. Он разработан для выполнения задач, которые можно рекурсивно разбить на маленькие подзадачи, которые можно решать параллельно.
• Этап Fork: большая задача разделяется на несколько меньших подзадач, которые в свою очередь также разбиваются на меньшие. И так до тех пор, пока задача не становится тривиальной и решаемой последовательным способом. • Этап Join: далее (опционально) идёт процесс «свёртки» - решения подзадач некоторым образом объединяются пока не получится решение всей задачи. Решение всех подзадач (в т.ч. и само разбиение на подзадачи) происходит параллельно.
Для решения некоторых задач этап Join не требуется. Например, для параллельного QuickSort — массив рекурсивно делится на всё меньшие и меньшие диапазоны, пока не вырождается в тривиальный случай из 1 элемента. Хотя в некотором смысле Joinбудет необходим и тут, т.к. всё равно остаётся необходимость дождаться пока не закончится выполнение всех подзадач.
Ещё одно замечательное преимущество этого фреймворка заключается в том, что он использует work-stealing алгоритм: потоки, которые завершили выполнение собственных подзадач, могут «украсть» подзадачи у других потоков, которые всё ещё заняты.
#Вопросы_с_собеседования Дайте определение терминам «простой», «составной» (composite), «потенциальный» (candidate) и «альтернативный» (alternate) ключ.
Простой ключ состоит из одного атрибута (поля). Составной - из двух и более.
Потенциальный ключ - простой или составной ключ, который уникально идентифицирует каждую запись набора данных. При этом потенциальный ключ должен обладать критерием неизбыточности: при удалении любого из полей набор полей перестает уникально идентифицировать запись.
Из множества всех потенциальных ключей набора данных выбирают первичный ключ, все остальные ключи называют альтернативными.
Можно ли сузить уровень доступа/тип возвращаемого значения при переопределении метода?
• При переопределении метода нельзя сузить модификатор доступа к методу (например с 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; } */ }
jGRASP — это бесплатная и легкая интегрированная среда разработки (IDE) для Java, которая фокусируется на автоматической генерации визуализаций для улучшения понимания кода.
SWT (Standard Widget Toolkit) — это кроссплатформенный виджетный набор для Java, позволяющий создавать десктопные приложения с нативным интерфейсом. Он является частью проекта Eclipse и пользуется популярностью благодаря своей производительности, простоте использования и богатому набору функций.
SnapKit — это современная библиотека пользовательского интерфейса Java, которая позволяет создавать богатые клиентские приложения Java, реализующие первоначальное обещание Java, работая безупречно и нативно на рабочем столе и в браузере (WORA).
LibGDX — это кроссплатформенный фреймворк для разработки 2D- и 3D-игр на Java. Он позволяет создавать игры для настольных компьютеров, мобильных устройств, веб-браузеров и даже консолей. LibGDX популярен среди разработчиков игр благодаря своей простоте использования, производительности и большому сообществу.
FXGL (FX Game Library) — это библиотека для разработки игр на Java, основанная на JavaFX 8. Она обеспечивает простой и удобный интерфейс для создания 2D-игр, а также включает в себя множество функций, необходимых для создания полноценных игр.
Fastexcel — это легкая и производительная библиотека Java для работы с файлами Excel. Она позволяет читать, создавать и модифицировать электронные таблицы XLSX, используя простой и понятный API.