Skip to content

Latest commit

 

History

History
131 lines (105 loc) · 11.7 KB

File metadata and controls

131 lines (105 loc) · 11.7 KB

Вопросы для Java-разработчиков

Вопросы по soft skills Вопросы по алгоритмам

Junior

Общие вопросы

  1. Почему ты решил стать бэкенд-разработчиком, чем тебя привлекает профессия?
  2. Решал ли какие-то задачки-каты? Codebattle, Codewars, Leetcode?
  3. Как ты относишься к написанию кода: делаешь так, чтоб просто работало, или пишешь обдуманно?
  4. С какими менеджерами задач работал?
  5. Расскажи о своем пути в разработку, почему именно Java?
  6. Писал ли тесты? Как их писал?
  7. JIT компилятор и обычный компилятор - в чем отличия?
  8. Плюсы и минусы монолитного приложения и микросервисного? CQRS - что это и в чем смысл?

Java

  1. Расскажи про ООП, что это такое, какие видишь преимущества и недостатки?
  2. Что такое инкапсуляция, полиморфизм, наследование, абстракция данных?
  3. Что такое раннее и позднее связывание?
  4. Чем отличается declaration(объявление) от initialization(инициализация)?
  5. Когда мы объявили переменную, занимает ли она память?
  6. Почему в Java отказались от множественного наследования?
  7. Что было бы, если бы у нас было два класса, если бы они одинаковые по сигнатуре методы? Были бы проблемы?
  8. Композиция и агрегация. Что это такое? Можешь примеры из реального мира.
  9. Когда использовать абстрактный класс, а когда интерфейс?
  10. Что такое интерфейсы в Java?
  11. Что значит immutable object и как его сделать, зачем он нужен?
  12. Чем отличается JVM, JVE и JDK?
  13. Чем отличается List, ArrayList, LinkedList?
  14. Расскажите об иерархии Map.
  15. Зачем нужен Stream map(), в каких случаях используется?
  16. Расскажите про HashMap, что это и где используется?
  17. Опишите типичные примеры ошибок в коде, когда два разных объекта могут дать коллизию (одинаковый хеш-код)?
  18. Что такое LinkedHashMap?
  19. За счет чего достигается сохранение порядка в LinkedHashMap?
  20. Какая разница между stack и heap?
  21. Для чего нужен класс Object?
  22. Какие ORM знаешь и какие использовал? Какие плюсы и минусы можешь выделить?
  23. У тебя есть метод, который суммирует строки. На вход он принимает большой массив (тысяча элементов). Необходимо собрать все элементы массива и собрать в одну строку. Как бы ты это реализовал?
  24. Как происходит очистка мусора (GC) в Java (то есть, как понять, даже если есть взаимная циклическая связь между объектами) - когда такие объекты будут удалены?
  25. Effective finally в Java - что это?
  26. Чем хороши записи в Java?
  27. Happens-before в Java - что это такое?

Spring и Spring Boot

  1. Какие минусы @Autowired есть?
  2. Какие минусы JPA в Spring существуют?
  3. Какие типы загрузки есть в Spring, чем плюсы и минусы каждого?
  4. В чем заключается смысл Spring Boot?
  5. Как происходит в Spring Boot обработка ошибок, какие аннотации используются?

Hibernate

  1. Какие типы загрузки есть в Hibernate, чем плюсы и минусы каждого?

Многопоточность

  1. Как работает CAS в многопоточной среде, если воздействуют на него сразу несколько потоков?

Базы данных

  1. С какими СУБД работал?
  2. Какие фундаментальные различия между MongoDB и PostgresSQL?
  3. Знаком с ACID? Можешь рассказать, что это такое?
  4. Чем обеспечивается функция долговечности в транзакциях (принцип ACID)?
  5. Какие виды JOIN знаешь? Чем они отличаются?
  6. Что такое атомарность и консистентность?
  7. Если соединяем несколько таблиц БД с помощью INNER JOIN, есть ли разница в оптимизации, в каком порядке соединяем таблицы?
  8. За счет чего и каким именно образом обеспечиваются уровни изоляции в БД?
  9. По какому параметру планировщик в БД выбирает самый оптимальный вариант?

Сети

  1. В чем различие TCP и UDP?
  2. Расскажи про OSI. На каком уровне находится HTTP?
  3. Что из себя представляет HTTP запрос? Структура? Тело есть у всех HTTP запросов?
  4. Можешь рассказать, что такое REST? Использовал ли в работе REST?
  5. Какой HTTP метод используется для обновления небольшого кусочка по REST?

Middle

Общие вопросы

  1. Какие знаешь паттерны ООП? Какие использовал?
  2. Работал ли с Docker? Kubernetes?
  3. Работал ли с Grafana?
  4. Какие минусы у микросервисной архитектуры? Какие плюсы?
  5. Что такое репликация и шардирование? Когда что использовать?
  6. Масштабирование, горизонтальное, вертикальное. Можешь рассказать, что такое?
  7. Как можно оценить, что твое приложение начинает тормозить?
  8. Достаточно ли валидации в ORM при реализации проверки на уникальность, например, email при регистрации? Раскройте
  9. Какие последствия возможны при отправке email прямо в контроллере? Как можно решить эти проблемы?
  10. Как бы вы реализовали смену email на сайте, так чтобы соблюсти баланс между сложностью и безопасностью?
  11. Можно ли доверять email, который мы получаем по oauth от соц сетей и мержить аккаунты автоматически? Приведите примеры
  12. Как ограничить отправку email пользователю, который добавил письмо нашего проекта в спам? И почему это стоит делать (или не стоит)?
  13. Предположим что вы реализуете редакцию журнала, где редактора могут в админке править статьи. Как предотвратить ситуацию, когда два редактора могут начать одновременно редактировать одну статью и перетирать изменения друг друга?
  14. Каких принципов разработки нужно придерживаться, для обеспечения механизма zero downtime deployment. Как это достигается?
  15. Что может произойти, если ваша cron задача, которая запускается раз в минуту, стала выполняться больше 1 минуты? Как это можно предотвратить?
  16. Если вы пишите тесты, то как вы обходите проблему того, что код который вы тестируете, делает внешние вызовы? Доп условие, говорим о том, что на CI внешние вызовы запрещены (почему так правильно?)
  17. Предположим что в вашей системе реализована смена емейла. При этом этот емейл хранится еще и во внешней системе, например эквайринге, который шлет пользователю свои письма (но пользователь им напрямую не пользуется). Как бы вы реализовали синхронизацию емейла с внешней системой?
  18. Как вы узнаете об ошибках, которые происходят на продакшене? От пользователей или это автоматизировано?
  19. Как обеспечивается изоляция тестов друг от друга если они ходят в базу и меняют ее? Если в вашем фреймворке этого нет, то как вы это делаете или сделали бы?

Java

  1. Что такое Structured Concurrency?
  2. Где хранятся объекты в Java?
  3. Для чего нужен метод hashcode?
  4. Чем отличаются iterable и iterator?
  5. Какие коллекции для многопоточного программирования знаешь?
  6. Знаешь, как работает сборщик мусора? Если у нас есть переменная, например объект, который ссылается сам на себя, сборщик мусора его обработает?

Базы данных

  1. Для чего нужны индексы в БД?
  2. В каких случаях первичный ключ может быть null?
  3. В каком случае первичный ключ может быть составным и может ли он быть составным? Можешь привести пример такой ситуации?
  4. Чем DELETE отличается от TRUNCATE? Какой запрос будет выполнен быстрее?
  5. Знаешь ли ты, что такое SELF JOIN?
  6. Решал ли ты какие-то задачи производительности в БД?
  7. Знаком, что такое PG Bouncer?
  8. Можешь рассказать про плюсы и минусы расположения БД в контейнере и без? В каких случаях стоит использовать базу в контейнере?