본문 바로가기

기술면접대비

(4)
[알고리즘] DP - Dynamic Programming(다이나믹 프로그래밍) 알고리즘을 공부하다 보면 DP라는 말을 간혹 접하게 되는 경우가 있다. 이 DP는 Dynamic Programming(다이나믹 프로그래밍)의 줄임말이다. 다이나믹 프로그래밍, 혹은 동적 프로그래밍이라 불리는 이것은 무엇일까? 1. 다이나믹 프로그래밍이란? 동적 계획법이라고도 불리는 다이나믹 프로그래밍은 큰 문제를 작은 문제로 나누어 푸는 알고리즘을 뜻한다. 동적으로 작동하는 프로그래밍이라는 직관적인 의미를 가지고 있지는 않다. Dynamic Programming이라고 이름을 붙인 사람도 이 말이 멋있게 느껴져 이 이름을 붙였다고 말한 바 있다. 2. 다이나믹 프로그래밍의 성립 조건 모든 문제를 다이나믹 프로그래밍으로 해결할 수 있는 것은 아니다. 이 알고리즘으로 문제를 해결하기 위해서는 두 가지 조건을 ..
쿠키(Cookie)와 세션(Session)은 무엇이고 어떤 차이점이 있을까? 쿠키와 세션은 왜 사용하는 것일까? 쿠키와 세션을 사용하는 이유는 HTTP의 특징이자 약점을 보완하기 위해서이다. 그렇다면 이 HTTP의 특징은 무엇이고, 그로 인한 약점은 무엇일까? 쿠키(Cookie)와 세션(Session)은 각각 어떤 것이며 둘은 어떤 차이점을 가지고 있을까? HTTP 프로토콜 HTTP(Hypertext Transfer Protocol)는 인터넷 상에서 데이터를 주고받기 위해 서버 · 클라이언트 모델을 따르는 통신 규약이다. 이 HTTP 프로토콜의 특징은 비연결성(Connectionless)과 비상태성(Stateless)이다. 비연결성(Connectionless) : HTTP는 클라이언트가 서버에 요청을 보내면, 서버는 클라이언트에게 요청에 맞는 응답을 해 준 뒤 접속을 끊는다. 이..
애자일(Agile) Agile : 민첩한, 기민한 소프트웨어 개발 기법 중의 하나로, 계획 중심의 프로세스(ex) 폭포수 모형)와 반대되는 입장을 취하고 있다. 2000년대 초에 대두되었다. 1990년대에는 주로 많은 인원의 개발자가 오랜 기간 동안 소프트웨어를 개발하곤 했다. 그러한 개발 방식은 대형 소프트웨어 개발 프로젝트엔 적합할지 몰라도, 소규모 프로젝트에는 오히려 개발을 더디게 만드는 걸림돌로 작용했다. 개발에서의 창의성이나 혁신은 단순히 계획에서 나오는 것이 아니라고 생각하는 경량방법론주의자들로부터 시작되었다. “규칙은 적게, 가볍게 대응할 수 있도록”, “해 보고 고쳐나가자”를 내세우고 있다. 애자일 방식의 특징 애자일 모형이라고도 한다. 특정한 개발방법론을 명명하는 것이 아니며, 고객과의 소통에 초점을 맞추는..
SQL vs NoSQL - 관계형 데이터베이스, 비관계형 데이터베이스 데이터베이스를 사용하다 보면 자연스럽게 관계형 데이터베이스와 비관계형 데이터베이스라는 단어를 접하게 된다. 이 두 가지 데이터베이스는 과연 어떤 차이점을 가지고 있기에 분리하여 사용되고 있으며, 또 어떤 상황에서 각기 사용되고 있을까? SQL(관계형 데이터베이스)와 NoSQL(비관계형 데이터베이스)를 비교하며 두 가지의 차이점 및 사용하기에 적절한 상황에 대하여 알아보자. 1. SQL(관계형 데이터베이스) SQL은 Structured Query Language의 약자이다. '구조화된 쿼리 언어'를 뜻한다. 의미에서 알 수 있듯, SQL은 데이터베이스 자체를 나타내는 것이 아닌 어떠한 유형의 데이터베이스와 상호 작용하는 데에 사용하는 쿼리 언어이다. 우리가 흔히 접하는 관계형 데이터베이스라는 의미로 사용되..