Ejemplo de una prueba técnica Junior aplicable a cualquier lenguaje

Overview

Prueba Técnica Cola Prioridad Sin Repetidos

Ejemplo de una prueba técnica Junior aplicable a cualquier lenguaje.

Kotlin Java TypeScript Kotlin-js Kotlin-native LISENCE GitHub

El problema

Tenemos un proceso, que tiene un identificador, un nombre y una prioridad (1-9). Queremos manejar una cola de prioridad, sin repetidos. Sabremos que un elemento es repetido si tiene el mismo id. La prioridad es de 1 a 9 siendo 9 la más alta. Debemos tener en cuenta que si un proceso ya existe no se puede insertar. Por otro lado queremos un controlador que nos centralice el proceso de manejar la cola. Al sacar el primer proceso de la cola (se obtiene y se elimina, porque es una cola) o mostrarlos ordenados, siempre es por prioridad descendente, de más a menos. Se pide resolver el problema, justificando tu solución (diseño, patrones, técnicas de programación usadas) y testear las operaciones críticas a nivel de la cola y controlador.

Una variación del problema

Puedes hacer una variación, es que si el proceso existe se deben actualizar sus datos. (Esto te lo dejo a ti 💪 )

Hazlo en otros lenguajes

Si quieres hacerlo en otros lenguajes, crea un directorio con el nombre del lenguaje y mete el proyecto de tu solución. Si ya está el directorio, me avisas y vemos como solucionamos o hacemos distintas soluciones para el problema.

Es importante que muestres que todo se testea a nivel unitario y usando algún mock.

Una vez hecho hazme un pull-request y pásame el color del logo del lenguaje que quieres que salga en la cabecera ¿Te atreves? 😉

Lenguajes disponibles

Acerca de

Este ejercicio de clase, tiene como objetivo mostrar aspectos de programación para la realización de una prueba técnica.

La idea principal es que puedas resolverlo con cualquier lenguaje de programación. Pero son los sutiles detalles lo que marcan la diferencia. Hay infinitas soluciones. Aunque está centrada en Kotlin, parcialmente tienes un directorio con la solución parcialmente en Java vista en clase al igual que otros lenguajes. Aunque lo importante es que puedas resolverlo con cualquier lenguaje de programación y sigas los pasos indicados siempre que puedas. No es tanto el qué resuelvas si no el cómo lo resuelvas y lo que expliques, comentarios o técnicas que utilices.

Te dejo algunos consejos.

Antes de programar

Hazte un esquema de cómo vas a sacar la solución. Abrir el IDE y picar sin ton ni son aunque lo tengas claro no ayuda. Empezar a escribir, borrar, corregir, borrar, cambiar, noe stá muy bien visto.

5 minutos de diseño, ayudan a más de una hora de programación: patrones, diseño, SOLID, prueba a realizar.

Haz un repositorio

Al crear el proyecto, crea el repositorio GIT. No se trata de dar con la solución, si no de mostrar todas las habilidades técnicas para el desarrollo de software. Haz commit en cada punto importante. Si te equivocas puedes volver atrás.

Piensa primero en los test

¿Te he dicho que es una prueba técnica? De que me sirve una solución, si no sabemos si funciona bien. Antes de programar piensa y escribe los test, aplica algo de tDD, demostrarás que conoces su filosofía. El ejemplo es suficientemente sencillo para no complicarte la vida. A partir de aquí, crea el código que necesites pasando el test.

Recuerda: Un test también es programar. No se hacen solos ;)

Ahora implementa la solución

Mira lo que has avanzado antes de programar:

  • Has hecho un diseño, tienes las ideas de qué tienes que hacer.
  • Has hecho el repositorio.
  • Tienes unos test que te aseguran tu solución.

¿No está mal?

Ahora toca programar. Intenta aplicar todo que conozcas pero de una manera elegante. No meter por meter. Aplica programación funcional y cuestiones de inmutabilidad. Elige y justifica los TDAs que vas a usar. Hay varias formas y todo depende de lo que justifies o expliques. Aplica algunas interfaces, inyección de dependencias de forma manual, algún patrón, y conocimientos de Programación Orientada a Objetos etc.

Como te he dicho, el ejemplo es lo suficientemente sencillo para que lo resuelvas siguiendo tu propio camino. El mérito está en haber realizado los puntos anteriores, no tanto en este.

Documenta tu solución

Es importante que algunos aspectos del código estén documentados, ya sea usando comentarios, documentación de clases, documentación de interfaces, etc. Pero lo más relevante es que su tu código es "limpio" muchas de las cosas estarán autodocumentadas.

Finalmente, haz un README.md con todo lo que has hecho y justificando tus elecciones y soluciones.

Tiempo

Piensa que el tiempo no es infinito, esto no te debería llevar más de 60 minutos. Intenta no pasar más de 60 minutos. Si no lo consigues, no te preocupes, puedes volver a empezar y seguir practicando.

Autor

Codificado con 💖 por José Luis González Sánchez

Twitter GitHub

Contacto

Cualquier cosa que necesites házmelo saber por si puedo ayudarte 💬 .

              

¿Un café?

joseluisgs




Licencia de uso

Este repositorio y todo su contenido está licenciado bajo licencia Creative Commons, si desea saber más, vea la LICENSE. Por favor si compartes, usas o modificas este proyecto cita a su autor, y usa las mismas condiciones para su uso docente, formativo o educativo y no comercial.

Licencia de Creative Commons
JoseLuisGS by José Luis González Sánchez is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.
Creado a partir de la obra en https://github.com/joseluisgs.

You might also like...
Prueba técnica solicitada por Grupo Salinas

AppDePeliculas Prueba técnica solicitada por Grupo Salinas Faltó por implementar dos cosas: 1) Soporte local para la pantalla detalles (la pantalla pr

Reach plc. Apps Team Exercise (Junior)Reach plc. Apps Team Exercise (Junior)

Reach plc. Apps Team Exercise (Junior) Description One of our magazines is looking for new sources of revenues and starts a few partnerships with beau

Este es un ejemplo de como usar Kotlin en un proyecto Node.js, una api rest en Node.js con Express
Este es un ejemplo de como usar Kotlin en un proyecto Node.js, una api rest en Node.js con Express

Kotlin Hello Node.js Este es un ejemplo de como usar Kotlin en un proyecto Node.js, una API REST con Express Kotlin Hello Node.js Acerca de Uso Compil

Reach plc. Apps Team Exercise (Junior)

Reach plc. Apps Team Exercise (Junior) Description One of our magazines is looki

Jugando con un Parking realizado como prueba de examen en JetBrains Academy, curso Kotlin Developer
Jugando con un Parking realizado como prueba de examen en JetBrains Academy, curso Kotlin Developer

Kotlin Parking Lot Proyecto de evaluación para el título de Kotlin Developer en Jetbrains Academy. Consiste en realizar un parking con las especificac

App de ejemplo para el contenido gratuito de Compose Expert
App de ejemplo para el contenido gratuito de Compose Expert

App de Ejemplo de Compose Expert Compose Expert va a ser la formación de Jetpack Compose más importante en habla hispana, donde podrás aprender todo l

ImagesApp  Aplicación que consume la API de Unsplash con Retrofit y muestra una lista de imágenes
ImagesApp Aplicación que consume la API de Unsplash con Retrofit y muestra una lista de imágenes

ImagesApp Aplicación que consume la API de Unsplash con Retrofit y muestra una lista de imágenes. Esta aplicación fue desarrollada usando la arquitect

Kotlin-GraphQL-Apollo - Sencillo cliente para consumir una API GraphQL con Apollo usando Kotlin
Kotlin-GraphQL-Apollo - Sencillo cliente para consumir una API GraphQL con Apollo usando Kotlin

Kotlin GraphQL Apollo Sencillo cliente para consumir una API GraphQL con Apollo

Una aplicación para visualizar el catalogo de peliculas actual.
Una aplicación para visualizar el catalogo de peliculas actual.

FILMY es una aplicación destinada a dispositivos móviles Android, donde el usuario puede observar todas las películas lanzadas hasta el momento siendo

Ejemplo de uso de JetPack en Android con Kotlin
Ejemplo de uso de JetPack en Android con Kotlin

Kotlin Jetpack Android Ejemplo de implementar poco a poco Jetpack Android en Kotlin Kotlin Jetpack Android Acerca de Android Jetpack View Binding View

Ejemplo de cómo trabajar con DataFrames similar a Pandas (python) en Kotlin.
Ejemplo de cómo trabajar con DataFrames similar a Pandas (python) en Kotlin.

Kotlin DataFrames Pandas Ejemplo de cómo trabajar con DataFrames similar a Pandas (python) en Kotlin. Kotlin DataFrames Pandas Acerca de Autor Contact

Ejemplo de cómo trabajar con gráficos en Kotlin
Ejemplo de cómo trabajar con gráficos en Kotlin

Kotlin Let's Plot Ejemplo de cómo trabajar con gráficos en Kotlin. Kotlin Let's Plot Acerca de Autor Contacto ¿Un café? Licencia de uso Acerca de Este

Ejemplo de API Rest Blog con Spring Boot + Kotlin + Gradle
Ejemplo de API Rest Blog con Spring Boot + Kotlin + Gradle

Blog Ejemplo de API Rest Blog con Spring Boot 2.7.3 + Kotlin + Gradle + Java 17 El objetivo es que pueda servir como guía para el aprendizaje, lo más

Es este repositorio, desarrollaremos e implementaremos una aplicación móvil nativa para la asignatura PAMN

BeHealthy “Have a good diet” Descripción breve del proyecto Este documento explica el objetivo de BeHealty como aplicación de software, las partes de

Ejemplo de App Android con Kotlin, Jetpack Compose, Retrofit y consumo de la API REST de Pokémon
Ejemplo de App Android con Kotlin, Jetpack Compose, Retrofit y consumo de la API REST de Pokémon

Pokémon Jetpack Compose Ejemplo de App Android con Kotlin, Jetpack Compose, Retrofit y consumo de la API REST de Pokémon Jetpack Compose Retrofit Poké

Nuestro amigo R2-D2 ha sido enviado junto a Luke Skywalker debido a una serie de problemas relacionados con la contaminación en la Luna de Endor. Problema de Acceso a Datos
Nuestro amigo R2-D2 ha sido enviado junto a Luke Skywalker debido a una serie de problemas relacionados con la contaminación en la Luna de Endor. Problema de Acceso a Datos

# R2-D2 y las Lunas de Endor - Acceso a Datos Nuestro amigo R2-D2 ha sido enviado junto a Luke Skywalker debido a una serie de problemas relacionados

Owner
José Luis González Sánchez
PhD Software Development Profe de DAM/DAW/ASIR @IESLuisVives Kotlin Certified Trainer by @JetBrains @GitHub Campus Advisor @GitKraken Ambassador 💻🎾🎸🍻
José Luis González Sánchez
Reach plc. Apps Team Exercise (Junior)Reach plc. Apps Team Exercise (Junior)

Reach plc. Apps Team Exercise (Junior) Description One of our magazines is looking for new sources of revenues and starts a few partnerships with beau

null 0 Nov 9, 2021
Este es un ejemplo de como usar Kotlin en un proyecto Node.js, una api rest en Node.js con Express

Kotlin Hello Node.js Este es un ejemplo de como usar Kotlin en un proyecto Node.js, una API REST con Express Kotlin Hello Node.js Acerca de Uso Compil

José Luis González Sánchez 4 Jul 16, 2022
Jugando con un Parking realizado como prueba de examen en JetBrains Academy, curso Kotlin Developer

Kotlin Parking Lot Proyecto de evaluación para el título de Kotlin Developer en Jetbrains Academy. Consiste en realizar un parking con las especificac

José Luis González Sánchez 1 Jan 10, 2022
Kotlin-GraphQL-Apollo - Sencillo cliente para consumir una API GraphQL con Apollo usando Kotlin

Kotlin GraphQL Apollo Sencillo cliente para consumir una API GraphQL con Apollo

José Luis González Sánchez 2 Jan 25, 2022
Ejemplo de cómo trabajar con DataFrames similar a Pandas (python) en Kotlin.

Kotlin DataFrames Pandas Ejemplo de cómo trabajar con DataFrames similar a Pandas (python) en Kotlin. Kotlin DataFrames Pandas Acerca de Autor Contact

José Luis González Sánchez 2 Jul 24, 2022
Ejemplo de cómo trabajar con gráficos en Kotlin

Kotlin Let's Plot Ejemplo de cómo trabajar con gráficos en Kotlin. Kotlin Let's Plot Acerca de Autor Contacto ¿Un café? Licencia de uso Acerca de Este

José Luis González Sánchez 12 Oct 11, 2022
Ejemplo de API Rest Blog con Spring Boot + Kotlin + Gradle

Blog Ejemplo de API Rest Blog con Spring Boot 2.7.3 + Kotlin + Gradle + Java 17 El objetivo es que pueda servir como guía para el aprendizaje, lo más

Arturo López 6 Dec 18, 2022
Es este repositorio, desarrollaremos e implementaremos una aplicación móvil nativa para la asignatura PAMN

BeHealthy “Have a good diet” Descripción breve del proyecto Este documento explica el objetivo de BeHealty como aplicación de software, las partes de

Fernando 5 Dec 15, 2022
Ejemplo de App Android con Kotlin, Jetpack Compose, Retrofit y consumo de la API REST de Pokémon

Pokémon Jetpack Compose Ejemplo de App Android con Kotlin, Jetpack Compose, Retrofit y consumo de la API REST de Pokémon Jetpack Compose Retrofit Poké

Brais Moure 70 Jan 31, 2023
Nuestro amigo R2-D2 ha sido enviado junto a Luke Skywalker debido a una serie de problemas relacionados con la contaminación en la Luna de Endor. Problema de Acceso a Datos

# R2-D2 y las Lunas de Endor - Acceso a Datos Nuestro amigo R2-D2 ha sido enviado junto a Luke Skywalker debido a una serie de problemas relacionados

José Luis González Sánchez 6 Nov 2, 2022