есть две-три книги, которых хватит:
- Бертран мейер "Объектно-ориентированное конструирование программных систем"
- Стив Макконнел "Совершенный код"
- Роберт Седжвик "Алгоритмы с примерами" (С++/Джава на выбор в 3/4 изданиях)
Этого точно хватит, чтобы до миддла+ дорасти в смысле знаний