Зависит от текущей подготовки и опыта программирования на других языках. Допустим, что обучение ведется с нуля. Тогда вам можно посоветовать книгу Брюса Эккеля "Философия Java". Или же двухтомник Хорстманна. Видеокурсов для новичков сейчас много, можете брать любой, но основа все-таки - книги.
Разумеется, просто штудирование основ языка не даст вам нормальной подготовки. Нужно постоянно писать программы, которыми будете пользоваться вы сами. Без этого написание тестовых примеров ничего не даст. Нужна именно реальная практика. Реализуйте что угодно, чем будете пользоваться сами. Хоть планировщик дел, хоть каталог своих книг, что угодно.
Если коротко, то так:
1. Книжка myflex.org
2. Курсы для начинающих: https://github.com/JavaOPs/basejava/blob/master/README.md#Ресуры-в-сети
3. Практика: http://javaops.ru/ref/basejava/tq
4. Прохождение собеседования: github.com, www.youtube.com