Ir punto por punto para las tres cosas que quieres aprender:
- Linux : arranque dual de alguna forma de Linux en una de sus computadoras. La mayoría de las distribuciones de Linux son gratuitas, por lo que el dinero no debería ser un problema. Si tiene algo de dinero extra, puede obtener otra computadora únicamente para Linux. Hay muchos tipos diferentes de compatibilidad de linux y hardware que varía según la computadora portátil, por lo que tendrá que hacer su propia investigación. Es más fácil acostumbrarse a sabores como Ubuntu y Mint, mientras que Arch y Gentoo son mucho más duros porque tiene que instalar casi todos los paquetes desde cero, pero aprenderá mucho más. Todo depende exactamente de lo que quieras obtener. Use la línea de comando de Linux para casi todo, hasta que esté completamente acostumbrado. Primero, acostúmbrate a comandos simples como ls, cd, rm, etc. Luego, avanza hacia los más difíciles. Aprenda vim o emacs para la edición de texto.
- TCP / IP : Debería haber alguna clase sobre esto en su universidad, pero tal vez no pueda ajustarlo a su horario o no tenga requisitos previos. Esto no es algo que pueda “practicar” tanto como los otros dos, así que solo busque obtener un buen libro sobre ellos y ver videos de YouTube o encontrar cursos en línea en sitios como Coursera, EdX, MIT Open Courseware, Stanford Online.
- Programación orientada a objetos : aprenda un lenguaje OO como Java en un sitio como codeacademy. Practique escribiendo aplicaciones en Java y trabaje en algunos proyectos secundarios divertidos que le interesen. Una vez más, puede tomar cursos en línea en los sitios que mencioné anteriormente.
En general, a Google le gusta ver proyectos paralelos, porque desarrolla habilidades prácticas y demuestra su creatividad y entusiasmo por el trabajo. Para la entrevista, practique estructuras de datos, algoritmos y habilidades para resolver problemas. Elija un libro como Cracking the Coding Interview. ¡Buena suerte!
- ¿Qué es algo que los programadores experimentados saben (o deberían saber) pero que los programadores menos experimentados probablemente no saben?
- ¿Qué tengo que aprender para obtener trabajo de software?
- ¿Cuáles son las prácticas de codificación en las que los ingenieros de software razonables no están de acuerdo?
- ¿Cuál es la vida diaria de un ingeniero de software?
- ¿Cómo o cuándo comenzó que los 'programadores' y 'programadores' son considerados menos valiosos que los 'ingenieros' y 'desarrolladores'?