Какие значения могут напечататься? (thread1 и thread2 запускаются одновременно в разных потоках)
Anonymous Quiz
18%
"0, 0", "1, 1"
19%
"0, 0", "1, 1", "1, 0"
11%
"0, 0", "1, 1", "0, 1"
51%
"0, 0", "1, 1", "0, 1", "1, 0"
🔥9😱7👏2
Ответ (https://t.me/java_interview_tasks/265) : тут нарушен порядок HB сначала идет запись в volatile поле g, а потом в x, поэтому чтение из g единицы не дает гарантий относительно x.
Поэтому возможны все варианты: "0, 0", "1, 1", "0, 1", "1, 0"
Поэтому возможны все варианты: "0, 0", "1, 1", "0, 1", "1, 0"
Telegram
Java Interview Tasks
Какие значения могут напечататься? (thread1 и thread2 запускаются одновременно в разных потоках)
🔥5👏1💩1
Что будет в результате выполнения кода?
List<Integer> integers = List.of();
List<Integer> integers1 = integers.subList(0, 0);
System.out.println(integers1);
List<Integer> integers = List.of();
List<Integer> integers1 = integers.subList(0, 0);
System.out.println(integers1);
👍5❤1
Что будет в результате выполнения кода выше?
Anonymous Quiz
22%
ArrayIndexOutOfBoundsException
26%
IndexOutOfBoundsException
18%
какой-то другой ексепшен
17%
что-то еще
17%
узнать ответ
👏4🔥2
Что будет, если мы передадим для сохранения список Item'ов, у которых 0-й и 2-й элемент НЕ являются error items,
а 1-й - является (item.field = "error" для error item)?
а 1-й - является (item.field = "error" для error item)?
Anonymous Quiz
42%
Ничего не будет сохранено, поскольку RuntimeException в методе saveItem откатит транзакцию;
12%
Будет сохранен только 0-й элемент;
33%
Будет сохранен 0-й и 2-й элемент;
12%
Узнать ответ
2%
Я не использую транзакции
🔥8👍3
Ответ к вопросу про ошибки в транзакциях:
Правильный ответ - 3. (Будет сохранен 0-й и 2-й элемент)
Когда мы из компонента так вызываем метод того же компонента,
это просто вызов внутреннего метода, а не метода прокси-объекта. Он попросту игнорирует аннотацию
@Transactional у saveItem и не будет создавать новый транзакционный контекст. А значит RuntimeException не пересечет границу @Transactional-метода.
Правильный ответ - 3. (Будет сохранен 0-й и 2-й элемент)
Когда мы из компонента так вызываем метод того же компонента,
это просто вызов внутреннего метода, а не метода прокси-объекта. Он попросту игнорирует аннотацию
@Transactional у saveItem и не будет создавать новый транзакционный контекст. А значит RuntimeException не пересечет границу @Transactional-метода.
🔥6❤1
🔥7👍1
Оцените миграцию DB (синтаксис постгрес, миграция например для flyway):
create table if not exists test_table; Аргументацию пишите в комментарии.
create table if not exists test_table; Аргументацию пишите в комментарии.
Anonymous Poll
21%
1 - очень плохая
8%
2
24%
3
12%
4
35%
5 - самая правильная
👍2🔥2
Что может напечатать код?
Anonymous Quiz
22%
всегда true
24%
всегда false
36%
и true и false
17%
узнать ответ
🔥8👍4
Ответ к вопросу про миграцию в бд (https://t.me/java_interview_tasks/276):
У миграции 'create table if not exists test_table ...' есть недостаток - 'if not exists',
она в некоторых случаях может скрывать от вас проблемы в схеме вашей бд, то есть если в данном примере таблица
test_table уже есть в бд, ничего не произойдет, но возможно у вас таблица в базе с другими колонками и это проблема будет проигнорирована
В целом использование конструкций вроде 'if not exists' для миграций часто считается плохой практикой.
У миграции 'create table if not exists test_table ...' есть недостаток - 'if not exists',
она в некоторых случаях может скрывать от вас проблемы в схеме вашей бд, то есть если в данном примере таблица
test_table уже есть в бд, ничего не произойдет, но возможно у вас таблица в базе с другими колонками и это проблема будет проигнорирована
В целом использование конструкций вроде 'if not exists' для миграций часто считается плохой практикой.
Telegram
Java Interview Tasks
Оцените миграцию DB (синтаксис постгрес, миграция например для flyway):
create table if not exists test_table; Аргументацию пишите в комментарии.
1 - очень плохая / 2 / 3 / 4 / 5 - самая правильная
create table if not exists test_table; Аргументацию пишите в комментарии.
1 - очень плохая / 2 / 3 / 4 / 5 - самая правильная
🔥6👍5👎1
Что будет если thread запустить дважды?
Anonymous Quiz
23%
"test" напечатается дважды, ошибок не будет
5%
"test" напечатается дважды и будет эксепшен
10%
"test" напечатается один раз, ошибок не будет
32%
"test" напечатается один раз и будет ексепшен
8%
будет ошибка компиляции
5%
будет краш jvm
17%
узнать ответ
👍6🔥4
Ответ к вопросу про повторный запуск потока (https://t.me/java_interview_tasks/281) :
"test" напечатается один раз и на повторyый вызов метода start будет IllegalThreadStateException
Если поток был запущен, то повторно запустить его нельзя
"test" напечатается один раз и на повторyый вызов метода start будет IllegalThreadStateException
Если поток был запущен, то повторно запустить его нельзя
Telegram
Java Interview Tasks
Что будет если thread запустить дважды?
🔥9👍4👏1
Оцените по 10-ти бальной шкале код выше:
Anonymous Poll
50%
1
8%
2
6%
3
4%
4
5%
5
2%
6
1%
7
1%
8
0%
9
22%
10
🔥6👍3
Можно ли будет понять, в каком месте выбросится NPE, если какая- то из вложенных мап вернет null?
Anonymous Quiz
13%
да, всегда
30%
можно понять, начиная с 16-ой джавы
28%
нельзя понять
29%
узнать ответ
❤5🔥4👍2
Ответ к вопросу про get chain с NPE:
В джава 16 появилась новая фича, которая показывает больше деталей про место, в котором произошел NPE (детали например тут - https://www.baeldung.com/java-14-nullpointerexception)
Но в данном случае будет так -
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.util.Map.get(Object)" because the return value of "java.util.Map.get(Object)" is null
at test.Test.testMap(Test.java:46)
Фактически новая фича ничем не помогает в данном случае.
Я бы не рекомендовал писать такой код, в случае возникновения null значений в мапах, по ошибкам не будет понятно, где искать проблему. Такой код сложно отлаживать и поддерживать. Возможно он бы имел место, если бы было известно, что map.get всегда будут не null
В джава 16 появилась новая фича, которая показывает больше деталей про место, в котором произошел NPE (детали например тут - https://www.baeldung.com/java-14-nullpointerexception)
Но в данном случае будет так -
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.util.Map.get(Object)" because the return value of "java.util.Map.get(Object)" is null
at test.Test.testMap(Test.java:46)
Фактически новая фича ничем не помогает в данном случае.
Я бы не рекомендовал писать такой код, в случае возникновения null значений в мапах, по ошибкам не будет понятно, где искать проблему. Такой код сложно отлаживать и поддерживать. Возможно он бы имел место, если бы было известно, что map.get всегда будут не null
Baeldung
Helpful NullPointerExceptions in Java | Baeldung
Learn about helpful NullPointerExceptions in Java 14.
👍7🔥2