본문 바로가기

CS/기술 면접 대비4

[백엔드 기술 면접] #4 Server (2) #4 Server (2)Q. API Rate Limiter를 구현할 수 있는 알고리즘 4가지를 설명해보아라.A. 첫 번째는 토큰 버킷 알고리즘입니다. 요청을 처리할 때마다 버킷에서 토큰을 꺼내 사용하는 방식으로, 토큰이 남아있으면 요청이 처리되고 없으면 요청이 버려집니다. 짧은 시간에 집중되는 트래픽을 처리할 수 있어 유용하지만, 버킷 크기와 토큰 공급률 설정이 까다로울 수 있습니다. 두 번째는 누출 버킷 알고리즘으로, 고정된 크기의 FIFO 큐를 사용해 요청을 관리합니다. 큐에 자리가 있으면 요청이 추가되고, 큐가 가득 차면 요청이 버려지며, 안정적인 처리율을 보장하지만 트래픽이 몰리면 새로운 요청이 처리되지 않을 수 있습니다. 세 번째는 고정 윈도 카운터 알고리즘입니다. 타임라인을 고정된 간격의 윈도.. 2024. 11. 14.
[백엔드 기술 면접] #3 Server (1) #3 Server (1) Q. 리버스 프록시와 포워드 프록시 차이는 무엇인가?A. 리버스 프록시는 클라이언트 요청을 받아 여러 서버로 전달하여 로드 밸런싱, 캐싱, 보안, SSL 암호화 등을 제공하며 주로 서버 측에서 사용되고, 예로는 Nginx, HAProxy가 있으며, 포워드 프록시는 클라이언트가 인터넷에 접근할 때 프록시 서버를 통해 접속하여 IP 숨기기, 콘텐츠 필터링, 캐싱 등을 제공하며 주로 클라이언트 측에서 사용됩니다. Q. WS와 WAS의 차이는 무엇인가?A. WS(Web Server)는 정적 콘텐츠(HTML, CSS, JS)를 제공하고 주로 HTTP 요청을 처리하며 예로는 Apache, Nginx가 있고, WAS(Web Application Server)는 동적 콘텐츠를 처리하고 비즈니스.. 2024. 11. 11.
[백엔드 기술 면접] #2 Reactive Programming #2 Reactive ProgrammingQ. Flux와 Mono의 차이에 대해서 설명해보아라.A. Mono는 오직 ‘0개 또는 하나의 데이터항목 생성하고 이 결과가 생성되고 나면 스트림이 종료되면 결과 생성을 종료합니다. Mono를 사용하여 비동기적으로 결과를 반환하면 해당 결과를 구독하는 클라이언트는 결과가 생성될 때까지 블로킹하지 않고 다른 작업을 수행할 수 있습니다. Mono의 연산자들은 버퍼 중복, 값비싼 동기화 작업 등이 생략되어 Flux보다 가볍습니다. 반면에 Flux는 여러 개의 데이터 항목를 생성하고 스트림이 종료되면 결과 생성을 종료합니다. Q. 블로킹 vs 논블로킹과 동기 vs 비동기의 차이에 대해서 설명해보아라.비동기 프로그래밍에서 발생할 수 있는 문제점은 무엇이 있을까?A. 블로킹.. 2024. 11. 6.
[백엔드 기술 면접] #1 DB와 Docker #1 DB와 DockerQ. NoSQL DB와 SQL DB의 차이점은? 각각 어느 상황에서 사용할 수 있을까? 그래프 종류별(그래프, key-value, 관계형 등)로 예시를 들어 설명해보아라.A. SQL DB는 스키마 기반의 테이블 구조를 가지고 있으며 ACID 특성을 보장하며, 금융 시스템과 같이 데이터 무결성과 트랜잭션 관리가 중요한 경우 사용됩니다. 예로는 MySQL, PostgreSQL, Oracle이 있습니다. NoSQL DB는 스키마가 유연하고 대규모 데이터 분산 저장 및 처리에 최적화되어 있으며, BASE 특성을 가집니다. 키-값 저장소는 Redis, DynamoDB가 있으며, 캐싱과 세션 관리에 사용됩니다. 도큐먼트 저장소는 MongoDB, CouchDB가 있으며, 유연한 스키마가 필요한.. 2024. 11. 6.