Slide 1

Slide 1 text

Destacá en tu entrevista técnica Facundo Rodríguez Arceri @facundomr

Slide 2

Slide 2 text

Introducción ● Nos enfocaremos en la parte técnica de las entrevistas. ● ¿Qué está buscando el entrevistador? ● No sé cuáles son las preguntas más difíciles. ● Esta charla no va a conseguirte un nuevo puesto 😂

Slide 3

Slide 3 text

Sobre las preguntas ● Son recurrentes. ● Creo saber las respuestas 👀

Slide 4

Slide 4 text

Basta de misterio 1. ¿Qué es una data class? 2. ¿Qué son las sealed classes? 3. ¿Por qué ConstraintLayout es mejor que RelativeLayout?

Slide 5

Slide 5 text

¿Qué es una data class?

Slide 6

Slide 6 text

“Es el equivalente a un Java POJO, en Kotlin se pueden definir en una sóla línea de código”

Slide 7

Slide 7 text

Son más las diferencias que las similitudes... ● No se puede heredar de una data class. ● ¿Qué pasa con el constructor de la data class? ● ¿Cómo se generan equals y hashcode? ● Otras funciones: copy(), toString(), componentN() data class Planet(val id: Int, val name: String) val earth = Planet(2, "Earth") val (id, name) = earth

Slide 8

Slide 8 text

¿Qué son las sealed classes?

Slide 9

Slide 9 text

“Son como enums con superpoderes”

Slide 10

Slide 10 text

enum class Planet(val id: Int) { MERCURY(0) { override fun orbit() { // Orbit like Mercury } }, VENUS(1) { override fun orbit() { // Orbit like Venus } }, EARTH(2) { override fun orbit() { // Orbit like Earth } }; abstract fun orbit() }

Slide 11

Slide 11 text

abstract class Planet(val id: Int) class BasicPlanet(id: Int) : Planet(id) class PlanetWithSatellites(id: Int, val satellitesNames: List) : Planet(id) fun main() { val mercury = BasicPlanet(0) val earth = PlanetWithSatellites(2, listOf("Moon")) }

Slide 12

Slide 12 text

sealed class Planet(val id: Int) { class BasicPlanet(id: Int) : Planet(id) class PlanetWithSatellites(id: Int, val satellitesNames: List) : Planet(id) } fun main() { val mercury = Planet.BasicPlanet(0) val earth = Planet.PlanetWithSatellites(2, listOf("Moon")) }

Slide 13

Slide 13 text

¿Por qué ConstraintLayout es mejor que RelativeLayout?

Slide 14

Slide 14 text

“Porque tiene mejor performance. Además, RelativeLayout está deprecado.”

Slide 15

Slide 15 text

Conceptos importantes ● ConstraintLayout es una librería. RelativeLayout es parte del SDK. ● ¿Cómo funciona el sistema de Views y ViewGroups de los layouts? ● Constraints vs atributos ● Flat hierarchy ● Virtual helpers ○ Barriers ○ Chains ○ Groups ○ etc…!

Slide 16

Slide 16 text

¿Qué más?

Slide 17

Slide 17 text

Tips ● No intentes responder rápido, pero no te vayas por las ramas. ● Evitá definiciones trilladas. ● Prepárate para la entrevista. ● Siempre que puedas, utiliza un ejemplo.

Slide 18

Slide 18 text

Contando tu experiencia ● Método STAR ○ Situación ○ Tarea ○ Acción ○ Resultado

Slide 19

Slide 19 text

¿Alguna vez implementaste algún mecanismo de seguridad para proteger tu código?

Slide 20

Slide 20 text

El planteo ● Situación: El código es decompilable, hay código en la app de secciones aún en desarrollo, alguien podría ver en qué proximos features estamos trabajando. ● Tarea: Ofuscar el código productivo y sacar de la app el código no alcanzable. ● Acción: Implementar ProGuard y extraer a un flavor de debug aquello en lo que estamos trabajando. ● Resultado: El código decompilado es ilegible, la funcionalidad que no se quiere entregar aparece como clases “vacías”.

Slide 21

Slide 21 text

🤔 ¿Preguntas?

Slide 22

Slide 22 text

😁 ¡Gracias!