Zynga vino a mi campus para el puesto de ingeniero de software. Primero realizaron la prueba basada en computadora, donde hicieron 3 preguntas de codificación y 15 preguntas de aptitud. Nos dieron 60 minutos para resolver tanto la codificación como la aptitud. Las 3 preguntas de codificación fueron:
- Encuentra el primer elemento que no se repite en una array
- Intercambiar por parejas elementos de una lista enlazada cambiando los enlaces
- Recorrido en zigzag del árbol de búsqueda binaria.
21 estudiantes fueron preseleccionados para la siguiente ronda de entrevistas. En la ronda de entrevistas, a todos se les hicieron preguntas diferentes. Me preguntaron estructuras de datos, Linux, Algoritmos, Diseño de Sistemas. Pero a algunos de mis amigos solo se les preguntó estructuras de datos y algoritmos para las 3 rondas.
La ronda 1:
- Implementar git diff (implementación básica) de manera eficiente
Expliqué mi enfoque para tokenizar primero mi documento y usar la estructura de datos de Tries para el documento original, aunque fue eficiente en términos de complejidad de tiempo pero no de espacio. Entonces, el entrevistador me explicó cómo hacerlo con la ayuda de hash (usando MD5). No lo probé, pero si alguien lo sabe, por favor responda en la sección de comentarios.
- que pasa cuando corres
ls
.
El entrevistador quería que rastreara la llamada al sistema y el proceso de bifurcación, ejecución, finalización, etc.
- Prueba matemática de por qué el programa de números primos funciona incluso si viaja solo hasta sqrt (n)
Lo hice usando algunas variables, notaciones y, en última instancia, probando el punto.
La ronda 2:
- Dado un diccionario de palabras como un archivo de texto para usted, Su entrada es una palabra que devuelve todas las palabras del diccionario cuyo prefijo es la entrada de palabra dada. El diseño debe ser eficiente en términos de complejidad de tiempo. Básicamente, quería que yo desarrollara el autocompletado.
Lo hice usando Tries y usé DFS para recorrer y almacenar todas las predicciones.
- Diseñar y desarrollar un servidor web (por ejemplo, apache, nginx)
El diseño es un tema muy subjetivo y, además, nunca he trabajado mucho con el diseño y los sistemas distribuidos en mi ingeniería. Solo sabía la parte de teoría que estudié en línea y de libros. Así que supongo que mi entrevistador no estaba satisfecho con mi diseño de servidor web. Por lo tanto, fui rechazado después de esta ronda.
Ronda 3:
Ya que me rechazaron, pero me enteré por mi amigo que le preguntaron sobre la estructura de datos y los algoritmos, así como sobre los fundamentos de C y C++. Por ejemplo, qué sucede cuando usa un nuevo comando, rastree todas las llamadas al sistema.
Para tu referencia :
Esperaba que la respuesta fuera sobre
new->malloc(), mmap(), brk(), sbrk().
Los entrevistadores fueron muy amables y nos ayudaron si nos atascamos en algunas cosas pequeñas o tontas.
Para más preguntas por favor pregunte en la sección de comentarios.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA