😀 Jerry/면접 질문 31

[1분 면접] 포워드 프록시와 리버스 프록시의 차이점

📌 면접 답변포워드 프록시 (Forward Proxy)네트워크 사용자 보호 또는 접근 제어에 사용주로 클라이언트 측에 위치하여, 사용자가 인터넷 접근할 때 중개자 역할핵심 기능은 익명성 제공, 캐싱, 보안 강화(불법 콘텐츠 접근 차단)예시로 회사 내부 네트워크에서 직원이 외부 웹사이트 접속하려 할 때, 포워드 프록시 서버를 통해 전달→ 여기에서 사용자의 실제 IP 주소는 숨겨지고, 프록시 서버의 IP 주소가 대신 사용   리버스 프록시 (Reverse Proxy서버 보호 및 로드 밸런싱 수행에 사용서버 측에 위치하여 외부에서 들어오는 클라이언트 요청을 내부 서버로 전달하는 역할핵심 기능은 로드 밸렁싱으로 서버 트래픽 분산 및 고가용성 유지외부에서 직접 백엔드 서버에 접근하지 못하게 함DDOS 공격이나 ..

[1분 면접] CORS란 ?

📌 면접 답변CORS (Cross Origin Resource Sharing)를 설정한다는 것은 출처가 다른 서버간의 리소스를 공유하는 것을 허용하는 것이다.출처(Origin) = 프로토콜(http) + 도메인(example.com) + port(80)  과거에 CSRF(Croess-Site Request Forgery, 크로스 사이트 요청 위조) 문제가 있었다.CSRF는 사용자가 의도하지 않는 요청을 공격자가 만든 웹 애플리케이션을 통해 보내게 만드는 공격이다. 좀 더 자세히 이해하기 위해 아래의 공격 방식을 살펴보자.   CSRF 공격 방식1. 사용자가 A 사이트 (은행 웹사이트)에 로그인로그인하면 세션 쿠키가 브라우저에 저장이후 사용자는 A 사이트에서 로그아웃하지 않은 상태로 다른 사이트 방문2...

[1분 면접] MySQL InnoDB에서 갭락과 넥스트 키 락이 무엇이고, 어떻게 팬텀 리드를 방지하나요?

📌 면접 답변1. Phantom Read-- 트랜잭션 A 시작START TRANSACTION;-- 트랜잭션 A 첫 번째 조회SELECT * FROM orders WHERE amount > 150;-- 트랜잭션 B 시작START TRANSACTION;-- 트랜잭션 B 새로운 행 삽입INSERT INTO orders (customer_id, amount) VALUES (4, 250);-- 트랜잭션 B 커밋COMMIT;-- 동일한 조건으로 트랜잭션 A 두 번째 조회시, 트랜잭션 A의 첫 번째 조회에는 존재하지 않던, 트랜잭션 B에서 삽입된 새로운 행이 함께 조회된다.-- 단, MVCC를 지원하는 경우 해당 케이스에서 팬텀 리드가 발생하지 않는다.SELECT * FROM orders WHERE amount >..

[1분 면접] 동기와 비동기의 차이점

📌 면접 답변 동기와 비동기는 호출하는 함수의 작업 완료를 기다리는지 여부의 차이가 있다. 예를들어, 함수 A가 동기로 함수 B를 호출하면 A는 B의 작업이 완료될 때 까지 기다린다.반면 함수 A가 비동기 함수로 B를 호출하면 A는 B의 작업 완료를 신경 쓰지 않고 따로 동작한다. (작업이 순차적으로 진행되지 않음)  📌 나의 답변동기는 작업들이 하나로 동기화 되어 하나의 일이 끝날때까지 기다리고, 끝나고 난 후 순차적으로 일이 처리되는 것을 의미한다. 반면에 비동기는 작업들이 동기화 되어있는거와 달리, 작업이 실행 중이고 현재 CPU가 해당 작업이 끝날 때 까지 기다리는 중이라면, 해당 작업은 Call Stack에서 Task Queue로 넘어가 작업을 처리된다. 그리고 Call Stack의 작업이 ..

[1분 면접] 공유락과 배타락에 대해 설명 해주세요.

📌 면접 답변DBMS에서 특별한 제어없이 병행 수행을 허용하면 데이터의 일관성과 무결성을 보장하지 못한다. 이때 사용할 수 있는 방법이 MVCC와 Lock 이다. Lock 은 공유락(Shared Lock)과 배타락(Exclusive Lock)으로 나눈다.   공유락Read Lock이라고도 불림공유락이 걸린 데이터에 대해서 다른 트랜잭션에서도 공유락 획득 가능 하지만 베타락 획득은 불가능 트랜잭션 내에서 조회한 데이터가 변경되지 않음을 보장 (쓰기 불가능)SELECT * FROM table_name WHERE id = 1 FOR SHARE ;   배타락Write Lock이라고도 불림배타락이 걸린 데이터는 다른 트랜잭션에서 공유락과 배타락 획득 불가능배타락을 가진 트랜잭션은 데이터 독점 SELE..

[1분 면접] DB 시스템에서 동시성 제어하는 방법

📌 면접 답변대표적인 동시성 제어 방식으로 2가지가 있다.간단하게만 살펴보고, 이후 추가 학습을 진행해보자.   1. MVCC (Multi-Version Concurrency Control)DB의 동시성을 보장하면서 락을 최소화 하여 성능 향상읽기 작업시 잠금을 사용하지 않아 높은 동시성 제공읽기 트랙잭션트랜잭션이 시작된 시점의 데이터 읽음다른 트랜잭션이 데이터를 수정하더라도 내 트랜잭션이 볼 수 있는 데이터는 변하지 않음쓰기 트랜잭션데이터를 수정하면, 새로운 버전 생성변경 내용이 Commit 되면 새로운 버전 확정이후 시작하는 트랜잭션들은 이 새로운 버전을 읽음기존에 진행 중인 트랜잭션들은 본인이 시작한 시점의 스냅샷때문에 최신 데이터 볼 수 없음 다른 트랜잭션이 데이터를 변경해도, 이미 시작된 트랜..

[1분 면접] HTTP 매서드에서 멱등성이란 무엇인가 ?

멱등성이란 ? 영어로 Idempotent (살면서 처음 보는 단어이다...)사전적의미로는 동일한 연산을 여러 번 수행해도 똑같은 결과를 나타냄  HTTP 매서드의 멱등성동일한 요청을 한번 보내는것과 여러번 보내는 것이 동일한 효과를 지님멱등하다면 요청을 재시도할 때 같은 서버의 상태를 보장하기 때문에 문제 없음멱등하지 않는다면 재시도 요청시 중복 요청을 보내 문제 발생  멱등한 HTTP 매서드 GET (리소스 조회 요청으로 서버 상태 변하지 않음)HEAD (응답 없이 헤더만 반환, 상태 변경 없음)PUT (특정 리소스를 완전히 교체하는 요청, 동일한 데이터 여러번 보내도 똑같은 결과)DELETE (리소스 삭제하는 요청으로, 다시 요청해도 결과 동일) 멱등하지 않는  HTTP 매서드 POST (새로운 리소..

[1분 면접] 사용자가 웹사이트에 처음 접근했을 때 발생하는 일련의 과정

[면접 대답]1. Clinet가 URL 입력  ( HTTP 프로토콜을 사용해 구글 웹 서버와 통신 시도) 2. 브라우저는 도메인 네임에 대한 IP 주소를 알아야 하기 때문에 DNS 서버에 질의 응답으로 해당 도메인에 대한 IP 주소 응답 받음3. IP 주소를 얻은 후, 브라우서는 구글 서버와 통신TCP/IP를 기반으로 TCP 3-Way Handshake 과정 필요 4. TCP 연결이 성립된 후, 브라우저는 HTTP Request 메시지 생성데이터 패킷 형태로 네트워크에 전달5. 서버는 클라이언트의 요청을 수신하고, HTTP Response 메시지를 생성하여 응답서버는 상태 코드와 함께 웹 페이지 데이터 전송브라우저는 데이터(HTML/CSS, JS)를 해석하여 화면에 페이지 렌더링6. 모든 데이터 전송이 ..

[1분 면접] DB에서 커넥션 풀을 사용하지 않을 때 발생하는 문제는 ?

DB 커넥션 Life Cyle DB 드라이버를 사용하여 DB 연결read/write를 위한 TCP 소켓 열기소켓을 통해 read/write연결 종료 소켓 닫기  커넥션 풀이 없다면  애플리케이션에서 DB 접근에 위와 같은 과정을 반복이 과정은 비용이 상당히 많이 들고, 요청의 응답시간이 길음 커넥션 풀 사용 장점커넥션 풀을 사용함으써 연결을 미리 생성이를 재사용하여 성능을 향상시키고 자원 사용을 최적화 DB 부하 감소 (최대 연결 수 제한)  NestJS 같은 경우 TypeORM이 자동으로 커넥션 풀을 적용시켜준다.

[1분 면접] 스레드, 프로세스, 코어의 수는 많을 수록 좋을까 ?

코어가 많은 경우많은 코어는 CPU의 병렬 처리 성능을 향상이를 최대한 활용하기 위해서는 소프트웨어가 멀티코어 환경에 최적화되어야 함단일 스레드 작업이 주를 이룰 경우, 추가 코어의 이점을 잘 활용 못함또한 코어 수가 많아질수록 CPU의 비용과 전력 소비가 증가해 발열 관리 복잡 프로세스가 많은 경우각 프로세스는 독립된 메모리 공간을 가지는데, 프로세스가 동시에 실행되면 메모리 사용량 급격히 증가프로세스 생성 및 관리에도 많은 시스템 자원이 소모 IPC (프로세스 간 통신)이 필요한 경우 성능 저하 발생많은 프로세스는 프로세스 간 Context Switching에 발생하는 오버헤드 수반 스레드가 많은 경우스레드가 많아지면, 스레드 간 Context Switching이 자주 일어나 CPU 자원이 스레드 관..