백엔드 개발자 면접대비 질문정리 - Web
백엔드 개발자 면접대비 질문정리 - Web
Web
인터넷의 동작원리
- 인터넷은 네트워크 인프라, 웹은 인터넷 위에서 동작하는 서비스
- 인터넷 위에서 동작하는 서비스는 그 외에도 이메일, 파일공유 서비스, 스트리밍 서비스, 클라우딩 컴퓨팅 서비스, 온라인 게임 서비스 등이 있습니다.
- 웹 말고도 이메일을 소프트웨어로도 보낼 수 있으니까 SMTP, POP3 등..
- 컴퓨터 - 라우터 - ISP - ISP - 라우터 - 컴퓨터
- 인터넷 서비스 제공업체(Internet Service Provider, ISP)는 연결되는 라우터를 관리하고 다른 ISP 라우터에 엑세스할 수 있도록 합니다.
- 컴퓨터에서 IP주소 or 도메인 이름을 통해 메시지를 맏을 특정 컴퓨터를 지정
웹의 동작원리
- 클라이언트는 웹 사용자의 인터넷이 연결된 장치, 서버는 웹사이트, 앱 등을 저장하는 컴퓨터
- 브라우저 주소 입력 - DNS 서버 - IP주소 서버에 HTTP 요청 (TCP/IP 연결로 전송) - 응답과 웹사이트 파일인 데이터 패킷을 브라우저로 전송 - 브라우저에서 웹 사이트로 조립해서 보여줌
HTTP(HyperText Transfer Protocol)
- 웹 데이터를 전송하기 위해 사용되는 프로토콜
- HTTPS(secure version of HTTP)는 SSL/TLS 프로토콜을 사용하여 데이터 전송을 암호화하고 보안을 제공합니다.
- SSL(secure sockets layer)와 TLS(transport layer security)는 네트워크에서 데이터를 안전하게 전송하기 위해 설계된 암호화 프로토콜입니다. SSL은 원래 넷스케이프에서 개발되었으며, TLS는 그 이후에 IETF(Internet Engineering Task Force)에 의해 SSL의 표준화된 버전으로 개발되었습니다.
Restful API란
- HTTP 기반의 웹 서비스의 아키텍처 스타일, 리소스를 표현하고 상태 전달을 위한 웹 API 디자인 원칙
- 클라이언트-서버 통신의 일관성
- GET, POST, PUT, DELETE
- 클라이언트가 서버에 정보를 요청하거나 전송하는 방법으로 HTTP 메서드 종류
- GET은 주로 서버에서 정보를 검색하는데 사용되고 서버의 상태를 변경하지 않습니다.
- POST는 서버에 데이터를 제출하거나 저장하는데 사용하고, 서버의 상태를 변경할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// User 생성 (POST 요청)
POST /users
Content-Type: application/json
{
"name": "John Doe",
"email": "john.doe@example.com"
}
// 응답
{
"id": 1,
"name": "John Doe",
"email": "john.doe@example.com"
}
// User 조회 (GET 요청)
GET /users/1
// 응답
{
"id": 1,
"name": "John Doe",
"email": "john.doe@example.com"
}
gRPC(google remote procedure cell)
- google 사에서 개발한 오픈소스 RPC 프레임워크
- HTTP/2를 사용하고, 프로토콜 버퍼로 데이터를 전달한다는 점에 차이
- 프로토콜 버퍼는 이진 데이터 포맷을 사용하여 데이터를 직렬화합니다. 이는 더 작은 메시지 크기와 더 높은 직렬화 및 역직렬화 속도를 제공합니다.
- HTTP/1.1은 가장 널리 사용되는 버전이며, HTTP/2는 성능 향상을 제공하고, HTTP/3은 새로운 전송 프로토콜 QUIC를 사용하여 더 나은 성능과 보안을 제공합니다.
- Restful API는 리소스 중심, gRPC는 서비스 중심의 API 디자인을 채택
- 리소스는 데이터의 개체 또는 서비스에서 조작할 수 있는 항목을 의미합니다. 예를 들어, 사용자, 상품, 주문 등이 리소스가 될 수 있습니다.
- 서비스의 메서드 호출을 중심으로 하며, 각 메서드는 특정 작업을 수행하고 결과를 반환합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
syntax = "proto3";
service UserService {
rpc CreateUser(CreateUserRequest) returns (User);
rpc GetUser(GetUserRequest) returns (User);
}
message CreateUserRequest {
string name = 1;
string email = 2;
}
message GetUserRequest {
int32 id = 1;
}
message User {
int32 id = 1;
string name = 2;
string email = 3;
}
Web Server와 WAS의 차이
- 웹 서버(아파치, niginx, iis)는 정적 웹 페이지, 이미지, css 등 콘텐츠 처리
- WAS 웹 애플리케이션 서버는 동적 콘텐츠 처리 생성 및 처리, 데이터베이스 액세스, 비지니스 로직 실행 등 담당
XML과 JSON의 차이 및 장단점
- 둘 다 데이터를 구조화하고 전송하기 위한 포멧
XML(eXtensible Markup Language)
은 태그 기반의 구조를 가지고 사용자 정의 태그로 데이터를 표현, 파싱이 복잡하고 느립니다. 하지만 사용자 정의 태그를 사용해서 확장성이 좋고 많은 시스템과 언어에서 지원됩니다.JSON(JavaScript Object Notation)
은 데이터를 교환하거나 저장하기 위한 가벼운 데이터 포맷으로 파싱이 빠르고 효율적입니다.
XML에서 node, element, attribute의 차이 및 용도
- 전체 문서는 하나의 node이고 element는 노드 중 하나로 각 태그를 나타냅니다.
- attribute는 태그에 속성 노드로 엘리먼트 내에 추가정보를 제공하고 시작 태그 내 이름과 값 쌍으로 표시
1
2
3
4
5
6
7
8
9
<!-- This entire document is a Node -->
<bookstore> <!-- 'bookstore' is an Element Node -->
<book category="fiction"> <!-- 'book' is an Element Node, 'category' is an Attribute Node -->
<title lang="en">The Great Gatsby</title> <!-- 'title' is an Element Node, 'lang' is an Attribute Node -->
<author>F. Scott Fitzgerald</author> <!-- 'author' is an Element Node -->
<year>1925</year> <!-- 'year' is an Element Node -->
<price>10.99</price> <!-- 'price' is an Element Node -->
</book>
</bookstore>
JSON에서 {}와 []의 용도
- 중괄호는 JSON 객체를 대괄호는 JSON 배열을 의미합니다.
- 중괄호는 키-값 쌍의 컬렉션으로 구성
This post is licensed under CC BY 4.0 by the author.