본문 바로가기

IT/Interview12

손코딩 면접 준비 재귀를 이용한 피보나치 메모이제이션을 이용한 피보나치 재귀를 이용한 팩토리얼 문제 10회 1~10까지 랜덤한 숫자를 출력하여 중복된 숫자가 있을 경우 true, false를 반환 1000보다 작은 숫자 중 3과 5의 배수의 총합을 구하는 프로그램 주어진 정수배열에서 0을 가장 왼쪽으로 배치하는 함수 (추가 메모리공간 X, in-place) 배열을 오름차순으로 정렬해서 리턴하는 함수 임의의 string이 주어질 때 reverse 큐로 스택 구현하기 스택으로 큐 구현하기 최대 공약수와 최소 공배수를 구하는 알고리즘 n개의 배열에서 k(k 2020. 10. 28.
20.10.20 면접 스터디 데이터베이스에서 인덱스란? 인덱스를 사용하는 이유? 그렇다면 인덱스를 무조건 사용하는 것이 좋은가요? 아니라면 왜 인가요? 인덱스로 지정하면 좋은 Column은 어떤 것인가요? 인덱스를 사용하는 알고리즘에는 무엇이 있나요? 데이터베이스의 칼럼을 색인화하는 것을 인덱스라고 한다. 인덱스를 사용하게 되면 테이블을 풀스캔하지 않고도 빠르게 조회할 수 있게되는 것이 장점이다. 그러나 DML (INSERT, DELETE, UPDATE)이 일어나게 되면 오히려 성능이 떨어질 수 있다. 그 예로, 10만 개 이상의 레코드가 존재할 때 10개의 레코드만 남기고 DELETE 연산을 하게 되면 실제 데이터는 10개인 반면에 인덱스는 여전히 남아있어서 실제 데이터보다 많은 용량을 차지하고 있을 수도 있게된다. 따라서 인덱스.. 2020. 10. 26.
20.10.16 면접 스터디 정규화와 비정규화 정규화의 의미와 하는 이유에 대해 설명하시오. 정규화의 장점과 단점 비정규화의 의미와 하는 이유에 대해 설명하시오. 비정규화의 장점과 단점 정규화는 관계형 데이터베이스에서 중복을 최소화하기 위해 데이터를 구조화하는 작업이다. 제1정규형, 제2정규형, 제3정규형, BC정규형, 제4정규형, 제5정규형이 존재한다. 정규화는 데이터베이스를 사용하다보면 갱신 이상, 삽입 이상, 삭제 이상과 같은 것들이 발생할 수 있는데, 이를 방지하여 데이터 무결성을 보장하기 위해 정규화를 하게 된다. 제1정규형 : 도메인이 원자값 제2정규형 : 부분적 함수 종속 제거 제3정규형 : 이행적 함수 종속 제거 BC정규형 : 결정자이면서 후보키가 아닌 것 제거 제4정규형 : 다치 종속 제거 제5정규형 : 조인 종속성.. 2020. 10. 16.
20.10.12 면접 스터디 1. TCP & UDP TCP와 UDP의 차이점은 무엇인가요? TCP와 UDP 각각의 사용하는 서비스는 무엇인가요? TCP와 UDP는 실제 데이터 단위를 받기 위해 IP를 사용하는 프로토콜이다. TCP의 경우에는 연결형 서비스이고, 높은 신뢰성 갖고있다. UDP보다 속도가 느립니다. 그러다보니 연속성보다 신뢰성있는 전송이 중요할 때 사용한다. http, email 등에 사용된다. UDP는 여러 컴퓨터를 거치지 않고 데이터를 주고 받을 컴퓨터끼리 직접 연결할 때 사용한다. 따라서 UDP는 목적지에 도달하지 않을 수도 있는 특성이 있어서 비신뢰적이고 안정적이지 않다. 그러나 TCP보다 속도가 매우 빠르고 편해서 데이터 유실이 일어나도 상관이 없는 스트리밍이나 화면 전송에 사용된다. 2. 로드밸런싱 서버에 많.. 2020. 10. 12.
20.10.09 면접 스터디 1. 정렬 알고리즘 정렬 알고리즘의 종류에는 무엇이 있나요? 안정정렬과 불안정 정렬의 차이점은 무엇인가요? 퀵 정렬과 합병정렬의 차이점은 무엇인가요? 데이터가 아주 많이 존재할 때 어떤 정렬 알고리즘을 선택하는 것이 좋은가요? 데이터가 100개 이하일 때에는 어떤 정렬 알고리즘을 선택하는 것이 좋은가요? C++내의 STL의 sort함수는 어떤 방식으로 구현되어 있나요? 거품정렬 n개의 원소를 가진 배열을 정렬할 때, 인접한 두 개의 데이터를 비교해가면서 정렬을 진행하는 방식이다. 시간복잡도는 n^2, 공간복잡도는 O(1) 평균, 최선, 최악의 시간복잡도가 동일하다. 장점으로는 구현이 간단하고 소스코드가 직관적이다. 제자리 정렬이므로 다른 메모리 공간을 차지하지 않으며 안정 정렬이다. 단점으로는 속도가 느.. 2020. 10. 9.
20.10.06 면접 스터디 1. http와 https http는 무엇인가? http와 https의 차이는 무엇인가? 둘의 장점과 단점? SSL은 무엇인가? http는 hypertext transfer protocol로 www상에서 정보를 주고 받는 프로토콜이다. 웹 브라우저와 서버가 자원을 주고 받을 때 쓰는 통신 규악이라고 할 수 있다. http는 텍스트를 교환한다. html과 같은 코드도 결국 텍스트이기 때문에 누군가 네트워크에서 이를 가로챈다면 내용이 노출될 가능성이 있다. 이를 해결하기 위해 만들어진 것이 https이다. http에 secure socket을 붙여 만들어진 것이 https다. 따라서 둘의 가장 큰 차이는 보안 부분에 차이가 있다. http에 암호화와 인증, 완전성 보호를 더한 것이 https이다. http에.. 2020. 10. 9.
20.10.02 면접 스터디 1. REST API란? RESTful 하다는 것의 의미 REST의 구성요소 REST API의 장점 기존 방식과 REST 방식의 차이점 SOAP와 REST 방식의 차이 REST는 웹에 존재하는 모든 자원에 고유한 주소 URI를 정의하고 자원에 Create Read Update Delete를 실행하는 방식을 정해놓은 아키텍처 스타일이다. 이러한 방식로 API를 만든 것을 REST API라고 한다. REST 아키텍처의 6가지 제한 조건 클라이언트/서버 구조, 무상태(클라이언트의 내용이 서버에 저장되면 안 된다), 캐시 처리 가능, 계층화, 인터페이스 일관성, Code on demand이 있다. 또한 REST의 원리를 따르는 시스템은 RESTful 하다고 한다. REST의 구성 요소는 자원, 행위, 표현이다... 2020. 10. 4.
20.09.28 면접 스터디 1. 프로세스와 스레드 프로세스와 스레드의 정의 및 차이점 멀티프로세스의 장점과 단점 멀티스레드의 장점과 단점 프로세스는 실행중인 프로그램을 의미한다. 프로세스는 코드, 데이터, 힙, 스택 별로 각각의 주소공간에 독립적으로 할당받는다. 반면 스레드는 스택만 따로 할당 받고 나머지는 서로 공유한다. 프로세스는 자신만의 고유 공간과 자원을 할당받아 사용하는 데에 비해 스레드는 다른 스레드와 공간, 자원을 공유하면서 사용한다. 스레드는 프로세스의 실행단위를 의미한다. 프로세스마다 메인 스레드를 포함하여 최소 1개의 스레드를 소유한다. 멀티프로세스의 장점은 안전성이지만, 각각의 메모리 공간을 갖고 있어 작업량이 많을 수록 오버헤드가 발생한다. 반면 멀티 스레드는 독립적인 프로세스에 비해 공유 메모리를 사용하여 .. 2020. 9. 28.
암호화 기법 이전에 면접 질문리스트에 올렸던 질문들 중, 암호화에 대한 개인적 답변 정리를 간략히 가져왔다. 암호화는 어떤 식으로? 단방향 암호화로 bcrypt(비크립트)를 사용했습니다. 이때 hash와 salt 방식을 동시에 사용했습니다. 왜 두 가지를 사용했는지? 해시만 사용했을 때는 인식가능성과 속도면에서 문제가 발생합니다. 해시의 다이제스트를 해킹당하게 되면 모든 비밀번호가 노출될 가능성이 있기 때문에 인식가능성에 문제가 있고, 해시의 빠른 속도 때문에 공격자들은 매우 빠른 속도로 임의의 다이제스트와 해킹할 다이제스트를 비교할 수 있기 때문입니다. 일단 실제 면접에서는 암호화 관련 질문은 받지 못했으나, 개인적으로 정리해보면서 유익했었기 때문에 이번 주제는 암호화에 대해 간단히 말해보고자 한다. 단방향 암호화.. 2020. 9. 15.
정렬 알고리즘 거품정렬 (Bubble Sort) 서로 인접한 두 원소의 대소를 비교하고 조건에 맞지 않다면 자리를 교환하며 정렬하는 알고리즘 시간복잡도 평균 최선 최악 O(n²) O(n²) O(n²) 공간복잡도 swap을 통해 정렬이 수행되므로 O(n) 장점 : 구현이 간단하고 소스코드가 직관적이다. 다른 메모리 공간을 필요로 하지 않는다. (제자리 정렬) 안정 정렬이다. 단점 : 시간복잡도가 O(n²)으로 비효율적이다. 선택정렬 (Selection Sort) 현재 순서에 해당하는 위치에 넣을 원소를 선택하는 알고리즘 배열에서 해당 자리를 선택하고 그 자리에 오는 값을 찾는다고 생각하면 된다. 최악의 경우는 오름차순 정렬 시, 내림차순으로 정렬되어있는 경우이다. 시간복잡도 평균 최선 최악 O(n²) O(n²) O(n².. 2020. 8. 31.