Рассказать про опыт. За что отвечал? Как именно происходил пронос фичи до прода? Как работает HashMap? Подробно по шагам рассказать, что происходит при вставке в мапу (зачем то прям во все детали углублялся) Что такое O(N), о(N)? Чем отличаются между собой? Какие алгоритмы знаешь? С какими сталкивался? BFS, DFS? Где применял Какие шаблоны проектирования знаешь? какие на проекте использовал? Чем адаптер от прокси отличается? Как работает @Transactional? Что происходит под капотом? Всегда ли он будет срабатывать? Если у нас есть транзакционный метод в котором есть интеграции со сторонним источником, это ок или не ок? В чем проблема? Рассказать про propagation? Какие знаешь уровни изоляции транзакции? Какие проблемы решает каждый из них? Какой уровень по умолчанию? Как на уровне Postgres мы решаем проблему с неповторяющимся чтением? Что такое оптимистическая блокировка? Какие микросервисные паттерны знаешь? Паттерн Sidecar? Расскажи про шаблон Event Sourcing? Использовался ли на проекте? Была ли Saga, Outbox? Рассказать про них Рассказать про JMM? Как устроена память в Java? Рассказать про GC? Какие есть виды GC? Как работает GC? Как по метрикам понять, что у нас запустилась сборка мусора? Про БД. Что такое Индексы? Когда в них есть смысл, когда нет? Может ли быть такое, что по плану запроса используется индекс, а по факту нет? Работал ли с Кафка? На каком уровне? Рассказать про нее Можно ли уменьшить количество партиций?
Лайвкод: реализовать метод
class Person {
String name;
Integer age;
}
public Optional findPersonByName(List persons, String name) {
// TODO
}
Рассказать что выведет: в чем проблема и как пофиксить после фикса очевидной проблемы нужно рассказать про не очевидную проблему и сказать как это пофиксить
private final Object lock = new Object();
public void lock() {
synchronized (lock) {
try {
lock.wait();
System.out.println("1");
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
public void unlock() {
synchronized (lock) {
lock.notify();
System.out.println("2");
}
}
public static void main(String[] args) {
Thread t1 = new Thread(new Test() {
@Override
public void run() {
lock();
}
});
Thread t2 = new Thread(new Test() {
@Override
public void run() {
unlock();
}
});
t1.start();
t2.start();
}
}