알고리즘 Flashcards

알고리즘 관련 개발자 면접 질문 정리

1
Q

재귀란 무엇인가?

A

어떤 문제를 해결하기 위해 자신을 반복 호출하는 알고리즘 기술을 의미합니다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

재귀의 요소 중 기저 사례란 무엇인가?

A

재귀 호출을 멈추기 위한 조건으로, 더 이상 문제를 작은 문제로 나눌 수 없을 때 사용합니다. 기저 사례가 충족되면 함수는 더 이상 자신을 호출하지 않고 결과를 반환합니다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

재귀의 요소 중 재귀 사례란 무엇인가?

A

문제를 더 작은 문제로 나누고, 그 작은 문제를 해결하기 위해 다시 자기 자신을 호출하는 부분입니다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

DFS / BFS가 무엇인가?

A

두 알고리즘 모두 그래프 탐색 알고리즘으로 그래프나 트리 구조를 탐색할 때 사용됩니다. 특정 노드를 방문하고 연결된 노드들을 탐색하며, 모든 노드를 방문할 수 있습니다. 하지만 탐색 순서와 방식에서 차이가 있습니다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

DFS란 무엇인가?

A

깊이 우선 탐색으로 한 노드에서 출발하여 가능한 한 깊게 탐색한 후, 더 이상 갈 곳이 없으면 다시 돌아와 다른 경로를 탐색하는 방식입니다. 주로 재귀나 스택을 사용하여 구현합니다. 그리고 모든 경로를 탐색하여 해결책을 찾을 때 유용합니다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

BFS란 무엇인가?

A

너비 우선 탐색으로 루트 노드에서 시작하여 인접한 노드를 먼저 탐색하고, 그 다음 레벨의 노드들을 탐색하는 방식입니다. 주로 큐 자료구조를 사용하여 구현합니다. 그리고 최단 경로를 찾을 때 유용합니다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

버블 정렬을 설명하라.

A

인접한 두 원소를 비교하여 순서가 잘못된 경우 서로 교환하는 방식으로 작동합니다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

선택 정렬을 설명하라.

A

리스트에서 최소 또는 최대 원소를 찾아 리스트의 첫 번째 원소와 교환하는 방식으로 작동합니다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

삽입 정렬을 설명하라.

A

배열의 요소들을 하나씩 차례대로 정렬된 부분과 비교하여 적절한 위치에 삽입하는 방식으로 작동합니다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

선형 검색을 설명하라.

A

배열이나 리스트의 첫 번째 요소부터 마지막 요소까지 차례대로 확인하여 원하는 값을 찾는 방식입니다. 검색하려는 값이 배열에 존재하는지 확인하거나 그 위치를 반환합니다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

이진 검색을 설하라.

A

정렬된 배열에서 특정 값을 찾는 효율적인 알고리즘입니다. 배열을 반씩 나누어 검색하는 방식으로, 선형 검색보다 훨씬 빠른 시간 복잡도를 갖습니다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

A* 알고리즘을 설명하라.

A

그래프 탐색 알고리즘 중 하나로, 특히 최단 경로를 찾는 데 매우 효율적입니다. A* 알고리즘은 다익스트라 알고리즘과 유사하지만, 휴리스틱 함수를 사용하여 탐색 공간을 줄임으로써 더 효율적으로 동작합니다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

다익스트라 알고리즘과 A* 알고리즘의 차이는 무엇인가?

A

다익스트라 알고리즘은 시작 노드에서 모든 노드까지의 최단 경로를 찾으며 휴리스틱 함수를 사용하지 않습니다. 그리고 모든 가능한 경로를 동일한 방식으로 탐색합니다. A* 알고리즘은 시작 노드에서 목표 노드까지의 최단 경로를 찾으며 휴리스틱 함수를 사용하여 탐색을 더 효율적으로 만듭니다. 그리고 목표 지점에 가까운 경로를 우선적으로 탐색하여 탐색 공간을 줄입니다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

객체지향 프로그래밍이란 무엇인가?

A

프로그래밍 패러다임 중 하나로, 프로그램을 객체들의 집합으로 구성하여 개발하는 방법론입니다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

객체란 무엇인가?

A

데이터와 이를 처리하는 메소드를 함께 포함하는 하나의 단위입니다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

클래스란 무엇인가?

A

객체를 생성하기 위한 틀입니다. 객체의 속성과 메서드를 정의하며, 객체는 클래스의 인스턴스입니다.

17
Q

추상 클래스와 인터페이스의 차이는 무엇인가? 왜 사용하는가?

A

추상 클래스는 일부 구현과 함께 기본적인 동작을 제공하고, 공통 기능을 공유할 수 있는 클래스를 만들 때 사용합니다. 인터페이스는 완전한 추상화를 제공하며, 다중 상속을 구현하거나 다양한 클래스가 동일한 동작을 하도록 표준화할 때 사용합니다.

18
Q

캡슐화란 무엇인가?

A

캡슐화는 객체의 속성과 메서드를 하나로 묶고, 객체의 내부 상태를 외부에서 직접 접근하지 못하도록 보호하는 것입니다.

19
Q

상속이란 무엇인가?

A

새로운 클래스가 기존 클래스의 속성과 메서드를 물려받아 사용하는 것입니다.

20
Q

다형성이란 무엇인가?

A

동일한 메서드나 연산자가 다양한 형태로 동작할 수 있는 능력입니다. 이는 주로 메소드 오버로딩과 메소드 오버라이딩을 통해 구현됩니다.

21
Q

추상화란 무엇인가?

A

복잡한 시스템으로부터 필요한 부분만을 간추려 내어 모델링하는 것입니다.