면접질문
-
REST의 정의와 RESTful API란 무엇인가?Programming 2020. 3. 15. 20:56
RESTful API란 무엇인가? 라는 질문을 받는다면 대충 REST한 구조로 서로 주고받는다라고 뭉퉁그려 알고있지만 제대로 된 정의가 무엇인지 한번에 대답하기는 힘들다. 정확히 REST한 구조란 무엇이고 이 구조를 사용한 RESTful한 API를 만든다는 것은 어떤 의미일까? REST API혹은 Restful API에 대한 설명을 하기 전에 우선 REST에 대한 이해가 선행되어야 한다. REST란 Representational State Transfer의 약자로써 풀어서 설명하자면 자원을 이름으로 구분해 해당 자원의 상태를 주고받는 것을 말한다. 어떤 프레임워크가 아니라 이런 방식을 가지고 주고받겠다는 약속이라는 의미에서 코딩 컨벤션과 궤를 같이한다. REST는 웹에 존재하는 자원(이미지, 동영상, D..
-
동기와 비동기방식의 차이점(콜백함수와 프로미스)Programming 2020. 3. 8. 23:02
오늘은 자바보다는 자바스크립트, 그중에서도 노드를 사용한 서버 프로그래밍을 다룰 때 처리하는 동기와 비동기 처리방식에 대해서 알아보려고 한다. 물론 동기와 비동기 자체의 개념은 모든 언어에서 공통적으로 사용되므로 동기와 비동기 방식의 차이점을 분명히 하고 그 개념에 대해서 알아두면 좋다. 우선적으로 동기와 비동기 처리 방식을 비유할 때 커피 주문을 예로 든다. 흔히 카페에서 커피를 주문하려고 하면 한줄로 서서 한번에 한명씩만 주문이 가능하다. 마치 큐처럼 선입선출의 과정의 코드실행의 처리 순서를 우리는 동기 방식이라고 부른다. 일단 주문이 들어가면 카페 내부의 점원들은 열심히 음료를 만들기 시작한다. 하지만 이때 한명의 점원이 있는 것이 아니라 여러명의 점원이 있다면 주문받은 순서대로 일을 처리하는 것이..
-
가비지 컬렉션, 컬렉터(Garbage Collection)란?Programming/java 2020. 3. 1. 16:37
Garbage Collection, 줄여서 약어로 GC라고도 부른다. 영어로 그대로 읽어서 가비지 컬렉션이라고 부른다. 메모리 관리 방법 중에 하나로, 시스템에서 더이상 사용하지 않는 동적 할당된 메로리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것으로 시스템에서 가비지컬렉션을 수행하는 부분을 가비지 컬렉터라 부른다. 가령 C언어는 프로그래머가 메모리를 할당한 뒤 수동으로 해제까지 직접 해 줘야 한다. 그래서 메모리를 할당해놓고 필요없어진 뒤에도 해제를 안하는 일 등이 생겨서 메모리 누수가 생기거나 거꾸로 해제했던 메모리를 다시 사용하거나 하는 실수 등에 버그가 양산된다. 이러한 문제들을 해결하기 위해서 제시된 것이 가비지 컬렉션이다. 이 가비지 컬레션 기능을 채택한 언어의 경우에는 이 가..
-
세션과 쿠키, 그리고 캐시의 차이점은?Programming 2020. 2. 24. 00:07
우선 가장 먼저 세션과 쿠키, 캐시에 대해서 말하기 전에 HTTP의 특징에 대해 우선적으로 알아야한다. HTTP(Hypertext Transfer Protocol)은 브라우저 같은 응용 프로그램을 통해 사용자와 서버 사이에 전송하는 프로토콜이다. 인터넷 주소 앞에 달려있는 HTTP가 바로 이 HTTP 프로토콜을 이용하고 있다는 뜻이기도 하다. HTTP는 연결 상태를 유지하지 않는 비연결적인 프로토콜이라는 특징을 가지고 있는데, 예를 들어 브라우저를 통해 사용자의 요청에 따라 서버에 접속하여 요청에 대한 응답의 데이터를 전송 한 뒤에 연결을 종료한다. 이런 간단한 과정 덕택에 전산 자원이 적게 든다는 장점이 있지만 연결이 지속적이지 않기 때문에 사용자와 연결을 종료한 뒤에 추가적으로 요청을 처리할 수 없다..
-
애자일 방법론과 TDD 그리고 BDDProgramming 2020. 2. 2. 16:30
개요 클린 코드나 리팩토링 관련된 서적을 읽으면서 자주 등장하는 개념이고 다른 개발 블로그를 둘러봐도 '애자일'한 작업 환경이라던지 TDD 또는 BDD 등의 용어는 자주 접하게 된다. 그중에서도 최근 가장 떠오르는 것은 단연 TDD인데, TDD에 대해서 알아보기 앞서서 애자일 소프트웨어 개발(Agile software development)은 무엇인지를 먼저 알아야한다. 애자일한 방법론이 무엇일까를 고민하면서 등장한 것이 바로 TDD이기 때문이다. 그 이외에 여러가지의 애자일을 실천할 수 있는 다양한 기법들이 존재한다. 이러한 기법들을 살펴보기 전에 애자일은 무엇일까, 애자일하게 작업한다는 것은 무엇을 의미할까?에 대해서 우선 알아보자. 애자일 방법론 애자일 소프트웨어 개발 선언 우리는 소프트웨어를 개발..
-
[SQL] DCL, DML, DDL 약어 설명과 명령어Programming 2020. 1. 28. 00:35
개요 SQL이란 Structured Query Language. 구조화 질의문의 약어로서 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수한 목적의 언어이다. 쉽게 말해서 관계형 데이터베이스에서 한정적으로 사용되는 프로그래밍 언어라고 할 수 있다. SQL 문법에는 크게 세 가지 종류로 구분될 수 있는데, 바로 DDL, DML, DCL이 바로 그것이다. 면접 뿐만이 아니라 컴퓨터 활용능력, 정보처리 시험에서도 자주 등장하는 내용이므로 간략하게 정리하면 좋다. 흔히 DB에서 말하는 CRUD는 모두 이 명령어들을 통해서 처리되고 실행된다. DDL(Data Definition Language) : 데이터 정의 언어로 풀어 말할 수 있으며 스키마를 정의 하거나 조작하기 위해 사용한..
-
큐와 스택은 무엇인가Programming/python 2019. 11. 3. 17:40
큐와 스택은 컴퓨터 과학에서 다루는 여러 가지 자료 구조 중에서도 가장 기본적인 것이다. 두 자료 구조는 '자료를 넣는 동작'과 '자료를 빼는 동작'을 할 수 있으며, 들어간 자료가 일렬로 보관된다는 공통점이 있다. 하지만 자료를 넣고 뺄 때 동작하는 방식이 서로 다르다. 큐(Queue) 큐는 '줄 서기'에 비유할 수 있다. 택시를 타기 위해서 줄을 서는 과정을 생각해보면 쉽다. 새로 택시 정류장에 도착한 사람은 맨 뒤로 가서 줄을 서고, 택시가 도착하면 그 줄의 맨 앞에 선 사람이 줄을 빠져나가 택시에 탄다. 가장 먼저 줄을 선 사람이 가장 먼저 택시를 타게 된다. 즉 FIFO ( First In First Out ) 선입선출 이라고 불리며, 프로세스 처리, CPU 관리에서 많이 사용된다. 큐에 자료를..
-
추상클래스와 인터페이스의 공통점과 차이점Programming/java 2019. 11. 3. 02:20
추상클래스와 인터페이스를 알아보기 앞서 인터페이스와 추상클래스가 언제, 그리고 왜 쓰이는지 그 목적성에 대해서 분명히 알고 개념을 익힌다면 더욱 공통점과 차이점을 명확하게 할 수 있을 것이다. 추상 클래스 클래스가 미완성이라는 것은 멤버의 개수에 관계된 것이 아니라, 단지 미완성 메서드(추상메서드)들 포함하고 있다는 의미이다. 추상클래스로 인스턴스는 생성할 수 없다. 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다. 즉 상속을 강제하기 위한 추상메서드를 하나 이상 가진 클래스를 말한다. 추상클래스는 다음과 같은 특징을 가지고 있다. 공통 구현을 상위 클래스에 뽑아내려고 사용 자신의 생성자로 객체 생성 불가능 하위 클래스를 참조하여 상위 클래스의 객체를 생성 하위 클래스를 제어하기 위해 사..