개발형 코딩 테스트

shin·2022년 8월 9일
0

Python Web

목록 보기
6/6

1. 개발형 코딩 테스트

  • 정해진 목적에 따라서 동작하는 완성된 프로그램을 개발하는 것을 요구하는 코딩 테스트 유형

  • 알고리즘 코딩 테스트

    • 요구사항에 맞는 하나의 모듈 개발
    • 시간 복잡도와 공간 복잡도 분석
  • 개발형 코딩 테스트

    • 완성도 높은 하나의 프로그램을 개발
    • 모듈을 적절히 조합하는 능력 요구
  • 일부 기업은 해커톤을 통해 채용을 진행함

    해커톤(Hackathon) : 단기간에 아이디어를 제품화하는 프로젝트 이벤트

  • 개발형 코딩 테스트는 분야에 따라 상세 요구사항이 다를 수 있음

    • 예시 1) 모바일 클라이언트 개발 : 안드로이드, ios 앱 개발
    • 예시 2) 웹 서버 개발 : 스프링, 장고 등의 서버 개발 프레임워크 활용
  • 분야에 상관없이 꼭 알아야 하는 개념과 도구도 학습해야 함

    • 서버, 클라이언트, JSON, REST API, ...

2. 서버와 클라이언트

  • 클라이언트가 요청(Request)을 보내면 서버가 응답(Response)함

1) 클라이언트(Client)

  • 서버로 요청을 보내고 응답이 도착할 때까지 기다림
  • 서버로부터 응답을 받은 뒤에는 서버의 응답을 화면에 출력함

2) 서버(Server)

  • 클라이언트로부터 받은 요청을 처리해 응답을 전송함

3. HTTP

1) HTTP 개요

  • HTTP(HyperText Transfer Protocol)웹상에서 데이터를 주고받기 위한 프로토콜을 의미함
    • 보통은 웹 문서(HTML 파일)를 주고받는데 사용됨
    • 모바일 앱 및 게임 개발 등에서 특정 형식의 데이터를 주고 받는 용도로도 사용됨
  • 클라이언트는 요청의 목적에 따라서 적절한 HTTP 메서드를 이용해 통신을 진행함
    • 대표적인 HTTP 메서드

2) 웹 요청 예제 : GET 방식

import requests

target = "http://google.com"
response = requests.get(url=target)
print(response.text)
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head><meta content="Search the world's information, including webpages, images, videos and more. ...

4. 개발형 코딩 테스트 준비하기

  • 2020 카카오 2차 코딩 테스트 안내문에 쓰여 있던 문장
    • "오프라인 코딩 테스트에서는 JSON format의 데이터를 응답하는 REST API를 활용해야 하니, REST API 호출과 JSON format 데이터를 파싱해 활용할 수 있는 parser 코드를 미리 준비해 오시기 바랍니다."
  • 개발형 코딩 테스트의 핵심 키워드 : REST API, JSON

5. REST API

1) REST 등장 배경

  • HTTP는 GET, POST, PUT, DELETE 등의 다양한 HTTP 메서드를 지원함
    • 실제로는 서버가 각 메서드의 기본 설명을 따르지 않아도 프로그램을 개발할 수 있음
    • 하지만 저마다 다른 방식으로 개발하면 문제가 될 수 있어 기준이 되는 아키텍처가 필요함

2) REST 개요

  • REST(Representational State Transfer)각 자원(resource)에 대하여 자원의 상태에 대한 정보를 주고받는 개발 방식을 의미함

  • REST 구성 요소

    • 자원 (Resource) : URI를 이용
    • 행위 (Verb) : HTTP 메서드 이용
    • 표현 (Representational) : payload 이용
  • 예제
    " 사용자 회원 등록을 하고 싶습니다.
    아이디는 abcd로 비밀번호는 1234로 설정하고 싶어요. "

    • 자원 : 사용자
    • 행위 : 회원 등록
    • 표현 : 아이디는 abcd로 비밀번호는 1234로 설정

3) REST API

  • API(Application Programming Interface) : 프로그램이 상호작용하기 위한 인터페이스
  • REST API : REST 아키텍처를 따르는 API를 의미함
  • REST API 호출 : REST 방식을 따르고 있는 서버에 특정한 요청을 전송하는 것을 의미함

4) JSON

  • JSON(JavaScript Object Notation) : 데이터를 주고받는 데 사용하는 경량의 데이터 형식
  • JSON 형식을 따르는 데이터 예시
{
    "id": "abcd",
    "password": "1234",
    "age": 20,
    "hobby": [
        "programming",
        "baking"
    ]
}
  • JSON 데이터는 키와 값의 쌍으로 이루어진 데이터 객체를 저장함

5) JSON 객체 사용 예제

import json

# 사전 자료형(dict) 데이터 선언
user = {
	"id": "abcd",
  "password": "1234",
  "age": 20,
  "hobby": ["programming", "baking"]
}

# 파이썬 변수를 JSON 객체로 변환
json_data = json.dumps(user, indent = 4)
print(json_data)
{
    "id": "abcd",
    "password": "1234",
    "age": 20,
    "hobby": [
        "programming",
        "baking"
    ]
}

6) JSON 객체 파일 저장 예제

import json

# 사전 자료형(dict) 데이터 선언
user = {
	"id": "abcd",
  "password": "1234",
  "age": 20,
  "hobby": ["programming", "baking"]
}

# JSON 데이터로 변환하여 파일로 저장
with open("user.json", "w", encoding="utf-8") as file:
  json_data = json.dump(user, file, indent = 4)

7) REST API 연습용 서비스

8) REST API 호출 실습

  • API 호출 경로 : https://jsonplaceholder.typicode.com/users/1
    • HTTP 메서드 : GET
    • 특정 사용자 정보 검색
    {
      "id": 1,
      "name": "Leanne Graham",
      "username": "Bret",
      "email": "Sincere@april.biz",
      (생략)
    }
  • API 호출 경로 : https://jsonplaceholder.typicode.com/users
    • HTTP 메서드 : GET
    • 모든 사용자들의 정보 검색
     [
        {
          "id": 1,
          "name": "Leanne Graham",
          "username": "Bret",
          "email": "Sincere@april.biz",
          (생략)
        },
        {
          "id": 9,
          "name": "Glenna Reichert",
          "username": "Delphine",
          "email": "Chaim_McDermott@dana.io",
          (생략)
        }
      ]

9) REST API를 호출하여 회원 정보를 처리

import requests

#  REST API 경로에 접속하여 응답(Response) 데이터 받아오기
target = "https://jsonplaceholder.typicode.com/users"
response = requests.get(url=target)

# 응답(Response) 데이터가 JSON 형식이므로 바로 파이썬 객체로 변환
data = response.json()

# 모든 사용자(user) 정보를 확인하며 이름 정보만 삽입
name_list = []
for user in data:
  name_list.append(user['name'])

print(name_list)
['Leanne Graham', 'Ervin Howell', 'Clementine Bauch', 'Patricia Lebsack', 'Chelsey Dietrich', 'Mrs. Dennis Schulist', 'Kurtis Weissnat', 'Nicholas Runolfsdottir V', 'Glenna Reichert', 'Clementina DuBuque']
# 모든 사용자(user) 정보를 확인하며 사용자 별 휴대폰 번호 정보 저장
phone_list = []
for user in data:
  phone_list.append((user['name'], user['phone']))

print(phone_list)
[('Leanne Graham', '1-770-736-8031 x56442'), ('Ervin Howell', '010-692-6593 x09125'), ('Clementine Bauch', '1-463-123-4447'), ('Patricia Lebsack', '493-170-9623 x156'), ('Chelsey Dietrich', '(254)954-1289'), ('Mrs. Dennis Schulist', '1-477-935-8478 x6430'), ('Kurtis Weissnat', '210.067.6132'), ('Nicholas Runolfsdottir V', '586.493.6943 x140'), ('Glenna Reichert', '(775)976-6794 x41206'), ('Clementina DuBuque', '024-648-3804')]

출처 : 이것이 취업을 위한 코딩 테스트다 with 파이썬

profile
Backend development

0개의 댓글