본문 바로가기

취업/면접 질문

예상 면접 질문

반응형

     예상 면접 질문

1. 1분 동안 자기소개하기

2. 자기소개서에 대한 구체적인 질문

3. 팀 프로젝트를 진행한 것이 있는지?

4. C언어와 객체지향의 차이점

5. 트리와 그래프의 차이점

6. 객체지향의 특징 3가지

7. 어떤 개발자가 되고 싶은가?

8. 어떤 제품이 좋은 제품이라고 할 수 있을까?

9. 팀 내에 불화가 생기면 어떻게 대처할 수 있을까?

10. 안랩에 물어보고 싶은 것은?

11. 살아오면서 가장 힘들었던 일은?

12. 안랩이외에 어떤 보안 회사가 있나?

 

/////////////////////////////////////////////

자료구조 질문 정리

// 윤성우님의 '열혈 자료구조'

자료구조는 데이터의 표현이다 표현에는 자료 저장의 의미가 포함된다

그렇게 표현된 데이터의 처리를 알고리즘이라 한다

선형구조에는 리스트, 스택, 큐가 있고 비선형구조에는 트리와 그래프가 있다

알고리즘은 자료구조에 의존적이다

알고리즘을 평가하는 두 가지 요소

시간 복잡도와 공간 복잡도가 있는데 시간 복잡도를 더 중요시 한다

O(1) < O(log n) < O(n) < O(n long n) < O(n^2) < O(n^3) < O(2^n)

 

추상 자료형이란 구체적인 기능의 완성과정을 언급하지 않고

순수하게 기능이 무엇인지를 나열하는 것

 

링크드 리스트란 자료(노드)들을 줄줄이 연결한 것을 말한다

연결 리스트, 링크드 리스트(linked list)는 각 노드가 데이터와 포인터를 가지고

한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조이다.

이름에서 말하듯이 데이터를 담고 있는 노드들이 연결되어 있는데,

노드의 포인터가 다음이나 이전의 노드와의 연결을 담당하게 된다

 

단순 연결 리스트는 각 노드에 자료 공간과 한 개의 포인터 공간이 있고,

각 노드의 포인터는 다음 노드를 가리킨다

 

이중 연결 리스트의 구조는 단순 연결 리스트와 비슷하지만,

포인터 공간이 두 개가 있고 각각의 포인터는 앞의 노드와 뒤의 노드를 가리킨다

원형 연결 리스트는 일반적인 연결 리스트에 마지막 노드와 처음 노드를 연결시켜

원형으로 만든 구조이다

 

스택은 먼저 들어간 것이 나중에 나오는 자료구조이다 LIFO(Last-in, First-out)

스택(stack)은 모든 원소들의 삽입(insert)과 삭제(delete)가 리스트의 한쪽 끝에서만 수행되는 제한 조건을 가지는 선형 자료 구조(linear data structure)로서, 삽입과 삭제가 일어나는 리스트의 끝을 top이라 하고, 다른 한쪽 끝을 bottom이라 한다

 

큐는 LIFO(Last-in, First-out) 구조의 자료구조이다

리스트의 한쪽 끝에서는 원소들이 삭제되고 반대쪽 끝에서는 원소들의 삽입만 가능하게

만든 순서화된 리스트. 가장 먼저 리스트에 삽입된 원소가 가장 먼저 삭제되므로

선입 선출(先入先出)인 FIFO(first in first out) 리스트라고 한다.

 

트리는 계층적 관계를 표현하는 자료구조이다

트리 회로. 나무가 하나의 뿌리(root)에서 줄기(trunk)가 나와 가지(branch)로 나누어지는 것처럼, 어떤 하나의 집합(레코드나 디렉토리 등)으로부터 하위 레벨(lower level)로 가지가 나오는 집합 관계를 갖는 계층 구조(hierarchic structure)를 말한다.

우선순위 큐는 들어간 순서에 상관없이 우선순위를 근거로 큐에서 데이터를 꺼낸다

 

이진 트리

자식 노드가 두 개 이하씩 달린 트리

노드가 위치할 수 있는 곳에 노드가 존재하지 않는다면 공집합 노드가 존재하는 것으로

간주하기 때문에 두 개 이하씩 달린다는 조건이 붙을 수 있는 것이다

 

이진 탐색 트리

이진 트리에 데이터의 저장 규칙을 더해놓은 것이 이진 탐색트리이다

이진 탐색 트리의 노드에 저장된 키는 유일하다

루트 노드의 키가 왼쪽 서브 트리를 구성하는 어떠한 노드의 키보다 크다

루트 노드의 키가 오른쪽 서브 트리를 구성하는 어떠한 노드의 키보다 작다

왼쪽과 오른쪽 서브 트리도 이진 탐색 트리이다

 

해시 테이블

레코드를 한 개 이상 보관하는 버킷들의 집합. 이는 데이터가 저장되는 버킷들의 배열로 만들어지며, 한 버킷은 하나 이상의 레코드를 수용할 수 있다. Key 값을 해시 함수에 대입하여 버킷 번호가 나오면 그 버킷의 빈 슬롯에 자료를 저장한다.

좋은 해쉬 함수는 키의 일부분을 참조하여 해쉬 값을 만들지 않고 키 전체를 참조하여

해쉬 값을 만들어 낸다

 

테이블 자료구조의 이해

데이터가 key와 value로 한 쌍을 이루며 key가 데이터의 저장 및 탐색의 도구가 된다

즉 테이블 자료구조에서는 원하는 데이터를 단번에 찾을 수 있다

테이블은 사전구조 또는 맵이라고도 불린다

 

그냥 인터넷 돌아다니다가 검색한 누군가 정렬에 대해 쓴 글


sorting 이라 함은 보통 정렬이라고 흔히 말하는데
이러한 정렬 알고리즘은 컴퓨터 프로그래밍 알고리즘의 진수라 할수 있다.
정렬(Sort)이란 임의의 순서대로 배열되어 있는 자료의 집합을 일정한 순서대로 재배열하는것을 의미한다.
이때 오름차순(ascending order)으로 정렬한다함은 1,2,3,4순으로 10까지의 카드를 순서대로 배열함을 말한다.
정렬은 컴퓨터로 문제해결을 하는데 있어서 검색과 함께 가장 많이 부닥치는 문제이다.
그래서 알고리즘들 중에서는가장 역사가 깊으며, 가장 연구가 많이 되어 왔으며, 가장 다양한 알고리즘들이 선택을 기다리고 있다.
일반적으로 가장 빠른 정렬 알고리즘은 퀵 정렬(Quick Sort)이라고 알려져 있고 실제로도 가장 빠른 속력을 나타낸다.
하지만 퀵 정렬은 거의 정렬이 되어 있는 자료에 대해서는 다른 기본적인 정렬 알고리즘(예를 들어 삽입 정렬)보다는 성능이 떨어진다.
이렇게 어던 알고리즘이 가장 좋은 알고리즘이라는 일반해는 없다. 단지 주어진 상황과 여건에 가장 적합한 알고리즘이 있을 뿐이다.
정렬 알고리즘의 종류
선택 정렬(Selection Sort)
삽입 정렬(Insertion Sort)
거품 정렬(Bubble Sort)
쉘 정렬(Shell Sort)
퀵 정렬(Quick Sort)
기수 정렬(Radix Sort)
힙 정렬(Heap Sort)
병합 정렬(Merge Sort)
외부 정렬(External Sort)

 

버블 정렬은 일반적으로 사용되는 분류 알고리즘(sorting algorithm)이지만, 알고리즘이 수중(水中)의 「거품」과 움직임이 유사하기 때문에 이러한 이름이 붙여졌다. 이 말은 인접한 레코드의 키를 비교해서 그 결과 순서화되어 있지 않으면 교환하는 방식이다.

정렬 방법 중의 하나. 처음에 있는 키를 가지고 나머지 키와 비교하여 제일 작은 값을 첫 번째 위치에 놓고 비교하는 동안 첫 번째 값보다 더 작은 값이 발견되면 항상 첫 번째 값과 그 작은 값을 서로 교환한다. 이러한 과정이 완료되면 가장 작은 값이 첫 번째 위치에 존재하게 된다. 다음에 두 번째 작은 값을 찾고 이를 두 번째 위치에 놓는다. 이런 과정을 반복ㆍ실행하면 정렬이 된다.

순서 배열되지 않은 리스트의 레코드 하나를 이미 정렬된 리스트로 순서에 맞게 삽입하는 정렬 방법. 삽입 정렬은 맨 처음 한 개의 레코드가 정렬되어 있는 것으로 간주하여 수행된다.

 

[출처] 자료구조 정리|작성자 정스카이

///////////////////////////////////////////////////

알고리즘 정리

http://cafe.naver.com/4billion/753

[2교시형]

정렬 알고리즘의 종류를 내부 정렬과 외부 정렬로 나누어 설명하고 , 버블 정렬에 대해서 설명하시오

1.정렬 알고리즘의 개요

가.정렬 알고리즘의 정의

.컴퓨터의 기억공간 내에 순서 없이 배열된 자료들 중에 레코드의 특정 항목을 순서화 하려는 기준을 따라

자료들을 재배치 하는 것

나.정렬 알고리즘의 유형

.내부정렬 : 주기억장소를 활용 정렬(데이터 크기가 주기억 장소 용량보다 적음)

버블,삽입,선택,퀵,힙 정렬

.외부정렬 : 외부기억장치(디스크, 테이프 등)를 사용 정렬

머지 정렬

2.정렬 알고리즘의 유형 및 설계기법 및 알고리즘간 비교

가.정렬 알고리즘의 유형/설계 기법

.선택 : 배열 [1..n]에서 가장 큰 원소 찾아 A[n]과 자리 교체. 다음 작업시 제외하고 다시 교체 작업 반복

.버블 : 선택정렬처럼 하지만 제일 큰 원소를 오른쪽으로 옮기는 방법이 다른 것

.삽입 :

.퀵 : 맨 뒤의 원소를 기준원소로 기준원소보다 작은수는 기준의 왼쪽, 나머지는 오른쪽

.힙 : 특수한 자료 구조를 사용하는 정렬 알고리즘

나.정렬 알고리즘간 비교

3.버블정렬의 단계 및 버블정렬의 예시/코드

가.버블정렬의 단계

- 1단계: List(i)와 List(i+1)를 i=0,1,2,... n-2에 대해서 비교, 뒤 데이터 값이 작으면 교환( swap list(i)와 list(i+1) )

이 과정을 거치면 가장 큰 값이 맨 뒤로 이동

- 2단계: list(i)와 list(i+1)을 i=0,1,2,... n-3에 대해서 비교, 뒤 데이터 값이 작으면 교환( swap list(i)와 list(i+1) )

이 과정을 거치면 두번째 큰 값이 두번째에 위치 이동

- ... : 위의 과정을 반복

- n-1단계: list(i)와 list(i+1)을 i=0에 대하여 비교, 뒤 데이터 값이 작으면 교환( swap list(i)와 list(i+1) )

이 과정을 거치면 n-1 번째 큰 값이 뒤에서 n-1번째에 위치

 

 

알기 쉬운 알고리즘

알고리즘이 보이는 그림책

반응형