Настало время оживить это место! Подробности про меня в закрепе, а сейчас расскажу про рубрики, которые будут на канале
#собесы - вопросы и ответы с собеседований
Первый пост из этой рубрики выйдет уже сегодня в 18:00, там поделюсь несколькими вопросами и ответами с собеседования на Senior Java-разработчика, а полная запись собеседования уже на Boosty
В программе Java Core, Spring, микросервисы и обсуждение практического опыта
Подпишись если интересно!
#собесы - вопросы и ответы с собеседований
Первый пост из этой рубрики выйдет уже сегодня в 18:00, там поделюсь несколькими вопросами и ответами с собеседования на Senior Java-разработчика, а полная запись собеседования уже на Boosty
В программе Java Core, Spring, микросервисы и обсуждение практического опыта
Подпишись если интересно!
🔥2❤1👏1
Недавно прошел собес в
Поделюсь несколькими вопросами отуда
Java CoreКакое значение будет выведено на экран?
public class Main {
public static void main(String[] args) {
MyClass myClass = new MyClass();
System.out.println(myClass.getValue());
}
}
class MyClass {
private static int value = 1;
static {
value = 2;
}
{
value = 3;
}
public MyClass() {
MyClass.value = 4;
}
public int getValue() {
return value;
}
}Опрос ниже
Please open Telegram to view this post
VIEW IN TELEGRAM
👨💻2🤔1
❤3👨💻2
МногопоточностьКакой вариант лучше использовать при вызове синхронизированного кода если синхронизировать нужно методы
first() и second()Вариант 1:
synchronized void foo() {
first();
second();
third();
}
Вариант 2:
void foo() {
synchronized (this) {
first();
second();
}
third();
}
Опрос ниже
Please open Telegram to view this post
VIEW IN TELEGRAM
👨💻2
Базы данныхКакие уровни изоляции транзакций существуют в Spring?
@Transactional(isolation = ???)
public void log(String message){
// ...
}
Опрос ниже
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие уровни изолированности транзакций существуют в Spring?
Anonymous Quiz
5%
READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, UNREPEATABLE_READ,
50%
READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
14%
READ_UNCOMMITTED, READ_COMMITTED, UNSERIALIZABLE, SERIALIZABLE
0%
REPEATABLE_READ, UNREPEATABLE_READ,UNSERIALIZABLE, SERIALIZABLE
32%
Посмотреть результаты
👨💻1
Первый вопрос очень часто встречается на собеседованиях любого уровня. Главное знать взаимный порядок выполнения блоков инициализации и конструктора
Первым выполняется статический блок инициализации, вторым - нестатический блок инициализации, а конструктор выполняется последним
class MyClass {
static {
//1
}
{
//2
}
public MyClass() {
//3
}
}Сначала выполняются все статические блоки инициализации начиная с родительских классов, и только после них, поочередно блоки инициализации и конструкторы также начиная с родительских классов
class MyClass {
static {
//1
}
{
//3
}
public MyClass() {
//4
}
}
class MySecondClass extends MyClass {
static {
//2
}
{
//5
}
public MySecondClass() {
//6
}
}Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Второй вопрос связан с одной из самых сложных тем на собеседованиях, но сам по себе довольно прост
Главное помнить - что синхронизировать нужно только непотокобезопасный код, в нашем случае методы
first() и second()Поэтому выбираем вариант 2
void foo() {
synchronized (this) {
first();
second();
}
third();
}Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
В этом вопросе нет ничего сложного, если знать что такое транзакции в базе данных и какие уровни изоляции в них доступны
Проблема возникнет, если вторая транзакция по каким-то причинам будет отменена, тогда первая прочитает из базы неактуальные данные.
Такую проблему называют проблемой грязного чтения или
DIRTY READПри таком уровне изоляции нет угрозы чтения неактуальных данных, но первая транзакция может получить другие данные при повторном чтении, если вторая что-то в них поменяла.
Эту проблема называется неповторяемое чтение или
NON-REPEATABLE READВсе данные, уже прочитанные транзакцией, при повторном чтении останутся теми же, даже если другая транзакция их изменила. Но это не касается новых данных.
Здесь может возникать проблема фантомного чтения (
PHANTOM_READ), когда транзакция, при одинаковых запросах получает разное количество строк таблицы.Это позволяет избежать всех проблем из списка выше, но сильно замедляет работу программы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👨💻2