2020/02 5

[Algorithm] 재귀(Recursion)에 대해 쉽게 알아보자

💡 재귀 컴퓨터 과학에 있어서 재귀는 자신을 정의할 때 자기 자신을 재 참조하는 방법을 뜻하며, 이를 프로그래밍에 적용한 재귀 호출의 형태로 많이 사용된다. 위의 이미지와 재귀는 무슨 상관관계가 있을까? 처음에는 하나의 큰 화면으로 시작해서 다른 화면을 담지 못할 때까지 점점 화면이 작아지는 것이 반복된다. 이처럼 문제를 해결하기 위해 알고리즘을 설계할 때 동일한 문제의 조금 더 작은 문제를 해결함으로써 그 문제를 해결하는 것 즉, 문제가 간단해져서 바로 풀 수 있는 문제로 작아질 때(base case)까지 해결해보는 방식이 바로 재귀이다. 💡 재귀함수 함수 안에서 다시 자신의 함수를 호출(재귀 호출)하면서 로직을 처리하는 경우를 말한다. ** ☝🏻 여기서 잠깐, 재귀 호출을 이해하기 위해서는 스택을 먼..

기술면접대비 2020.02.20

[Database] 트랜잭션(transaction)에 대해 쉽게 알아보자

💡 트랜잭션 트랜잭션이란, 간단히 말해 데이터베이스의 상태를 바꾸기 위해 수행하는 작업의 단위를 말한다. 만약 작업이 중단됐을 경우 처음부터 다시 실행하는 Rollback을 수행하고, 오류없이 실행을 마치면 Commit을 수행하는 논리적인 단위이다. ** ☝🏻 여기서 잠깐, 데이터베이스의 상태를 바꾼다는 것이 무엇을 의미할까요? Ⅰ. SELECT : 선택 Ⅱ. INSERT : 삽입 Ⅲ. UPDATE : 수정 Ⅳ. DELETE : 삭제 총 4개의 SQL 질의어를 사용하여 데이터베이스에 접근하는 것 ** ☝🏻 그렇다면 작업의 단위는 무엇을 의미할까요? 작업단위는 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미한다. 게시판을 예로 들어보자 게시판 사용자는 게시글을 작성하고, 올리기 버튼을 ..

기술면접대비 2020.02.18

[Algorithm] 선택정렬(Selection Sort)을 쉽게 알아보자

알고리즘 중에는 정렬 알고리즘(sorting algorithm)이 존재한다. 정렬 알고리즘이란 n개의 숫자가 주어졌을 때 이를 오름차순 / 내림차순으로 정렬하는 알고리즘을 말하며 정렬 알고리즘 안에는 다양한 알고리즘이 존재하고, 알고리즘에 따라 시간 복잡도가 다르다. 오늘은 정렬 알고리즘 중에서 선택 정렬 알고리즘에 대해 쉽게 알아보려고 한다. 💡 선택 정렬 선택 정렬이란, 현재 선택된 데이터 이후의 정렬되지 않은 데이터 중에서 가장 작은(혹은 가장 큰) 데이터를 선택해 현재의 데이터와 위치를 교환하는 방식으로 정렬되는 방식이며 제자리 정렬 알고리즘의 하나이다. ☝🏻 여기서 잠깐 , 제자리 정렬이 무엇인가요? 주어진 공간 외에 추가적인 공간을 사용하지 않는 정렬로 이미 할당된 배열 내에서 원소들의 정렬이..

기술면접대비 2020.02.13

[Protocol] OAuth 2.0 - API 무작정 쓰지말고 원리를 이해하자

💡 OAuth(Open Authentification)2.0 "웹, 앱 서비스에서 제한적으로 권한을 요청해 사용 할 수 있는 키를 발급해주는 것" 인터넷 사용자들이 비밀번호를 제공하지 않고, 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 개방형 표준 인증 방법으로 구글, 페이스북, 트위터 등이 사용하고 있으며, 타사 애플리케이션 및 웹사이트의 계정에 대한 정보를 공유할 수 있도록 허용해준다. 또한, 인증뿐만 아니라 사용자의 권한에 따라 접근할 수 있는 데이터가 다르도록 설정할 수 있는 **범용 프레임워크**이다. **OAuth의 구성** Resource Owner(OAuth를 사용하는 사람) ⭐⭐⭐ Authorization Server(OAuth 인증 서버..

기술면접대비 2020.02.11

[Web] 웹 서버와 WAS의 차이를 쉽게 알아보자

서버 개발에 있어서 가장 기초적인 개념인 '웹 서버'와 'WAS(Web Application Servier)'의 차이점을 다뤄보려고 한다. 💡 웹 서버 사전적 정의 "웹 브라우저 클라이언트로부터 HTTP 요청을 받아들이고 HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램" 웹 서버란 클라이언트(사용자)가 웹 브라우저에서 어떠한 페이지 요청을 하면 웹 서버에서 그 요청을 받아 정적 컨텐츠를 제공하는 서버이다. 여기서 정적 컨텐츠란 단순 HTML 문서, CSS, javascript, 이미지, 파일 등 즉시 응답가능한 컨텐츠이다. 그렇다면 웹 서버는 정적 컨텐츠만 제공하느냐? 그것은 아니다. 웹 서버가 동적 컨텐츠를 요청 받으면 WAS에게 해당 요청을 넘겨주고, WAS에서 처리한 결과를 클라이언트(사..

기술면접대비 2020.02.11