Experiencia de entrevista de cadencia para SDE-2 | 3,5 años de experiencia – Part 1

Ronda técnica 1 (1 hora):

  1. El entrevistador trató de saber cómo obtuve experiencia en C/C++, qué tipo de trabajo se ha realizado en C/C++, mi papel principal en eso.
  2. Luego me pidió que escribiera API para algunos escenarios relacionados con mi proyecto.  

Ronda Técnica 2 (1 hora):

  1. Cuando me preguntaron si sabía sobre subprocesos múltiples, dije que no.
  2. Cuando me preguntaron si conocía la corrupción de la memoria, dije que no.
  3. Código para asignar memoria de 4 bytes,

    vacío* ptr= malloc(4);

    Luego se le pidió que asignara una memoria de 4 bytes usando el tipo de datos int

    void* ptr= malloc(tamaño(int));

    Luego me preguntó si puedo escribir «abcd» en estos 4 bytes de memoria, como ‘a’ en el primer byte y así sucesivamente.

    C++

    void initializePtr(void* ptr){
        char* cptr=(char*)ptr;
        char ch='a';
        for(int i=0; i<4; i++){
            cptr[i]=ch;
            ch++;
        }
    }
  4. Supongamos que hemos iniciado una empresa que mantiene la base de datos de su cliente. los datos del cliente se gestionan mediante una lista enlazada. Pero buscar cualquier dato es muy lento. ¿Cómo podemos hacer que la búsqueda sea eficiente como la búsqueda por nombre?

    Se sugiere usar Trie para buscar por nombre y mapa para buscar por ciertos filtros.

    Luego preguntó qué mapa se usará, explicó tanto map como unordered_map y su implementación. Además, se le preguntó acerca de la diferencia b/w unordered_map y unordered_multimap.

    Pero había una restricción en la memoria, no podemos aumentar la memoria más que eso. Sugerido para mantener una lista enlazada ordenada según la prioridad.

    Creo que usar SkipList sería una mejor solución.

  5. https://www.geeksforgeeks.org/design-a-data-structure-that-supports-insert-delete-search-and-getrandom-in-constant-time/

Ronda técnica 3 (1 hora):

  1. https://www.geeksforgeeks.org/find-sum-left-leaves-given-binary-tree/

    Le dije que se acercara usando una bandera para el niño izquierdo/derecho. Pidió hacerlo sin bandera, luego le dijo al acercamiento que revisara al hijo izquierdo del Node si era una hoja o no. Lo hice usando un argumento de suma, pero él pidió hacerlo usando la variable de suma local. implementado eso también.

  2. https://www.geeksforgeeks.org/count-zeros-in-a-row-wise-and-column-wise-sorted-matrix/
  3. ¿Qué es merge sort y codifica su implementación?

Ronda Técnica 4 (1 hora):

  1. Problema para implementar el juego de la silla musical. Necesitamos obtener una silla aleatoria y luego eliminarla, ambas operaciones en O(1). ¿Qué estructura de datos se utilizará, lista enlazada o array? Similar a: https://www.geeksforgeeks.org/design-a-data-structure-that-supports-insert-delete-search-and-getrandom-in-constant-time/. Pero la silla musical también se puede implementar sin mapa.
  2. https://www.geeksforgeeks.org/sort-even-numbers-ascending-order-sort-odd-numbers-descending-order/

    Dije enfoque de dos punteros para colocar elementos impares juntos e incluso juntos y luego ordenar dos veces.

    Luego pidió usar solo una llamada de clasificación y pidió escribir un comparador para el mismo.

    C++

    bool compare(int x, int y){ 
        if(x%2!=0){
            if(y%2!=0){
                if(x<y) return true;
                else return false;
            } else {
                return true;
            }
        } else {
            if(y%2!=0){
                return false;
            } else {
                if(x>y) return true;
                else return false;
            }
        }
    }
  3. Suponga que se le da una string, 463. Agregue paréntesis en la string de salida según el conteo de elementos:
    Input: 
    463
    Output:
    ((((4((6)))3)))

    Le dije al enfoque de llevar la cuenta de los paréntesis abiertos y luego agregar el paréntesis inicial o final en consecuencia.

  4. https://www.geeksforgeeks.org/leaders-in-an-array/
  5. Hay un sensor de automóvil que detecta continuamente la temperatura y proporciona la temperatura. La salida del sensor es nuestra entrada y en cualquier momento se nos pregunta si se alcanza un número en particular o no, entonces debemos decir SÍ/NO.

    Le dije enfoque de usar set. almacenaremos todos los números en conjunto.

    Luego agregó falla del 5% en la salida del sensor. supongamos que la temperatura real era 5 pero el sensor la emitió como 4.95. Entonces como lo haremos. Dije enfoque de usar BST. Para cualquier x en particular, comprobamos si raíz->datos >=x-5/100 y raíz->datos <=x+5/100, entonces devolveremos verdadero; de lo contrario, atravesaremos el árbol izquierdo y derecho.

  6. Estamos en una tierra extraterrestre, cuyo sistema numérico es diferente al nuestro. Nos dan una serie de números y tenemos que ordenarlos. Nos dan una API para comparar 2 números. Lograr el objetivo en el número mínimo. de llamadas API. Además, se mantiene la asociatividad. si sabemos que 1>2 y 2>3, entonces 1>3.

    Primero dije el enfoque de inserción y luego fusioné el enfoque de clasificación.

    Sería muy apreciado si los lectores pueden compartir la solución correcta para esto.

  7. Dada una sola lista enlazada. Escriba el código para eliminar el Node de la lista enlazada individualmente. El entrevistador pidió que escribiera el código correcto sin ningún error.

Ronda de directores (1 hora):

  1. Cuando se le preguntó acerca de las rondas anteriores, cómo les fue, también preguntó qué se preguntó en todas las entrevistas anteriores.
  2. Me preguntó si había estudiado sobre diseño de compiladores y sistemas operativos en mi universidad. Si sé cómo funcionan las cosas internamente. Llamadas sbrk, etc.
  3. Cómo comprobar si nuestro programa está tardando mucho y si está consumiendo más memoria.

    También se me preguntó sobre el tamaño del código de mi proyecto y qué enfoque usamos en nuestro código para verificar problemas de tiempo y problemas de memoria.

  4. Para problemas de memoria, solicitamos diseñar nuestro propio producto para detectar fugas de memoria.

    Le dije enfoque de mantener la información. de todas las memorias asignadas dinámicamente en el montón a través de malloc o new. luego, si no están desasignados en el alcance, considérelo como una pérdida de memoria. Pero el entrevistador dijo que la memoria de asignación fuera del alcance también está bien. Entonces, le dije que verificara la asignación de memoria al final del programa.

    Dijo que si inicialmente tomamos 100 mb de memoria y luego se desasignan 10 mb, entonces cómo se haría. Le dije que verificara cuánta memoria se desasigna de la memoria asignada en el momento de liberar la memoria.

  5. Supongamos un programa de 8 GB y tenemos un sistema de 32 GB y 32 bits. ¿Podrá el sistema ejecutar ese programa?

    https://techterms.com/help/difference_ between_32-bit_and_64-bit_systems

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 *