¿Cómo puedo conseguir un trabajo en Facebook o Google en 6 meses? Necesito un plan de trabajo conciso para construir un conjunto de habilidades lo suficientemente bueno. ¿Debería unirme a algún otro inicio o construir mis propios proyectos / inicio? ¿Debería centrarme en practicar estructuras de datos y algoritmos?

Esta respuesta es mi viaje de la persona que tenía miedo de las entrevistas de programación, a mi estado actual por haber roto la Entrevista de Google y como entrenador de entrevistas de programación.

Una práctica lenta y constante durante varios meses le ayudará mucho más que una práctica intensa durante unas pocas semanas. 6 meses es mucho tiempo.

Con decenas de miles de preguntas de programación, cientos de sitios web y docenas de libros, prepararse para programar entrevistas puede ser intimidante. Así que he creado una lista de verificación de los temas necesarios para preparar las entrevistas de programación.

Temas a preparar para la entrevista de programación

• Preguntas basadas en el conocimiento.
ojava preguntas de lenguaje
oCore preguntas de concepto de informática

•Estructuras de datos
oArrays
Listas enlazadas
ohash mesas
Tríos, Tries y Gráficos
oHeaps
oStacks y colas

• Algoritmos
oRecursion
Programación dinámica
oTree tecnicas de recorrido
o Técnicas de búsqueda y clasificación.

• Preguntas de comportamiento (menos importantes)

• Código de complejidad

• Preguntas de diseño

o preguntas de diseño del sistema
Preguntas de diseño orientadas a objetos

• Preguntas populares de la entrevista.

Los detalles sobre esta lista de verificación están aquí:
Hackeando la entrevista de programación – 1 por Ash Murthy en Random Rants

Una vez que se haya familiarizado con los conceptos básicos, es hora de practicar. Algunos sitios web populares para practicar preguntas de la entrevista son:

  • Programación de preguntas de la entrevista | CareerCup
  • LeetCode Juez en línea
  • GeeksforGeeks | Un portal informático para geeks.
  • Codificación de la preparación de la entrevista hecha fácil

Practique sin su IDE (use el editor de texto en línea (collabedit o algo similar) para resolver los problemas y luego intente ejecutar su código). Con la práctica, vete a ti mismo mejorando cada vez más: ¡tu código estará casi listo para compilar y sin errores!

Pero, por supuesto, las largas horas de resolución de problemas pueden ser frustrantes. Póngase en red con otros y resuelva problemas en un entorno de grupo, y esto ya no se sentirá tan frustrante.

Y en el último mes más o menos:
Por último, pregúntale a un amigo o, mejor aún, contrata a un profesional para que te ayude con las entrevistas simuladas. Identificar áreas de mejora y trabajar en ellas.

Si se encuentra en el área de la Bahía de San Francisco, no se pierda el Meetup Interview Interview Prep .

El grupo se reúne cada viernes, y cada reunión se enfoca en un tema específico. Los participantes forman grupos en función de su nivel de habilidad y resuelven preguntas en grupo.

Al participar en esta reunión, puede resolver problemas en un entorno de grupo (que es más efectivo y divertido que la práctica solitaria) y, lo que es más importante, aprender de otros.

Mito: a las personas de universidades muy reputadas les hace falta trabajo en Facebook o Google.

Realidad: lejos de la verdad, estas dos compañías tienen un número considerable de personas provenientes de universidades no tan reputadas. Las personas más inteligentes están en las mejores universidades, por lo que se las ve con más frecuencia.

Para obtener trabajo en Google e iniciar sesión o registrarse, debe ser realmente el mejor en su campo. Aquí parece que está buscando un trabajo de informática, sea muy claro con lógicas, conceptos de Oops, estructuras de datos y programación dinámica.

Si puede responder a estas preguntas de una sola vez, pasará por cualquier entrevista en el mundo.

Si aún sientes que eres bueno en lógica, intenta responder estas preguntas en tu compilador de C ++ o Java.

  • Encuentra el segundo número más grande en una matriz y ordena la matriz.
  • ¿Escribir un programa Java para imprimir series de Fibonacci hasta 100?
  • Escribir un programa de Java para evitar el interbloqueo en Java?
  • En una matriz 1-100, exactamente un número está duplicado, ¿cómo lo encuentras?
  • Calcular factorial de un número
  • ¿Cómo ordenas el objeto Java usando Comparator?
  • ¿Imprimir todo el nodo de la hoja de un árbol binario?
  • ¿Diferencia entre la lista enlazada y la estructura de datos de la matriz?
  • ¿Cómo encontrar el elemento intermedio de una lista enlazada en una sola pasada?
  • ¿Imprimir toda la permutación de cadena tanto iterativa como recursiva?
  • Escribe una función para descubrir el palíndromo más largo en una cadena dada
  • ¿Cómo comprobar si dos cadenas son anagramas?

Chicos, espero que esto no se vea como obtuso, me gustaría compartir con ustedes lo que he aprendido en mis años de empleo. Aunque no he trabajado directamente para Google, anteriormente fui vicepresidente de una compañía de desarrollo de software de mil millones de dólares. Una empresa en la que Andy Rubin estaba muy interesado, creo.

Si entiendo a Google correctamente, y creo que si proporciono evidencia anecdótica, no quieren seguidores que piensen, quieren líderes de pensamiento. El tipo de personas que inventan YouTube. Como nota aparte, mencionaría que conceptualicé la idea de YouTube en el 2000. Mi novia en ese momento pensaba que el nombre que le había dado ‘TubeTV’ era divertido …

En pocas palabras, olvida todo lo que escuchaste en el mundo de los ‘libros de texto’ sobre cómo conseguir un trabajo. Hay demasiadas personas dispuestas a seguir esa vieja línea cansada; Es tan del siglo XX. Google piensa fuera de la caja, usted también lo necesita. Eso significa; Desarrollate, tus pasiones, tus instintos y habilidades.

¡Sé creativo, sé innovador! ¡Dale a Google una buena razón para quererte!

Nota al pie: los más grandes pensadores ni siquiera tuvieron que pensar fuera de la caja.
¿Por qué? Nunca supieron que ‘la caja’ existía; Ignoraron las convenciones.

Ser de una escuela superior es mucho menos importante que haber hecho algunos logros impresionantes o contribuciones a otros proyectos. Cree un producto atractivo o realice avances sustanciales en un proyecto de código abierto.

Lograr que un empleado de Google envíe su currículum vitae ayuda mucho para superar la gran cantidad de currículos no solicitados.

Usted debe saber muy bien la informática básica antes de la entrevista. Lea los excelentes consejos de Steve Yegge sobre cómo prepararse para la entrevista en http://steve-yegge.blogspot.com/

Mire las primeras páginas del libro de Gayle Laakmann para comprender el proceso de entrevistas de Google, http://www.amazon.com/Cracking-C

Recluto gente para Facebook, así que, desde una perspectiva de reclutamiento, compartiré algunos consejos y trucos para que personas como yo nos conozcan.

Recientemente escribí cómo conseguir un trabajo en facebook aquí y consejos para hacerlo a través de la entrevista aquí. Esta publicación comparte gran parte de esa información con algunos detalles.

Al final de esta publicación, también hay algunos recursos adicionales para ayudarlo a obtener el trabajo y prepararse.

Áreas técnicas para enfocar

Hay 3 áreas en las que realmente me enfocaré en hacerlo realmente bien. Estos 3 te ayudan a convertirte en un ingeniero de extremo a extremo; Alguien que conoce tanto el software como los sistemas de cómo funciona algo. Debería enfocarse en lo que es la “respuesta” pero, lo que es más importante, mostrar que puede pensar que está superando el problema.

  1. Sistemas – Más específicamente, solución de problemas y depuración de Linux. Entender cosas como la memoria, io, cpu, shell, memoria, etc. sería muy útil. Saber cómo escribir realmente un shell de Unix también sería una buena idea. ¿Qué herramientas podrías usar para depurar algo? En otra nota, esta entrevista probablemente ampliará tus límites de lo que sabes (y cómo implementarlo).
  2. Diseño / Arquitectura : esta entrevista tiene que ver con tomar una pregunta ambigua sobre cómo puede construir un sistema y dejar que lo guíe. Su entrevistador agregará restricciones cuando sea necesario y la idea es obtener una solución simple y viable en la pizarra. Cosas como la carga y el monitoreo son cosas que podrías considerar. Lo que consideras es tan importante como lo que no. Entonces haga preguntas aclaratorias y reúna los requisitos cuando sea apropiado.
  3. Codificación : el objetivo final son los algoritmos, las estructuras de datos y el código de producción limpia. Los árboles binarios y las listas de enlaces pueden ser temas para revisar y usted es libre de usar el idioma que desee.

Práctica. Luego practica de nuevo.

Hace un mundo de diferencia. Especialmente con la presión de una entrevista. Practique con un amigo en una pizarra con una restricción de tiempo de 45 a 60 minutos. A continuación, solicite retroalimentación directa. Incluso lo grabaría, lo vería más tarde y vería cómo discutías ciertas cosas. Luego invierte los roles. A veces, aprenderás más siendo el entrevistador. No lo lleves a los extremos, pero considera enseñárselo a un amigo o dos. Esto es a menudo cómo absorbe información a una velocidad más rápida.

Tener una presencia online

Usamos una gran cantidad de herramientas, tanto internas como de otras, para encontrar personas que puedan ser adecuadas para los roles que estamos contratando. Algunos de estos incluyen cosas como Linkedin, por ejemplo, o buscar en Github (si eres técnico). Por lo menos, recomiendo tener un perfil de Linkedin completamente vaciado y actualizado, especialmente si está buscando activamente. Un sitio web personal también ayudaría.

Tener una presencia fuera de línea.

Organizamos eventos en todo el mundo que buscan reunirse y conectarse con otros, específicamente para ingeniería. En muchos casos, publicaremos sobre esto o le enviaremos una invitación si pensamos que podría estar interesado. También asistimos a muchas conferencias para retribuir y compartir nuestro conocimiento con la comunidad, pero también para conocer a personas que puedan estar interesadas en unirse a Facebook.

Contribuye a la comunidad de código abierto (si eres técnico)

Hablando de conferencias, somos grandes defensores del código abierto.

Aquí hay un par de enlaces dependiendo de lo que sea más relevante para usted. Android, iOS, web, backend y hardware. Si está trabajando en algún proyecto de código abierto, agréguelos a su Github, Linkedin, cartera o cualquier otro sitio en línea que pueda tener y mencionelos en su currículum.

Red a tu manera en

La red es, con mucho, una de las mejores maneras de conseguir un trabajo en Facebook. Si conoce a alguien directamente que pueda responder por usted, las recomendaciones le ayudarán a conseguir su pie en la puerta. Si no lo hace, comience a conectarse con otros en su industria, incluidos aquellos que trabajan en Facebook. Es probable que alguien que conozcas pueda presentarte directamente o que conozca a alguien que pueda. De hecho, un colega mío me remitió a mi reclutador, lo que aceleró mi entrevista y en una semana tuve 4 ofertas, incluido Facebook. Una de las mejores decisiones que he tomado también. Puedes leer más acerca de por qué aquí. La creación de redes es una de esas habilidades que nunca pasarán de moda y seguirán dando sus frutos.

Optimiza tu currículum

Técnicamente no hay una forma correcta o incorrecta de formatear un currículum, pero después de todo somos humanos. Aquí hay algunas cosas a considerar.

  • Manténgalo en 1–2 páginas (y no super abarrotado). Debe ser fácil de leer.
  • Enfócate en el impacto en tu experiencia pasada.
  • Resalte las cosas que lo ayudan a destacar, ya sea su educación, sus proyectos, su experiencia pasada o cualquier contribución a la comunidad de la que forma parte.
  • Manténgalo actualizado en cualquier lugar donde lo haya publicado en línea.
  • No use palabras de moda por el simple hecho de usar palabras de moda. Sí, los reclutadores realizan búsquedas por palabras, pero también somos conscientes de ver cada palabra de moda en la industria en su declaración objetiva (que por cierto, no es totalmente necesaria). Si tiene sentido usar la palabra, úsala.
  • Mire el currículum de otras personas que tienen el trabajo que desea, especialmente en Facebook. Si no puedes encontrarlo en línea, mira su Linkedin. ¿Puedes aprender algo de ello? ¿Existen puntos en común específicos? Si la hay, deberías considerarlo. No me malinterpretes No estoy diciendo copiar la experiencia de alguien más. Esto podría darle algunas ideas sobre en qué enfocarse.
  • Se veraz No solo coloque algo en su currículum que no sea exacto, ya que es probable que le preguntemos al respecto o que surja una conversación. Si no puedes respaldarlo, déjalo apagado.
  • Más consejos aquí

Envíe un correo electrónico frío a un reclutador (y no a cualquier reclutador)

Puede comunicarse directamente con un reclutador que se enfoque en su área de especialización, con énfasis en el área de especialización. La mayoría de los reclutadores identificarán para qué áreas de ingeniería o roles no técnicos contratarán. Sé estratégico en a quién te diriges y sé personal. Nos encanta conocer a personas que podrían estar buscando activamente y dentro de nuestro alcance específico de reclutamiento. Literalmente, hace nuestro trabajo mucho más fácil. Si conoces a alguien que fue reclutado en Facebook pero no los conoces lo suficiente, incluso puedes pedirles una introducción a su reclutador de Facebook. Tal vez estén dispuestos a ayudar.

Aplica online

No hace falta decir que probablemente no esté de más solo aplicar en línea. Tenemos un equipo fantástico que analiza las aplicaciones entrantes y las remite al reclutador adecuado, siempre y cuando tenga sentido.

Construye tu marca

Interactúa con tu tribu (ya sea tecnología o no tecnología) y comienza a construir tu marca. Este es el único consejo que desearía haber aprendido antes. Si eres conocido en tu industria, publica contenido, habla en conferencias, escribe un libro, blog y comparte tu contribución al mundo. Todos consumimos contenido, pero necesitamos más personas para crearlo.

Comience a preparar ahora

No esperes más para comenzar a preparar tu entrevista. Cada día es un nuevo día para mejorar sus habilidades, adquirir nuevas y continuar mejorando en lo que sea que haga, donde sea que lo haga. Cuando llegue ese día, querrás estar lo más preparado posible. Aquí hay algunos consejos para hacerlo a través del proceso de entrevista en Facebook.

También es importante tener en cuenta que si no funciona la primera vez, no es el final de la línea. Muchas personas no reciben ofertas en su primera o segunda entrevista y le invitamos a continuar la entrevista para los mismos o diferentes roles, generalmente en aproximadamente un año (aunque algunos roles / equipos podrían ser diferentes).

Más recursos

  • Cómo hacerlo a través del proceso de entrevista en Facebook.
  • Cómo su entrevista es diferente por nivel
  • Consejos para pasantías y roles de graduación recientes.
  • ¿Por qué Facebook es un gran lugar para trabajar?

mientras (1)
{
APRENDER:
Programación de preguntas de la entrevista | CareerCup;
http://www.geeksforgeeks.org
PRÁCTICA:
Juez de Esfera Online (SPOJ)
TopCoder, Inc. | Hogar de la comunidad de desarrollo más grande del mundo.
tratar
{
goto entrevista;
si (éxito)
descanso;
más
continuar;
}
captura (excepción decepción) {
// No pierdas la esperanza. Inténtalo de nuevo.
disappointment.convertToDesire ();
}
}

Supongo que quieres entrar en Google con un trabajo relacionado con CS.

Yo diría que hay 3 formas principales de entrar en Google.

  1. A través de pasantías . Google recibe a más de 2000 pasantes cada año de una lista de más de 50000 solicitantes de todo el mundo. Deberá tener un máximo de 3 entrevistas técnicas y un par de entrevistas de emparejamiento con el anfitrión que son en su mayoría de naturaleza informal. Si ingresa, tendrá la oportunidad de realizar una conversión a tiempo completo para obtener ese trabajo en Google.
  2. Como un graduado de la universidad . Estos son estudiantes que están recién salidos de la universidad y están buscando un trabajo. Será mucho más difícil llegar de esta manera en comparación con la pasantía. Las entrevistas técnicas serán más difíciles, pero es posible que esté compitiendo con menos candidatos.
  3. Como un empleado experimentado . Esto le dará una ventaja para obtener algo de experiencia trabajando en nuevas empresas, aprendiendo nuevas tecnologías, demostrando sus habilidades de liderazgo, capacidad cultural, capacidad para trabajar bien dentro de un equipo, su experiencia en programación, etc. Reclutadores todos para agarrar tales candidatos con experiencia. Siempre escuchas de historias sobre uno que trabaja en X siendo reclutado por Y.

Para todas las formas mencionadas anteriormente, también debe tener algunas cualidades básicas.

1) Tener un fuerte conocimiento de las estructuras de datos y algoritmos.

Estoy hablando de listas, árboles binarios, montones, tablas hash, árboles de sufijos, intentos. Nunca puedes decir lo que te pedirán. Es posible que se le pregunte a su amigo acerca de las tablas hash, pero se le puede preguntar sobre los árboles de sufijos.

Comience con la comprensión de la teoría básica detrás de cada una de estas estructuras de datos. Intente comprender cómo funciona la operación de creación, inserción, eliminación y búsqueda en estas estructuras de datos. Intenta entender en términos de análisis asintótico.

Una vez que los resuelva, intente codificarlos en lenguajes como C en papel. No te olvides de los casos de borde. Luego codifíquelos en la computadora. Intenta romper tu programa con entradas válidas. Cuando encuentre uno, intente incorporarlo a su programa.

Enjuague y repita para estructuras de datos comunes. Dirígete a LeetCode Online Judge y comienza a hacer esos problemas. Puede tener dificultades al principio, pero con el tiempo deberá mejorar. También use otros sitios de programación competitiva como TopCoder, SPOJ, Codeforces, CodeChef y HackerRank. Intente leer libros como Cracking the Coding Interview de Gayle Laakmann McDowell, Programming Interviews Exposed, Competitive Programming 2. ¡No solo los lea, sino los codifique!

2) Contribuciones de código abierto

Puede que esto no les importe mucho a los candidatos con experiencia, pero a los futuros pasantes y contratados graduados, sí les importa. Le muestra a Google cuánta pasión tienes. Además, pueden revisar su código y ver qué tan bien está de programador.

Dirígete a GitHub y comienza a buscar proyectos en los que puedas contribuir. Le aconsejaría que elija C ++ o Java, pero Python también puede ser una buena opción. Bifurque, lea el código y comprenda su estilo de programación. Trate de encontrar errores, cometer y empujar!

Puedes hacer tus propios proyectos también. Intenta pensar en un problema que puedas tener. Si tiene un problema, es probable que otros también tengan lo mismo (si observa cómo nacen las nuevas empresas, lo comprenderá). Intenta resolverlo y haz ese proyecto.

3) Pasantías

Yo diría que esto tendrá una calificación muy superior a las contribuciones de código abierto si ha realizado una pasantía en una buena compañía de CS (por ejemplo, X) con una publicación significativa. Puede enumerar las experiencias adquiridas, las responsabilidades asumidas y cómo la empresa se benefició con su pasantía.

¿Su código mejoró algunos de los productos de X? ¿Se hizo más rápido, más fácil de usar? ¿Tuvo más ganancia o nombre para X?

4) Curriculum vitae y CV

Ya se habían escrito demasiadas respuestas sobre este tema en Quora. Puede buscarlo, o simplemente visitar: Curriculum vitae y CV. Definitivamente un tema que vale la pena seguir!

5) Startups

¿Empezaste alguna startup e hiciste un montón de dinero?
¿Empezaste alguna startup y fallas miserablemente?
¿Creaste alguna aplicación que haya sido descargada más de 10000 veces?
¿Comenzó un sitio web que ha sido visitado por más de 10000 visitantes cada mes?

Pon eso en tu currículum! La gente quiere escuchar acerca de tu experiencia.

Poner en el trabajo duro. Puede que no te pongas en el primer intento, tal vez tampoco en el segundo. ¡Haz el esfuerzo suficiente y podrás estar en la tercera vez!

Rompamos esto en secciones o pasemos a mi guía gratuita aquí

Desarrollo de codificación:

  • Aumente sus conocimientos de Java, Swift y HTML, así como de algoritmos y estructuras de datos.
  • Entra en competiciones de codificación competitivas para ‘forzar el progreso’
  • Asista a entrevistas en empresas de nivel inferior para obligarse a repasar el código
  • Enviar código a algunos proyectos de código abierto.
  • Desarrolle una aplicación o sitio web para un proyecto comercial para un amigo (de modo que se sienta moralmente obligado) que se encuentre fuera de su rango de experiencia

Desarrollo académico:

  • Si estás en la universidad / universidad, apunta a obtener los mejores resultados / GPA más cercanos a tus cursos como puedas
  • Vale la pena conocer un idioma “en demanda” como el ruso, el urdu o el español.

Desarrollo personal:

  • No todo el mundo está solicitando trabajos en SDE; así que vale la pena tener una habilidad externa interesante
  • Si tienes un pasatiempo en el que estás involucrado; perseguirlo más rigurosamente
  • por ejemplo, si haces cross-fit; entrar en una competición de cross-fit
  • Si corres, entra en 2x carreras de 10k
  • Si juegas ajedrez, participa en una competición de ajedrez competitiva.
  • Si no tienes un hobby. Encuentra uno

Preparación del curriculum vitae

  • Se aplican 3 millones de personas. 7k conseguir trabajos. Probablemente se entrevistó a 20 personas por cada trabajo (conjetura educada)
  • Llegar a la entrevista es difícil. Necesitas un currículum increíble
  • Nick una plantilla desde aquí. No cometas ESTOS errores
  • Una vez que esté listo, hágalo revisar por un / ex-googler / por mí / en Quora. NO ASUMAS que es lo suficientemente bueno
  • Preparación de la entrevista:

    • Tengo 60 respuestas en el área de Google Recruiting en Quora, donde soy el escritor más visto.
    • Obtener lectura
  • Lee cualquier cosa por Gayle Laakmann McDowell
  • Buscar programación / de lo contrario preguntas en Glassdoor
  • Practica con un amigo
    • Entonces practica de nuevo

    Otro:

    • Conoce a alguien en Google para obtener una referencia
    • Revise su progreso en 1/3/5 meses
    • Sonreír; prueba y disfrútalo 🙂

    Al obtener 2 años de experiencia profesional, debe aumentar el número de personas que conoce en cada compañía para incluir al menos 1 que lo remitirá internamente para un trabajo (además de obtener un buen conocimiento de los algoritmos y las estructuras de datos, lo que parece ser importante para Google). Esa es la única forma de garantizar una entrevista en cada empresa. Una vez que hayas hecho eso, entonces todo se trata de no fallar en la entrevista (sobre todo suerte si has estudiado lo básico).

    Por lo que he escuchado, las entrevistas de Facebook son bastante rutinarias, las entrevistas de Google se han vuelto mucho más fáciles (y ahora son casi de risa), y las navegará, o se estrellará y quemará. Es casi como si decidieran contratarte antes de poner un pie en la entrevista, y todo lo demás gira en torno a esa decisión. Para Facebook, debido a que las preguntas no son nada especial, esperarán que las resuelvas correctamente la primera vez y sin errores ni inconvenientes (pero esto debería ser bastante fácil si lo has practicado / preparado bien).

    Además, si bien estas dos compañías aún tienen aspectos positivos con respecto a su marca, están ganando en tamaño / BS y muchos candidatos calificados están eligiendo trabajar en otro lugar (… ¿startups?). Esto significa menos competencia en general y es una tendencia que será aún más notable / real en 2 años. Entonces, mientras trabaja para mejorar sus habilidades y su red, también debe ampliar su perspectiva lo suficiente como para ser consciente de otras grandes compañías que se presenten, y será menos probable que pierda tiempo y energía tratando de unirse a las que son antiguas. noticias “o que ya no son como lo anuncian.

    • Aprenda estructuras de datos y algoritmos tomando clases relevantes en su escuela, leyendo libros de texto, leyendo material en línea y viendo video conferencias. Asegúrese de entender todos los algoritmos y conceptos siguientes:
    • Amplia primera búsqueda
    • Primera búsqueda de profundidad
    • Búsqueda binaria
    • Fusionar clasificación
    • Ordenación rápida
    • Operaciones de arbol
    • Manipulación de bits
    • Recursion
    • Big-O Performance
  • Implementar estructuras de datos y algoritmos. Ver:
    • Algoritmos para implementar
    • Estructuras de datos para implementar
  • Si no tiene una comprensión básica de las estructuras de datos y los algoritmos, comience con una clase o un libro de texto. Estoy utilizando estructuras de datos y análisis de algoritmos en Java (3ª edición): Mark A. Weiss.
  • Obtenga un libro de preparación para la entrevista como Cracking the Coding Interview de Gayle Laakmann McDowell que incluye problemas de práctica de programación. Resuelve problemas del libro.
  • Busque en línea preguntas de entrevistas reales de las compañías con las que está entrevistando. Resolver problemas. Algunos sitios web populares:
    • CareerCup
    • TopCoder
    • GeeksforGeeks
    • Juez de Esfera Online (SPOJ)
    • Proyecto euler
    • HackerRank
  • También hay algunos buenos MOOCs (Cursos en línea masivos y abiertos) sobre algoritmos. He visto algunos sobre Coursera que podrían ser buenos como complemento de una clase de algoritmos (o un reemplazo, si no puedes tomar uno en tu escuela).
    • Algoritmos: Diseño y Análisis, Parte 1 (Stanford)
    • Algoritmos: Diseño y Análisis, Parte 2 (Stanford)
    • Algoritmos, Parte I (Princeton)
    • Análisis de los algoritmos (Princeton)
  • Al resolver problemas, emula el entorno de la entrevista. Si va a programar en una pizarra durante su entrevista, no solo resuelva los problemas de práctica en su computadora.
  • Aplicar a google / FB ahora. Aplicar otros lugares también.

    Consigue un trabajo en alguna parte; posiblemente en un inicio; posiblemente en su inicio. Si no está en Google o FB, solicite nuevamente en un año si realmente lo desea.

    Puede obtener una línea de base de DS y algoritmos haciendo blitz a través de un libro de preguntas o sitio web de entrevista en no más de 2 semanas, si ha estado expuesto a estos temas anteriormente (lo que debería ya que tiene un título de CS).

    Enfatice sus antecedentes, sus fortalezas y su cartera.

    No se quede libre por 6 meses a menos que sepa que producirá algunos proyectos realmente buenos para agregar a su cartera, o a menos que tenga alguna otra razón para no obtener un trabajo durante ese tiempo.

    Si vas por la ruta de inicio, ten en cuenta que no tiene que ser “real”. Muchas salidas multimillonarias son para nuevas empresas cuyo producto principal se conserva en el instante en que se adquieren; En retrospectiva, estos son solo proyectos de portafolio glorificados. No tenga miedo de llamar a su propio proyecto de cartera glorificada un inicio. (Probablemente estoy sonando cínico; no me refiero también, ni tampoco estoy descartando el verdadero talento de las nuevas empresas contratadas).

    1) Ser perfecto en un idioma.
    2) Referir a la Biblia ( Introduction to Algorithms es un libro de Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest y Clifford Stein)
    3) aprender los conceptos de abordar un problema es una parte, resolver el ejercicio es otra parte.

    Todo lo anterior te hará un fuerte contendiente.

    Sepa cómo varía la pregunta para una situación particular al participar en jueces en línea como Sphere Online Judge (SPOJ), uva.onlinejudge.org, Project Euler.

    4) Muestre su calibre y pasión participando en el codificador superior.
    5) Consulte la teoría de la computación (lo más importante en mi opinión)
    6) jugar con Linux SO de sabor.

    Manténgase actualizado con la última pregunta de la entrevista de GeeksforGeeks – Un portal informático para geeks y preguntas de entrevista de programación | CareerCup

    Y por último, pero no menos importante, intente contribuir a un foro en línea como Stack Overflow. Debido a que la enseñanza a veces dejará en claro los conceptos que también le darán reputación (siendo humanos).

    ¡No puedo ayudar a compartir mi experiencia con usted porque preparé mis entrevistas en 2 meses ! Ya que tienes más tiempo, definitivamente puedes hacer un mejor trabajo.

    • Si ya está bastante familiarizado con la estructura de datos y el algoritmo, puede omitir este punto. De lo contrario, pasar suficiente tiempo en esto. No puedo enfatizar más sobre este punto ya que es lo más fundamental para una entrevista con un ingeniero de software. Si no logras comprender bien las estructuras de datos básicos que aprendiste en la escuela, simplemente fallaste toda la entrevista. No estoy exagerando, una vez que hayas realizado varias entrevistas técnicas, te darás cuenta de lo importante que es. Los libros sobre la estructura de datos y el algoritmo están en todas partes, asegúrese de tener muy en claro los elementos básicos como el árbol binario, la cola, la pila, la lista enlazada, etc.
    • Después del primer punto, espero que le queden por lo menos 4 meses. Por favor, sumérgete en las preguntas de la entrevista real tanto como puedas. Hay toneladas de recursos en línea, como http://www.glassdoor.com, donde puede acceder a innumerables preguntas de entrevistas reales de empresas. Ya que está apuntando a Facebook / Google, pase la mayor parte de su tiempo en preguntas de entrevistas reales de estas dos compañías. No espere tener la misma pregunta de entrevista que preparó (aunque es posible), pero practicar con preguntas de entrevista reales lo ayudará a estar consciente de la dificultad, el estilo de cada compañía y lo que realmente les importa.
    • Practicar la escritura de código en la pizarra. Esto es lo que la mayoría de la gente ignora. Parece bastante simple a primera vista, ¿verdad? Pero no es una vez que lo intentas. Te perderás mucho de esos accesos directos de lujo en tus editores de texto e IDE favoritos y, además, es tan incómodo modificar el código como insertar otro fragmento de código en el medio. Pero debe superarlo, ya que la mayoría de las entrevistas reales le pedirán que escriba el código SOLID en la pizarra. No necesita ser compilado, pero debería estar casi allí. ¡No seudo código! Esto es cierto incluso para la entrevista de Google / Facebook, ya que durante la entrevista en persona estará “encerrado” en una sala de reuniones y seguirá escribiendo el código en la pizarra.
    • Practica con simulacros de entrevistas . Es una gran experiencia para que practiques de una manera en la que no puedes fallar. Puedes hacer esto con tus amigos y entrevistarlos de nuevo. También obtuve mi entrevista simulada de http://www.gainlo.co, cuyos entrevistadores están trabajando en Google, Facebook, etc. y me dieron un montón de comentarios.

    La entrevista personal y simulada es el enfoque más efectivo que he tenido, porque tendrá un sentimiento totalmente diferente cuando piense y resuelva problemas frente a una persona. Estarás nervioso y puedes fallar incluso con la pregunta más simple.

    Además, los entrevistadores de una entrevista real no le darán una respuesta auténtica, solo pueden decirle la respuesta oficial, que no es otra cosa que mentira. Sin embargo, un entrevistador simulado le ayudará a mejorar en todos los aspectos, especialmente si tiene experiencia.

    En resumen, 6 meses es suficiente para preparar entrevistas de trabajo para Google / Facebook. Dedique suficiente tiempo a la estructura de datos y al algoritmo, lo cual es realmente la base de cada entrevista SWE.

    Trabajé en Google e hice muchas entrevistas, así que creo que puedo dar un buen consejo al respecto, al menos suponiendo que está buscando un trabajo de ingeniero de software. Hay dos pasos.

    1. Obtener una entrevista
    2. Hacer realmente bien en la entrevista.

    Conseguir la entrevista es más fácil. Si su currículum no puede obtener una entrevista, debe mejorar su currículum. Trabaje en algunos proyectos de código abierto o personales, o consiga un trabajo que sea un “paso adelante” en su trabajo actual.

    Hacerlo realmente bien en la entrevista es más difícil. Es útil practicar las preguntas de la entrevista con personas que son mejores programadores que usted. Encuentre a esas personas, haga que practiquen con usted, y si piensan que lo están clavando, probablemente lo estén haciendo.

    En la práctica, no hay una solución rápida. A la larga, intente encontrar un trabajo en el que trabaje con las personas más inteligentes posibles, haga un gran trabajo e itere.

    Gracias por la A2A.

    No puedo garantizar, de buena fe, que obtendrá un trabajo en Facebook, Google o en cualquier otro lugar, dado cualquier consejo que pueda darle en esta respuesta. (Considere el hecho de que otras personas que están buscando empleo allí recibirían el mismo consejo, y puede haber más de esas personas que puestos disponibles. Si este es el caso, algunas personas no serían contratadas).

    Sin embargo, le sugiero que haga cosas que impresionen a las personas en Google, Facebook, etc., como trabajar en proyectos de código abierto, atascos de código, etc., donde pueda demostrar sus habilidades. Si puede impresionarlos con cosas que consideran fundamentales para su negocio, eso también podría ayudar.

    No se requiere un idioma específico para obtener una pasantía. Conocer las estructuras de datos y los algoritmos te ayudará mucho más.

    Por otro lado, una vez que obtenga una pasantía y quiera hacerlo bien (para obtener una oferta a tiempo completo), conocer un idioma bien definitivamente lo ayudará.

    Para Google, eso significa que debe conocer bien Java o C ++ (para el trabajo de back-end) o Javascript (para el trabajo de FE). Para Facebook y otras compañías puede variar un poco (Facebook usa PHP, MS usa C #, Apple usa ObjectiveC, etc.)

    Lo que realmente te ayudará es tener alguna experiencia real trabajando en proyectos más grandes. Intente contribuir con el código abierto, creando su propio proyecto paralelo o ayudando en algo que está sucediendo en su escuela.

    Recientemente me entrevisté con un grupo de las grandes empresas y logré obtener ofertas de unas cuantas. En primer lugar, me alegra que haya elegido un período de 6 meses en lugar de las 2 semanas típicas que toma la gente. Cometí el error de tomarme solo un par de semanas y desearía haberlo planeado mejor. Como mencionó Marcelo Juchem, lo peor que puedes hacer es quemarte. Vamos a desglosar la respuesta comenzando con los requisitos primero:

    Requisitos:
    Una vez que haya obtenido una entrevista de una de las grandes empresas, lo que está en su currículum solo importa muy poco. El currículum es más bien una tarjeta de “mete el pie en la puerta”. Sé que algunas personas no estarán de acuerdo, pero esta es la forma en que lo veo, a menos que su trabajo sea algo completamente fuera del mundo o usted sea un candidato de alto rango, su currículum es solo un corte y sus rondas técnicas son la marca o la elección. descanso. De mi propia experiencia actual, las experiencias anteriores y las experiencias de mis amigos aquí es lo que necesita hacer realmente bien en una entrevista de codificación típica:

    1. Necesitas terminar el problema. Tienes un típico de 30-40 minutos (después de que se intercambian las bromas) para terminar un problema.
    2. Necesitas que tu solución sea correcta. Esto tiene diferentes significados para diferentes entrevistadores. El número de errores que un entrevistador está dispuesto a tolerar varía enormemente. Según su suerte, podría ser penalizado por perderse un punto y coma, mientras que los entrevistadores más generosos podrían incluso perdonarlo por los errores “off by one” y demás.
    3. El problema típico está diseñado para requerir algunos trucos lindos para la solución más eficiente. También es extensible. Entonces, si ha codificado una solución subóptima (buen inicio ya) pero correcta con tiempo de sobra, es posible que le pidan que la haga más eficiente en términos de espacio / tiempo.

    Esto pinta un panorama muy sombrío, pero me he visto a mí mismo ya muchos de mis amigos negar oportunidades a pesar de terminar un problema. Los comentarios de los entrevistadores indicaron que necesitaban demasiados consejos para llegar allí, demasiado lentos para alcanzar el momento Aha, etc. Así que, aunque todos hablan sobre cómo abordar el problema, etc., su suerte determina hasta cierto punto lo que realmente es su entrevistador. buscando. Algunos entrevistadores solo están buscando que usted codifique una solución correcta eficiente (generalmente no la más eficiente) dentro de los 30-40 minutos asignados y muestre una visión clara mientras está en ello.

    ¿Qué puedes hacer para prepararte?

    1. Mira el material de preparación de la entrevista. NO intentes leer las soluciones en LeetCode o GeeksforGeeks: un portal informático para los geeks y conviértelo en un día. Estos sitios son de gran ayuda en el sentido de que proporcionan una colección de problemas de calidad y excelentes soluciones. Créeme, si repasa los problemas, olvidará los detalles. Vamos a tomar un elemento favorito de las grandes empresas – Programación dinámica. Para la mayoría de los problemas, como el sustrato común, la subsecuencia común, etc., no es muy difícil encontrar la subestructura óptima, pero aún queda mucho trabajo por hacer. Me he quedado atrapado durante una buena cantidad de tiempo tratando de averiguar qué tamaño debería tener mi tabla y qué índice debería comenzar exactamente para mis bucles. Esta es una posición terrible en la que estar. No puedo decirle lo frustrante que es quedarse atascado en detalles tan pequeños y no poder terminar a pesar de que conoce el algoritmo. Mi consejo es tomarse el tiempo para resolver el problema por su cuenta antes de echar un vistazo a una solución. Cuanto más tiempo hayas pasado preparando menos deberías mirar prematuramente. Si solo estás atascado, mira algunos párrafos e inténtalo de nuevo. Enjuague repetir. Supongamos que no puede encontrar una solución en absoluto (me sucede como el 90% del tiempo): lea la lógica e intente comprender el enfoque descrito en la solución. Luego codifícalo por tu cuenta. Tu objetivo debería ser aprender algo nuevo con cada problema, e incluso si lees la solución completa y simplemente codificas el algoritmo, aprenderás un poco. A veces es el momento raro pero asombroso de encontrar una solución. Otras veces es solo el proceso de paso tartamudeo de codificar un algoritmo conocido. Comprenda las soluciones difíciles en lugar de simplemente recordar los trucos. Ya sabes por qué XOR funciona como lo hace. ¿Puede ahora encontrar el único elemento único en una matriz donde todos los demás elementos ocurren 3 veces? Ya sabe cómo funciona el enmascaramiento de bits. ¿Puede ahora tomar un entero de 64 bits y cortarlo y cortarlo de cualquier manera posible?
    2. Lee buenos libros. Mi libro favorito fue El manual de diseño de algoritmos. Entra en gran detalle sobre el por qué, en lugar de solo lanzarle soluciones. Es muy divertido de leer y el código es limpio y extensible. No pude terminar la segunda mitad del libro antes de comenzar mis entrevistas, pero escuché que la segunda mitad es la más divertida. Tengo muchas ganas de leer la segunda parte ahora que tengo algo de tiempo libre.
    3. Mira las conferencias sobre Udacity y Coursera. Las clases de algoritmo de Princeton y Stanford son impresionantes. Las conferencias son de gran ayuda para comprender conceptos, pero el verdadero tesoro son las obras caseras. La oportunidad de discutir los problemas (en los foros), resolverlos por su cuenta y obtener comentarios es invaluable.
    4. Mira los problemas de TopCoder. Esta es la opción nuclear, pero solo intentar resolver los problemas del codificador en la arena de práctica ya es una gran cosa. Los requisitos de TopCoder son notablemente similares a los problemas de la entrevista: escriba una solución correcta y eficiente en un tiempo limitado. Algunos reclutadores realmente le hablarán sobre TopCoder. Ya que tienes 6 meses de tiempo, creo que vale la pena tratar de resolver los problemas, detenerse en sus foros, mirar las discusiones, etc.
    5. Practica tu codificación en un editor de texto plano para empezar. Sin resaltado de sintaxis, sin autocompletar, etc. Siempre compile su código y verifique dónde cometió errores. Esto te ayudará a satisfacer a los entrevistadores “sintaxis nazi” con los que te puedes encontrar. Una vez que lo hayas dominado, gradúate para escribir en una pizarra.
    6. Haz que tus amigos hagan entrevistas simuladas contigo y tómalos en serio. Si tiene amigos en grandes empresas, pídales que le den los 40 minutos impares necesarios para una entrevista. Tomar en serio sus comentarios.

    Una rutina que creo que funciona durante un largo período de tiempo es gastar inicialmente la mayor parte de su tiempo de preparación en los libros y las conferencias en línea y tal vez hacer uno o dos problemas al día. Siempre me sentí feliz de haber entendido una conferencia y de haber resuelto los mini cuestionarios, es una pequeña victoria que mantiene la moral en alto. A medida que avance, puede ser una buena idea aumentar la cantidad de problemas que resuelve.

    Finalmente algunas palabras de aliento. He fallado innumerables entrevistas (pasadas y presentes) y durante la temporada de entrevistas mis emociones se mueven desde la absoluta confianza hasta la total duda. Ha habido ocasiones en las que descubrí la solución un par de minutos después de que el entrevistador abandonara la sala. Luego repetí los escenarios de “qué pasaría si” en los próximos días. No me considero una persona muy inteligente, por lo que cualquier éxito limitado que haya tenido en mis entrevistas se debe al trabajo de preparación. La mayoría de las veces, cuando te rechazan las grandes empresas, simplemente significa que no estás lo suficientemente preparado. Deja un mal sabor de boca, pero no es el fin del mundo. Lo más importante es disfrutar del tiempo preparando. Escuche los comentarios de los reclutadores y no guarde rencor personal contra sus entrevistadores. Diviértase durante el proceso de aprendizaje y trate de no pensar en el objetivo de conseguir un trabajo con Google y Facebook. El valor y la alegría de aprender van mucho más allá de las perspectivas de un trabajo con las grandes empresas. Además, aprender sobre algoritmos y estructuras de datos palidecerá en comparación con las cosas que aprenderá sobre usted mismo. ¡La mejor de las suertes!

    Déjame ser práctico y preciso para ayudarte en el ejemplo real:

    Requisito de trabajo en Google en este momento:

    Responsabilidades

    • Liderar el esfuerzo de prueba desde la planificación y la organización hasta la ejecución y la entrega. Desarrollar estrategias de prueba efectivas.
    • Escriba o contribuya a los planes de prueba y / o casos de prueba en proyectos de tamaño mediano a grande de complejidad moderada.
    • Defender y educar a los equipos de productos / proyectos en el diseño e implementación de pruebas. Trabaje con esos equipos para evaluar la capacidad de prueba de las nuevas características / implementaciones.
    • Utilice su conocimiento de las pruebas y la capacidad de prueba para influir en un mejor diseño de software, promover las mejores prácticas de ingeniería, las estrategias de prevención de errores, la capacidad de prueba y otros atributos de calidad en todos los productos.
    • Demuestre la intuición y el conocimiento sobre cómo romper el software al encontrar errores y aplique este conocimiento con un resultado medible, lo que afectará la calidad del producto.

    Calificaciones

    Cualificaciones mínimas:

    • Licenciatura en Ciencias de la Computación o experiencia práctica equivalente.
    • 3 años de experiencia desarrollando automatización de pruebas en C ++, Java o Python.
    • Experiencia en redacción de planes de prueba, asesoramiento, creación de casos de prueba y depuración.
    • Experiencia experimentando metodologías y ciclo de vida de desarrollo de software.

    Calificaciones preferidas:

    • Maestría en Ciencias de la Computación, Matemáticas o disciplina técnica relacionada.
    • 6 años de trabajo relevante y experiencia en la industria.
    • Experiencia con Selenium / Webdriver.
    • Proyecto probado y habilidades de liderazgo de equipo.

    Fuente:

    Búsqueda de empleo – Google Careers

    Una vez que vea este anuncio, lo que significa que tiene seis largos años para construirse de la siguiente manera:

    Aprende Selenium Webdriver:

    Algunos libros de nivel de inicio que pueden referirse:

    Una vez aprendido, solicite INTERN en Google:

    Búsqueda de empleo – Google Careers

    Responsabilidades

    • Las responsabilidades específicas varían según el área del proyecto.

    Calificaciones

    Cualificaciones mínimas:

    • Actualmente cursando una licenciatura o maestría en ciencias de la computación o campos técnicos relacionados.
    • Debe estar actualmente inscrito en un programa de grado de tiempo completo y regresar al programa después de completar la pasantía.

    Calificaciones preferidas:

    • Experiencia en software de sistemas.
    • Fecha prevista de graduación en la primavera / verano de 2018 o finales de otoño / invierno de 2017.
    • Proyectos completados o clases enfocadas en estructuras de datos y algoritmos.
    • Conocimiento de entorno Unix / Linux o Windows, y APIs.
    • Familiaridad con TCP / IP y programación en red.
    • Habilidades de implementación (C ++, C, Java, Python).

    Una vez que se complete el pasante, vaya a otras compañías para trabajar por 6 años más y vuelva a Google como Ingeniero Senior.

    ¡ACTUALIZA mi respuesta si es práctico!

    Para descifrar la Entrevista de Google, tiene que Comer, Beber, Dormir, Ducharse, Jugar, Amar, Usar, Conducir, Orinarse, Caca y Vómito, Algoritmo y DS (por ejemplo, en C ++, JAVA, C #).

    Este artículo explica información detallada para preparar entrevistas para trabajos de ingeniería de software de Google.

    Versión año 2015 – Cómo descifrar la entrevista de Google

    [Respuesta general para las entrevistas técnicas en MS / Google / Amazon / Facebook / Apple, etc.]

    Recuerde: la entrevista técnica depende de varios parámetros, desde el lado del empleador, por ejemplo, título del trabajo, responsabilidad, departamento, tipo de proyecto, tipo de tecnología, tipo de habilidades, años de experiencia, mentalidad de entrevistador / entrevistador, requisitos inmediatos, decisión firme para contratar-nohire y muchos más. Desde el lado del candidato, por ejemplo, la forma en que se presentó el CV (curriculum vitae), la forma en que el candidato llevó a cabo la discusión técnica / no técnica y mucho más)

    Es posible que no sugiera ningún sitio web en particular o las preguntas más difíciles para prepararse para tal preparación para la entrevista. Sin embargo, la mayoría de las preguntas incluye el truco, la presencia mental y la forma en que entiende los conceptos más necesarios de la informática, y el más importante es : Algoritmos y estructuras de datos. Las preguntas pueden ser diferentes, pero todas utilizan los conceptos básicos de DS / Algo para resolverlo.

    Preguntas de muestra fija (depende de la posición SDET o SDE [Si SDET también prueba los casos))

    [+] Dado un conjunto S de n números reales y otro número real x, determine si existe o no. dos elementos en S cuya suma es exactamente x.

    [+] Dada una lista de números (una lista fija) y otra lista, escriba una función que determine si algún elemento de la segunda lista aparece en la lista fija.

    [+] usa una estructura de datos trie para almacenar palabras. cada nodo contiene una lista de todas las letras (punteros a la misma estructura de nodo) e indicadores para cada letra para indicar la longitud de la palabra. Escribe un método para insertar en este tipo de estructura de datos. ¿Qué utilizarías para almacenar cada nodo?

    Mucho mas….

    EJEMPLO DE ENFOQUE:

    Puede diseñar un enfoque que se adapte mejor a sus parámetros relacionados con sus habilidades / (y muchos otros)

    Ejemplo: alguien puede usar el siguiente enfoque para un plan de dos meses: alrededor de 250 horas para preparar un ingeniero de software / ingeniero de software en el tipo de prueba de entrevistas para MS / Google / …

    En realidad, todas estas compañías, por ejemplo, MS, Google, Amazon, Facebook, Apple siguen un enfoque en el que se mide el proceso de pensamiento de un candidato.

    Y usan diferentes medios para evaluar eso, pero sí, la mayoría de ellos utiliza Algoritmos / Estructuras de datos / Preguntas abiertas (si ha solicitado un trabajo de ingeniería de software) como uno de los enfoques para evaluar el talento. Base para desarrollar las tecnologías).

    Para estar acostumbrado a algos / estructura de datos / codificación, debe haber comprendido / practicado el mínimo, por ejemplo:

    (Paso 1): debe tener un conocimiento práctico de los algoritmos (por ejemplo, cuándo usar BackTracking, cuándo usar Divide y Conquer, ¿por qué se requiere doble hashing? ¿Dónde se puede aplicar el concepto de fuerza bruta?) ( 50 horas).

    (Paso 2): Debe tener un conocimiento práctico de las Estructuras de datos, por ejemplo (Casos prácticos de uso relacionados con: cuándo usar un búfer circular, o cuándo usar una lista adyacente o la combinación de ambos o alguna otra cosa para resolver el problema).
    (50 horas)

    (Paso 3): debe practicar varios problemas de codificación para implementar las cosas que se aprenden en el Paso 1 y en el Paso 2 (puede hacer lo siguiente: elija cualquier lenguaje de codificación para su elección (C, C ++ o Java o Python) o PHP o cualquier otro).
    (50 horas)

    (Paso 4): Resolver el problema no significa solo resolverlo, sino entender la mejor manera de resolverlo, por ejemplo, el problema técnico dado puede usar varias formas de solucionarlo, y es posible que desee utilizar la solución óptima. . (Cómo conecta la solución dada con los recursos de computación / memoria, por ejemplo, Memoria / Potencia de procesamiento)
    (50 horas)

    Sin embargo el más importante.

    Sin embargo, aparte de la programación, es posible que deba comprender que el concepto principal de la entrevista es mantener la entrevista activa y esto requiere cierta acción de su parte, como la siguiente:

    Necesitas hablar.

    Usted necesita explicar

    Necesitas discutir.

    Necesitas expresar tus puntos de vista.

    Necesitas entender claramente las preguntas que se te dan.

    Debe comprender la expresión y la mentalidad del entrevistador para comprender esas preguntas.

    Es posible que deba hacer las preguntas apropiadas para comprender la pregunta o cualquier otro tema de discusión. (50 horas)

    Y también :

    Prepare: “Hábleme de usted mismo”, “Sus habilidades relacionadas con el interés adicional positivo / negativo”, Conceptos básicos para los conceptos informáticos más necesarios o cualquier cosa que haya presentado en su “CV / CV”.
    (10 horas)

    Lo anterior es solo un plan de muestra, puede personalizar la forma que desee (p. Ej., 50 horas a 10 horas o algo más): haga clic en Amazon para encontrar los mejores libros que pueda necesitar (p. Ej., Algoritmos Cormen)

    (Aquí Google no se refiere a Google, significa a cualquier compañía que sea muy creativa para presentar los productos relacionados con la informática).

    (Suponiendo que está pasando 4 horas todos los días)

    ¿Por qué Google no te contratará?

    Aquí, Google no se refiere a Google, significa a cualquier compañía que sea muy creativa para presentar los productos relacionados con la informática, por ejemplo, Google, Microsoft, Apple, Amazon, Facebook, o cualquier otra persona que usted considere que es un ajuste razonable.

    Consulte el ppt adjunto, que proporciona algunos puntos que podrían ser útiles para planificar las cosas que faltan a su alrededor, si existen.

    ¿Por qué google no te contratará?

    Esto, por supuesto, está de acuerdo con mi opinión y experiencia. YMMV, pero espero que ayude:

    La parte más importante que la gente suele pasar por alto:

    Siempre digo que 30 minutos de estudio al día es mucho mejor que 3h 30min una vez por semana. Estudiando a menudo, el cuerpo trabaja de una manera de usarlo o perderlo. No hay necesidad de estudiar durante 8 a 10 horas seguidas, de hecho, lo desalentaría debido al riesgo de agotamiento . Planee pequeñas sesiones, planee pequeños y grandes intervalos durante el día. Haga que estos intervalos sean flexibles (no lo haga en un gran intervalo si tiene ganas de mantenerse al día; no se detenga durante solo 15 minutos si está realmente cansado). Descanse lo suficiente, especialmente una buena noche de sueño, que es cuando el cerebro almacena información. Nadie piensa con claridad cuando está cansado o con hambre (eso también se aplica a las entrevistas). No te vayas a dormir justo después de una sesión de entrenamiento cerebral intenso, toma un tiempo apagarlo. Deténgase por lo menos dos horas antes de irse a la cama y no haga nada o al menos algo relajante (no videojuegos, usualmente están estresados ​​como cualquier otra actividad desafiante). Simplemente no ignore las señales que recibe de su cuerpo y no intente entrar en modo héroe, solo mantenga su ritmo y apunte a un progreso constante.

    Al estudiar los algoritmos, las estructuras de datos y la solución para entrevistar preguntas, nunca intente memorizar el código. En su lugar, debe centrarse en comprender cómo y por qué funciona la solución. ¿Cuál es la motivación detrás del problema? ¿Cómo podrías usarlo para resolver problemas del mundo real? ¿Cuáles son las ideas, las observaciones inteligentes hechas sobre las restricciones del problema que hacen posible la solución? ¿De qué detalles del problema se aprovecha la solución para obtener un ahorro de espacio / ganancia extra de rendimiento? ¿Dónde apesta el algoritmo / estructura de datos / solución? ¿Cómo podrías hacerlo mejor? ¿Qué pierdes y ganas al hacerlo? Para el problema específico en cuestión, ¿qué solución presenta las compensaciones más aceptables?

    No se centre demasiado en el objetivo final, todo el proceso debe ser gratificante. Si no estás disfrutando preparándote para las entrevistas, es probable que lo estés haciendo mal, por las razones equivocadas o simplemente que estés persiguiendo la carrera equivocada. Aprender, comprender, superar los desafíos y mejorar las cosas es increíble por sí solo, obtener el trabajo es solo una buena consecuencia de tu buen trabajo. Recuerde: no solo está tratando de obtener el trabajo, sino que también desea mantenerlo después, y probablemente no será muy diferente de lo que ya está haciendo mientras estudia. Tampoco ha terminado cuando recibe la oferta; de hecho, nunca ha terminado.

    Se humilde. Nadie aprende lo que cree que ya sabe. Nadie mejora lo que creen que ya son buenos. La única competencia que tienes es tú mismo, así que sé honesto contigo. Deja tu ego fuera de la puerta.

    Si crees que estás listo para la entrevista porque sabes lo suficiente, probablemente necesites preparar un poco más ( http://en.wikipedia.org/wiki/Dun …). Si crees que no estás listo, eso podría no significar nada ( http://en.wikipedia.org/wiki/Imp …).

    No renuncies si fallas en una entrevista. En su lugar, trata de identificar y aprender de tus errores. El proceso de entrevista tampoco es perfecto, sí ocurren falsos negativos.

    Al igual que todos los problemas técnicos que tendrá que resolver durante las entrevistas, la mayor diferencia radica en los detalles más pequeños. De eso se trata esta sección, los detalles en los que no siempre pensamos, pero que impactan silenciosamente en el resultado final.

    Formato de las entrevistas:

    La mayoría de las entrevistas para roles de ingeniería de software se dividen básicamente en tres categorías: (1) ajuste de comportamiento / cultura, (2) diseño de sistemas y (3) programación / algoritmos.

    La mayoría de las veces será entrevistado para (3), pero es posible que el mismo entrevistador lo esté evaluando para más de una categoría al mismo tiempo.

    En lo que concierne a (1), es útil ponerse en la posición del entrevistador y preguntarse: ¿me gustaría trabajar con este chico todos los días durante el próximo año? ¿Me tomaría una cerveza con él o lo invitaría a almorzar y hablar sobre mi fin de semana? ¿Podremos yo y el resto de la compañía confiar en él como un compañero?

    La importancia dada a (2) es directamente proporcional a la experiencia que tiene en la industria. Como nuevo graduado, no debes preocuparte demasiado por eso, pero tampoco lo descuides.

    Tenga en cuenta este formato mientras estudia, ya que refleja el trabajo diario que hará si obtiene el trabajo. Ese es el propósito de la entrevista en primer lugar, ¿verdad? A ver si eres un ajuste para el papel.

    Dónde encontrar material de estudio:

    • Este blog es asombroso, no solo enumera varios problemas técnicos, sino que también propone diferentes enfoques para resolverlo mientras brinda una buena explicación: GeeksforGeeks: un portal informático para geeks.
    • Esta es una lista de preguntas de la entrevista que compilé cuando estaba en una situación similar a la suya: https://github.com/juchem/prep
    • No quiero sonar como un idiota que se cita a sí mismo, pero he escrito una respuesta similar que podría ser de alguna ayuda: la respuesta de Marcelo Juchem a ¿Cómo mantienes tus habilidades de programación afiladas? ¿Cómo aprendes nuevos lenguajes de programación?
    • En el pasado, usé Glassdoor, una mirada al interior de los trabajos y las empresas. Puede buscar preguntas de la entrevista específicas para el rol y la compañía a la que desea unirse. No solo busque las preguntas, sino también la experiencia que tuvo el candidato durante la entrevista. Sin embargo, tenga en cuenta que notará que hay un patrón frecuente: algunas personas culpan al entrevistador cuando fallan. Por supuesto, hay muchos malos entrevistadores, pero saber cuándo admitir que cometiste un error es la clave para aprender de tus errores. Tenlo en cuenta mientras revuelves los mensajes. Uno puede aprender mucho de las experiencias de otras personas.
    • Consigue un buen libro de algoritmos. Utilicé Introducción a los Algoritmos | The MIT Press por Cormen et al. Es posible que desee omitir algunas o la mayoría de las pruebas matemáticas de corrección y complejidad, ya que son demasiado densas y requieren mucho tiempo para su propósito. Algunos puristas podrían decir que no deberías, pero seamos honestos: no estás intentando escribir una tesis, así que sé pragmático. No se beneficiará mucho de leer todo el libro, concéntrese en los capítulos que cubren lo básico. En la tabla de contenidos presentada en el enlace anterior, leí los capítulos 1-18, skim hasta 19-20, 21-24, skim hasta 25-27, definitivamente 32 y skim hasta 34-35. Eso es mucho, lo sé, pero es una base sólida para todo lo demás que encontrarás. Usa tu mejor criterio para decidir cuándo saltarte cosas.
    • detén lo que estés haciendo y comienza a leer Programming Pearls de Jon Bentley si aún no lo has hecho. Ahora mismo. Antes de nada. Él. Es. Rey.
    • Podría ser útil repasar los primeros capítulos de un buen libro de sistemas operativos (utilicé Modern Operating Systems, 2ª ed.), al menos la parte sobre procesos, hilos, mutexes, semáforos … sin embargo, no se deje llevar. Ya que estamos en el tema, el breve artículo Mutexes y semáforos desmitificados es una necesidad de leer. Los semáforos son, en mi humilde opinión, la primitiva de sincronización más mal entendida y mal utilizada / subutilizada.
    • Cuando se trata de algoritmos, simplemente puede escribirlos, compilarlos y ejecutarlos en su máquina. Ahora el diseño de sistemas es un poco más difícil de estudiar porque necesita un entorno adecuado para implementar el sistema, datos para procesar y cargar para probar los casos de esquina. Ayuda si enfrenta estos problemas en su trabajo diario, pero no todo está perdido si no lo hace. Hay buen material por ahí. Introducción a la recuperación de información es un libro impresionante sobre el tema. Al igual que Cormen, es probable que desee seleccionar algunos capítulos para leer debido al tiempo limitado que tiene. Sugiero los capítulos del 1 al 5 para que comprenda los conceptos básicos, que le brinden los antecedentes suficientes para encontrar soluciones razonables y eficaces.
    • Hay algunos conceptos y algoritmos básicos ampliamente utilizados en el diseño de sistemas que puede leer, como: hash consistente, tabla hash distribuida, Paxos ( http://research.microsoft.com/en …), Shard (arquitectura de base de datos)
    • Otra forma de estudiar el diseño de sistemas es leyendo artículos sobre sistemas reales, como Kademlia. Google tiene algunos artículos clásicos sobre esto, a saber: Publicación de Google Research: BigTable, Publicación de Google Research: MapReduce, El Sistema de archivos de Google (el nombre puede ser engañoso, no es un sistema de archivos de propósito general, una simplificación mejor sería un almacenamiento para Aplicaciones que escriben datos solo de manera agregada o principalmente: considere un servicio que registra alguna actividad en tiempo real, que luego se procesaría por lotes con un trabajo de MapReduce), Chubby Distributed Lock Service, Google Research Publication: Paxos Hecho en vivo, Megastore: ofrece almacenamiento escalable y altamente disponible para servicios interactivos … También puede encontrar toneladas de cosas aquí: Ingeniería de Facebook

    Cómo progresar:

    • Comience por decidir cuánto de su día desea dedicar a la codificación, a leer sobre algoritmos, a resolver problemas, a leer sobre el diseño de sistemas … Experimente esto y siga calibrando hasta que encuentre lo que más le convenga desde YMMV.
    • cada vez que encuentre un tema nuevo, intente identificar cualquier dependencia en cosas que aún no haya estudiado. Crear un gráfico de dependencias te ayuda a realizar un seguimiento de las cosas (el punto de graphviz es tu amigo: Graphviz – Software de visualización de gráficos). Ayuda saber cuánto queda todavía por hacer.
    • lleve un registro de su progreso y ajuste su plan en consecuencia: así podrá ajustar todo en el tiempo que tenga disponible. Tome decisiones conscientes sobre cuándo incluir o dejar algo fuera de su plan. Lleve un registro de la cantidad de páginas por hora / día de información técnica que puede leer, de cuántos problemas por día puede resolver … Actualice esta información periódicamente y úsela para realizar ajustes en su plan. Esto también lo ayudará a motivarse porque tendrá métricas claras y concretas sobre el progreso que está logrando.
    • Revise, de vez en cuando, los problemas que ya resolvió y los algoritmos y estructuras de datos que ya implementó. Te sorprenderá lo mucho que un individuo puede olvidar. Recuerda, úsalo o pierdelo. Nuestro cerebro aprende por repetición. Cada vez que lo hagas notarás que tu velocidad y precisión mejorarán.
    • Encuentra a alguien que comparta tus metas. Puede que no suene muy intuitivo, pero explicar cosas es un ejercicio asombroso para comprender y memorizar ideas complejas. Discutir soluciones también ayuda a ver las cosas desde un ángulo diferente al que normalmente estás predispuesto a no ver.
    • como una alternativa no exclusiva para encontrar a alguien que estudie contigo, escribe tu propio blog, publica tu código o comparte tus experiencias en línea de alguna manera. Es probable que alguien se beneficie de ello. Si hace un buen trabajo, incluso podría llamar la atención de la gente de las compañías a las que desea unirse. Simplemente no te obsesiones con esta idea porque puede desviarte de tu plan.
    • construya su propia biblioteca de software a medida que avanza con estructuras de datos y algoritmos. Siempre que sea posible, utiliza tu propia biblioteca. No apunte a la biblioteca de última generación con plantillas / genéricos más reutilizables. Tu objetivo es simplemente ejercitar lo que estás estudiando. La escritura en la biblioteca es la mejor manera que conozco para ejercer el diseño de software. Sin embargo, tenga en cuenta que una biblioteca sin un caso de uso no será lo suficientemente madura como para ayudarlo en esto. Este video podría ayudar:

    Actualización : aquí se puede encontrar una versión revisada y actualizada de esta respuesta: Cómo prepararse para una entrevista de ingeniería de software