¿Cuánto tiempo se necesita para prepararse para la pasantía en Google, Facebook o cualquier otro gigante tecnológico?

En primer lugar deja de preocuparte. Te quedan 4-5 meses. Eso es mucho tiempo para prepararse para la pasantía.
Lea detenidamente “Introducción a los algoritmos” de Cormen , y comprenda todos los conceptos. Intenta resolver todos los problemas en los ejercicios. Algunos son muy difíciles y puede tomar 1-2 días para tener la idea, pero sigue intentándolo. Te hará pensar en diferentes maneras de resolver un problema. Me ayudó mucho cuando me estaba preparando para las pasantías.
Como te gusta la codificación en SPOJ, asumo que te gusta resolver problemas algorítmicos. Comience a resolver problemas de codechef y topcoder. Aprenderás muchas técnicas nuevas que te ayudarán en todas tus futuras entrevistas.
Además, cuando te prepares para cualquier entrevista, trata de hacerlo junto con algunos amigos. De esta manera puedes compartir ideas sobre cómo resolver el problema. Esto acelerará el ritmo de aprendizaje mucho.
También mencionaste que estás tratando de contribuir en código abierto. Sigue intentando eso. A menos que realmente contribuyas con algo, no mejoraría tu currículum, pero la experiencia es invaluable y te ayudará a escribir un código de mejor calidad.

Actualización :
Además, si tiene pocas semanas antes de sus entrevistas, consulte los siguientes enlaces en geeksforgeeks.org. Son buenos para una preparación rápida y le darán una idea del tipo de preguntas formuladas en las entrevistas de pasantías.
Comience con lo siguiente

Archivos de programación dinámica – GeeksforGeeks
Archivos de algoritmos codiciosos – GeeksforGeeks
Divide y conquista los archivos – GeeksforGeeks

Una vez que haya terminado con ellos. Estudia lo siguiente también (no es muy necesario para las pasantías, pero te ayudarán a largo plazo)

Patrones de búsqueda de archivos – GeeksforGeeks
algoritmos geométricos Archivos – GeeksforGeeks

Todo lo mejor.