백엔드 개발자 면접대비 질문정리 - 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.