Experiencia de entrevista de Oracle | En el campus para ingeniero de aplicaciones/ingeniero de tecnología de servidores

1ra ronda: Ronda de prueba MCQ (en línea)

No hubo preguntas de codificación para mi sorpresa. Toda la prueba se dividió en 4 secciones.

  1. Aptitud
    Matemáticas (probabilidad, basada en ecuaciones), 
    Razonamiento (rompecabezas básicos),
    Observación (solo tenía que decir cuál de las 4 opciones estaba presente en la tabla de 10 × 3 dada arriba con solo mirar y observar), 
    Diagrama de flujo (un diagrama de flujo para se dio una situación determinada y algunas condiciones (casillas estándar en forma de diamante) estaban vacías. Tenía que decir qué opción se ajusta a cuál de las casillas condicionales. Había 3,4 preguntas en el mismo diagrama de flujo, por lo que estudiar correctamente el gráfico podría ayudarlo. responder a todas las preguntas asociadas).
  2. Codificación basada en la salida :
    la mayoría de las preguntas se basaron en la predicción de la salida del fragmento de código dado (hubo muchas preguntas de Trees (cualquier subtema)),
    algunas preguntas basadas en la complejidad.
  3. Materias principales:
    preguntas fundamentales (la mayoría) y difíciles (pocas) de OS, DBMS, OOPS.
  4. Comprensión en inglés :
    preguntas basadas en pasajes no vistos, preguntas
    basadas en la gramática,
    ordenar las oraciones en un orden significativo,
    preguntas basadas en la sustitución del mejor sinónimo.

Mucha práctica y suerte estuvieron involucradas en la primera ronda. No necesita practicar especialmente para la parte de Aptitud a menos que sus conceptos básicos no lo sean, por supuesto. Pero estudiar los temas a fondo y bien fue importante, porque también ayudará en las siguientes rondas. Memorizar los conceptos NO ES BUENO a menos que pueda tener una idea de ellos para que, cuando sea necesario, pueda usarlos en una situación práctica. Los árboles fue un tema que tuvo la mayor cantidad de preguntas en la segunda sección de la primera ronda (recorridos, árboles AVL, inserción, eliminación, altura de Nodes dados, Nodes totales de altura dada).

De 250 estudiantes, 50 fueron preseleccionados para la segunda ronda y 15,20 adicionales se mantuvieron en la lista de espera (pensé que no creo que tuvieran la oportunidad solo cuando las personas de la lista principal no se desempeñan bien, las probabilidades de que sean menores desde están preseleccionando casi 50 en la lista principal).

——————————————————————————–

2ª ronda: Ronda TÉCNICA (en línea)

A todos mis amigos se les hicieron preguntas básicas sobre conceptos de programación orientada a objetos, conceptos de sistema operativo, preguntas de listas vinculadas (recorrido, inversión), algoritmos de clasificación (también pedirán codificarlo si así lo desean), rompecabezas ( aquí están los rompecabezas más frecuentes ).

Pero desafortunadamente, solo me hicieron una pregunta de codificación.

Primero comenzó presentándose. Y me pidió que me presentara. Luego me pidió que explicara mi proyecto favorito. ( Siempre esté bien preparado con sus proyectos. No escriba (en su currículum) ni diga (durante la entrevista) nada que no sepa. Y siempre sea claro con su contribución en el proyecto, ya que tienden a preguntar qué tarea fue asignado a usted ). Luego me envió un enlace de sesión de codepair.com. Allí se realizó una discusión completa con respecto a la pregunta. Desde la lluvia de ideas hasta la codificación y ejecución del código.

Pregunta: Hay una string dada. Debe particionar la string en un número mínimo de particiones, de modo que los caracteres que aparecen en una partición en particular no aparezcan en ninguna otra partición. Luego se devolverían las longitudes de las particiones.
 

Por ejemplo:
Entrada: S = “ababcbacadefegdehijhklij”

Explicación:

Las particiones requeridas son «ababcbaca», «defegde», «hijhklij». Estas son las particiones para que cada letra aparezca como máximo en una parte.

Salida: [9, 7, 8]

Mi enfoque se mencionará al final del artículo. 

Dado que las entrevistas se llevaron a cabo en línea en reuniones de Zoom (en salas de grupos), no tengo idea de cuántas fueron preseleccionadas (pero muchas también se descartaron después de esta ronda).

Entonces, la clave es ser comunicativo con su entrevistador y tener confianza para responder algo. Si encuentra algo incorrecto en su enfoque, dígaselo y trate de repensar pedir un poco de tiempo nuevamente. Para las preguntas de codificación, intente ejecutar en seco sus enfoques para ver si son correctos. Siga diciéndole al entrevistador lo que está pensando y por qué está escribiendo un código.

———————————————————————————————

3ª ronda: Ronda TÉCNICA (en línea)

El entrevistador First se presentó y me pidió que hiciera lo mismo. Luego me preguntó mi proyecto favorito/reciente. Así que le conté mi proyecto basado en redes. Luego comenzó una discusión sobre el mismo. Pasamos a codepair nuevamente. Allí me dio un enunciado del problema relacionado con mi proyecto. Había usado una aplicación llamada Wireshark en mi proyecto, por lo que me pidió que diseñara una aplicación similar a Wireshark con algunas funciones personalizadas. También me preguntó en qué idioma me sentía cómodo.

Esta ronda fue de 1 hora y en esta 1 hora tuve que usar todos mis conceptos básicos de redes, SO, estructuras de datos, diseño de sistemas, sistemas distribuidos. Mencionar MULTI-THREADING fue un gran punto de venta de mi parte. También quería saber qué estructura de datos usaría en particular y por qué. Solo sea claro con los conceptos básicos (por ejemplo, por qué el vector es beneficioso en lugar de una array). También se habló de la agrupación de subprocesos (que quería que relacionara con la agrupación de objetos, es decir, crear suficientes vectores y ponerlos en una agrupación y usarlos cada vez que llega una tarea y liberar el objeto vectorial de nuevo en la agrupación. Su motivo principal para preguntar esto fue porque no quería que asignara memoria dinámicamente cada vez).

Entonces, en resumen, cuando menciones un proyecto/tema como tu favorito, asegúrate de que realmente te gusta ese tema/proyecto más que otros. Y tiene un buen conocimiento de otros conceptos de CORE CS (Threading en particular).

El entrevistador fue muy útil. Dondequiera que me atascara, le pedía que me señalara en alguna dirección, y afortunadamente lo hizo, y fue suficiente para que comprendiera a dónde quería que fuera. Es importante expresarse y pedir ayuda (pero no siempre).
También puede seguir preguntándole al entrevistador si va en la dirección correcta.

 —————————————————————————————–

4ta ronda: Ronda HR (en línea)

Está bien, se suponía que esta sería la ronda más relajada. Fue relajado + Desafiante también.

El entrevistador fue muy amable y educado. Empezamos con las mismas presentaciones. Luego me preguntó cómo estaban mis otras rondas. Le dije como eran. Estaba interesado en saber qué encontré desafiante en esas rondas.

Luego me preguntó sobre mi tema favorito, que le dije que eran los sistemas distribuidos (no muchas personas se atreven a optar por este tema) XD

Luego comenzó a preguntarme conceptos básicos de DS. Pude responderlas todas ya que me gustaba mucho este tema, así que sabía mucho al respecto. Parecía feliz.
Luego pasamos a algunas preguntas gerenciales. Por ejemplo, ¿cuándo enfrentó desafíos en su vida y cómo los abordó? Cuéntales una buena historia, a todo el mundo le gusta una buena historia (pero que no sea superficial XD).

Fue una discusión de ida y vuelta y ambos parecíamos disfrutarla.

———————————————————————————————

Mi enfoque de la pregunta de codificación de la primera ronda tecnológica:

El entrevistador primero me pidió que explicara mi enfoque. Me equivoqué en el primer intento. Pero él no me dijo eso. Después de explicar mi enfoque, comencé a ejecutar mi enfoque en seco en el ejemplo de muestra que me proporcionó. Rápidamente descubrí que mi enfoque estaba equivocado. Le pedí un momento para volver a pensar y luego, cuando le expliqué mi otro enfoque, dijo ‘Sí, claro’.

Por lo tanto, es muy importante hablar y dejar que el entrevistador sepa lo que está pasando por tu mente.

Primero pensé que contar la frecuencia de los caracteres me ayudaría de alguna manera. Pero después de correr en seco, encontré que era inadecuado. Entonces, mientras miraba el caso de prueba, supe que necesitaba saber cuál es la primera aparición y la última aparición de un carácter, ya que cualquier partición que haga debe tener la primera y última aparición de un personaje dentro (incluidos los puntos finales) . Todavía no sabía cómo proceder con esto por delante. Entonces, lo que hice fue comenzar a escribir los rangos de cada carácter, es decir, su primera y última aparición en la string (indexación basada en 0). Y luego, mientras escribía esto, me di cuenta de que cada intervalo de caracteres está formando una especie de intervalo. Hice algunas preguntas basadas en la combinación de intervalos en leetcode, Interviewbit, por lo tanto, ahora sabía cómo proceder.

Así que almacené la primera y la última ocurrencia de todos los caracteres en un mapa de modo que la clave fuera el carácter y el valor fuera un par que contuviera la primera y la última ocurrencia. // <carácter, par<int, int>>

Ahora iteré sobre la string e hice 3 casos.

  1. Si el carácter bajo recorrido tiene el intervalo completamente dentro del intervalo actual, entonces no haga nada y continúe ya que la partición obviamente será decidida por el intervalo actual que ya es más grande.
  2. Si el carácter que se está recorriendo tiene el intervalo completamente fuera del intervalo actual (por lo general, estaría justo al lado del intervalo actual, es decir, si el intervalo actual fuera, por ejemplo, de los índices [2,6], entonces el nuevo intervalo será [7,x]. En este caso, almacene la longitud del intervalo anterior y marque el índice actual como el comienzo del nuevo intervalo.
  3. Si el carácter en recorrido tiene el intervalo parcialmente dentro del intervalo actual, como si el intervalo actual fuera de los índices [2,6], entonces el punto de inicio del nuevo intervalo estará en algún lugar entre [3,5] y el punto final estará en algún lugar entre [7,x]. En este caso, solo actualice el punto final de los intervalos actuales, ya que este nuevo carácter puede aumentar la longitud del intervalo actual.
    Hacer preguntas de combinación de intervalos lo ayudará a comprender este concepto claramente.

———————————————————————————————————–

Veredicto: Seleccionado para Ingeniero en Tecnología de Servidores .

Muchas gracias a GeeksForGeeks en particular.
 

Publicación traducida automáticamente

Artículo escrito por ism2016004 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 *