https://medium.com/@prabhat.rai1707/android-system-design-interview-google-uber-29dedbbe9fda
Android System Design Interview- Google/Uber
In this blog, I will discuss key aspects of system design interviews and what interviewers typically seek in candidates.
medium.com
이 블로그에서 나는 시스템 디자인 인터뷰의 주요 측면과, 면접관이 일반적으로 후보자에게 찾는것에 대해 논의할 예정입니다.
최고 수준의 제품 기반에서 시스템 디자인 인터뷰에 대한 내 광범위한 경험을 바탕으로 나는 이전에 자세히 블로그를 썼고, 또한 안드로이드 시스템 디자인 모의 인터뷰에 대해 자주 요청받는 사항도 다룰것입니다.
여러 해결책과 논의 전에 미리 고려해야하는 부분
최종 해결책을 더 잘 다듬어 줄 주제들, 먼저 논의하는것을 고려하세요
1. DAU
2. 로그인 / 인증
3. 오프라인 모드
4. 페이지네이션 (리스트에서 많은 아이템 의존)
5. 데이터를 미리 불러오기
6. 푸쉬 알림
7. 리모트 컨피그
경험과 테크 스킬 케이스 토픽
1. 보안/암호화
2. 캐싱(LRU)
3. 네트워크 콜 실패 케이스
4. ADA
5. 분석/로깅
6. 다국어
기억하세요. 앞에서 언급한 모든 것을 논의할 필요는 없습니다. 단지 면접관에게 요구되는 사항을 명확히만 확인하면됩니다. 기능적 , 비기능적 요구사항의 범위에서
하지만 모든 포인트를 알아두면 도움이됩니다.
각각의 토픽 깊게 확인하기
네트워크
1. 프로토콜 논의 (REST, 프로토콜 버퍼, gRPC, GraphQL)
2. 보안 (E2E 암호화, cert pinning, TLS)
3. 인터넷이 없는 오프라인 환경
4. API 실패 엣지 케이스
5. 기하급수적인 백오프
6. 페이지네이션 (오프셋, 커서 베이스)
7. 실시간 업데이트 (알림, Http 폴링, SSE, 웹소켓)
8. 여러 API에서 우선순위 요청
9. 배치 리퀘스트
데이터핸들링 / 관리
1. 데이터 미리 가져오기
2. 캐싱
3. 검색
4. 데이터 플로우
5. UI / View 상태
6. 저장소 (키 벨류, DB, 커스텀, 온디바이스 보안 저장소)
추가할 수 있는 부가 기능들
1. 리모트 컨피그
2. 분석과 로깅
3. 다국어
4. ADA
5. A/B 테스팅
6. 자동 릴리즈 CI/CD
7. DI
성능 포인트
1. 데이터 미리가져오기
2. 모니터링
3. 앱 시작빨리
4. 앱 중지
5. CPU 배터리 사용
6. 페이지 로드 향상
몇몇의 의사결정 포인트 논의
커뮤니케이션 프로토콜
1. Rest API: 만약 너가 스키마가 동적이지 않고, 복잡하지 않은 쿼리라면
2. GraphQL- 만약 너가 동작스키마거나, 복잡한 쿼리 지원이 필요하다면
3. 프로토콜 버퍼를 사용한 gRPC - 만약 너가 높은 퍼포먼스가 필요하거나 스트리밍 서비스 일 경우
페이지네이션
1. offset 페이지네이션: 만약 너가 성능보다는 단순함이 필요하거나 데이터가 작고 잦은 변화가 없을때
2. 커서베이스: 성능이 필요하고, 큰 데이터셋을 다룰때. 데이터 변경이잦고 인스타그램 과 같은 양방향 페이지네이션이 필요한 경우
실시간 업데이트
때때로 우린 이것들을 결합하여 사용합니다
1. 푸쉬 알림: 만약 앱이 실행되지 않더라도 동작해야할때
2. Http 폴링: 추천하지는 않지만, 이 케이스에 의존해야 하는 경우가 있습니다.
30초 마다 뭔가를 업데이트 해야한다면, 30초마다 폴링하는 방법을 고려할수도 있습니다.
3. 서버 이벤트 보내기(SSE): 앱이 실행되고 있고, 양방향 통신이 필요하지 않다면 SSE를 선택하세요.
4. 웹소켓: 앱이 실행중이고, 양방양 통신이 필요할 경우
데이터 저장소
1. 키 벨류: 만약 데이터가 구조적이지 않고, 퍼포먼스가 중요하지않을 경우
2. 데이터베이스: 데이터가 잘 정리되어있고, 암호화가 되어있을 경우
3. 온디바이스 보안 저장: 보안 파일이나 데이터 저장이 필요한 경우
시스템 디자인 인터뷰 단계
모든 토픽을 자세히 다룰 필요는 없습니다. 이는 면접관이 제시한 특정한 질문에 따라 달라집니다. 종종 면접관은 너에게 필요한 데이터를 제공합니다. 동일한 정보를 반복해서 듣는건 불필요하게 보일수도 있습니다.
주어진 시간을 고려하면 완벽하게 정확한 설계를 목표로 하기 보다는 중요한 고수준 요소를 다루는 데에 집중하세요.
1. 기능적 및 비기능적 요구사항을 수집하는데에 10분
2. 그리고 15분동안 주요 결정을 만들고, 사용할 아키텍쳐, 비즈니스모델, 네트워크 엔드포인트를 정의하세요.
3. 10분동안 클라이언트 아키텍쳐
4. 10분동안 너의 면접관에게 더 중요한 고려사항 토픽 주제 다루기
다음 블로그에서는, 우리의 몇몇 디자인 시스템 질문을 다루겠습니다.
1. 상품 리스트를 API를 통해 가져오고, 검색과 필터를 통해 보여주기
2. 매장 직원과 관리자를 위한 두가지 논리모드를 제공하는 상점앱. 매장 직원은 가격을 추가 수정할 수 있으며, 관리자를 이를 승인할 수 있음
3. 스톱워치앱
4.캐시와 관련된 네트워크 라이브러리 디자인
5. 추가..
기타
aspects 측면
drawing from 바탕으로
extensive 풍부한
above point 앞에서 언급한
bi-direction 양방향
posed 제시한
seem redundant 불필요해 보일 수 있다.
accurate 정확한
constraint 제한
'영어 데일리' 카테고리의 다른 글
Mockk을 사용한 네트워크 응답 페이킹 (0) | 2025.02.06 |
---|---|
10개의 컴포즈 실수 (0) | 2025.02.04 |
koin을 사용한 안드로이드 멀티모듈 아키텍쳐 클린코드 (1) | 2025.01.30 |
시니어 안드로이드 인터뷰 FGF 브랜드 (0) | 2025.01.27 |
안드로이드 인터뷰 질문과 답변 기본 (25.01.23) (0) | 2025.01.23 |