Вопросы по soft skills Вопросы по алгоритмам
- Почему ты решил стать бэкенд-разработчиком, чем тебя привлекает профессия?
- Решал ли какие-то задачки-каты? Codebattle, Codewars, Leetcode?
- Как ты относишься к написанию кода: делаешь так, чтоб просто работало, или пишешь обдуманно?
- С какими менеджерами задач работал?
- Расскажи о своем пути в разработку, почему именно Java?
- Писал ли тесты? Как их писал?
- JIT компилятор и обычный компилятор - в чем отличия?
- Плюсы и минусы монолитного приложения и микросервисного? CQRS - что это и в чем смысл?
- Расскажи про ООП, что это такое, какие видишь преимущества и недостатки?
- Что такое инкапсуляция, полиморфизм, наследование, абстракция данных?
- Что такое раннее и позднее связывание?
- Чем отличается declaration(объявление) от initialization(инициализация)?
- Когда мы объявили переменную, занимает ли она память?
- Почему в Java отказались от множественного наследования?
- Что было бы, если бы у нас было два класса, если бы они одинаковые по сигнатуре методы? Были бы проблемы?
- Композиция и агрегация. Что это такое? Можешь примеры из реального мира.
- Когда использовать абстрактный класс, а когда интерфейс?
- Что такое интерфейсы в Java?
- Что значит immutable object и как его сделать, зачем он нужен?
- Чем отличается JVM, JVE и JDK?
- Чем отличается
List
,ArrayList
,LinkedList
? - Расскажите об иерархии Map.
- Зачем нужен
Stream map()
, в каких случаях используется? - Расскажите про HashMap, что это и где используется?
- Опишите типичные примеры ошибок в коде, когда два разных объекта могут дать коллизию (одинаковый хеш-код)?
- Что такое
LinkedHashMap
? - За счет чего достигается сохранение порядка в
LinkedHashMap
? - Какая разница между stack и heap?
- Для чего нужен класс
Object
? - Какие ORM знаешь и какие использовал? Какие плюсы и минусы можешь выделить?
- У тебя есть метод, который суммирует строки. На вход он принимает большой массив (тысяча элементов). Необходимо собрать все элементы массива и собрать в одну строку. Как бы ты это реализовал?
- Как происходит очистка мусора (GC) в Java (то есть, как понять, даже если есть взаимная циклическая связь между объектами) - когда такие объекты будут удалены?
- Effective finally в Java - что это?
- Чем хороши записи в Java?
- Happens-before в Java - что это такое?
- Какие минусы
@Autowired
есть? - Какие минусы JPA в Spring существуют?
- Какие типы загрузки есть в Spring, чем плюсы и минусы каждого?
- В чем заключается смысл Spring Boot?
- Как происходит в Spring Boot обработка ошибок, какие аннотации используются?
- Какие типы загрузки есть в Hibernate, чем плюсы и минусы каждого?
- Как работает CAS в многопоточной среде, если воздействуют на него сразу несколько потоков?
- С какими СУБД работал?
- Какие фундаментальные различия между MongoDB и PostgresSQL?
- Знаком с
ACID
? Можешь рассказать, что это такое? - Чем обеспечивается функция долговечности в транзакциях (принцип ACID)?
- Какие виды
JOIN
знаешь? Чем они отличаются? - Что такое атомарность и консистентность?
- Если соединяем несколько таблиц БД с помощью
INNER JOIN
, есть ли разница в оптимизации, в каком порядке соединяем таблицы? - За счет чего и каким именно образом обеспечиваются уровни изоляции в БД?
- По какому параметру планировщик в БД выбирает самый оптимальный вариант?
- В чем различие
TCP
иUDP
? - Расскажи про OSI. На каком уровне находится HTTP?
- Что из себя представляет HTTP запрос? Структура? Тело есть у всех HTTP запросов?
- Можешь рассказать, что такое REST? Использовал ли в работе REST?
- Какой HTTP метод используется для обновления небольшого кусочка по REST?
- Какие знаешь паттерны ООП? Какие использовал?
- Работал ли с Docker? Kubernetes?
- Работал ли с Grafana?
- Какие минусы у микросервисной архитектуры? Какие плюсы?
- Что такое репликация и шардирование? Когда что использовать?
- Масштабирование, горизонтальное, вертикальное. Можешь рассказать, что такое?
- Как можно оценить, что твое приложение начинает тормозить?
- Достаточно ли валидации в ORM при реализации проверки на уникальность, например, email при регистрации? Раскройте
- Какие последствия возможны при отправке email прямо в контроллере? Как можно решить эти проблемы?
- Как бы вы реализовали смену email на сайте, так чтобы соблюсти баланс между сложностью и безопасностью?
- Можно ли доверять email, который мы получаем по oauth от соц сетей и мержить аккаунты автоматически? Приведите примеры
- Как ограничить отправку email пользователю, который добавил письмо нашего проекта в спам? И почему это стоит делать (или не стоит)?
- Предположим что вы реализуете редакцию журнала, где редактора могут в админке править статьи. Как предотвратить ситуацию, когда два редактора могут начать одновременно редактировать одну статью и перетирать изменения друг друга?
- Каких принципов разработки нужно придерживаться, для обеспечения механизма zero downtime deployment. Как это достигается?
- Что может произойти, если ваша
cron
задача, которая запускается раз в минуту, стала выполняться больше 1 минуты? Как это можно предотвратить? - Если вы пишите тесты, то как вы обходите проблему того, что код который вы тестируете, делает внешние вызовы? Доп условие, говорим о том, что на CI внешние вызовы запрещены (почему так правильно?)
- Предположим что в вашей системе реализована смена емейла. При этом этот емейл хранится еще и во внешней системе, например эквайринге, который шлет пользователю свои письма (но пользователь им напрямую не пользуется). Как бы вы реализовали синхронизацию емейла с внешней системой?
- Как вы узнаете об ошибках, которые происходят на продакшене? От пользователей или это автоматизировано?
- Как обеспечивается изоляция тестов друг от друга если они ходят в базу и меняют ее? Если в вашем фреймворке этого нет, то как вы это делаете или сделали бы?
- Что такое Structured Concurrency?
- Где хранятся объекты в Java?
- Для чего нужен метод
hashcode
? - Чем отличаются
iterable
иiterator
? - Какие коллекции для многопоточного программирования знаешь?
- Знаешь, как работает сборщик мусора? Если у нас есть переменная, например объект, который ссылается сам на себя, сборщик мусора его обработает?
- Для чего нужны индексы в БД?
- В каких случаях первичный ключ может быть
null
? - В каком случае первичный ключ может быть составным и может ли он быть составным? Можешь привести пример такой ситуации?
- Чем
DELETE
отличается отTRUNCATE
? Какой запрос будет выполнен быстрее? - Знаешь ли ты, что такое
SELF JOIN
? - Решал ли ты какие-то задачи производительности в БД?
- Знаком, что такое PG Bouncer?
- Можешь рассказать про плюсы и минусы расположения БД в контейнере и без? В каких случаях стоит использовать базу в контейнере?