Experiencia de entrevista de ServiceNow para ingeniero de software asociado (en el campus)

Ronda 1 (Ronda de codificación en línea – Plataforma Hackerrank): esta ronda constaba de 1 pregunta de codificación y 15 preguntas de opción múltiple. Esta ronda duró 60 minutos. No se puede cambiar entre pestañas durante la prueba. Además, las instantáneas de la cámara web se tomarán periódicamente.

La pregunta de codificación:

  1. Un analista financiero es responsable de una cartera de acciones rentables representadas en una array. Cada elemento de la array representa la ganancia anual de una acción correspondiente. El analista reúne todos los pares distintos de acciones que alcanzaron la ganancia objetivo. Los pares distintos son pares que difieren en al menos un elemento. Dada la array de ganancias, encuentre el número de pares distintos de acciones donde la suma de las ganancias de cada par es exactamente igual a la suma objetivo.

    Ejemplo:

    stocksProfit = [5, 7, 9, 13, 11, 6, 6, 3, 3]
    target = 12 profit's target
    • Hay 4 pares de acciones que tienen la suma de sus ganancias igual al objetivo 12. Tenga en cuenta que debido a que hay dos instancias de 3 en stocksProfit hay dos pares coincidentes (9, 3): stocksProfits índices 2 y 7 e índices 2 y 8, pero solo se puede incluir uno.
    • Hay 3 pares distintos de acciones: (5, 7), (3, 9) y (6, 6) y el valor de retorno es 3.

    Función descriptiva:

    Complete la función stockPairs en el editor a continuación.

    stocksPairs tiene los siguientes parámetros:

    int stocksProfit[n]: una array de enteros que representan las acciones

    ganancias

    objetivo: un número entero que representa el beneficio objetivo anual

    Devoluciones:

    int: el número total de pares determinados

    Restricciones:

    1 \le N \le 5\times 10^5

    0\le stocksProfit[i] \le 10^9

    0\le target \le 5\times 10^9

    Solución:

    Hay varias formas de resolver este problema. Una de las mejores formas es usar Hashing. Otras formas incluyen la clasificación y la técnica de dos punteros.

Ronda 2 (Entrevista técnica 1 – 60 minutos):

  • Háblame de ti
  • Se compartió un enlace al espacio de trabajo de Collab, donde dos o más personas pueden escribir/ver códigos escritos por otros.
  • Las siguientes fueron las preguntas que se hicieron

    Se proporcionó un fragmento de código pequeño, busque y corrija errores.

    unsigned int i = 0;
    for(i = 100; i >= 0; i--) {
        printf(“%d\n”, i);
    }
  • Dada una lista enlazada donde los elementos no están ordenados, la tarea es eliminar los duplicados

    Versión 1: sin usar espacio adicional (puede comprometer la complejidad del tiempo)

    Versión 2: se puede usar espacio adicional y se puede crear una nueva lista

    Versión 3: se puede usar espacio adicional pero no cree una nueva lista

  • Dada una string de longitud N que consta de alfabetos ingleses en minúsculas, la tarea es contar el número de substrings en las que la frecuencia de cada carácter es exactamente K.

    Versión 1: fuerza bruta en todas las substrings – O(N^3)

    Versión 2: optimizar un poco – O(N^2)

    Versión 3: Enfoque súper optimizado: ¿   O(N\times D)   dónde  D   está el número de caracteres distintos presentes en la string? Es decir, 26

    También le mostré por qué mi enfoque funcionará, diciéndole que este era el problema que mejoré en Geeksforgeeks anteriormente.

  • Discusión sobre uno de mis proyectos: si tuviera que ampliar mi proyecto, ¿qué función implementaría?
  • El entrevistador me preguntó si tenía alguna pregunta.

Pude resolver todos los problemas con facilidad, el entrevistador quedó bastante impresionado.

Ronda 3 (Entrevista técnica 2 – 60 minutos):

  • Háblame de ti
  • Se compartió un enlace a Collab, que contenía todos mis códigos en la ronda anterior de entrevistas técnicas.
  • Las siguientes fueron las preguntas que se hicieron: dada una string que contiene dígitos del 2 al 9 inclusive, devolver todas las combinaciones de letras posibles que el número podría representar. Devuelva la respuesta en cualquier orden. A continuación se muestra una asignación de dígitos a letras (igual que en los botones del teléfono). Tenga en cuenta que 1 no se asigna a ninguna letra.

    Input: digits = "23"
    Output:
    ["ad","ae","af","bd","be","bf","cd","ce","cf"]
  • Versión 2: También se le proporciona una lista de palabras; su tarea es encontrar cuántas palabras estarán presentes en la salida generada arriba
  • Seguimiento: ¿Puedes hacerlo en  O(N\times M)   el tiempo, donde N es el número de palabras y M es el máximo de la longitud de las palabras, dado que la longitud de los dígitos de la string no superará los 15
  • Pregunta 2: Antepasado común más bajo de dos Nodes en un árbol

    Versión 1: LCA de dos Nodes en Binary Search Tree (usando la propiedad de BST)

    Versión 2: LCA de dos Nodes en árbol binario (usando recursividad)

    Versión 3: LCA de dos Nodes en N-ary Tree (Single Query)

    Versión 4: LCA de dos Nodes en N-ary Tree (Multiple Queries) – Se puede resolver usando Euler Tour + RMQ

  • Discusión sobre 2 de mis proyectos: la breve idea de por qué los hicimos, cómo los hicimos, el alcance del proyecto, etc.
  • ¿Tiene usted alguna pregunta?

Pude resolver todos los problemas y fue una muy buena experiencia. El entrevistador me ayudó cuando estaba atascado resolviendo la versión 1 del problema del teclado.

Ronda 4 (ronda de entrevistas de HM – 90 minutos):

Preguntas básicas de recursos humanos

  • ¿Alguna vez te sentiste incómodo?
  • ¿Qué haces cuando te sientes incómodo?
  • ¿Cómo pasaste el tiempo durante la pandemia?
  • ¿Tomaste la Vacuna?
  • ¿Qué sabes de la Compañía?
  • Cuéntame algo sobre tu universidad.
  • ¿Cuándo disfrutó de lo mejor en su universidad?
  • ¿Alguna vez te sentiste incómodo en la universidad?
  • ¿Entonces que hiciste?
  • ¿Cómo convences a una clase de 60 estudiantes para que asistan a una sesión? (No te van a escuchar, ya tienen un 75% de asistencia, castigar traerá el caos – ¿Cómo los convencerás?)

Algunas cosas técnicas

  • Cuéntame sobre tus proyectos
  • Hable sobre los esquemas de base de datos utilizados en sus proyectos
  • Si desea escalar su proyecto, ¿qué preferiría, escalado vertical o escalado horizontal, o ambos?
  • Preguntas basadas en el diseño del sistema: requisitos funcionales, diseño de interfaz de usuario, esquemas de base de datos, equilibrio de carga, etc.
  • ¿Tiene usted alguna pregunta?

De nuevo, el entrevistador quedó bastante impresionado, fue una conversación muy amistosa y saludable.

Algunas conclusiones clave:

  • El entrevistador siempre está ahí para ayudarte. Siempre haga preguntas/sugerencias cuando esté atascado. Asegúrese de entender el enunciado del problema.
  • Practicar problemas de codificación. Hackerrank, GeeksforGeeks y Leetcode tienen una buena colección de problemas planteados en entrevistas.
  • Haz un buen número de proyectos interesantes. Los proyectos agregan un gran valor al currículum.
  • Nunca hables de tus debilidades. Nunca les des una razón para rechazarte

Veredicto: seleccionado para el rol de ingeniero de software asociado

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 *