¿Cuáles son algunas preguntas típicas de entrevistas de diseño para ingenieros de software?

Las entrevistas de diseño del sistema evalúan sus habilidades de diseño y su capacidad para trabajar con servicios complejos y escalables. Su desempeño en estas entrevistas determina qué puesto y salario se le ofrecerá. Si tiene habilidades de diseño encomiables, obtendrá una oferta más alta. Un buen recurso para prepararse para esta entrevista: Grokking the System Design Interview

Algunos problemas de diseño de muestra son:

  • Diseño de un servicio de acortamiento de URL como TinyURL
  • Diseñando Instagram
  • Diseñando Twitter
  • Diseñando Youtube
  • Diseñando Facebook Messenger
  • Diseñando Dropbox
  • Diseño de sugerencia Typeahead
  • Diseño de noticias de Facebook
  • Diseñando Yelp
  • Diseñando Uber

Además, es una buena idea familiarizarse con los conceptos de sistemas distribuidos como Hashing consistente, Particionamiento de datos, Equilibrio de carga, Redundancia y Replicación, Teorema CAP, etc.

En mi experiencia, los candidatos que obtuvieron mejores resultados en el diseño de entrevistas siguieron estos siete pasos:

Paso 1: Aclaración de requisitos: siempre haga preguntas para encontrar el alcance exacto del problema que está resolviendo.

Paso 2: Definición de la interfaz del sistema: defina qué API se esperan del sistema. Esto también asegurará si no ha cumplido ningún requisito incorrecto.

Paso 3: Estimación posterior: siempre es una buena idea estimar la escala del sistema que va a diseñar.

Paso 4: defina el modelo de datos: aunque no es necesario desde el principio, esto aclarará cómo fluirán los datos entre los diferentes componentes del sistema y más adelante también lo guiará hacia la partición de datos.

Paso 5: Diseño de alto nivel: dibuje un diagrama de bloques con 5-6 cuadros que representen los componentes principales de su sistema.

Paso 6: Diseño detallado de componentes: profundice en 2-3 componentes; Los comentarios de los entrevistadores siempre deben guiarlo hacia qué partes del sistema desea que explique más.

Paso 7: Cuellos de botella: trate de discutir tantos cuellos de botella como sea posible y diferentes enfoques para mitigarlos.

Espero que esto haya ayudado.

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 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 son los 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

More Interesting

¿Cuál debería ser mi respuesta a esta pregunta de la entrevista de Java?

¿Cuál es la mejor estrategia para resolver los problemas de LeetCode?

¿Cuál es su opinión sobre CoderPad?

Estoy mejor en Python para entrevistas, pero muchos trabajos quieren Java. ¿Qué tengo que hacer?

Para las principales compañías de software como Google, Facebook, Amazon, Microsoft, ¿cuánto importa el perfil o es solo el rendimiento de la entrevista?

Comparaciones de productos y servicios: ¿Cuál es mejor: TopCoder o InterviewStreet?

¿Cuál es la mejor manera de preparar la estructura de datos para programar entrevistas?

Cómo mejorar mis habilidades de lenguaje C para que si alguien me hace alguna pregunta sobre C, pueda tener la respuesta a esas preguntas particulares

¿Cuál es la forma más rápida de encontrar la mediana de una matriz no ordenada de n enteros? ¿Hay una forma más rápida que ordenarlos y luego usar el valor medio?

Si menciona en su currículum que tiene un nivel principiante de competencia en un lenguaje de programación en particular, ¿cuánto se espera que sepa?

¿Cuáles son algunas preguntas importantes de programación en C que se hacen en las entrevistas?

¿Cuáles son los elementos comunes entre dos matrices de tamaño n y m? ¿Cuál es el tiempo y la complejidad de la memoria?

¿Qué es una ronda de entrevistas en la pantalla del teléfono en entrevistas técnicas?

¿Qué tan útil es la preparación de InterviewBit para candidatos que tienen 0 a 3 años de experiencia industrial?

Cómo mejorar mi currículum, con 3 meses de tiempo para ubicaciones