Какую книгу посоветуете, чтобы знать java на «среднем» уровне?
Для среднего уровня понадобится примерно десяток книг и как минимум три года реального опыта.
Я бы посоветовал youtube или Udemy, а книги уже после видеокурсов.  Лучшая книга  "JAVA. МЕТОДЫ ПРОГРАММИРОВАНИЯ" И.Н. Блинов, В.С. Романчик. А зарубежные на мой взгляд начинающим лучше не листать, ибо зачастую локализация оставляет желать лучшего(если знаешь english то другое дело)