개발형 코딩 테스트
[2021 이코테] 10. 개발형 코딩 테스트
개발형 코딩 테스트
- 정해진 목적에 따라서 동작하는 완성된 프로그램을 개발하는 것을 요구하는 코딩 테스트 유형
- 일부 기업은 해커톤을 통해 채용을 진행
- 해커톤(Hackathon)이란 단기간에 아이더이를 제품화하는 프로젝트 이벤트
- 대개 1-2일 정도 진행되며 다수의 해커톤이 대회 형식을 빌려 해커톤이 끝나면 만든 프로그램을 시연하고 발표한 다음 채점을 진행
- 개발형 코딩 테스트는 분야에 따라 상세 요구사항이 다를 수 있음
- 예시 1) 모바일 클라이언트 개발: 안드로이드, iOS 앱 개발
- 예시 2) 웹 서버 개발: 스프링(Spring), 장고(Django) 등의 서버 개발 프레임워크 활용
- 하지만 분야에 상관없이 꼭 알아야 하는 개념과 도구에 대해서 학습할 필요가 있음
- 서버, 클라이언트, JSON, REST API, …
서버와 클라이언트
- 클라이언트가 요청(Request)를 보내면 서버가 응답(Response)함
클라이언트(Client) = 고객
- 서버로 요청(Request)을 보내고 응답(Response)이 도착할 때까지 기다림
- 서버로부터 응답을 받은 뒤에는 서버의 응답을 화면에 출력
- 예시 1) 웹 브라우저: 서버로부터 받은 HTML, CSS 코드를 화면에 적절한 형태로 출력
- 예시 2) 게임 앱: 서버로부터 받은 경험치, 친구 귓속말 정보 등을 화면에 적절한 형태로 출력
서버(Server) = 서비스 제공자
- 클라이언트로부터 받은 요청(Request)을 처리해 응답(Response)을 전송
- 예시) 웹 서버: 로그인 요청을 받아 아이디와 비밀번호가 정확한지 검사하고 그 결과를 응답
HTTP 개요
- HTTP(HyperText Transfer Protocol)는 웹상에서 데이터를 주고받기 위한 프로토콜을 의미
- 보통은 웹 문서(HTML 파일)를 주고받는 데 사용
- 모바일 앱 및 게임 개발 등에서 특정 형식의 데이터를 주고받는 용도로도 사용
- 클라이언트는 요청의 목적에 따라서 적절한 HTTP 메서드를 이용해 통신을 진행
개발형 코딩 테스트 준비하기
- 개발형 코딩 테스트의 핵심 키워드: REST API, JSON
REST의 등장 배경
- HTTP는 GET, POST, PUT, DELETE 등의 다양한 HTTP 메서드를 지원
- 실제로는 서버가 각 메서드의 기본 설명을 따르지 않아도 프로그램을 개발할 수 있음
- 하지만 저마다 다른 방식으로 개발하면 문제가 될 수 있어 기준이 되는 아키텍쳐가 필요
REST 개요
- REST(Representational State Transfer)는 각 자원(Resource)에 대하여 자원의 상태에 대한 정보를 주고받는 개발 방식을 의미
- REST의 구성 요소
- 자원(Resource): URI를 이용
- 행위(Verb): HTTP 메서드를 이용
- 표현(Representations): 페이로드를 이용
REST API란?
- API(Application Programming Interface): 프로그램이 상호작용하기 위한 인터페이스를 의미
- REST API: REST 아키텍쳐를 따르는 API를 의미
- REST API 호출: REST 방식을 따르고 있는 서버에 특정한 요청을 전송하는 것을 의미
JSON
- JSON (JavaScript Object Notation): 데이터를 주고받는데 사용하는 경량의 데이터 형식
- JSON 형식을 따르는 데이터 예시는 다음과 같음
- JSON 데이터는 키와 값의 쌍으로 이루어진 데이터 객체를 저장
import json
user = {
"id": "gildong",
"password": "1!2@3#4$",
"age": 30,
"hobby": ["football", "programming"]
}
json_data = json.dumps(user, indent=4)
print(json_data)
>>> {
"id": "gildong",
"password": "1!2@3#4$",
"age": 30,
"hobby": [
"football",
"programming"
]
}
import json
user = {
"id": "gildong",
"password": "1!2@3#4$",
"age": 30,
"hobby": ["football", "programming"]
}
with open("user.json", "w", encoding="utf-8" as file:
json_data = json.dump(user, file, indent=4)
REST API 연습용 서비스
import requests
target = "https://jsonplaceholder.typicode.com/users"
response = requests.get(url=target)
data = response.json()
name_list = []
for user in data:
name_list.append(user['name'])
print(name_list)