Experiencia de entrevista de Google para pasantías de ingeniería de software 2022

Una breve descripción:

Google vino a nuestro campus (IIT Roorkee) para seleccionar candidatos para Summer Intern 2022 en agosto de 2021. Solo 8 estudiantes fueron seleccionados finalmente después de todas las rondas. Todo el proceso fue virtual y se realizó en 1+2 (1→ ronda de codificación + 2 →rondas de entrevista) rondas de 45 minutos cada una.

Entrevista/Rondas Técnicas (Total – 3):

La ronda 1:

Esta ronda se prolongó durante casi 55 minutos para mí. El entrevistador fue muy amable y servicial y primero me pidió que me presentara. Luego me hizo una pequeña pregunta que fue seguida por 5-6 seguimientos:

  • Dada una array no ordenada que contiene duplicados y un número, busque en qué posición aparecería ese número si la array está ordenada. (Primero le dije la solución O(N log N) de ordenar y luego encontrar el elemento y luego le propuse la solución de O(n) de atravesar la array y contar el número de elementos que son más pequeños que el número dado Él quedó satisfecho y me pidió que codificara la solución)
  • Luego me preguntó qué pasa si se da el índice del elemento en lugar del elemento.
  • No recuerdo otros seguimientos, pero eran bastante similares y se basaban en búsquedas binarias y mapas.
  • Pude contestar todas y el entrevistador quedó bastante satisfecho conmigo y me dijo que terminó muy bien.

Luego recibí un correo electrónico con respecto a mi próxima ronda que estaba programada 1 hora más tarde.

La ronda 2:

Esta ronda se prolongó durante casi 45 minutos para mí. La pregunta que se hizo fue:

Dado un historial de chat representado en forma de vector de strings, encuentre los k principales usuarios que hablaron la cantidad máxima de palabras.

Entrada de muestra:

Rohan: hola como estas

Naman: estoy bien dices

Rohan: yo tambien

  • Le propuse la solución de que, en primer lugar, atravesaré el vector de strings y asignaré la cantidad de palabras dichas por cada usuario a su nombre de usuario (es decir, map<string, int>), luego puedo hacer un vector a partir de ese mapa. y ordénelo y elimine los últimos k elementos o usará la prioridad _queue de max heap en su lugar y luego sacará solo k elementos.
  • Me pidió que codificara la primera parte de insertar todo en el mapa. Mi código estaba agregando un carácter a la string. Entonces me pidió que evitara eso ya que era el tiempo de uso O (longitud de la string). Así que cambié la solución para usar índices y no agregar.
  • Codificar la primera parte con optimización y ejecución en seco tomó todo mi tiempo y no pude completar la segunda parte.

Después de que terminaron ambas rondas, estaba esperando los resultados ya que se suponía que solo pasarían 2 rondas. Pero al día siguiente por la mañana recibí una llamada de la celda de colocación y pasantías de mi universidad que google me exigió otra entrevista.

Ronda 3:

Esta ronda se extendió a 75 minutos para mí. La pregunta que se hizo fue de gráficos:

Dado es una red de ciudades. Ocurrió un crimen en la ciudad C y el criminal huyó a su ciudad natal H. Ahora la policía quiere atrapar al criminal y él sabe que el criminal irá de la ciudad A a la ciudad B solo si la distancia más corta de la ciudad B a H es menor que la ciudad A a la H. Se supone que debemos encontrar el número de rutas posibles que el delincuente podría haber tomado a partir de C.

  • Le dije que usaré la representación de la lista de adyacencia para representar el gráfico ponderado no dirigido. Luego, en primer lugar, calcularé la distancia más corta de H a cada una de las ciudades usando el algoritmo de Dijkstra y luego mi respuesta sería la suma del número de rutas de todas las ciudades conectadas a la ciudad C cuya distancia más corta de H es menor que la de C, es decir, utilizará la recursividad.
  • Luego me preguntó la complejidad del tiempo para la recursividad y le dije O(V+E). Pero me preguntó si estoy seguro y me pidió que dibujara un ejemplo en mi cuaderno y encontrara si me faltaba algo. Luego, utilizando uno de mis ejemplos dibujados, me ayudó a llegar a la conclusión de que la complejidad temporal de mi solución sería exponencial debido a los subproblemas repetitivos que me llevaron a la idea de la memorización.
  • Luego me pidió que lo codificara. Codifiqué mi Dijkstra, recursiva y la función principal conectando mis dos funciones. Luego me preguntó la complejidad temporal de ambas funciones y me pidió que optimizara el código para Dijkstra. Se me ocurrió la idea de las colas de prioridad (esta optimización de la cola de prioridad es un algoritmo estándar de Dijkstra, pero no lo sabía antes, así que solo pensé en eso).

Luego, al día siguiente obtuve mis resultados.

Veredicto: Seleccionado

Preparación:

  • Solía ​​​​practicar solo a partir de la entrevista, como lo sugirieron mis superiores.
  • Para la entrevista de Google, leí las experiencias de entrevistas de otras personas e hice preguntas de Google específicas de la empresa de GFG.
  • Esta cantidad de práctica es suficiente para desarrollar sus habilidades de pensamiento si lo está haciendo de manera cualitativa y honesta.

Puntas:

  • Lo más importante es mantener la calma y no estropear ni siquiera las cosas que sabes solo por el nerviosismo.
  • Ten confianza y cree en ti mismo.
  • Incluso si no puede pensar en la solución completa, simplemente diga lo que tiene en mente y, junto con la ayuda del entrevistador y sus sugerencias, podrá llegar a la solución.
  • Simplemente no te rindas y te asustes. Piensa que el entrevistador está ahí para ayudarte a llegar a la solución.

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *