Experiencia de entrevista de AirAsia para desarrollador sénior de aplicaciones móviles (Android)

Asistí a la entrevista de AirAsia – Senior Mobile Developers el 14 de noviembre de 2019. Hubo un total de cinco rondas para este puesto y cada ronda fue demasiado desafiante. Estas rondas fueron 

Ronda 1 (en discusión con el reclutador de tecnología líder 15 minutos) : esta ronda es una discusión uno a uno entre el candidato y el reclutador de tecnología líder, esta ronda puede ser por Skype o conversación telefónica.

Expectativas:

  • Cuánto saben los candidatos aplicados sobre este puesto y empresa.
  • Qué está haciendo el candidato actualmente y cuánta experiencia tiene en este puesto.
  • Para saber sobre la experiencia laboral total en desarrollo de Kotlin y Android.
  • Disponibilidad del candidato para la próxima ronda
  • Por qué el candidato está interesado en unirse a esta empresa y la razón por la que busca un nuevo trabajo.

Ronda 2 (evaluación de Android, 1 semana): en esta ronda , Lead Tech Recruiter proporcionará una tarea técnica de Android y el candidato debe completarla dentro de un tiempo determinado y debe enviarla en GitHub/bitbucket, etc. 

Expectativas:

  • ¿Qué tan bueno es su algoritmo, la técnica que aplica para hacer que la aplicación sea más rápida, etc.?
  • Escalabilidad
  • Testabilidad
  • Patrones de diseño
  • Código demostrable
  • Separación clara de preocupaciones (buen diseño de clase)
  • Corrección funcional e integridad
  • Legibilidad
  • Modularidad y Extensibilidad
  • Manejo de excepciones

Antecedentes: Todos los ingenieros de la Compañía X se turnan para dar soporte al negocio durante medio día a la vez. Actualmente, generar un cronograma que muestre de quién es el turno de apoyar el negocio se está haciendo manualmente, ¡y necesitamos automatizar eso!

Tarea: Su tarea es diseñar y construir una «Rueda de apoyo del destino» en línea. Esto debería repetirse seleccionando dos ingenieros al azar para que ambos completen medio día de soporte (turno) cada uno para generar un cronograma que muestre a quién le toca dar soporte al negocio.

Obtenga la lista de ingenieros de una API que devuelve la siguiente respuesta:

{
 "engineers": [
   {
     "id": 0,
     "name": "Bogdan"
   },
   {
     "id": 1,
     "name": "Nic"
   },
   {
     "id": 2,
     "name": "Tung"
   },
   {
     "id": 3,
     "name": "Gautam"
   },
   {
     "id": 4,
     "name": "Bala"
   },
   {
     "id": 5,
     "name": "Nazih"
   },
   {
     "id": 6,
     "name": "Huteri"
   },
   {
     "id": 7,
     "name": "Aldy"
   },
   {
     "id": 8,
     "name": "Ankur"
   },
   {
     "id": 9,
     "name": "Chinh"
   }
 ]
}  

(*) Debería poder crear una API simulada mediante servicios como Apiary o crear su propia API en algún lugar de la nube

Suposiciones: puede suponer que la empresa X tiene 10 ingenieros. Puede suponer que el cronograma abarcará dos semanas y comenzará el primer día hábil de la próxima semana.

Reglas: Actualmente, hay 4 reglas:    

  • Solo hay dos turnos de apoyo por día, un turno de día y un turno de noche.
  • Un ingeniero puede hacer como máximo un turno en un día.
  • Un ingeniero no puede tener más de un turno en días consecutivos.
  • Cada ingeniero debe haber completado 2 turnos de soporte en cualquier período de 2 semanas.

Nota IMPORTANTE: 

  • Estas reglas pueden cambiar en el futuro, así que asegúrese de que su diseño sea lo suficientemente flexible y escalable para poder agregar nuevas reglas.
  • Todo el código debe ir acompañado de notas de la versión que incluyan citas de cualquier recurso, herramienta o marco utilizado en la compilación.
  • El código no debe contener ningún código o componente de propiedad de terceros.
  • Un desarrollador no puede reclamar ningún derecho a perpetuidad contra AirAsia por ningún material enviado.

Entregables: Proporcione una aplicación móvil funcional (junto con el código fuente en git) basada en el alcance del trabajo descrito en este documento, utilizando la API en el formato proporcionado (que debe simular usted mismo utilizando un servicio como Apiary o crear una API por su cuenta). en AWS), dentro del tiempo dado para completar la tarea.    

La aplicación tiene una interfaz de usuario para mostrar la lista de ingenieros obtenida y el cronograma generado por el algoritmo desarrollado. UX/UI depende de usted para decidir; sin embargo, se deben incluir las dos pantallas siguientes:

  • Pantalla de lista de ingenieros: una pantalla que muestra la lista de ingenieros obtenida con un botón «Generar programación» en algún lugar de la interfaz de usuario. Al hacer clic en el botón «Generar horario» debería navegar a la pantalla de horario.
  • Pantalla de programación: Una pantalla que muestra la programación generada. El usuario debería poder volver a la pantalla de la lista de ingenieros haciendo clic en el botón Atrás.

Requisitos no funcionales: la calidad del código es lo más importante. Muéstrenos qué significa la calidad del código para usted. Cuanto más haga, más podrá poseer nuestros servicios. En concreto, nos fijaremos en los siguientes factores:

  • Rendimiento: qué tan bueno es su algoritmo, la técnica que aplica para que la aplicación sea más rápida, etc.
  • Escalabilidad
  • Testabilidad
  • Legibilidad
  • Patrones de diseño

Ronda 3 (HR 30min): La tercera ronda es una ronda de recursos humanos, que discutió el salario y algunas preguntas técnicas, etc.

Ronda 4 (CEO 30 min): La ronda final es entre el CEO o cualquier autoridad superior de la empresa y el candidato para discutir el plan futuro y cómo el candidato beneficia a la empresa.

Publicación traducida automáticamente

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