Cómo prepararse para una pasantía técnica de verano en Google en India

¿Se está preguntando cómo obtener una excelente pasantía en una empresa líder? Tome una copia de mi libro electrónico para saber qué es lo que se necesita para conseguir un trabajo con empresas como Google, The New York Times y nuevas empresas.

Cómo obtener una pasantía en Google por Evan Harold Carmi

Solicitar una pasantía en Google

Descargo de responsabilidad: esta publicación ha recibido cientos de miles de visitas, incluyendo estar en TechCrunch y Hacker News. A algunas personas les gustó, y a otras no.

No compartí nada que me pidieron que no compartiera, y no he recibido ninguna solicitud para cambiar o eliminar esta publicación. El proceso de contratación es complicado, y creo que es importante una discusión abierta sobre las prácticas actuales en nuestra industria. Si me va a entrevistar y tiene una opinión / inquietud sobre este artículo, créelo. Charlemos.

Como la mayoría de los estudiantes de informática que buscan una pasantía de verano, solicité admisión en Google.

Envié mi solicitud en su sitio web el 31 de diciembre de 2010 y recibí un correo electrónico de agradecimiento. Aproximadamente diez días después, me enviaron un correo electrónico automático pidiéndome que completara un formulario de preferencia de candidato Beta de la hoja de cálculo de Google.

No escuché nada durante un mes y medio. Y luego, el viernes 25 de febrero, a las 5:06 pm, recibí un correo electrónico de un miembro del Equipo de Personal de Ingeniería, Hadas:

Hola Evan

¡Gracias por tu interés en Google!

Hemos revisado su currículum y nos gustaría saber más sobre usted. Estamos interesados ​​en hablar con usted sobre una posible pasantía de ingeniería de software de verano en una de nuestras oficinas en América del Norte. Para comenzar el proceso, nos gustaría recopilar un poco de información de usted:

Inmediatamente llené los formularios y respondí.

A las 9:30 pm esa misma noche recibí otro correo electrónico:

Hola Evan

Gracias por completar los formularios. He enviado toda su información a Becky (cc’d), el reclutador, que se comunicará con usted.

Buena suerte 🙂

Le envié un correo electrónico a la reclutadora, Becky, y al día siguiente recibí noticias de ella. En este punto, me impresionó cada vez más su capacidad de respuesta. Había estado hablando con otras compañías y todos habían sido muy lentos y desorganizados respondiendo a mis correos electrónicos.

Ella explicó el proceso de solicitud:

Para darle algunos antecedentes, estos son los pasos para solicitar una pasantía en Google: Primero, hará 2 entrevistas telefónicas técnicas (45 minutos cada una). Si las entrevistas van bien, su información se compartirá con posibles anfitriones internos para que la revisen mientras trabajamos para identificar un proyecto que esté en línea con sus antecedentes e intereses. Una vez que se determine una coincidencia sólida, me pondré en contacto con usted para programar una entrevista con el anfitrión (llamada telefónica de 30 minutos).

Esto no terminó siendo el proceso para mí. De hecho, tuve tres entrevistas telefónicas técnicas (en lugar de solo dos), pero lo abordaré más tarde.

Quería resolver mis planes de verano lo antes posible, así que programé dos entrevistas consecutivas para el lunes siguiente. En este punto, había tenido noticias de ellos el viernes después de las 5pm, y tenía entrevistas programadas para el lunes. Parece que a los Googlers no les importa trabajar los fines de semana.

Entrevista técnica # 1

Tuve que leer y firmar algunos formularios antes de las entrevistas. Los leí con mucho cuidado y no parecía que me prohibieran explícitamente hablar de las entrevistas. Espero no recibir una carta de los abogados de Google informándome de que rompí algún acuerdo. Aunque una carta de Google de cesar y desistir sería un buen adorno de pared.

Me llamó un ingeniero de confiabilidad del sitio que ha trabajado en la industria durante 30 años. Era el más amable de los tres entrevistadores técnicos, y esta entrevista fue la mejor.

Vio a Django en mi currículum y me hizo algunas preguntas sobre el sistema de plantillas. Algo en la línea de:

  • ¿Cómo podrías mejorar mejor la plantilla de Django?

Luego me hizo algunas preguntas que deberían implementarse en Python. Solo necesitaba describir las soluciones y no necesitaba codificarlas. Cada pregunta comenzó simple y se hizo cada vez más difícil a medida que agregaba funcionalidad o requisitos.

Escriba una función con la siguiente especificación:

  • Entrada: una lista.
  • Salida: una copia de la lista con los duplicados eliminados.

Ok, ahora, cambie la función para eliminar las últimas instancias de duplicados en lugar de las primeras instancias.

Modifícalo para eliminar el n

th

instancia de un elemento dado para ser eliminado

Después de una broma que desde que todavía estaba en la escuela y que estaba fresca en mi mente, me hicieron algunas preguntas sobre las estructuras de datos.

¿Cuál de las siguientes estructuras de datos garantiza la búsqueda de O (lg (n)):

  • Árbol rojo-negro: sí.
  • Árbol AVL: sí.
  • Árbol de reproducción: no (tienen la propiedad de que los elementos a los que se accedió recientemente son de acceso rápido nuevamente, pero esto hace que la búsqueda sea O (n) en el peor de los casos.
  • y otros que olvido.

Por último, algunas preguntas específicas del lenguaje Python:

  • ¿Qué significa el asterisco antes de un parámetro en una declaración de función?
  • ¿Qué significa un asterisco doble antes de un parámetro en una declaración de función?
  • ¿Qué declaran [] , {} , () .
  • ¿Cuál es la diferencia entre () y (,) ?

Su última pregunta real era si tenía alguna pregunta para él. Charlamos un poco y luego me dejó ir para que pudiera relajarme durante diez minutos antes de que llamara el siguiente entrevistador.

Entrevista técnica # 2

Esta entrevista fue mucho más difícil. Y eso fue porque tuve que escribir código real.

Mi entrevistador era algo nuevo en Google y estaba trabajando en el equipo de Herramientas para webmasters. Se graduó hace tres años de Carnegie Mellon y dijo que Google fue su primer trabajo.

Ella me había enviado un enlace a un documento de Google y me pidió que lo abriera. Lo abrí y ella me dijo la pregunta:

Implemente el siguiente algoritmo en C válida en el documento compartido de Google:

  • Entrada: una matriz de enteros ordenados.
  • Salida: el índice de un entero particular.

Una búsqueda binaria en C. Por supuesto, ella no me dijo que era una búsqueda binaria, en realidad no me dijo nada más. Una vez que obtuve una implementación recursiva que aparentemente funcionaba (nunca probé mi código después), me dijo que había un error. Este proceso se repitió varias veces mientras buscaba errores en mi cálculo de índice y olvidé manejar el caso “no en la lista” (retorno -1).

Me gustaría señalar que, dado dos horas completas y cualquier lenguaje de alto nivel (incluido el pseudocódigo), solo el 10 por ciento de los programadores profesionales implementaron la búsqueda binaria correctamente, según Jon Bently.

No había escrito ningún código C durante al menos unos meses. Cuando comencé a tratar de recordar la sintaxis adecuada sabiendo que estaba siendo observada, deseé haber estudiado C antes de la entrevista.

Esta sola pregunta ocupó la mayor parte de la entrevista de 45 minutos, y no recuerdo ninguna de las otras preguntas.

Originalmente me dijeron que solo tendría dos de estas entrevistas técnicas. Más tarde esa noche, después de las entrevistas, recibí una llamada del reclutador. Ella me dijo por teléfono que en realidad querían tener una tercera entrevista conmigo. No estoy seguro exactamente por qué fue esto, y ella no quiso dar más detalles. Supongo que hice lo suficientemente bien como para seguir adelante, pero no lo suficientemente bueno como para contratarme directamente. Planeamos la tercera entrevista para el jueves.

Entrevista técnica # 3

Me llamó un tipo que, desafortunadamente, no fue tan amable como el primer entrevistador. Me preguntó qué clases de informática había tomado, y sonó condescendiente al escuchar mi respuesta (era estudiante de segundo año y estaba en mi quinto curso de informática en ese momento).

Preguntó cuáles habían sido mis proyectos más difíciles, y luego comenzamos. Quería que escribiera un código, pero no había creado un documento de Google como el entrevistador # 2, por lo que dijo que solo le diría qué código escribir por teléfono. Esto sonaba miserable. Le sugerí que creara un documento de Google, y lo hizo. El problema era:

Implemente un algoritmo que verifique si un rompecabezas de sudoku está resuelto correctamente o no.

Podría hacer esto en Python. Los parámetros de entrada y todo lo demás dependían de mí. Por suerte, sabía algo sobre los rompecabezas de sudoku. Lamentablemente no había resuelto uno en años.

Tengo una solución que funciona, pero no fue terriblemente corta ni limpia.

Casi

Al día siguiente recibí un correo electrónico del reclutador (ella me llamó cuando quería que procediera con otra entrevista, así que supuse que un correo electrónico era una mala señal):

Hola Evan

Gracias por tomarse el tiempo para entrevistar para el puesto de pasante de ingeniero de software en Seattle / Kirkland. Todos los comentarios han sido revisados ​​de las entrevistas y en este punto no avanzaremos en el proceso. Sé que este no era el resultado que esperábamos. No podemos agradecerle lo suficiente por su interés en las carreras y la cultura única de Google; Esperamos que siga entusiasmado con nuestra empresa. Si tiene alguna pregunta, no dude en ponerse en contacto conmigo.

En exactamente una semana, había pasado por todo el proceso desde que me contactaron hasta tener tres entrevistas técnicas y recibir una respuesta. Con mucho, el proceso más rápido de cualquier empresa con la que hablé.

Realmente tuve la sensación de que la suerte era una gran parte de eso. Si hubiera implementado más recientemente una búsqueda binaria, algo que tuve que hacer el año pasado en una clase, y estaba más fresco en mi mente, podría haberlo hecho más rápido y con menos errores. Si me encantara resolver sudoku, el segundo problema probablemente hubiera sido más fácil. Al final, si tienes suerte y la pregunta que te hacen es algo con lo que estás familiarizado, entonces tienes suerte. Tenía la sensación de que no les importaba mucho la experiencia previa. Solo importaba cómo le fue en sus entrevistas en respuesta a algunas preguntas específicas.

Refrance by: Evan Carmi | Consultor Tecnologico

Para los pasantes, verifican tanto la implementación como las habilidades lógicas. Es mejor si conoce STL en C ++. También intente mejorar su conocimiento de las estructuras de datos y algoritmos. Son la base para cualquier programador. Intente resolver tantos problemas como sea posible relacionados con la codificación de sitios como Codechef, TopCoder, Spoj, etc. Le sugiero que busque un libro “Cómo descifrar la entrevista de codificación de Gayle Laakmann McDowell”. También intente resolver los problemas que Google le pidió a GlassDoor y CareerCup.

Le aconsejaría que practique muchos problemas de topcoder div1 de 250 puntos para mejorar sus habilidades algorítmicas y de implementación. No necesita hacer div1 500s, ninguna pregunta de entrevista es tan difícil. Esto cubrirá DP, cadenas y problemas ad-hoc. Para problemas de gráficos, intente n do nivel 1 y nivel 2 (ordenados en ahmed-aly) dijkstra, BFS y DFS de SPOJ.
Para Listas vinculadas y BST, practique algunas preguntas básicas que se hacen con frecuencia en entrevistas, como invertir una lista vinculada, encontrar sucesores / predecesores en BST, etc.
Como se señaló anteriormente, asegúrese de ser exhaustivo con C ++ STL.
¡Buena suerte!

Algoritmos
Estructuras de datos
Resolución de problemas
Diseño de software
Puede parecer una respuesta muy obvia, pero es la verdad.

More Interesting

¿Cómo debo responder a una pregunta de QA / Programación de prueba?

¿Qué debo hacer si obtendré un título de CS y tengo poco conocimiento de las estadísticas, pero me inscribí en un programa de ciencia de datos de MS?

Cómo prepararse para una entrevista de servicios web de Amazon

Escriba un programa para contar el número de subárboles de valor único en un árbol dado.

Si dice que es competente en un lenguaje de programación al salir de la universidad, ¿qué grado de comprensión profunda necesita en dicho idioma para tener éxito en una entrevista técnica?

Dada una cadena, ¿encuentra la longitud de la subcadena más larga donde ningún personaje se repite dos veces?

¿Cuáles son algunos ejemplos de configuraciones de problemas de entrevistas técnicas que son buenas para evaluar candidatos de aprendizaje automático?

¿Bash es una buena idea para una entrevista de programación de alta tecnología?

Cómo evitar mostrar mi transcripción durante el proceso de entrevista

¿Cuáles son las mejores preguntas interesantes para la entrevista que se le hacen a un ingeniero en electrónica y comunicaciones?

Cómo descifrar entrevista técnica de MNC

¿Cuáles son los conceptos que podrían ayudar a descifrar una entrevista de Google que no sean estructuras de datos y algoritmos?

¿Qué tipo de preguntas de codificación se hacen en las entrevistas para Docker, Inc.?

¿Cómo y desde dónde debo prepararme para las preguntas de la entrevista como 'diseñar un software para ...'?

Cómo prepararse para una entrevista técnica