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.
- ¿Qué cubren las entrevistas de programación aparte de las estructuras de datos y algoritmos?
- Cómo descifrar entrevista técnica de MNC
- ¿Cuándo debo esperar una decisión de entrevista técnica en el sitio? Pensé que estaban tan impresionados por mí que me ofrecerán el mismo día.
- ¿Debo escribir un javadoc durante una entrevista de codificación?
- Ha pasado un mes desde mi graduación, pero no tengo llamadas de trabajo. Lo he intentado todo. ¿Qué tengo que hacer?
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.