기술면접대비 9

[DO IT MYSELF] 기술면접대비 - (2)

1. Java와 Javascript의 차이점을 설명하시오. 👉🏻 자바는 객체지향 프로그래밍의 대표적인 언어로서 JVM이라는 가상 머신을 이용하기 때문에 운영체제 종류에 관계없이 대부분의 시스템에서 실행됩니다. 또한, 변수 자료형이 반드시 선언되어야 하며 소스코드를 자바 바이트 코드로 변환해야 하는 컴파일 과정을 거칩니다. 자바스크립트는 HTML의 상호작용성과 동적인 시각효과를 나타내기 위한 객체 기반 스크립트 언어입니다. 자바와 달리 변수 자료형을 선언하지 않아도 브라우저가 자동으로 파악하며, 인터프리터 언어로서 컴파일 과정을 거치지 않습니다. 즉, 자바와 자바스크립트의 차이점은 컴파일의 과정이 다르며 자바는 서버측의 언어이고, 자바스크립트는 클라이언트용 언어라는 것입니다. JVM이란? 자바 바이트 코드..

기술면접대비 2020.04.24

[Algorithm] 그리디 알고리즘(탐욕법)에 대해 쉽게 알아보자

💡 그리디 알고리즘 그리디 알고리즘은 한국어로 탐욕 알고리즘 이라고도 하며 결정해야 하는 순간 가장 좋다고 생각하는 것을 선택하면서 답을 찾아가는 알고리즘을 말합니다. 이 방식의 한계점은 그 순간에는 최적일지도 모르지만, 최종적으로는 답이 아닐 수 있는 경우가 많기 때문에 그리디 알고리즘을 사용한 경우, 최적이라는 걸 입증하는게 쉽지 않습니다. 그래도 입증만 한다면 구현하는건 다른 알고리즘에 비해 쉬운 편입니다. 아래 문제를 보면서 이해해보도록 하겠습니다. ** 그래서 그리디 알고리즘으로 문제를 어떻게 푸는건가요? 그리디 알고리즘은 무조건 큰 수부터 채워서 최소값을 구하는 것입니다. 예를 들어 동전 문제가 있습니다. 만약, 177원을 만든다면 100원 1개 10원 2개 5원 1개 1원 2개의 동전을 주면..

기술면접대비 2020.04.09

[Algorithm] 완전탐색(Exhaustive Search)에 대해 쉽게 알아보자

💡 완전탐색 알고리즘 문제를 해결하는 데 가장 간단하고 쉬운 방법이 무엇일까? 답은 가능한 경우를 다 해보는 것이다. 이게 무슨 알고리즘이야? 할 수 있겠지만, 이것도 알고리즘에 일종이다. 전산학에서는 이를 무식하게 푼다라는 뜻의 Brute-force라 하고, 전체를 확인한다고 해서 완전 탐색 알고리즘(exhaustive search algorithm)이라고 한다. ** ☝🏻 그렇다면 완전탐색은 대체 언제 쓰이는건가요? 사실, 알고리즘 대부분의 문제들은 시간 초과등의 이유로 완전 탐색으로 풀리지 않습니다. 하지만 어려운 알고리즘을 생각할 필요 없이 완전 탐색으로 풀리는 문제도 있으며, 가끔 어려운 완전 탐색 문제도 존재합니다. 따라서, 완전 탐색 알고리즘을 문제 풀이 도구로 항상 염두해두고 있어야합니다...

기술면접대비 2020.04.09

[DO IT MYSELF] 기술면접대비 - (1)

1. ArrayList와 LinkedList의 차이가 무엇인지 설명하시오. 👉🏻 ArrayList는 길이가 동적으로 변하는 가변배열입니다. 데이터를 삽입하거나 삭제할 때 내부에 임시배열을 작성 후 데이터를 복사하는 방법을 사용합니다. 반면, LinkedList는 주소형식으로 리스트를 묶은 것이기 때문에 중간에 데이터가 삽입이 되면 이전 데이터의 주소만 변경해주면 되기 때문에 데이터의 삽입 및 삭제가 용이합니다. 즉, ArrayList에 비해 공간적 제약을 받지 않는다는 장점이 있습니다. 2. 자바의 접근 제한자는 어떤 것이 있는지 설명하시오. 👉🏻 자바의 접근제한자에는 public, private, protected, default 총 4가지가 있습니다. 1. public은 같은 패키지뿐만 아니라 다른 ..

기술면접대비 2020.04.05

[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