스터디 진행 일시
날짜 : 5월 23일 (금요일) 시간 : 오후 4시 ~ 9시 (5시간) 장소 : 강남 (오프라인)
🔧 금주 스터디 일정
- @yugyeong71님 면접 연습
- 개발 책 1장부터 5장 복기
- 라이브 코테 진행
😵💫 면접 연습
- Blue/Green 배포 방식 설명해주세요.
- IV 값의 역할은 무엇인가요?
- 폴링과 롱폴링에 대해 설명해주세요.
- Spring 트랜잭션 동작 원리에 대해 설명해주세요.
- equals랑 ==의 차이는 무엇일까요?
- 추상클래스와 인터페이스의 차이는 무엇일까요?
- @restcontroller, @controller차이는 무엇일까요?
- 트랜잭션이 달리지 않은 메소드에 내부 메소드에는 트랜잭션이 달려있는데 적용이 안된다 이유는 무엇일까요?
- requestbody, @modelattribute 차이는 무엇일까요?
- 세션과 토큰의 차이에는 무엇이 있을까요?
- JWT 사용할 때 보안 이슈는 무엇이 있을까요?
📖 개발 책 1~5장 복기
-
1장
- 웹 계층은 무상태 계층으로
- 모든 계층에 다중화 도입
- 가능한 한 많은 데이터를 캐시할 것
- 여러 데이터 센터를 지원할 것
- 정적 콘텐츠는 CDN을 통해 서비스할 것
- 데이터 계층은 샤딩을 통해 그 규모를 확장할 것
- 각 계층은 독립적 서비스로 분할할 것
- 시스템을 지속적으로 모니터링하고, 자동화 도구들을 활용할 것
-
2장
- 근사치를 활용한 계산 (rounding and approximation)
- 면접장에서 복잡한 계산을 하는 것은 어렵기 때문에 적절한 근사치를 활용하여 시
간을 절약하자.
- Ex) “99987/9.1” → “100,000/10”
- 가정(assumption)들은 적어 두라.
- 단위(unit)를 붙이라.
- 많이 출제되는 개략적 규모 추정 문제는 QPS, 최대 QPS, 저장소 요구량, 캐시 요 구량, 서버 수 등을 추정하는 것이다. 이런 값들을 계산하는 연습을 미리 하자.
-
3장
- 면접에서 시스템 설계나 어떠한 문제를 해결하는 것이 나온다면 바로 풀지말자.
- 면접관과 핑퐁(티키타카)하면서 최대한 요구사항을 찾고 설계하자.
- 4장
- 프론트에서도 처리량 설계를 제한할 수 있고 백엔드에서도 제한할 수 있다.
- 처리량 제한 알고리즘에는 다음과 같은 것이 있다.
- 토큰 버킷
- 누출 버킷
- 고정 윈도 카운터
- 이동 윈도 로그
- 이동 윈도 카운터
- 예외나 에러를 처리하는 코드를 도입하여 클라이언트가 예외적 상황으로부터 우아 하게 (gracefully)복구될 수 있도록 한다.
- 5장
- 안정 해시를 사용하면 아래와 같은 이점을 갖는다.
- 서버가 추가되거나 삭제될 때 재배치되는 키의 수가 최소화된다.
- 데이터가 보다 균등하게 분포하게 되므로 수평적 규모 확장성을 달성하기 쉽다.
- 특정한 샤드(shard)에 대한 접근이 지나치게 빈번하면 서버 과부하 문제가 생길 수 있다.
- 안정 해시를 사용하면 아래와 같은 이점을 갖는다.
💻 라이브 코테
- 진행 방식 -> 라이브 코테 Repo
- 괄호 문자열이 주어졌을 때, 유효한 괄호인지 판별하세요.
- 예: “({[]})” → true, “({[})” → false
- 왜 이렇게 풀었는지 설명할 것.
- 공간복잡도와 시간복잡도가 어떤지 설명할 것.
- 괄호 문자열이 주어졌을 때, 유효한 괄호인지 판별하세요.