La mayoría de las entrevistas en las principales compañías tecnológicas, especialmente Amazon, involucran el diseño de un sistema orientado a objetos, como un estacionamiento orientado a objetos o un sistema de ascensor. Una intuición simple sobre la similitud entre los sistemas orientados a objetos y sus contrapartes del mundo real puede ayudarlo a resolver estas preguntas con facilidad.
Los sistemas orientados a objetos se comunican mucho como lo hacemos los humanos en nuestra vida cotidiana.
Cuando vas a un restaurante, interactúas con el servidor, la anfitriona, etc. También son seres humanos como usted, pero solo con algunos comportamientos especializados / sobrecargados, como su tipo de trabajo ( herencia). Puede verlos como subclases de humanos: después de todo, fuera de su trabajo, no reciben órdenes y también van al cine, visitan a un médico y son seres humanos normales. ( polimorfismo).
- ¿Cómo fue el proceso de entrevista para un puesto de pasantía en ingeniería de software con SoundCloud?
- ¿Qué preparativos son necesarios para una entrevista técnica como diseñador de experiencia de usuario en una empresa de consultoría?
- ¿Cuál es la mejor manera de prepararse para las entrevistas de Java?
- ¿Pueden los candidatos en entrevistas de programación realmente escribir código en el acto?
- ¿Cuáles son algunas preguntas importantes de programación en C que se hacen en las entrevistas?
¿Cómo te comunicas con el servidor? Por lo general, se incluye en una de estas tres categorías: sentarse, tomar su pedido y servirle comida. Por supuesto, los servidores también hacen otras cosas, como decirle al chef sobre su pedido, pero no puede ver estas cosas. Su interacción con el servidor se limita a estos tres comportamientos ( abstracción de datos).
Ahora, aquí hay algunos pasos a seguir para responder una pregunta de diseño orientado a objetos, como diseñar un estacionamiento orientado a objetos.
- Identifique las principales entidades como vehículos, espacios de estacionamiento, estructura de estacionamiento, etc. utilizando interfaces.
- Identifique subtipos especializados de estas entidades utilizando clases abstractas o simplemente clases regulares. Por ejemplo, sus espacios de estacionamiento pueden ser de diferentes tipos, lugares de estacionamiento de dos ruedas, lugares de estacionamiento de automóviles, lugares de estacionamiento para discapacitados, etc.
- Determine la funcionalidad (comportamiento) de cada una de estas entidades, como que un automóvil debe tener una placa de matrícula y tener la capacidad de moverse; una estructura de estacionamiento debería poder decirle el próximo lugar disponible para estacionar; un espacio de estacionamiento debe poder realizar un seguimiento de su costo de estacionamiento, etc.
- Determinar la funcionalidad de entidades especializadas. Todos los espacios de estacionamiento tienen las mismas propiedades, como indicar si están ocupados o no, y calcular el costo de estacionar su vehículo, pero los lugares de dos ruedas son más baratos que los de cuatro.
- Configure relaciones entre entidades que se comunican entre sí. El espacio de estacionamiento y la estructura de estacionamiento se pueden asociar, es decir, una estructura de estacionamiento tiene muchos espacios de estacionamiento y de diferentes tipos.
- Por último, para destacarte, usa patrones de diseño cuando sea apropiado. El escenario más obvio es que, obviamente, no todos deberían poder crear su propia estructura de estacionamiento sobre la marcha. Conviértalo en una clase única para que solo haya una estructura de estacionamiento, y los propietarios de vehículos la usarán utilizando sus métodos públicos.
En el video a continuación, sigo los pasos anteriores para diseñar un estacionamiento orientado a objetos. También verá cuándo usar interfaces versus clase abstracta, los diferentes casos de uso de interfaces, un ejemplo práctico de programación de interfaz (en lugar de que el automóvil herede el vehículo que lee en los libros) y algunos patrones de diseño más que lo harán destacar. .