티스토리 뷰
1. CORS란?
• 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제이다.
웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행한다. 브라우저는 보안상의 이유로, 스크립트에서 시작한 교차 출처 HTTP 요청을 제한한다. 따라서 다른 출처의 리소스를 불러오기 위해서는, 그 출처에서 교차 출처 리소스 공유에 대한 헤더(CORS)를 응답 시 반환해주어야 한다. preflight request는 실제 요청을 보내도 안전한지 판단하기 위해 사전에 보내는 요청입니다. HTTP의 OPTIONS 메서드로 요청하며 CORS를 허용하는지 확인합니다. CORS가 허용된 웹서버라면 사용 가능한 리소스를 헤더에 담아 응답합니다.
Sop 정책 프로토콜 포트 호스트가 모두 같아야지 통신이 되야 되는데 프론트랑 백이랑 같이 하다보면 늘 문제가 생기는 듯
2. 쿠키와 세션 토큰의 차이점
• 쿠키는 클라이언트의 브라우저에 설치되는 작은 기록 정보 파일이다. 단점으로는 브라우저에 정보를 저장하기 때문에 보안에 취약합니다.
• 세션은 민감한 인증 정보를 브라우저가 아닌 서버측에 저장하고 관리한다. 보안은 뛰어나지만, 서버에서 세션 저장소를 사용함으로 요청이 많아질 수록 서버에 부하가 심해진다.
• JWT란 인증에 필요한 정보들을 암호화 시킨 JSON 토큰을 의미 한다. JWT 기반 인증은 JWT 토큰을 HTTP 헤더에 실어 서버가 클라이언트를 식별하는 방식이다.
3. TCP 연결 과정중에서 3way 4way 차이가 나는 이유
• Client가 데이터 전송을 마쳤다고 하더라도 Server는 아직 보낼 데이터가 남아있을 수 있기 때문에 일단 ACK만 먼저 보내고, 데이터를 모두 전송한 후에 자신도 FIN 메시지를 보내기 때문이다.
4. UDP도 신뢰성을 보장할 수 있나요
• UDP도 신뢰성을 UDP자체에서 보장하지 않는 것 뿐이지, 개발자가 직접 신뢰성을 보장하도록 할 수 있습니다. 그래서 HTTP/3은 QUIC이라는 프로토콜을 기반으로 하는데, QUIC은 UDP를 기반으로 합니다. 즉, UDP 자체는 신뢰성을 보장하지 않지만, 추가적인 정의를 통해 신뢰성을 보장받을 수 있습니다.
5. 시스템 콜은 무엇이고 종류는 뭐가 있을까요
• 다양한 서비스들을 수행하기 위해 하드웨어를 OS가 직접적으로 관리한다. 하지만 응용 프로그램은 OS가 제공하는 인터페이스를 통해서만 자원을 사용할 수 있는데 OS가 제공하는 이러한 인터페이스를 시스템 콜이라고 한다.
6. 동기와 비동기방식의 차이와 장단점에 대해 설명
• 동기 방식(Sync)
• 메서드 리턴과 결과를 전달받는 시간이 일치하는 명령 실행 방식입니다.
• 동기 방식은 한 함수가 끝나는 시간과 바로 다음의 함수가 시작하는 시간이 같습니다.
• 비동기 방식(Async)
• 여러 개의 처리가 함께 실행되는 방식입니다.
• 동기 방식에 비해 단위시간 당 많은 작업을 처리할 수 있습니다.
• 단, CPU나 메모리를 많이 사용하는 작업을 비동기로 처리하게 되면 과부하가 걸릴 수 있고 프로그램의 복잡도도 증가하게 됩니다.
7. GET 메서드와 POST 메서드의 차이점에 대해 설명
[GET]
GET은 데이터를 조회할 때 사용하는 메소드로, URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 요청 메시지의 BODY부분이 비어있습니다.
[POST]
POST는 데이터를 생성할 때 사용하는 메소드로 데이터 전송 시 HTTP 요청 메시지의 BODY부분에 데이터를 저장하여 전송합니다.
GET은 리소스를 조회한다는 점에서 여러 번 요청하더라도 응답이 똑같기 때문에 멱등이며, POST는 리소스 생성/업데이트 용도이기 때문에 멱등이 아닙니다
멱등성: 연산을 여러번 적용하더라도 결과가 달라지지 않는 성질
8. PCB에 대해 설명해주세요.
Process Controle Block의 줄임말로, 프로세스 스케줄링 및 상태 기억 등을 위해 존재한다. 프로세스 생성 시 만들어지며, Context Switching 이 일어날 때 프로세스의 상태를 기록하기도, 복구하기도 한다. 프로세스 완료 시 해당 공간은 반환된다.
9. 기아현상이란 어떤것이고 어떠한 알고리즘을 사용할 때 나타나나요
• 우선순위가 계속 밀려서 해당 프로세스가 아예 실행 안되는 무기한으로 CPU 실행으로 대기할 때 발생한다. SJF 알고리즘을 사용할 때 나타날 수 있는 현상으로 에이징(오래된 작업일수록 우선순위를 높이는)으로 해결한다.
10. NAT에 대해 아는 대로 말해주세요.
Network Address Traslation 의 약자로 여러 대의 호스트가 하나의 공인 IP 를 쓰기 위해 사용한다. 호스트마다 공인 IP를 사용하지 않아서 IP 주소를 절약할 수 있고, 호스트 자체의 IP는 숨길 수 있어서 보안도 좋아진다. 가장 많이 쓰는 대역으로는 192.168.0.0 ~ 192.168.255.255 가 있다.
11. CPU의 성능 척도에는 무엇이 있나요?
• 이용률 (CPU Utilization): CPU가 일한 시간
• 처리량 (Throughput): 단위 시간당 처리량
• 소요시간 (Turnaround Time): CPU 사용시간 + 기다린 시간
• 대기시간 (Waiting Time): 프로세스가 ready queue에서 기다린 전체 시간의 합
• 응답시간 (Response Time): 프로세스가 ready queue에 들어가서, 최초로 CPU에 할당되기 까지 걸린 시간
12. 프로세스의 메모리 영역에 대해 설명해주세요
Code 영역 : 실행되는 프로그램의 코드가 저장되는 메모리 영역
Data 영역 : 프로그램의 전역 변수와 static 변수가 저장되는 메모리 영역, 이 변수들은 프로그램이 시작될 때 할당되어 프로그램 종료 시 소멸
Heap 영역 : 프로그래머가 직접 공간을 할당/해제하는 메모리 영역, 프로그램 동작 시(런타임)에 크기가 결정
Stack 영역 : 함수 호출 시 생성되는 지역 변수와 매개 변수가 저장되는 임시 메모리 영역
'cs 스터디' 카테고리의 다른 글
데이터베이스 면접 예상 질문 (0) | 2024.05.28 |
---|---|
디자인 패턴(Design Pattern) (0) | 2024.05.05 |
데이터 베이스 면접 질문 (0) | 2024.04.16 |
운영체제 cs 면접 예상 질문 10선 (2) | 2024.04.03 |
[웹/SW] CSRF,XSS에 대해 (1) | 2024.03.14 |