소프트웨어 엔지니어를위한 일반적인 설계 면접 질문은 무엇입니까?


최상의 답변

내가 기억하는 몇 가지 질문은 다음과 같습니다. 탈선 인터뷰 :

  1. 인스 타 그램 또는 일부 유형의 콘텐츠 피드를 디자인합니다. 이것은 실제로 매우 일반적입니다. 여러 회사에서 3 ~ 4 번 받았 나봐요. 꽤나 귀찮아서 더 나은 질문을하기에는 너무 게으른 면접관이 물어볼 것입니다.
  2. 자동 완성 기능을 디자인합니다. 또한 때때로 약간의 변형이있는이 메시지를 여러 번 받았습니다. 일반적으로 Trie 데이터 구조를 기반으로합니다. 연습하기 좋은 방법입니다!
  3. 메시징 버스 (apache kafka / zeromq / rabbitmq)를 디자인합니다. 인프라 지향 소프트웨어 역할을 인터뷰하는 경우 이와 같은 결과를 얻을 수 있습니다. 이것은 다양한 초점 영역과 하위 질문을 생성 할 수있는 훌륭한 도구입니다.
  4. LRU 캐시를 디자인합니다. 일반적으로 이중 연결 목록을 구현하여 캐시가 가득 찬 경우 가장 최근에 사용한 요소를 지속적으로 제거합니다.
  5. 디자인 분산 캐시. 다시, 인프라 지향적 인 역할이 될 수 있습니다. 다양한 방향으로 진행할 수도 있습니다.
  6. 데이터베이스 테이블 / 데이터웨어 하우스를 설계합니다. 이것은 데이터 엔지니어 중심의 역할을위한 것일 수 있지만 좋은 데이터 디자인이 매우 중요하다는 점을 감안할 때 SWE에게도 일반적입니다.

다음은 개인적으로 보지 못한 몇 가지 사항입니다. , 일반적으로 일반적으로 허용되지만 :

  1. URL 단축기 디자인
  2. 웹샵 / 전자 상거래 사이트 디자인

도움이되기를 바랍니다. 나는 상위 4 ~ 5 위가 시스템 설계 인터뷰의 대부분을 다룰 것이며, 그들이 다루지 않는 인터뷰의 경우, 연구를 통해 얻은 지식이 다양한 질문에 잘 전달 될 것임을 확신합니다.

답변

시스템 설계 인터뷰 는 설계 기술과 복잡하고 확장 가능한 서비스를 사용할 수있는 능력을 테스트합니다. 이 인터뷰에서 귀하의 성과는 귀하에게 제공 될 직책과 급여를 결정합니다. 칭찬할만한 디자인 기술이 있다면 더 높은 제안을 받게 될 것입니다. 이 인터뷰를 준비하는 데 유용한 리소스 : 시스템 디자인 인터뷰 살펴보기

몇 가지 샘플 디자인 문제는 다음과 같습니다.

a>

  • Facebook Messenger 디자인
  • Dropbox 디자인
  • 자동 완성 제안 디자인
  • Facebook의 디자인 뉴스 피드
  • Yelp 디자인
  • 디자인 Uber
  • 또한 일관된 해싱 데이터 분할 , 부하 분산 , 중복성 및 복제 , CAP Theorem

    내 경험상, desing 인터뷰에서 더 잘한 후보자들은 다음 7 단계를 따랐습니다.

    1 단계 : 요구 사항 설명 : 해결하려는 문제의 정확한 범위를 찾기 위해 항상 질문을합니다.

    단계 2 : 시스템 인터페이스 정의 : 시스템에서 예상되는 API를 정의합니다. 이렇게하면 요구 사항이 잘못되지 않았는지 확인할 수 있습니다.

    3 단계 : 봉투 뒤 추정 : 설계 할 시스템의 규모를 추정하는 것은 항상 좋은 생각입니다.

    4 단계 : 데이터 모델 정의 : 초기에 필요하지 않습니다. 이렇게하면 시스템의 여러 구성 요소간에 데이터가 어떻게 흐르는 지 명확히하고 나중에 데이터 파티셔닝으로 안내 할 것입니다.

    5 단계 : 개략적 인 디자인 : 시스템의 핵심 구성 요소를 나타내는 5-6 개의 상자가있는 블록 다이어그램을 그립니다.

    6 단계 : 세부 구성 요소 디자인 : 2-3 개의 구성 요소에 대해 자세히 알아보세요. 면접관의 피드백은 항상 시스템의 어떤 부분에 대해 더 설명하기를 원하는지 안내해야합니다.

    7 단계 : 병목 현상 : 논의 해보세요. 가능한 한 많은 병목 현상과이를 완화하기위한 다양한 접근 방식.

    도움이 되었기를 바랍니다.

    답글 남기기

    이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다