지난 주 복습
- OOP 4가지 핵심
- 추상화(Abstraction): 핵심만 드러내고 구현 세부는 감춘다. 공통 인터페이스로 복잡도를 줄이고, 변경 영향을 최소화한다.
- 다형성(Polymorphism): 같은 메시지(메서드 호출)에 대해 객체 타입에 따라 다른 동작이 실행된다. 대표적으로 서브타입 다형성(오버라이딩), 제네릭(파라메트릭 다형성), 오버로딩(애드혹 다형성).
- 캡슐화(Encapsulation): 데이터와 그 데이터를 다루는 메서드를 한 덩어리로 묶고, 외부에는 필요한 인터페이스만 공개한다(정보 은닉).
- 상속(Inheritance): 기존 타입을 확장해 속성과 행동을 재사용한다. is-a 관계일 때 적합.
- SOLID 원칙
- SRP(Single Responsibility Principle, 단일 책임): 클래스는 변경 이유가 하나여야 한다.
- ex. 결제 처리와 영수증 출력을 한 클래스에 두지 말고 분리.
- OCP(Open/Closed Principle, 개방-폐쇄): 확장에는 열려 있고 수정에는 닫혀 있어야 한다.
- ex. 새 결제 수단 추가 시 기존 코드 수정 대신 새 클래스만 추가(전략 패턴).
- LSP(Liskov Substitution Principle, 리스코프 치환): 하위타입은 상위타입을 대체 가능해야 한다.
- ex. Rectangle을 상속한 Square가 setWidth/setHeight에서 제약을 깨면 위반.
- ISP(Interface Segregation Principle, 인터페이스 분리): 클라이언트가 쓰지 않는 메서드에 의존하지 말라.
- ex. 거대한 인터페이스를 필요한 역할별로 쪼갠다.
- DIP(Dependency Inversion Principle, 의존성 역전): 구체가 아닌 추상에 의존하라. 생성은 DI 컨테이너/팩토리에 맡긴다.
네트워크
1. 웹 동작 방식에 대해 설명하세요.
- 사용자가 브라우저에 URL 입력
- 브라우저는 DNS를 통해 해당 도메인의 IP를 알아냄
- 브라우저는 HTTP 프로토콜을 사용하여 HTTP 요청 메세지를 생성함
- TCP/IP 연결을 통해 HTTP 요청이 서버로 전송됨
- 서버는 HTTP 프로토콜을 활용해 HTTP 요청 메세지를 생성함.
- TCP/IP 연결을 통해 요청한 컴퓨터로 전송
- 도착한 HTTP 응답 메세지는 웹페이지 데이터로 변환되고, 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게 됨
- 브라우저 -> DNS -> IP -> HTTP 요청 -> 서버 응답 -> 렌더링
2. http 와 https 의 차이에 대해 설명해주세요.
- http: 서버/ 서버/ 클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜 (80번 포트)
- https: http+암호화 (443번 포트)
- 로그인, 결제처럼 민감한 정보
- 인증서 기반으로 동작, 클라이언트와 서버가 키를 주고 받음
3. OSI 7 계층에 대해서 설명해주세요.
- 물리, 데이터링크, 네트워크, 전송, 세션, 표현, 응용 계층 (물데네전세푱)
- 7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건들이지 않고도 이상이 생긴 단계만 고칠 수 있음.
- 7계층 (Application): 사용자가 직접 접하는 계층. 웹 브라우저, HTTP, SMTP, FTP 같은 애플리케이션 프로토콜이 동작.
- 예: Nginx, Apache 같은 웹 서버, 로드 밸런서(L7), 역프록시가 여기서 동작.
- 6계층 (Presentation): 데이터 표현/변환 계층. 인코딩, 암호화, 압축 수행.
- 예: HTTPS 암호화, UTF-8 변환.
- 5계층 (Session): 통신 세션을 관리. 연결 유지, 동기화.
- 예: 로그인 세션, 스트리밍 연결.
- 4계층 (Transport): TCP/UDP로 데이터 전송. 연결 지향(TCP), 비연결(UDP). 로드 밸런싱(L4)도 여기서 가능.
- 3계층 (Network): IP 주소 기반 경로 결정(라우팅). 라우터가 동작하는 계층.
- 2계층 (Data Link): MAC 주소 기반 통신, 스위치 동작. 프레임 단위 전송.
- 1계층 (Physical): 실제 케이블, 전파, 전기 신호. 비트 단위 전송.
- 흐름
- 웹사이트 접속 시 7 → 1로 캡슐화되어 내려가고, 전송 시 반대편에서 1 → 7로 역캡슐화되어 처리됨.
- 즉, 브라우저에서 HTTP 요청(7계층)을 만들면, 하위 계층이 하나씩 헤더를 붙여서(캡슐화) 최종적으로 전기 신호(1계층)로 전송.
4. TCP/IP 4 계층에 대해서 설명해주세요.
- OSI 7계층을 좀 더 단순화
- 네트워크 인터페이스(1-2), 인터넷(3), 트랜스포트(4), 애플리케이션 계층(5-7)
- 데이터의 캡슐화와 은닉이 가능
5. DNS 가 무엇인가요?
- Domain Name System
- 사람이 읽을 수 있는 도메인 이름 -> 머신이 읽을 수 있는 IP주소로 변환
6. 도메인 이름으로 실제 IP 를 어떻게 찾을 수 있는지 흐름을 설명해 주세요.
- 사용자가 웹 브라우저를 열어 주소 표시줄에 www.example.com을 입력하고 enter
- www.example.com 에 대한 요청은 일반적으로 케이블 인터넷 공급업체, DSL 광대역 공급업체 또는 기업 네트워크 같은 인터넷 서비스 제공업체 (ISP)가 관리하는 DNS 해석기로 라우팅 됨
- ISP의 DNS 해석기는 www.example.com에 대한 요청을 DNS 루트 이름 서버에 전달
- ISP의 DNS 해석기는 www.example.com 에 대한 요청을 이번에는 .com의 도메인의 TLD 이름 서버 중 하나에 다시 전달
- .com 도메인의 이름 서버는 example.com 도메인과 연관된 4개의 Amazon Route 53 이름 서버의 이름을 사용하여 요청에 응답
- ISP의 DNS 해석기는 Amazon Route 53 이름 서버 하나를 선택해 www.example.com에 대한 요청을 해당 이름 서버에 전달
- Amazon Route 53 이름 서버는 example.com 호스팅 영역에서 www.example.com 레코드를 찾아 웹 서버의 IP 주소 192.0.2.44 등 연관된 값을 받고 이 IP 주소를 DNS 해석기로 반환
- ISP의 DNS 해석기가 마침내 사용자에게 필요한 IP 주소를 확보
- 해석기는 이 값을 웹 브라우저로 반환
- DNS 해석기는 다음에 누군가가 example.com을 탐색할 때 좀 더 빠르게 응답할 수 있도록 사용자가 지정하는 일정 기간 example.com의 IP 주소를 캐싱(저장)함
- 웹 브라우저는 DNS 해석기로부터 얻은 IP 주소로 www.example.com 에 대한 요청을 전송
- 콘텐츠가 있는 곳
- 예를 들어 웹 사이트 엔드포인트로 구성된 Amazon S3 버킷 또는 Amazon EC2 인스턴스에서 실행되는 웹 서버
7. TCP 와 UDP 의 차이에 대해서 설명해 주세요.
- TCP: 연결 지향, 순서 보장, 데이터 손실 시 재전송. 신뢰성 높은 통신. (HTTP, 메일, 파일 전송)
- UDP: 연결 없이 전송, 순서 보장X, 손실 복구X. 빠른 속도. (스트리밍, 게임, VoIP)
- 스트리밍은 약간 끊겨도 괜찮으므로 UDP가 유리.
- TCP는 클라이언트와 서버가 연결된 상태에서 데이터를 주고 받고, UDP는 연결을 위해 할당되는 논리적인 경로가 없고 각각의 패킷은 다른 경로로 전송되며 독립적인 관계를 지님
- TCP는 신뢰성, UDP는 빠르고 네트워크 부하가 적지만, 신뢰성 있는 데이터 전송을 보장하지 않음.
8. MTU 가 무엇인가요?
- Maximum Transmission Unit, 최대 전송 단위
- TCP/IP 네트워크 등과 같은 패킷 또는 프레임 기반의 네트워크에서 전송될 수 있는 최대 크기의 패킷 또는 프레임
- 한 번에 전송할 수 있는 최대 전송량(Byte)인 MTU 값은 매체에 따라 달라짐
- ex) MTU 1500 - IP Header 20byte - TCP Header 20 byte = MSS (Maximum Segment Size) 1460
9. 서버-클라이언트 메시지 전송 후에 수신 확인은 어떻게 하나요?
- ACK (Acknowledgement) 메시지를 사용하여 확인
10. 3-way hand shake, 4-way hand shake 흐름에 대해서 설명해주세요.
- 3-way handshake는 TCP/IP 프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정
- 3-way handshake는 TCP의 연결을 초기화할 때 사용
- 클라이언트가 SYN -> 서버가 SYN-ACK -> 클라이언트가 ACK -> 연결 성립
- 4-way handshake는 세션을 종료하기 위해 수행
- 클라이언트가 FIN -> 서버가 ACK -> 서버가 FIN -> 클라이언트가 ACK -> 연결 종료
11. HTTP 프로토콜에 대해서 아는 대로 말해주세요.
- Hypertext Transfer Protocol
- 인터넷 상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜
- 기본적으로 상태를 저장하지 않음 (stateless)
- 애플리케이션 레벨 ; TCP/IP 위에서 작동
- HTML 문서, 이미지, 동영상, 오디오, 텍스트 문서 등 여러 종류
- 어떤 데이터든지 보낼 수 있음
- 메서드: GET, POST, PUT, DELETE
12. HTTPS 가 동작하는 방식에 대해서 설명해 주세요.
- HTTPS = HTTP + SSL/TLS 암호화
- 이전에는 보안 소켓 계층(SSL)으로 알려졌지만, 전송 계층 보안(TLS라고 함.
- 비대칭 공개 키 인프라로 알려진 것을 사용하여 통신을 보호함
- 두 개의 서로 다른 키
- 개인 키: 웹 사이트 소유자가 관리. 웹 서버.
- 공개 키: 안전한 방식. 서버와 상호작용하고자 하는 모든 사람이 사용. 공개 키로 암호화된 정보는 개인 키로만 해독 가능
- HTTPS 동작 방식 (TLS + RSA)
- 클라이언트가 서버에 연결 요청.
- 서버는 공개키와 인증서를 클라이언트에 전달.
- 클라이언트는 CA(신뢰할 수 있는 인증기관) 목록으로 인증서의 유효성 검증.
- 클라이언트는 대칭키를 랜덤 생성 → 서버의 공개키로 암호화해서 전송.
- 서버는 개인키로 이를 복호화하여 대칭키 획득.
- 이후 통신은 해당 대칭키로 암호화 (빠른 속도).
13. HTTP 헤더의 구조에 대해서 설명해 주세요.
- HTTP 본문(body) 및 요청/응답에 대한 정보를 포함
- 본문에 대한 정보는 본문 컨텐츠 길이 등 본문 컨텐츠와 관련이 있음
- HTTP 1.1 헤더
- 일반 헤더 (General Header): 요청/응답이 생성된 날짜 및 시간, 요청과 응답 메시지에 공통으로 사용
- 요청/응답 헤더 (Request / Response Header)
- 요청 헤더: URL, 메소드, 브라우저 및 기타 정보
- 응답 헤더: 사용자가 특정 페이지 또는 리소스에 대한 요청 -> 서버에서 브라우저에 의해 수신: 컨텐츠에 사용 된 인코딩, 서버 시스템에서 응답을 생성하는 데 사용되는 서버 소프트웨어 및 기타 정보.
- 엔터티 헤더 (Entity Header): 실제 메시지 또는 전송중인 HTTP 본문
- 컨텐츠 길이, 컨텐츠 언어, 인코딩, 만료 날짜 및 기타 중요한 정보
- 부가적인 정보
- Authorization 헤더: 인증 정보 전달
- 예: Authorization: Bearer <token>
- Basic Auth: username:password를 Base64로 인코딩해 전송. (보안 취약, HTTPS 필요)
- JWT: JSON Web Token, 서버-클라이언트 간 인증 상태를 유지하지 않고 서명된 토큰으로 신뢰 검증.
14. keep-alive 헤더에 대해서 설명해 주세요.
- http header와 관련된 값.
- 한 번 TCP 연결을 맺으면 여러 요청/ 응답을 재사용할 수 있도록 함.
- 오버헤드를 줄이고 성능을 개선
- 최소 특정 시간 동안 (timeout) 최대 요청 request(max)
15. HTTP GET과 POST의 차이는 무엇인가요?
- GET: 데이터 조회, 파라미터가 URL에 노출, 캐싱o
- 서버에서 어떤 데이터를 가져와서 보여줄 떄: 어떤 값이나 내용, 상태 등을 바꾸지 않는 경우에 사용
- body가 없음 (데이터가 URL에 저장)
- POST: 데이터 생성하거나 수정, 요청 본문(body)에 데이터를 담아 보냄, 캐싱x
- body가 있음
- 서버상의 데이터 값이나 상태를 바꾸기 위해서 사용
16. 쿠키와 세션에 대해서 설명해 주세요.
- 쿠키: 클라이언트에 저장되는 작은 데이터, 브라우저가 서버에 자동으로 전송
- 클라이언트에 저장되어 필요시 정보를 참조하거나 재사용 가능
- 세션: 서버에 저장되는 사용자 상태 정보, 클라이언트는 세션 ID만 쿠키로 갖고 서버와 통신
- 일정 기간 동안 같은 사용자로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하기 유지시키는 기술
- 쿠키는 클라이언트 저장, 세션은 서버 저장
- ex. 쿠키: 쇼핑몰 장바구니 기능, 세션: 로그인 같이 보안상 중요한 작업
17. 웹 브라우저에 google.com 을 치는 순간 일어나는 일을 설명해주세요.
- 브라우저 캐시 확인
- DNS 조회로 IP 획득
- TCP 3-way handshake
- if HTTPS, SSL/TLS handshake
- HTTP 요청 전송
- 서버 응답 수신
- 브라우저 랜더링 (HTML 파싱, CSS 적용, JS 실행)
- 캐시 -> DNS -> TCP -> SSL/TLS -> HTTP 요청 -> 렌더링
18. CORS 란 무엇인가요?
- Cross-Origin Resource Sharing 교차 출처 리소스 공유
- 다른 도메인 간 리소스 요청을 제어하는 브라우저 보안 정책
- 서버가 허용한 도메인만 자원 접근이 가능
- 추가 HTTP 헤더를 사용
- 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제
- 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행
- Protocol + Host + Port 3가지가 같으면 동일 출처
- CORS & SOP
- SOP: (Same-Origin Policy): 동일한 도메인/포트/프로토콜에서만 요청 허용.
- CORS (Cross-Origin Resource Sharing): 다른 도메인 간 요청 허용을 위해 서버에서 Access-Control-Allow-Origin 헤더로 허용할 출처(origin) 명시.
19. 웹 서버와 웹 어플리케이션 서버(WAS)의 차이는 무엇인가요?
- 웹 서버; 정적 파일 (HTML, CSS, JS, 이미지) 제공 ex. Nginx/Apache
- WAS; 동적 로딩 처리 ex. Tomcat/Spring Boot
- 웹 서버는 HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저에서 어떠한 요청을 하면 그 요청을 받아 정적 컨텐츠를 제공
- WAS는 DB 조회 혹은 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 애플리케이션 서버
- HTTP 프로토콜을 기반으로 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어
- 주로 데이터베이스 서버와 같이 수행
- JSP, Servlet 구동환경을 제공해주기 떄문에 서블릿 컨테이너 혹은 웹 컨테이너로 불림
- WAS는 Web server + Webcontainer의 역할을 모두 수행
- WAS와 웹 서버를 모두 사용하는 이유? 서버 부하 방지, 보안 강화, 여러 대의 WAS 연결 가능 (로드 밸런싱, 장애 극복 대응), 여러 웹 어플리케이션 서비스 가능
- 웹 서버가 정적을 처리하는 동안 WAS는 동적 로직을 처리 → 전체 응답 속도 향상.
20. Restful API 에서 리소스란 무엇일까?
- 데이터와 관련된 정보를 가지고 있는 객체
- 네트워크 상의 가치 있는 정보의 단위
- HTTP 프로토콜을 사용하여 리소스를 생성, 읽기, 업데이트, 삭제하는 기능 제공
21. REST API 란 무엇인지 설명해주세요.
- Representational State Transfer API
- HTTP 프로토콜을 기반으로 하는 API 기술
- 웹 기술의 표준인 HTTP 메서드 (GET, POST, PUT, DELETE)를 사용하여 리소스를 생성, 조회, 수정, 삭제하는 기술
- 다양한 플랫폼과 언어와 통신할 수 있는 유연한 구조를 제공
22. MQTT 프로토콜에 대해서 설명해보세요.
- Message Queuing Telemetry Transport
- IoT 디바이스 간의 메시지 전송을 위한 프로토콜
- 저전력, 낮은 대역폭, 낮은 처리능력의 디바이스에 최적화
- 클라이언트와 브로커 간의 경량 메시지 교환을 지원함.
'Programming > 기술 면접' 카테고리의 다른 글
| [CS Study] 데이터베이스 part 1 (Databases) (3) | 2025.09.16 |
|---|---|
| [CS Study] 웹 개발 (Web Development) (0) | 2025.09.16 |
| [CS Study] Operating Systems part1. (운영체제) (8) | 2025.08.11 |
| [CS Study] Data Structures (자료구조) (9) | 2025.08.11 |
| [CS Study] Algorithms (알고리즘) (4) | 2025.08.11 |