Tekion vino a contratarse en agosto de 2020 en nuestro campus para el puesto de SDE (FTE + pasantía). Tuvimos un total de 5 rondas (1 en línea + 2 técnicas + 1 gerencial + 1 HR). Aquí está mi experiencia de entrevista para el mismo.
Ronda 1 ( Ronda de codificación en línea):
Esta ronda se llevó a cabo en la plataforma hackerearth. Hubo 16 MCQ y 2 preguntas de codificación de dificultad fácil/media.
Los MCQ contenían predominantemente preguntas de búsqueda de resultados donde el código estaba en Java. Aparte de esto, los MCQ tenían preguntas de DBMS y análisis de algoritmos. También hubo 1 pregunta fácil de aptitud.
Mis sugerencias: Practique las preguntas de salida de herencia en java. Aprenda los conceptos de DBMS a fondo y sea bueno con el análisis de algoritmos (complejidad de espacio y tiempo).
La primera pregunta de codificación fue la siguiente.
Una función f(x) se define como el número de fibonacci más pequeño mayor o igual que x. Ej: f(1)=1,f(5)=5,f(6)=8. La tarea es calcular g(l,r) donde g(l,r) se define como g(l,r) = f(l)+f(l+1)+f(l+2)+….. +f(r). Restricciones: 1<=l<=r<=10^9.
La idea es calcular primero todos los números de Fibonacci por debajo de 10 ^ 9 y el número de Fibonacci más pequeño mayor que 10 ^ 9. Apenas hay 46 de esos números de Fibonacci. Ahora podemos ejecutar un ciclo de l a r y verificar el límite inferior de cada número entre l y r. El problema es que dado que rl en el peor de los casos es 10^9, se obtendrá un veredicto tle si simplemente encontramos el límite inferior para cada número de l a r (¿Puedes optimizar esta solución para pasar todos los casos de prueba?).
La segunda pregunta de codificación fue la siguiente.
Dadas N monedas y una array de costos que representa el costo de cada dígito (1…9), donde costos[i] es el costo de elegir el dígito i. La tarea es encontrar el número más grande que se puede representar usando las N monedas.
Ejemplo:
Entrada: N = 5, costos = [12, 3, 5, 1, 2, 6, 8, 9, 1]
Salida: 99999
Explicación: podemos elegir 5 9 para hacer 99999 ya que elegir el dígito 9 cuesta 1 moneda,
Restricciones:
tamaño de (costos) = 9
1 <= V <= 10^3
1 <= norte <= 10^3
1 <= costos[i] <= 10^3
Ronda 2 (Entrevista Técnica 1)
Me pidieron que presentara mi familiaridad técnica, los idiomas que uso y si me siento cómodo con Java o no. Como uso principalmente C++, le dije que soy un tipo de C++ y que el entrevistador estaba de acuerdo. Luego me pidió que explicara cuatro términos del concepto ups. Le expliqué encapsulación, herencia, abstracción y polimorfismo. El entrevistador quedó satisfecho con mi respuesta y pasamos a DBMS. Me preguntó con qué tipo de bases de datos había trabajado en el pasado. He trabajado con bases de datos relacionales por lo que las preguntas que me hacían estaban relacionadas con ellas. Me pidió que explicara la indexación y los tipos de combinaciones en SQL. Después de responder estas preguntas, el entrevistador pasó a la parte de codificación de la entrevista.
La primera pregunta que me hicieron fue encontrar la longitud de un bucle en la lista enlazada. Empecé con una solución O(n^2) y me pidió que la optimizara. Le di una solución de mapa hash y me pidió que optimizara aún más la solución. Luego le di la solución óptima usando punteros rápidos y lentos. Estaba satisfecho con la respuesta y me pidió que la codificara. Después de verificar el código, pasamos a la siguiente pregunta.
La segunda pregunta fue, dado un entero objetivo x, tenía que encontrar el entero mayor menor que igual a x en un árbol de búsqueda binaria. Di una solución recursiva a esta pregunta usando la propiedad del árbol de búsqueda binaria. El entrevistador quedó satisfecho con mi respuesta y me pidió que escribiera el código. Después de escribir el código, lo verificó y encontró un pequeño caso de prueba que yo había pasado por alto en el código. Me pidió que lo corrigiera. Pude arreglar el código.
Después de las preguntas de codificación, me preguntó si tenía algunas preguntas para él. La ronda salió bien y el entrevistador fue muy amable y disfruté de la conversación con él.
Recibí un correo para la próxima ronda una hora después de esta ronda.
Ronda 3 (Entrevista técnica 2):
El entrevistador también fue muy amable en esta ronda. Me pidió que explicara un proyecto reciente que hice. Recientemente había hecho un proyecto sobre resúmenes de audio, así que se lo expliqué. Aparte de eso, también expliqué sobre otro proyecto en el que tuve que idear un algoritmo para resolver un problema.
Luego, el entrevistador me pidió que escribiera un algoritmo de reproducción aleatoria para un reproductor de música. Dada una array de canciones (mencionó específicamente la array dos veces), escriba un algoritmo que realice lo siguiente:
1. El algoritmo selecciona aleatoriamente una canción y la reproduce.
2. Una canción reproducida no debe volver a reproducirse a menos que se hayan agotado todas las canciones de la array.
3. Las canciones deben reutilizarse una vez que se agote la array.
La primera solución que le di fue mantener una array booleana que marcaría las canciones como reproducidas/no reproducidas para cada índice i en la array. Si el índice aleatorio generado ya se reprodujo, regeneraré un índice aleatorio. El entrevistador me preguntó los posibles problemas con este diseño. El problema con este diseño es que una vez que se han reproducido la mitad de las canciones, la probabilidad de generar el índice de una canción reproducida es alta y podemos quedar atrapados en un ciclo infinito de generación del índice de una canción ya reproducida. Me pidió que improvisara esta solución.
Después de algunas reflexiones, se me ocurrió una solución en la que usaría dos arrays. Una vez que se reproduce una canción aleatoria, movería esa canción a la nueva array y cambiaría todas las canciones detrás de la canción reproducida en 1 posición. La desventaja obvia de este diseño fue que, en el peor de los casos, el tiempo necesario para reproducir una canción se escalaría linealmente con el tamaño de la array de canciones. El entrevistador me pidió que optimizara aún más la solución. Quería una solución de espacio constante.
En ese momento, la solución óptima hizo clic en mi mente. Le dije que, en lugar de usar otra array, una vez que se genera un índice aleatorio y se reproduce la canción, cambiaré esta canción con la canción al final de la array y reduciré el tamaño de la array en 1. Una vez que el tamaño de mi array se convierte en cero, puedo restablecerlo al tamaño inicial de la array. (Este proceso es algo similar a lo que se hace en el algoritmo de ordenación en montón). El entrevistador quedó satisfecho con esta solución y me pidió que codificara la solución. Pude codificarlo en unos minutos y después de un poco de discusión pasamos a la siguiente pregunta.
La segunda pregunta fue encontrar el k-ésimo elemento más grande en un bst. Le dije que si el tamaño de bst es n, entonces puedo encontrar el (nk)-ésimo elemento más pequeño en bst. Me dijo que supusiera que se desconoce el tamaño del bst. Luego le di la solución en orden inverso, donde primero atravesamos el subárbol derecho del Node en lugar del izquierdo. Quedó satisfecho con mi respuesta y me pidió que codificara la solución. Después de verificar el código, todavía nos quedaba algo de tiempo. Así que me hizo una pregunta más.
Dada una array*m, donde 0 representa una celda bloqueada y 1 representa una celda transversal, y dadas las coordenadas de los gatos y el ratón en la array. Un gato podría moverse a cualquiera de las 8 celdas vecinas. Tuve que averiguar si existe un camino desde la celda del gato hasta la celda de la rata y, si existe, tuve que imprimirlo. Le expliqué el enfoque estándar de retroceso. Estaba contento con la solución y me pidió que la codificara.
Después de verificar el código, me preguntó si tenía alguna pregunta para él. La ronda salió bien y confiaba en que recibiría un correo para la próxima ronda.
El correo llegó 2 horas después.
Mi sugerencia para rondas técnicas:
1. Conozca las preguntas de programación más frecuentes. Geeks for geeks es un gran lugar para aprender estas preguntas.
2. Aprenda bien sus materias principales, como DBMS, oops, sistema operativo y redes. No hay entrevista en la que no te interroguen sobre estos temas.
3. Interactuar con el entrevistador. Practique el proceso de pensar en voz alta (hablar mientras piensa en una solución). Esto realmente ayuda en las entrevistas cara a cara.
4. Tu entrevistador es tu amigo. Si te quedas atascado, están ahí para ayudarte. No asuma que necesita dar una respuesta perfecta en el primer intento. Ellos te ayudarán si no encuentras una solución.
5. Incluso si sabe una respuesta óptima, dar varias respuestas antes muestra que puede pensar en más de una solución. Busque múltiples respuestas además de las óptimas también.
6. Utilice convenciones de nomenclatura adecuadas. Mantenga un estilo de escritura consistente. (Si codifica en python o cpp, use el caso de serpiente. En java, prefiera el caso de camello).
7. Explique su código mientras escribe. Obtenga sus suposiciones validadas con el entrevistador. Esto ayuda a construir la conversación y será muy claro sobre el código que está escribiendo.
Ronda 4 (entrevista gerencial):
Nunca antes había dado una ronda de gestión, así que me esperaba una sorpresa. Revisé el perfil de LinkedIn de mi entrevistador. Era un tipo técnico y también esperaba preguntas técnicas en esta ronda.
El entrevistador me saludó y me preguntó qué sabía de la empresa. Le expliqué lo que había investigado y parecía estar bien con la respuesta.
Luego me preguntó por qué elegir Tekion cuando podía abrir una startup propia. Le dije que no tenía una idea en este momento para un MVP. Esta fue una respuesta genuina y pasó a la siguiente pregunta.
Luego me pidió que le dijera mis 5 fortalezas y debilidades. Me dijo que no endulzara mis fortalezas como debilidades. Me dijo que me enredaría en una serie de preguntas si hacía eso. Pude hacer eso sin endulzar mis debilidades. Luego me pidió que agregara dos puntos fuertes más. Yo también hice eso. Luego me pidió que recordara todo lo que le dije. No pude recordar uno de mis puntos fuertes, y él realmente quería que lo recordara. Me dijo que me ofrecería el puesto en este momento si pudiera recordar mi fuerza y que me rechazaría de lo contrario. Hice lo mejor que pude pero no podía recordarlo. Estaba nervioso si pasaría a la siguiente ronda o no. El entrevistador me dijo la última fuerza que se me olvidó antes de colgar. (era que me comunico bien).
A pesar de una entrevista no tan buena, recibí el correo para la entrevista de recursos humanos 30 minutos después.
Ronda 5 (entrevista de recursos humanos):
Fue la entrevista más corta de todas. El hr fue muy amable y me agradeció por ser paciente durante todo el día. Me pidió que le contara lo que he estado haciendo durante los últimos 3 o 4 meses y lo que ha estado sucediendo en mi localidad. Después de esto, me pidió que le contara sobre un proyecto que hice. Luego me preguntó si tenía alguna pregunta para él. Hice algunas preguntas sobre la pila tecnológica de la empresa. Después de una buena discusión de 15 minutos, la entrevista terminó.
Los resultados se declararon al día siguiente y me seleccionaron.
Mi sugerencia para rondas gerenciales y de recursos humanos:
1. Conozca sus fortalezas y debilidades. Haz un análisis DAFO adecuado y una introspección personal antes de ir a esta ronda.
2. Tenga algunos ejemplos que respalden sus afirmaciones. Si das un ejemplo de la vida real, el entrevistador aceptará la respuesta.
3. No haga afirmaciones falsas. El entrevistador captará tus mentiras fácilmente.
4. Investigación sobre los valores, la misión y visión de la empresa. Conocer la pila tecnológica de la empresa es una ventaja. 5. Prepare algunas preguntas que le haría al entrevistador de antemano. Abstenerse de pedir respuestas a las preguntas que no pudo contestar.
6. Sepa lo que hay en su currículum. Revise todo lo que menciona en el currículum una vez antes de asistir a las entrevistas.
Sugeriría preparar las materias básicas y las preguntas de programación en geeksforgeeks. Para obtener más información sobre las entrevistas de la empresa, profundice en las experiencias de entrevistas de gfg. Mantenga la calma y todo lo mejor para sus entrevistas.
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