Cómo responder preguntas de entrevista de diseño orientado a objetos de manera paso a paso

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 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.

  1. Identifique las principales entidades como vehículos, espacios de estacionamiento, estructura de estacionamiento, etc. utilizando interfaces.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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. .

Los dos tipos de problemas de diseño planteados en las entrevistas son:

  1. La primera familia de problemas de diseño está relacionada con el diseño de sistemas de sitios web de la vida real. Estos problemas aplican la teoría de la escalabilidad, el equilibrio de carga, la redundancia, etc. Por ejemplo, Diseño de Facebook, Diseño de bits, Diseño de Quora, Diseño de Uber, Diseño de IRCTC, etc.
  2. La segunda familia de problemas de diseño es OOPS Design para hacer diagramas de clase. Por ejemplo, diseño del sistema de elevador, diseño de valet parking, diseño de sistema de restaurante, etc.

Enfoque de 5 pasos para resolver problemas de diseño del sistema:

  1. Generación de casos de uso : reúna todos los casos de uso posibles
  2. Restricciones y análisis : cuántos usuarios, cuántos datos, etc.
  3. Diseño básico : diseño más básico. Pocos usuarios caso.
  4. Cuellos de botella : encuentre los cuellos de botella y resuélvalos.
  5. Escalabilidad : gran cantidad de usuarios. Los pasos 4 y 5 irán en bucle hasta que obtengamos una respuesta satisfactoria.

Resolución de problemas en estructuras de datos y algoritmos ” escrito en varios lenguajes como C, C ++, Java, C #, Python, etc. El libro está escrito para el punto de vista de preparación de entrevistas explicando la lista enlazada, el árbol, el hash, el montón, etc. Número de diagramas para explicar varios conceptos. También contiene un capítulo de Diseño del sistema al final que brindará un enfoque sistemático para resolver los problemas de diseño en una Entrevista.

Algunos problemas que había discutido en el último capítulo son:

  1. ¿Cómo diseñarías Facebook? ¿Cómo diseñarías un poco? etc.
  2. También se discute cómo diseñaría un sistema de ascensor o un sistema de restaurante, etc.

Los enlaces de los libros en Amazon están abajo:

1. Resolución de problemas en estructuras de datos y algoritmos utilizando C

2. Resolución de problemas en estructuras de datos y algoritmos usando C ++

3. Resolución de problemas en estructuras de datos y algoritmos utilizando Java

4. Resolución de problemas en estructuras de datos y algoritmos utilizando C #

5. Resolución de problemas en estructuras de datos y algoritmos usando Python

  • Encapsulamiento
  • Abstracción
  • Herencia
  • Polimorfismo
  • Composición
  • Persistencia

Lea el libro: Proceso de pensamiento orientado a objetos

More Interesting

¿Importa la experiencia en la programación de entrevistas?

Escriba un programa para verificar si un elemento dado está en una matriz ordenada. ¿Cuál es su complejidad temporal?

Cómo prepararse para una entrevista técnica en Myntra para el perfil de desarrollador web

Con un par de entrevistas de programación en Square a la vuelta de la esquina, ¿cómo puede uno con falta de experiencia en pruebas unitarias prepararse mejor?

Dada una matriz de enteros, para cada índice i, debe reemplazar el valor en i con el primer valor más pequeño que A [i] que viene después del índice i. ¿Cómo lo haces?

¿Es mejor intentar oportunidades en el sitio en una empresa basada en servicios o probar una buena empresa basada en productos como 'Thought Works', donde obtendré un buen trabajo y un buen salario?

¿Cuánto tiempo lleva trabajar para descifrar la entrevista de codificación si no tengo una buena idea sobre la estructura de datos y el algoritmo?

Cómo prepararse para las preguntas de la entrevista HackerRank de Amazon

¿Cuál es el pseudocódigo de entrada formal, salida formal y algoritmo para el problema del profesor Gecko (CLRS 16.2-4)?

Dada una matriz de enteros positivos, ¿cómo podemos convertirla en una matriz ordenada con un costo mínimo utilizando las operaciones de disminución y eliminación (Costo del operador de disminución = 1, Costo del operador de eliminación = valor del elemento)?

¿Cómo es el proceso de entrevista en HackerRank for Software Developer? ¿Cuál es el proceso después de la ronda en línea?

¿Qué preguntas has encontrado durante una entrevista de desarrollador iOS?

¿Cuál fue su peor experiencia en entrevistas de ingeniería de software (como candidato) y qué la hizo tan mala?

¿Cuáles son algunos ejemplos de configuraciones de problemas de entrevistas técnicas que son buenas para evaluar candidatos de aprendizaje automático?

¿Cómo respondería: "¿Preferiría trabajar en Microsoft o Google si tuviera ofertas de ambos y la ubicación y el pago fueran equivalentes", preguntó en una entrevista para un puesto en Microsoft?