Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Destacá en tu entrevista técnica

Destacá en tu entrevista técnica

A menudo quién nos entrevista para un puesto nos realiza una pregunta técnica cuya respuesta sabemos pero a veces no contestamos de la forma más precisa o correcta. Usamos definiciones leídas en artículos, vistas en charlas, etc, que quizás no son del todo correctas o completas. En esta charla vamos a ver algunas preguntas que frecuentemente se hacen en entrevistas técnicas para puestos de Android Developer y vamos a contrastar la "respuesta corta" con otra que, a mi parecer y en mi experiencia, deja una mucha mejor impresión nuestra al entrevistador.

Charla parte del ciclo rockndroid Madrid, transmitida en https://www.youtube.com/watch?v=ha7KkAOAJj8

Facundo Rodríguez Arceri

April 14, 2021
Tweet

More Decks by Facundo Rodríguez Arceri

Other Decks in Programming

Transcript

  1. 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 😂
  2. Basta de misterio 1. ¿Qué es una data class? 2.

    ¿Qué son las sealed classes? 3. ¿Por qué ConstraintLayout es mejor que RelativeLayout?
  3. “Es el equivalente a un Java POJO, en Kotlin se

    pueden definir en una sóla línea de código”
  4. 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
  5. 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() }
  6. abstract class Planet(val id: Int) class BasicPlanet(id: Int) : Planet(id)

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

    Planet(id) class PlanetWithSatellites(id: Int, val satellitesNames: List<String>) : Planet(id) } fun main() { val mercury = Planet.BasicPlanet(0) val earth = Planet.PlanetWithSatellites(2, listOf("Moon")) }
  8. 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…!
  9. 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.
  10. 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”.