В разных компаниях и даже на разных проектах по-разному. Предварительно готовить ничего не надо, вас скажут чем заниматься и в каком направлении учиться.
Зависит от ваших профессиональных задач и карьерных целей. Проводя аналогию с вождением автомобиля: Если ваша задача - каждый день проезжать 10 км по одному и тому же городскому маршруту на малолитражке, то достаточно знать как крутить руль и нажимать две педали, а если вы хотите победить в ралли "Дакар", то без знания внутреннего устройства автомобиля не обойтись. Java-перформансникам, например, знать нужно не только ОС, но и железо с ассемблером.
Во времена кнопочных телефонов и WAP java-приложения писались для специальной версии JVM - J2ME. Сейчас почти все android-приложения тоже написаны на Java и тоже под специальную JVM. То есть ни тогда, ни сейчас нельзя запустить на мобильнике любое java-приложение, только специально предназначенное для этого.
StringBuffer давно устарел и не рекомендуется к применению. О чём можно найти упоминания в "Effective Java" Джошуа Блоха, "Java Concurrency in Practice" Брайана Гетца и многих других учебниках. Его основное отличие от StringBuilder в том, что вызов метода append синхронизирован. В однопоточной среде это приводит к бесполезному замедлению программы. А в многопоточной бесполезно, так как смысл имеет только совместная синхронизация всех вызовов append, а не каждого по отдельности.
для стажировок в IT-компании нужно знание Spring core
Вам нужно прочитать учебник "Spring 4 для профессионалов" Шефера, Хо и Харропа. В нём вам и расскажут, что относится к core, и дадут необходимый минимум знаний по core.
P.S. Есть более новая редакция для 5-го Spring'а, но она хуже написана.
Язык Java создавался исключительно для ООП. Спустя годы выяснилось, что ограничение одной парадигмой - не очень хорошая идея, поэтому в языке сейчас с каждым релизом становится всё больше функционального программирования, но только как дополнение к ООП.