Estoy compartiendo mi experiencia de entrevistarme con Atlassian . Todo el proceso se divide en las siguientes secciones:
- Prueba en línea:
- La prueba en línea se realizó en Hackerrank. El tiempo de duración fue de 90 minutos y hubo 3 problemas.
- Problema 1:
- Este fue un problema simple (50 puntos) pero R era el único lenguaje de programación permitido. Esa es la razón por la que ninguno de nosotros fue capaz de resolverlo.
- Problema 2:
- Era un problema simple basado en DP en Tree (75 pts).
- Dado un árbol (gráfico general) de n Nodes con valores de cada Node siendo el número de Node (es decir: el Node x tiene valor x). En cada consulta se nos dará un Node y un valor de salto . Entonces, necesitamos calcular el valor total cuando comenzamos en el Node dado y saltamos por cantidad de salto hacia la raíz del árbol. Por lo tanto, si el valor de salto es 3, nos movemos desde el Node inicial hasta su 3er ancestro, luego el 6to ancestro, el 9no y así sucesivamente hasta que no pueda saltar más.
- Hubo q consultas (q <= 10^5) pero el punto clave fue que el valor de salto para cada consulta fue <= 10. En otras palabras, en cada salto, no puedes moverte más allá de tu décimo ancestro.
- Problema 3:
- Este fue un problema estándar (100 pts).
- Se le proporciona una array donde cada elemento (arr[i]) representa la altura de la torre en la posición i.
- Para cada i, necesitamos calcular el índice j más cercano (j > i o j < i) cuya altura sea menor que la altura de la torre actual (arr[j] < arr[i]). Si existen dos torres de este tipo, una a la derecha y otra a la izquierda, elija la que esté más cerca.
- Se puede resolver fácilmente usando dos pilas (una para la derecha y otra para la izquierda).
- Problema 1:
- La prueba en línea se realizó en Hackerrank. El tiempo de duración fue de 90 minutos y hubo 3 problemas.
- Ronda Técnica 1:
- Hubo dos entrevistadores y ambos fueron realmente geniales y sorprendentes. Me sentí muy cómodo codificando con ellos.
- Se realizó en Zoom. Usé mi editor atom y la pantalla compartida.
- Entonces la pregunta queda como:
- Tenemos que decidir el ganador entre los candidatos en un proceso de votación. Básicamente, se le ha dado una lista de strings. Cada string representa el nombre de un candidato. El número de veces que aparece la string en la lista da el número de votos que tiene.
- Hasta ahí muy sencillo. Utilice un mapa (ordenado o desordenado) y cuente sus ocurrencias. La string (nombre) que tiene la ocurrencia más alta es la ganadora.
- Pero, ¿cómo nos manejamos si hay un empate? Un empate ocurre cuando varios candidatos obtienen la misma cantidad de votos.
- Discutimos múltiples estrategias para eso. Una estrategia importante fue tomar el valor ponderado (por lo que C1(2,2,2,1) ganará a C2(2,2,1,1,1)).
- Estaba usando múltiples estructuras de datos como map, unordered_map, etc. El entrevistador me pidió que organizara estas estructuras de datos porque parecían muy complicadas.
- Luego creé una estructura de cada candidato. Puse candidato_nombre, ganador (bool), vector<int> votos, totol_votes como sus atributos. Finalmente, creé un vector<Candidate> que simplificó enormemente la implementación.
- Lo que realmente querían probar era cómo abordaba los problemas. Cómo los depuro (Muy importante). ¿Cómo manejar los casos de esquina? ¿Cómo mantener las cosas simples? Mientras tanto, expresa lo que realmente estás tratando de hacer en lugar de estar callado y programar.
https://practice.geeksforgeeks.org/problems/winner-of-an-election-where-votes-are-represented-as-candidate-names-1587115621/1
- Ronda técnica 2:
- Esta ronda consistió en un solo entrevistador y se realizó en Zoom.
- Fue una ronda de pares de códigos en Hackerrank. Fue el más largo de todos y fue muy exhaustivo.
- También se puede subdividir en varias fases:
- Fase 1:
- Discusión sobre proyectos. Mencioné varios proyectos que involucran API REST, servicios de AWS (AWS API Gateway, AWS Lambda, AWS CloudWatch, etc.). GraphQL, golang, MongoDB, NodeJS, etc.
- Tardó más de 0,5 horas. El foco estaba en:
- ¿Qué significa? ¿Por qué elegiste esto sobre otros?
- ¿Cuáles son las ventajas y desventajas? ¿Cuáles son los desafíos técnicos que enfrentaste?
- Ej: ¿Por qué las API REST? ¿Por qué GraphQL cuando hay REST? ¿Por qué ir? ¿Por qué AWS Lambda y no algún otro servicio de AWS? etc.
- Fase 2:
- Fue una ronda de resolución de problemas.
- El entrevistador no estaba siendo muy claro acerca de los requisitos del problema, por lo que realmente tomó algún tiempo comprender el problema. Por lo tanto, le sugiero que comprenda el problema haciendo preguntas aclaratorias repetidamente.
- Se le da una string inicial. El problema es encontrar el prefijo coincidente más largo para cada string en una larga lista de strings.
- Le conté sobre el algoritmo KMP y también discutí otros algoritmos diferentes. Pero estaba interesado en saber qué ESTRUCTURA DE DATOS usaría.
- Finalmente lo tengo. Necesitamos usar un TRIE para obtener el prefijo para cada string. En realidad, le pedí una pista y me dijo que no se preocupe por la memoria. Asumamos que tenemos mucha memoria a nuestra disposición. Trie inmediatamente hizo clic en mi mente.
- Pareció muy feliz con mi respuesta. No me dijo que implementara Trie. (Pero uno debe estar siempre listo para eso).
- Fase 3:
- Después de las primeras 2 fases, me preguntó sobre mis temas favoritos.
- Respondí: Algoritmos, Estructuras de Datos y Sistemas Operativos. Me dijo que ya hemos probado tus habilidades algo & ds. Pasemos a los sistemas operativos.
- El punto clave fue: estoy muy interesado en el sistema operativo y he leído Silberschatz de principio a fin. Supongo que esa es la razón por la que no enfrenté muchas dificultades en esta fase.
- Preguntas:
- ¿Qué sistema operativo usas como ingeniero de CS?
- linux Ubuntu.
- ¿Por qué Linux? Háblame de Linux.
- Linux es un sistema operativo de código abierto. Se basa en la arquitectura del núcleo monolítico y utiliza el algoritmo de programación CFS que emplea árboles RB .
- Múltiples preguntas de seguimiento sobre:
- Monolítico VS Microkernel
- Ejemplo de micronúcleo
- Windows frente a Linux
- ¿Diferencias entre proceso y subproceso?
- ¿Espacio del kernel vs espacio de usuario?
- ¿Memoria virtual?
- ¿Intercambio? ¿Cómo se asigna la memoria virtual a la memoria física?
- ¿Cómo se comunican los procesos? ¿Memoria compartida y paso de mensajes?
- ¿Controladores de dispositivo?
- ¿Qué sistema operativo usas como ingeniero de CS?
- Fase 1:
- La entrevista estaba programada para 1 hora, pero duró 1 hora y 20 minutos o más. Pero fue muy interesante y me encantó discutir conceptos con el entrevistador.
- Ronda de recursos humanos:
- La ronda final fue una ronda de recursos humanos.
- Debo admitir que era el tipo más genial que he conocido. Se presentó y me pidió que lo presentara también.
- Su habilidad de comunicación fue asombrosa y tuvimos una muy buena conversación bidireccional.
- Preguntas:
- Resuma su viaje de Ingeniería.
- ¿Qué es lo que te gustaría cambiar de tu universidad?
- ¿Cuál es el mayor fracaso de tu vida? ¿Cómo superaste eso? ¿Te arrepientes?
- ¿Cómo se alinean tus valores personales con los de Atlassian?
- ¿Qué papel te encanta jugar en un equipo?
- Preguntas que le hice al entrevistador:
- ¿En qué se diferencia Atlassian de otras empresas?
- Los puntos que habló fueron realmente útiles y emocionantes.
- ¿Cuáles son las oportunidades que tendría en Atlassian?
- Hay un montón de oportunidades.
- ¿En qué se diferencia Atlassian de otras empresas?
- Fue una experiencia increíble. El entrevistador fue muy tranquilo y comprensivo.
Esto concluye mi experiencia con Atlassian. Espero que este artículo ayude a comprender el proceso de entrevista en Atlassian.
¡¡Mis mejores deseos!!
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