Experiencia de entrevista de Oracle – Part 7

Ronda 1 (Codificador Pad y Zoom): 

El entrevistador echó un vistazo a mi currículum y me preguntó sobre mi proyecto actual y la pila de tecnología con la que estoy familiarizado. Después de eso, me pidió que resolviera un problema de codificación. 

Pregunta 1 : dada una array de enteros que es el recorrido de orden de nivel de un árbol binario, y me pidió que averiguara si es un árbol de búsqueda binaria o no. 

Ejemplos

Input : [8,5,11,null,null,10,12,7,null]
Output : False

Input : [8,5,13,null,null,10,16,9,14]
Output : False

Input : [8,5,13,null,null,10,16,9,11]
Output : True

Antes de comenzar a codificar, ella estaba interesada en el enfoque. Me tomé un tiempo y se me ocurrió un enfoque, y ella quedó satisfecha con el enfoque y me pidió que codificara. Probé mi código en algunos casos de prueba asegurándome de que todos los casos de prueba fueran aprobados y pasó a la siguiente pregunta.

Pregunta 2 : dada una string que contiene números enteros. Encuentre el número de formas en que podemos decodificar la string en alfabetos ingleses en mayúsculas. Suponga que ‘A’ representa 1 y ‘B’ representa 2… ‘Z’ representa 26. ( Enlace de práctica )

Ejemplos :

Input : "226"
Output : 3
Possible combinations : BZ(2, 26), VF(22, 6), BBF(2,2,6)
Input : "100"
Output : 0
Input : "205"
Output : 1
Possible Combinations : TE

He implementado el uso de recursividad y programación dinámica (para evitar volver a calcular los mismos subproblemas). También probó el código con algunos casos de prueba y casos extremos y me preguntó la complejidad del programa si no he usado programación dinámica. Lo respondí como O(2^n). Dijo que esta era la última pregunta de esta ronda y me deseó la mejor de las suertes para la segunda ronda, que comenzará en 15 minutos.

Ronda 2 (Codificador Pad y Zoom)

El entrevistador me preguntó sobre mi proyecto actual y la tecnología que estoy usando. Luego hizo algunas preguntas sobre el núcleo de Java, que son las siguientes

  1. Por qué usamos puertas de enlace en microservicios
  2. Importancia de la palabra clave volátil

Después de responder estas preguntas, me dio algunos problemas de codificación que son los siguientes 

Pregunta 1 : dada una array, escriba un programa para detectar duplicados. 

Ejemplos :

Input : [1,2,37,56, 2]
Output : False
Input : [1,2,37,56, 87]
Output : True

Sugirió múltiples enfoques y codificó mediante el uso de un conjunto hash, después de lo cual probó el código con algunos casos de prueba y pasó a la segunda pregunta.

Pregunta 2 : Suponga que hay denominaciones de 100, 500, 1000 rupias disponibles en un cajero automático en un número limitado. Escriba un programa para dispensar un número mínimo de billetes por cada transacción, y podrá dispensar un máximo de 40 billetes por transacción.

Ejemplos :

Input : [[100, 2], [500, 3], [1000, 4]], 4000
Output : 4
Input : [[100, 2], [500, 3], [1000, 5]], 10000
Output : "cannot dispense"

Después de completar mi codificación, probó el código con algunos casos de prueba y me promovió a la tercera ronda, que comenzará en otros 10 minutos.

Ronda 3 (Codificador Pad y Zoom)

El entrevistador comenzó a preguntar sobre mi proyecto actual, la razón por la que estoy buscando un cambio de trabajo y por qué Oracle. Después de que respondí estas preguntas, comenzó a preguntar sobre algunas preguntas básicas de Java, como se describe a continuación. 

  1. Importancia de la palabra clave volátil
  2. Diferencia entre comparador y comparable
  3. Diferencia entre StringBuffer y StringBuilder, y preguntó por qué Java comenzó a usar StringBuilder de JDK 1.5 en lugar de StringBuffer
  4. Importancia de las variables estáticas
  5. Significado de la clase Final, variables finales.
  6. Importancia de la palabra clave sincronizada

Después de esto, me dio algunas preguntas de codificación como se muestra a continuación.

Pregunta 1 : escriba una función que debería tomar un archivo swagger como entrada e imprimir todos los puntos finales con parámetros

Ejemplo :

Input : org.json.JSONObject swagger
Output : 
"/v1/postFunction"
["body", "token", "object"]
"/v1/getFunction"
["parameter", "token"]
"/v1/putFunction"
["body", "token", "object"]

Para aquellos de ustedes que no están familiarizados con el «archivo Swagger». Míralo aquí (https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v2.0/json/uber.json) He intentado esto pero no pude codificarlo como había algunas excepciones, el entrevistador observó que estoy luchando con esto y me pidió que me detuviera. Pasamos a la siguiente pregunta. 

Pregunta 2 : escriba una función que debería tomar una string grande como entrada e imprimir los k caracteres más frecuentes. Nota : ‘A’ y ‘a’ se consideran diferentes y puede haber caracteres especiales como ‘@’ y ‘!’ etc. en la string proporcionada como entrada.

Ejemplo :

Input : "$geeksforGEEKs@", k=3
Output :
Character is e count is 2
Character is E count is 2
Character is s count is 2

Usó HashMap para almacenar el carácter y su frecuencia, el comparador para clasificar en orden descendente e imprimió la primera k después de la clasificación. La Ronda 3 finalizó a las 8:00 p. m., mientras que la Ronda 1 había comenzado a las 2:00 p. m. El entrevistador dijo: “Creo que está agotado. Vaya y descanse un poco. Evaluaremos su perfil y nos pondremos en contacto con usted”.

Después de 2 días he recibido una llamada para la 4ª ronda.

Ronda 4 (Codificador Pad y Zoom): 

Como de costumbre, el entrevistador revisó mi currículum y me preguntó sobre mi proyecto actual y la pila de tecnología con la que estoy familiarizado. Le pregunté a mi CTC actual, CTC esperado, ¿por qué quiere cambiar y por qué Oracle? Después de responder todas estas preguntas, me pidió que codificara un caso de uso comercial real, que es el siguiente

Pregunta 1 : hay un fabricante que fabrica bicicletas, automóviles, lavadoras, aire acondicionado, etc. Las bicicletas contienen motor, tanque de gasolina, asiento, embrague de mano, varilla de freno, tanque de aceite, reposapiés, pedal de arranque, rueda trasera, tubos de escape, Cable de freno, faro, velocímetro, bocina, tubo de escape, espejos, placa de matrícula, luz trasera y cada una de las partes anteriores es una estructura compleja, por ejemplo, el motor contiene tornillos, tuercas, tubo de alimentación de aceite, tubo de entrada, bomba de aceite, culata. , poste de escape, culata, aleta de enfriamiento, pistón, etc. Lo mismo ocurre con los automóviles, lavadoras, aire acondicionado, etc. 

En el momento en que explicó todas las máquinas, desde bicicletas hasta aire acondicionado y todas las partes y subpartes y sub-subpartes…, me estaba volviendo loco y sonreí. Después de lo cual dejó de explicar estas partes y subpartes y me pidió que escribiera un programa que tome dos componentes como entrada y devuelva cuántos componentes del segundo argumento se requieren para hacer el primer componente. Sé que cuando leas esto te estás volviendo loco. Déjame darte un ejemplo para explicarte qué necesito codificar exactamente. 

Ejemplo :

Input : Bike, Wheels
Output : 2
2 wheels are required in the process of manufacturing the Bike
Input : Bike, Nuts
Output : 500
500 nuts are required in the process of manufacturing the Bike
Input : Nuts, Bike
Output : 0
As no Bikes are required in the process of manufacturing the Nut.

Nota : Su código debe ser muy genérico. De modo que si el fabricante fabrica un nuevo producto diez años después, digamos más fresco, no debería volver a usted para modificar su función.

Para ser honesto, estuve en blanco durante los primeros 20 minutos y luego, de repente, surgió una idea y comencé a implementarla usando árboles. No estaba seguro de cómo representar los datos de forma genérica. Primero, me preguntó sobre la estructura de datos sobre cómo estoy representando los datos. Una vez que le mostré mi clase de Componente (ver más abajo), parece estar convencido y me pidió que codificara la lógica. Una vez que terminé con mi codificación, me dio algunos casos de prueba y me pidió que verificara qué devuelve mi programa. Adjuntar una plantilla sin procesar del código a continuación

Java

/*package whatever //do not write package name here */
 
import java.io.*;
 
class GFG {
  class Component {
        int number;
        String name;
        List<Component> components;
   }
  public int findComponents(Component input, Component output) {
         int count = 0;
         //if output can be made from input component
         if(input.name.equals(output.name)) {
             return input.number;
         }
         //if input is a leaf
         if(input.components == null) {
             return 0;
         }
         //iterate the list of components
         for(Component temp : input.components) {
             //see if how many output components can be made from temp
             count = count + findComponents(temp, output);
         }
         return count*(input.number);
     }
}

rompecabezas :

  1. Dados dos recipientes de 5 y 3L y grifo con suministro infinito de agua. ¿Cómo se miden 4L de agua?
  2. Después de responder ese acertijo, me preguntó si tenía alguna pregunta para él o no, le pedí que compartiera algo sobre el rol, el equipo y también le pedí que compartiera uno de sus momentos Ahaa más memorables en Oracle.
  3. En general, fue una buena experiencia, las rondas 1, 3 y 4 son un desafío para mí que puede variar de persona a persona. Se hicieron varias preguntas fuera de caja en la ronda 3 (Swagger) y la ronda 4 (fabricació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 *