본문 바로가기

일상/취준

[웹] 신입 웹 개발자 직무 면접 정리 1탄

안녕하세요.  웹 개발자로서 1차 직무 면접 경험을 토대로, 질문과 답변을 정리해보았습니다. 

[웹] 신입 웹 개발자 직무 면접 정리 1탄 life-with-coding.tistory.com/414

[Spring] 신입 웹 개발자 직무 면접 정리 2탄 life-with-coding.tistory.com/417

 

목차
1. HTTP란?
2. HTTP와 HTTPS 차이
3. GET/POST 방식
4. 쿠키/세션
5. Connectionless / Stateless
6. Restful API란?
7. 프레임워크란?
8. XML과 JSON 차이점 
9. MVC 패턴이란?

 

1. HTTP

HTTP란 HyperText Transfer Protocol의 약자로서 인터넷에서 데이터를 주고받을 수 있는 프로토콜입니다.  HTTP프로토콜은 어떤 종류의 데이터 (문서, 이미지, 동영상, 오디오, 텍스트)든지 전송할 수 있도록 설계되어 있습니다. HTTP 메시지는 시작줄, 헤더, 본문으로 구성됩니다.

 

*Keep-alive

HTTP1.1부터 지원되는 기능으로 지정된 시간동안 연결을 끊지 않고 요청을 계속해서 보낼수 있습니다.

클라이언트-서버 연결 시 매번 요청을 하여 통신에 비용이 낭비되는 기존 HTTP의 문제를 해결했습니다. 

[예시] Connection: Keep-Alive

Keep-Alive:timeout=5, max=200

 

2. HTTP와 HTTPS

HTTPS는 HyperText Transfer Protocol Secure 의 약자로서 HTTP에 보안을 위한 조치가 추가된 버전입니다. 
특히, HTTPS는 SSL 프로토콜을 사용해 사용자가 데이터를 보내는 경우 암호화되어 전송됩니다. 

 

3. GET/POST방식

GET 방식(정보 요청)

서버로부터 정보를 조회하기 위해 설계된 메서드입니다. URL에 파라미터를 넘겨 웹 서버에 리소스를 요청합니다.

POST방식(정보 생성 및 변경)

리소스를 생성/변경하기 위해 설계되었기 때문에 전송 데이터를 HTTP메시지의 Body에 담아 전송합니다.

 

4. 쿠키/세션/캐시

쿠키란 클라이언트의 웹 브라우저에 저장되는 리소스(키와 값 형태)입니다. 사용자 인증의 유효시간을 명시할 수 있고, 브라우저가 종료되어도 인증이 유지됩니다. 쿠키는 하나의 도메인당 20개의 값, 하나의 쿠키는 4KB까지 저장 가능합니다. 

 

쿠키 동작 방식

1) 서버 요청 : 클라이언트가 서버에 요청

2) 쿠키 생성 : 서버에서 쿠키를 생성

3) 서버의 응답 : HTTP 헤더(Set-cookie:)에 쿠키를 포함시켜 응답

4) 쿠키 보관 : 브라우저가 종료되어도, 만료 기간까지 클라이언트에서 보관

5) 요청 시 쿠키 전송 : 클라이언트가 서버에 같은 요청을 할 경우 HTTP헤더(cookie:)에 쿠키를 담아 서버에게 보냄 

6) 쿠키 업데이트, 응답 : 서버에서 쿠키를 읽어 쿠키를 업데이트하여 HTTP헤더에 포함시켜 응답

 

세션이란 클라이언트가 접속하면 서버에 의해 생성되는 리소스입니다. 클라이언트에 세선ID를 부여하여 웹 서버 접속 시부터 브라우저를 종료할 때까지 인증상태를 유지합니다. 세션은 서버에 생성되므로 개수나 용량에 제한이 없습니다.  

 

세션 동작 방식

1) 세션 ID 발급 : 클라이언트가 서버에 접속시 session_id 발급

2) 세션 ID 전달 : 클라이언트가 서버에 요청(request) 시 session_id를 서버에 전달

4) 서버에서 요청 처리 : 서버는세션 ID로 클라이언트 정보를 가져와 요청 처리 

5) 클라이언트에 응답 : 서버는 클라이언트 요청을 처리하여 클라이언트에게 응답

 

5. Connectionless / Stateless 

비연결성(Connectionless)란, 클라이언트와 서버가 한 번 연결을 맺은 후 서버가 응답(response)을 보내면 바로 접속을 끊는 특징입니다. HTTP프로토콜이 연결 후 바로 접속을 끊는 이유는 연결을 수행하기 위한 리소스(자원)를 줄이기 위해서 수행됩니다. 

 

무상태(Stateless)란, 서버와 클라이언트가 통신이 끝나면 상태를 유지하지 않는 특징입니다. 이러한 특징때문에 서버는 클라이언트를 식별할 수가 없어서 매번 인증을 수행해야 합니다. 이러한 번거로움을 해결하기 위해 1) HTTP는 브라우저 단에서 쿠키를 저장하고, 2) 서버에 세션을 유지하는 방식으로 해결합니다. 

 

6. REST / RESTful API

REST(Representational State Transfer)란  모든 자원에 URI를 부여하여 사용하는 방법으로

클라이언트와 서버에서 개발하는 부분이 명확해지고 URI만 봐도 어떤 요청인지 파악할 수 있게 직관적이다는 특징이 있습니다.

 

REST 구성

1) 자원(Resource)

2) 행위(Verb)

3) 표현(Representations)

 

RESTful API(레스트풀 API): REST기반으로 API를 구현한 것입니다.

 

RESTful API 중심 규칙 

1) URI는 정보의 자원을 표현해야 합니다.

2) 자원에 대한 행위는 GET, POST, PUT, DELETE 등으 로 표현합니다.

 

* URI(Uniform Resource Identifier) : URL의 상위 개념으로 네트워크 상에서 자원을 식별하기 위한 문자열

* URL(Uniform Resource Locator) :  인터넷에 있는 자원을 나타내는 유일한 주소(웹사이트주소,컴퓨터네트워크상의자원)

 

7.프레임워크란? 

프레임워크는 클래스 프레임워크와 인터페이스의 집합입니다.

프레임워크는 구조화된 스크립트를 통해 패턴을 정형화하여 반복적으로 해야 하는 공통부분을 최소화 할 수 있도록 설계되어 있습니다. 이를 통해 개발자는 자신의 개발 업무에 집중할 수 있으며 개발품질 향상에 도움을 줍니다. 

 

프레임워크 장점

1) 체계적 코드 관리로  유지보수가 용이하다.

2) 코드 재사용성이 높다. 

3) 추상화된 코드를 제공함으로써 확장성이 좋다.

 

프레임워크 단점 

1) 프레임워크에 너무 의존할 경우 개발 능력이 떨어진다.

2) 자유로운 개발이 제한된다.

 

8.XML과 JSON 차이점 

XML은 데이터 저장, 전달시 사용되는 마크업 언어입니다.

XML DOM(Document Object Model)을 이용하여 해당 문서에 접근후 XML 파서를 통해 파싱됩니다. 

장점 : 스키마를 사용하여 데이터의 무결성을 검증할 수 있습니다. 

단점 : XML은 배열을 사용할 수 없고 (JSON은 배열 사용 가능), 데이터를 읽고 쓰는 것이 JSON 대비 느립니다. 

 

XML 예시

<cat>
    <name>누리</name>
    <family>길냥이<family>
    <weight>3.14</weight>
</cat>


JSON
은 데이터를 저장하고 전달하는 메타언어입니다. 자바스크립트의 표준 함수인 eval()함수로 파싱됩니다. 

장점 : JSON은 문자열을 전송받은 후에 해당 문자열을 바로 파싱하므로, XML보다 빠른 속도를 가지고 있습니다. 

단점 : JSON은 개발자가 문자열 데이터의 무결성을 검증해야 합니다.

 

JSON 예시

{
    "name": "누리",
    "family": "길냥이",
    "weight": 3.14
}

 

9. MVC패턴  

MVC 패턴 Model-View-Controller의 약자로

소프트웨어 비즈니스 로직을 3가지 형태로 구분하여 개발하는 디자인 패턴 중 하나입니다.

1) Model(모델):  DB와 상호작용(CRUD), 알고리즘 등 내부 비즈니스 로직을 처리하기 위한 역할을 합니다. 

2) Controller(컨트롤러) : 함수들이 정의되어 있어 모델의 데이터를 어떻게 처리할 지 알려주는 역할이고,

모델이 처리한 데이터를 통해 어떻게 보여줄지 구현하는 부분입니다. 

3) View(뷰) : 화면에 보여주는 역할이며, 최종적으로 사용자에게 UI를 보여주는 역할입니다. 

문제점) 대규모 프로그램 개발의 경우 다수의 뷰와 모델이 컨트롤러를 통해 복잡하게 연결되어 컨트롤러가 과도하게 커지는 문제점이 있습니다. 이를 해결하기 위해 MVP 등 다양한 디자인 패턴들이 개발되고 있습니다.