Sobre la empresa
Cloudera Inc. es una empresa de soluciones de Big Data con sede en EE. UU. (fundada en 2008) que proporciona software empresarial que se ejecuta en el marco Hadoop-Apache de código abierto y agiliza el proceso de recuperación de información y extracción de datos con marcos integrados de ML e IA. Es el proveedor líder de distribuciones empresariales basadas en el marco Hadoop-Apache y recientemente se fusionó con Hortonworks, que era su mayor competidor antes de la fusión.
Lugar de trabajo: Bangalore (India)
Lugar de entrevista: Manipal Institute of Technology, Manipal (India)
Resumen:
Hubo 5 rondas en total, la primera fue una prueba en línea basada en computadora seguida de 4 entrevistas técnicas, gerenciales y de recursos humanos uno a uno para los estudiantes preseleccionados. Pasé todas las rondas y finalmente acepté la oferta, y aquí está mi experiencia de entrevista para lo mismo. Mucha suerte al lector para sus próximas ubicaciones, ya que la suerte continúa desempeñando un papel pequeño pero vital en las entrevistas de ubicación.
Ronda 1: prueba en línea
A diferencia de muchas otras empresas, la prueba en línea de Cloudera Inc. no incluía ni una sola pregunta de opción múltiple, sino solo cinco preguntas de codificación divididas en dos secciones. Tres de esas preguntas eran obligatorias y pertenecían a la sección 1, mientras que de las dos restantes se podía elegir una pregunta cualquiera que se clasificara como avanzada en la sección 2. La prueba estuvo alojada en Hackerrank durante 120 minutos. Había un criterio de CGPA y rama para la elegibilidad para presentarse a la prueba, y era solo para estudiantes del séptimo semestre.
Sección 1: (Todo obligatorio)
La primera pregunta estaba relacionada con estructuras de datos y algoritmos. Se le ha proporcionado una serie de strings ordenadas por hora de llegada, donde cada string es una solicitud de un nombre de usuario. Su trabajo es proporcionar nombres de usuario únicos para cada solicitud, procesando las requests en el orden dado. Si el nombre de usuario solicitado ya se ha asignado anteriormente, debe proporcionar otro nombre de usuario concatenando la string base del nombre de usuario solicitado con el número entero positivo mínimo posible que generará un nombre de usuario único. Si el nombre de usuario solicitado no ha sido asignado anteriormente, puede asignarlo tal cual. Solución aquí: Programa para asignar nombres de usuario usando Trie
Example: input: {a1, a, a, a1, b, b} output: {a1, a, a2, a11, b, b1}
Lo implementé usando la estructura de datos de Trie, pero hay una implementación más fácil usando mapas STL, lo que le ahorra escribir una tonelada de código.
La segunda pregunta estaba relacionada con DBMS y SQL. Dado el esquema de una base de datos relacional simple, tenía que consultar algunas tuplas en función de la condición mencionada. La pregunta fue bastante fácil, el único inconveniente fue agregar el ORDER BY
comando. Había 1 caso de prueba visible que funcionaba sin agregar ORDER BY
, mientras que había varios casos de prueba en segundo plano que requerían la consulta perfecta. Recomiendo encarecidamente el subproceso MySQL de GeeksForGeeks para la preparación y revisión de problemas relacionados con SQL.
La tercera pregunta estaba relacionada con la manipulación de strings y el manejo de archivos. Dado un archivo de texto que contiene requests HTTP como strings formateadas (1 solicitud por línea) en un sistema Linux, encuentre la cantidad de requests que envían o reciben más de una cantidad determinada de bytes y la cantidad total de bytes intercambiados. Escriba ambos resultados en un archivo de salida en líneas separadas. Aunque utilicé C para resolver el problema, recomendaría encarecidamente python si está permitido, y así fue.
Sección 2: (Seleccione cualquiera)
La cuarta pregunta era un problema del paradigma de la teoría de juegos, el famoso problema del Juego de Nim. Solución aquí: Teoría de Juegos Combinatorios | Conjunto 2 (Juego de Nim)
La quinta pregunta estaba relacionada con estructuras de datos y algoritmos. Hay una cuadrícula 2D de barras de hierro en una cárcel separadas por una unidad de distancia cada una, con M barras horizontales y N verticales montadas en las paredes, el techo y el piso que las rodea. La primera y última barra de hierro en ambas dimensiones están a la unidad de distancia de las paredes, el techo y el piso.
Una cuadrícula con N = 8
barras verticales y M = 4
barras horizontales. Los asteriscos (*) representan las paredes, las comas (, ) representan el techo y las comillas invertidas/comillas invertidas (`) representan el suelo.
,,,,,,,,,,,,,,,,,,, *_|_|_|_|_|_|_|_|_* *_|_|_|_|_|_|_|_|_* *_|_|_|_|_|_|_|_|_* *_|_|_|_|_|_|_|_|_* * | | | | | | | | * ```````````````````
Cada cosa está separada por distancias unitarias y las celdas cuadradas son de área unitaria. Se le da una cuadrícula de este tipo con algunas de las barras de hierro que faltan en ambas dimensiones. Encuentra el área máxima de un rectángulo sin barra de hierro. Por ejemplo, si se eliminan todas las barras de hierro, el área máxima sería (M + 1) * (N + 1)
. La entrada contiene dos arrays con los índices de las barras que quedan en la grilla. La idea es ordenar las arrays en O(n*log(n))
el tiempo y encontrar la diferencia máxima entre elementos consecutivos de ambas arrays en el O(n)
tiempo. Luego multiplica las dos diferencias para obtener el área máxima.
Mi experiencia general de la ronda en línea es positiva. Fue una prueba bastante fácil, solo destinada a evaluar la capacidad de codificación y no las habilidades de los estudiantes y filtrar a los candidatos para hacer. Verificó todas las áreas requeridas para trabajar en un clúster de Hadoop: programación básica, conocimiento de bases de datos y manejo de archivos en un nivel muy básico. Pasé la ronda y llegué a las entrevistas, con otros 34, un porcentaje de preselección del 11,5 %.
Ronda 2: Ronda Técnica
La primera ronda de entrevistas estuvo a cargo de un solo individuo de su departamento de ingeniería y duró unos 45 minutos. Comenzó con dos acertijos seguidos de algunas estructuras de datos y preguntas sobre redes.
Rompecabezas 1: Rompecabezas 12 | (Maximizar probabilidad de bola blanca)
Rompecabezas 2: Rompecabezas 4 | (¿Pagar a un empleado usando una barra de oro de 7 unidades?)
¿Qué sucede cuando escribes una URL en tu navegador? Era una pregunta muy abierta y la respondí en torno al modelo TCP/IP, los servidores DNS y el enrutamiento. Otras respuestas posibles podrían girar en torno a los protocolos de la capa de enlace de datos o en la arquitectura del servidor del cliente. Una de las posibles respuestas aquí: ¿qué sucede cuando escribes una URL?
Hubo una larga discusión en torno a esta pregunta como era de esperar, donde sutilmente verificó todo mi conocimiento de redes informáticas. Al final no quedó del todo convencido con mi respuesta, aunque admitió que no hay una respuesta correcta.
La cuarta pregunta era bastante simple. Dado un árbol binario, determine si es un árbol de búsqueda binario. Le di la solución transversal optimizada para el espacio simple que marcó el final de la ronda 2. Solución aquí: un programa para verificar si un árbol binario es BST o no
14 de 35 personas completaron esta ronda.
Ronda 3: Ronda Técnica
La segunda entrevista comenzó solo unos cinco minutos después de la primera, y también la tomó un solo individuo de su departamento de ingeniería y duró unos 45 minutos. Esta entrevista fue todo sobre bases de datos en la segunda mitad, mientras que la primera mitad fue una discusión basada en CV donde me preguntaron mucho sobre mis proyectos, y especialmente sobre mis contribuciones de código abierto como era de esperar.
La segunda mitad de la entrevista se estructuró con preguntas DBMS enstringdas, donde la respuesta de una dio lugar a las preguntas de la siguiente.
La primera pregunta fue representar la herencia en una base de datos relacional. Di el Living Beings -> Animal, Plants -> Mammals, Amphibians -> Dogs, Humans
ejemplo infame y escribí el esquema para el mismo. Aquí hay alguna referencia: Modelo ER mejorado
La segunda pregunta estaba relacionada con la seguridad de la base de datos y las propiedades de ACID. También aprovechó la oportunidad y me pidió que escribiera una clase de C++/JAVA para modelar la seguridad y la atomicidad en una base de datos bancaria en la que también probó mis habilidades de programación orientada a objetos. Esta pregunta se extendió a una larga discusión, ya que pudo encontrar lagunas en mis soluciones a medida que las eliminaba iterativamente, hasta el punto en que era bastante correcto.
La tercera pregunta fue optimizar el almacenamiento y la búsqueda en una base de datos, donde mencioné directamente B+ Trees, lo cual fue un gran error. Me pidió que escribiera un pseudocódigo para eliminarlo de B+ Trees, que no pude escribir. Pero en lugar de perder el tiempo intentándolo, dibujé un árbol B+ de ejemplo y mostré el proceso de eliminación de un Node en el diagrama, lo que lo convenció. Aquí hay alguna referencia: Introducción de B+ Tree
Luego me preguntó cómo ayudan los clústeres distribuidos a reducir aún más este problema.
Hubo algunas otras desviaciones del DBMS principal desde donde hizo preguntas a lo largo de la entrevista, pero nada fue imposible de responder o difícil y el entrevistador fue muy útil y agradable. La lección más importante de esta ronda fue poder justificar tu CV muy a fondo.
Algunas preguntas más sobre mis proyectos y algunos comentarios de la entrevista marcaron el final de la ronda 3.
10 de 14 personas despejaron esta ronda.
Ronda 4: Ronda Tecno-Gerencial
La tercera entrevista fue realizada por un solo hombre, un director de proyecto de su departamento de gestión y duró unos 35 minutos. A pesar de ser la entrevista más corta, pareció contener la mayor cantidad de contenido y por razones justas. Esta entrevista tenía preguntas basadas en CV sobre mis proyectos de código abierto, preguntas básicas sobre el sistema operativo, diseño del sistema y preguntas de gestión.
Durante los primeros 5 minutos, me habló sobre mis experiencias previas en entrevistas, mi experiencia general en la universidad y mis planes y sueños futuros. Cosas bastante triviales, muy esperadas.
Luego comenzó a hacer preguntas sobre el sistema operativo. Me preguntó acerca de la paliza y la paginación haciendo preguntas de ejemplo. Luego me pidió que explicara términos como condición de carrera, exclusión mutua y interbloqueo, y también me pidió que escribiera el código para la Solución de Peterson para el problema de la sección crítica.
Me pidió que escribiera código para el problema de Lectores-Escritores y sugiriera cambios de diseño para evitar la inanición de los escritores cuando hay un flujo infinito de lectores.
Me hizo algunas preguntas básicas sobre la programación de trabajos mientras revisaba mi CV y finalmente me hizo algunas preguntas detalladas sobre los sistemas operativos en tiempo real, ya que eso estaba en mi CV. Luego hablamos un poco sobre algunas cosas informales y una de mis pasantías anteriores, que marcó el final de la ronda 4.
7 de cada 10 personas completaron esta ronda.
Ronda 5: Ronda de recursos humanos
La última ronda la tomó un solo hombre, que era de su departamento de recursos humanos y duró solo 15 minutos. También me preguntó acerca de mis proyectos, pero esta vez sabía que tenía que dar respuestas en «la forma de RRHH» de las cosas.
Me preguntó sobre mis planes a futuro, sobre estudios superiores y/o roles corporativos y me despejó algunas dudas logísticas. Tomó algunas confirmaciones verbales de mí con respecto a la ubicación del trabajo, la descripción del trabajo y la aceptación de la oferta.
Eso fue todo, después de lo cual esperamos pacientemente los resultados, que se declararon en la misma hora.
3 de cada 7 personas aprobaron esta ronda y se les ofreció el trabajo (Prácticas + Tiempo completo). Los tres lo aceptamos.
Conclusión:
Todo el proceso fue muy prolijo, completo y suficiente en cuanto a tiempo, contenido, dificultad y resultados. A diferencia de algunos estudiantes, no tuve que esperar entre mis entrevistas y el proceso fue muy sencillo para mí. Espero comenzar a trabajar a partir de enero de 2020.
Algunos consejos para el lector:
- No hace falta decir que trate a GFG como su Biblia. Practique la codificación competitiva en Interview Bit, Hackerrank y Code Chef.
- No entre en pánico en ningún momento del proceso. Mucho depende de cuán inteligente y fluidamente puedas comunicarte. Recuerde, no tiene sentido ser talentoso si no puede decírselo a su entrevistador.
- Responde algo, si no todo. No intentes saltar a la respuesta o simplemente quedarte donde estás. En su lugar, intente arrastrarse a través de la solución lenta y constantemente.
- Algunas preguntas de recursos humanos son preguntas básicas con respuestas básicas. No responda a estas de manera emocional, con lo que quiero decir que no tiene sentido ser «audaz» y «franco» cuando todo lo que tiene que hacer es decir un simple sí o no.
- Busca en Google las respuestas a aquellas preguntas que te perdiste, en el tiempo que tienes entre entrevistas. Si tiene la oportunidad, solicite una breve retroalimentación de la entrevista e intente cerrar cualquier pregunta abierta en la misma sala de entrevistas, solicitando sugerencias direccionales (no soluciones), lo que le muestra a su entrevistador que está ansioso por resolver un problema.
- Vístase apropiadamente y siga estrictamente el código de conducta. ¡Te están mirando!
- No mientas en tu CV. En serio, no lo hagas. Alguna vez.
¡Te deseo toda la suerte en la vida!
Publicación traducida automáticamente
Artículo escrito por KrishnaBirla y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA