Las 10 mejores preguntas y respuestas de la entrevista de diseño de sistemas

En la ingeniería de software, el diseño del sistema del proceso de entrevista se ha convertido en una parte estándar de la entrevista. Si desea obtener el trabajo de sus sueños en algunas grandes empresas tecnológicas gigantes (especialmente como ingeniero senior), entonces debe contar su enfoque sobre la construcción de un sistema escalable grande y complejo. No existe una respuesta estándar o precisa para las preguntas de la entrevista de diseño.

Top-10-System-Design-Interview-Questions-and-Answers

Puede tener diferentes conversaciones con diferentes entrevistadores. Debido a la falta de experiencia en la construcción de un sistema a gran escala y la naturaleza abierta de la ronda de diseño del sistema, muchos candidatos luchan con esta ronda. No solo los desarrolladores junior y de nivel medio, sino también los desarrolladores experimentados se sienten incómodos en la ronda de diseño del sistema. Si se está preparando para esta ronda, le recomendamos que lea el blog ¿Cómo descifrar la ronda de diseño de sistemas en las entrevistas? .

Discutiremos algunas preguntas comunes de la entrevista de diseño que los entrevistadores hacen con frecuencia en las grandes empresas de tecnología. También discutiremos algunos puntos clave que debe considerar al diseñar el sistema y explicar la respuesta al entrevistador. 

1. Diseñar un servicio de acortamiento de URL (TinyURL)

El servicio de acortamiento de URL permite a los usuarios ingresar una URL larga y luego devuelve una URL más corta y única. Por ejemplo , bit.ly y TinyURL . Estos servicios generan una URL corta si el usuario proporciona una URL larga y si el usuario proporciona una URL corta, devuelve la URL larga original. 

Cosas para discutir y analizar: 

  • Dada una URL larga, el servicio debería generar un alias único y más corto.
  • Cuando el usuario accede a un enlace corto, el servicio debe redirigir al enlace original.
  • Considere la posibilidad de escalabilidad si miles de requests de acortamiento de URL llegan cada segundo.
  • Redireccionamientos de identificadores de servicio.
  • Soporte para URL cortas personalizadas.
  • Seguimiento de las estadísticas de clics.
  • Elimina las URL caducadas.
  • El sistema debe tener alta disponibilidad.

Debe tener en cuenta tres cosas al diseñar este servicio. 
 

  1. API (API REST): analice cómo el cliente seguirá un enfoque para comunicarse con el servicio junto con el equilibrador de carga, que es el extremo frontal del servicio.
  2. Capa de aplicación: discuta cómo el subproceso de trabajo o los hosts que tomarán la URL larga, generarán la URL pequeña y cómo almacenará ambas URL en la base de datos.
  3. Capa de persistencia: base de datos

2. Diseñar YouTube/Netflix (un servicio global de transmisión de video)

Diseñe un servicio de transmisión de video como Youtube/Netflix donde el usuario pueda cargar/ver/buscar videos. El servicio debe ser escalable donde una gran cantidad de usuarios puedan ver y compartir los videos simultáneamente. Estará almacenando y transmitiendo petabytes y petabytes de datos. 

Cosas para discutir y analizar: 

  • Enfoque para registrar estadísticas sobre videos, por ejemplo, el número total de vistas, votos positivos/negativos, etc.
  • Agregar comentarios en videos en tiempo real.
     

Componentes: 

  1. OC: nubes como AWS, OpenConnect que actúan como una red de entrega de contenido.
  2. Backend- Base de datos
  3. Cliente- Cualquier dispositivo para usar Youtube/Netflix

3. Diseña Facebook Messenger o WhatsApp (un servicio de chat global)

Cosas para discutir y analizar: 
 

  • Enfoque para mensajes de texto uno a uno entre usuarios.
  • Enfoque para extender el diseño para admitir chats grupales.
  • Estado entregado y leído
  • Qué acción debe tomarse si el usuario no está conectado a Internet.
  • Notificaciones push
  • Envío de medios como imágenes u otros documentos
  • Enfoque para proporcionar cifrado de mensajes de extremo a extremo.

4. Diseñar Quora/Reddit/HackerNews (una red social + servicio de tablero de mensajes)

Estos servicios permiten a los usuarios publicar preguntas, compartir enlaces y responder las preguntas de otros usuarios. Los usuarios también pueden comentar sobre preguntas o enlaces compartidos. 

Cosas para discutir y analizar:

  • Enfoque para registrar las estadísticas de cada respuesta, como el número de vistas, votos positivos/negativos, etc.
  • Las opciones de seguimiento deben estar allí para que los usuarios sigan a otros usuarios o temas.
  • Generación de fuentes de noticias, lo que significa que los usuarios pueden ver la lista de preguntas principales de todos los usuarios y los temas que siguen en su línea de tiempo.

5. Diseño de búsqueda de escritura anticipada

El servicio de escritura anticipada permite a los usuarios escribir alguna consulta y, en función de eso, sugiere los elementos más buscados que comienzan con lo que el usuario haya escrito.

Cosas para discutir y analizar:

  • Enfoque para almacenar consultas de búsqueda anteriores
  • Requisito en tiempo real del sistema.
  • Enfoque para mantener los datos actualizados.
  • Enfoque para encontrar las mejores coincidencias con la string ya escrita
  • Consultas por segundo a ser manejadas por el sistema.
  • Criterios de elección de las sugerencias.
  • Número total de datos a almacenar.
  • Enfoque para encontrar las mejores coincidencias con la string ya escrita

6. Diseñe Dropbox/Google Drive/Google Photos (un servicio global de almacenamiento y uso compartido de archivos )

Diseñe un servicio de alojamiento de archivos o imágenes que permita a los usuarios cargar, almacenar, compartir, eliminar y descargar archivos o imágenes en sus servidores y proporcione sincronización entre varios dispositivos.

Cosas para discutir y analizar:

  • Enfoque para cargar/ver/buscar/compartir/descargar archivos o fotos desde cualquier dispositivo.
  • El servicio debe admitir la sincronización automática entre dispositivos, es decir, después de actualizar un archivo en un dispositivo, debe sincronizarse en todos los dispositivos.
  • La propiedad ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad) debe estar presente en el sistema.
  • Enfoque para rastrear el permiso para compartir archivos.
  • Permitir que múltiples usuarios editen el mismo documento.
  • El sistema debe admitir el almacenamiento de archivos grandes de hasta un GB.

7. Diseña un rastreador web

Diseñe un servicio escalable Web Crawler que recopile información (rastreo) de toda la web y obtenga cientos de millones de documentos web.

Cosas para discutir y analizar:

  • Enfoque para encontrar nuevas páginas web.
  • Enfoque para priorizar páginas web que cambian dinámicamente.
  • Asegúrese de que el rastreador no esté ilimitado en el mismo dominio.
     

8. Diseña Facebook, Twitter o Instagram

Necesitas diseñar un servicio de redes sociales para miles de millones de usuarios. La mayoría de los entrevistadores dedican tiempo a la discusión de los servicios de generación de fuentes de noticias en estas aplicaciones.

Características a considerar:

  • Se admitirán algunas de las funciones específicas de Twitter/Facebook/Instagram.
  • Controles de privacidad alrededor de cada tweet o publicación.
  • El usuario debe poder publicar tweets y el sistema debe admitir respuestas a tweets/agrupar tweets por conversaciones.
  • El usuario debería poder ver los tweets/publicaciones de tendencia.
  • mensajería directa
  • Menciones/Etiquetado.
  • El usuario debe poder seguir a otro usuario.

Cosas a analizar:

  • El sistema debería poder manejar la enorme cantidad de tráfico de miles de millones de usuarios.
  • Número de seguidores
  • Número de veces que el tweet ha sido favorito.

Componentes:

  • Generación de feeds de noticias.
  • Gráfico social (redes de conexión de amigos entre usuarios o quién sigue a quién, especialmente cuando millones de usuarios siguen a una celebridad)
  • Almacenamiento eficiente y búsqueda de publicaciones o tweets.

9. Diseña Uber o Lyft (un servicio de viaje compartido)

Diseñe un servicio en el que un usuario solicite un viaje desde la aplicación y llegue un conductor para llevarlo a su destino. Una pregunta de entrevista frecuente en la ronda de entrevistas de diseño de sistemas. 

Arquitectura: Monolítica/Microservicios (Servicio en tiempo real, Front-end (Aplicación) y base de datos)

Cosas para analizar y discutir:

  • El backend sirve principalmente al tráfico de teléfonos móviles. La aplicación uber se comunica con el backend a través de datos móviles.
  • ¿Cómo funciona el sistema de despacho (los datos de ubicación/GPS son lo que impulsa el sistema de despacho)? ¿Cómo hacer coincidir de manera eficiente la solicitud del usuario con los controladores cercanos?
  • ¿Cómo funcionan los mapas y las rutas en Uber? ¿Cómo se calculan las ETA?
  • Un enfoque eficiente para almacenar millones de ubicaciones geográficas para conductores/viajeros que están siempre en movimiento.
  • Enfoque para manejar millones de actualizaciones en la ubicación del controlador.
  • Dispatch se construye principalmente usando Node.js
  • Servicios: servicios de lógica empresarial escritos principalmente en python.
  • Bases de datos: Postgres, Redis, MySQL.

10. Diseñe un limitador de tasa de API (Github)

Diseñe un servicio o una herramienta que controle la cantidad de requests por ventana de tiempo que un servicio acepta permitir. Si el número de requests excede, el limitador de velocidad bloquea todas las llamadas en exceso.

Cosas para analizar y discutir:

  • Limitar la cantidad de requests que una entidad puede enviar a una API dentro de una ventana de tiempo, por ejemplo, veinte requests por segundo.
  • La limitación de velocidad debería funcionar para una configuración distribuida, ya que las API están disponibles a través de un grupo de servidores.
  • Cómo manejar la regulación (regulación suave y dura, etc.).

Publicación traducida automáticamente

Artículo escrito por anuupadhyay y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *