Эрнэст Фарукшин, конкурентное выполнение недетерминированно. Если JMM что-то не гарантирует, то это может произойти, а может и не произойти. Никого не устроит программа, которая работает случайным образом в разные моменты времени, поэтому программист должен самостоятельно заботиться о синхронизации.
Вячеслав Осипов, дерево - это частный случай ациклического графа. Выберите удобную вам структуру для дерева. Так как граф неориентированный, просто берите произвольную вершину и начинайте обход, складывая вершины в выбранную структуру. В конце обхода в этой структуре будет дерево. Правда, не обязательно сбалансированное.
Что за мода пошла задавать неконкретные вопросы? Вас интересует что такое Mock API Endpoint, так спросите "Что такое Mock API Endpoint?" Какая вам разница как Вася Пупкин его понимает? Тем более, что понимать он может неправильно.
Мой комментарий как раз про такие случаи. В названии реализации должны отображаться детали реализации, позволяющие беглым взглядом определить, чем одна реализация отличается от другой.
Соглашение об именовании полей и переменных - вопрос индивидуальный и зависит больше от принятого командой стиля. Но например Роберт Мартин в своём хрестоматийном труде "Чистый код" советует не использовать в именах переменных префиксов и другой лишней информации. Я с ним согласен, и назвал бы переменную просто bookRepository или даже просто repository, если из контекста и так ясно на какой репозиторий ссылается переменная.
Владимир, да, у них в целом красивая кодовая база, если не считать излишней любви к регэкспам и использованию божественных объектов. Но, на сколько я понял, автора интересуют скорее примеры хороших web-приложений на Django, чем кишки самого Django.
Ivan Yakushenko, я на github'е слежу только за библиотеками и фреймворками, так что проектов не подскажу. Как правильно использовать Flask стоит искать в учебнике Мигеля Гринберга.