본문 바로가기

기술면접

(14)
객체 지향(OOP) : 독립적인 각각의 객체로 프로그램이나 시스템을 구성하는 일 근래 거의 모든 프로그래밍이 객체지향 개념으로 구현된다. 또한 새롭게 제시되는 방법론들도 모두 객체지향을 기반으로 제시된다. 1) 추상화 (Abstraction) : 실세계의 사물을 추상화 2) 캡슐화 (Encapsulation) 3) 상속 (Inheritance) 4) 다형성 (Polymorphism) 5) 정보은닉 (Information-Hiding) 위의 요소들로 구현된 객체의 구성으로 프로그램을 만들어 나가는 것 == 객체지향 프로그램 객체지향 프로그램 : 캡슐화, 다형성, 상속을 이용하여 코드 재사용을 증가시키고, 유지보수를 감소시크는 장점을 얻기위해 객체들을 연결 시켜 프로그래밍 하는것 OOP는 실세계 real world를 모델링 하..
자료구조와 알고리즘의 정의와 상관관계 자료구조 : 컴퓨터에 데이터를 표현하고 저장하는 방법 알고리즘 : 문제 해결 방법 어떤 자료구조를 쓰느냐에 따라 문제를 해결하는 방법이 달라지고 성능도 달라지게 된다. 모든 상황에 좋은 자료구조는 존재하지 않는다. 상황에 따라 효율적인 자료구조를 선택하고 알고리즘을 구현해야한다. 자료구조란? 우리가 평소에 데이터 저장을 하기위해 사용했던 정수형 변수 int, 구조체, 배열 등 자료형이나 배열 등은 간단한 자료구조이기에 자료구조론에서는 주로 선형, 비선형 구조를 다룬다. - 선형 자료구조 (Linear Data Structure) 데이터를 선의 형태로 나란히 혹은 일렬로 저장하는 방식 ex) 리스트, 스택, 큐, 덱 등 -비선현 자료구조 (Non-linear Data Structure) 데이터를 선의 형태..
힙 메모리 최적화와 오브젝트 풀링 메모리 힙영역 : 프로그램이 돌아가면서 생서오디는 값들은 메모리의 힙영역에 할당된다. == 동적 메모리 할당 ex) 게임 내 새로운 캐릭터 생성으로 인한 값, 네트워크 작업을 통해 일정한 데이터를 받아 배열을 생성 이러한 메모리 할당 요청이 발생하면 힙 메모리를 관리하는 관리자가 필요한 만큼의 영역을 힙에 예약한다. 예약된 영역은 다른 값이 할당 될 수 없는 곳이 된다. 예약된 영역은 핸들러나 포인터를 반환하여 값을 할당하는 등의 접근이 가능하게 된다. 누수현상 (Memory Leak) : 오류로 인해 영역을 가리키는 포인터 반환이 안된경우, 또는 영역의 예약이 잘못된 경우 등으로 해당 힙 영역을 사용하지 못하게 되는것을 메모리 누수(Memory Leak)라고 한다. 문제가 되는 이 영역은 다시 사용할 ..
메모리 공간 : 데이터(Data)영역, 힙(Heap)영역, 스택(Stack)영역 프로그램을 실행시키면 운영체제는 우리가 실행시킨 프로그램을 위해 메모리 공간을 할당해 준다. 할당되는 메모리 공간은 크게 데이터(Data), 힙(Heap), 스택(Stack) 영역으로 나눠진다. 할당 시기 : 프로그램이 실행될 때 마다 할당 장소 : 메인 메모리(RAM) 할당 용도 : 프로그램 실행 시 필요한 메모리 공간(지역변수, 전역변수 선언을 위해) 할당 1. 데이터(Data) 영역 : 전역 변수와 Static 변수가 할당되는 영역 프로그램의 시작과 동시에 할당되고, 프로그램이 종료되어야 메모리에서 소멸된다. #include int a = 10; //데이터 영역에 할당 int b = 20; //데이터 영역에 할당 int main() { . . . return 0; } 위와 같은 코드에서 int형 변..
큐 (Queue) : 들어온 순서대로 넣어서 순서대로 사용한다. 스택(Stack)의 경우 넣은 순서대로 사용을 할 수 없기에, 넣었던 순서대로 자료를 사용하고 싶다면 큐(Queue)를 이용한다. 이처럼 먼저 들어간 들어간 원소가 가장 먼저 꺼내지기 때문에 FIFO(First In First Out) : 선입선출 이라고 불린다. 프로세스 처리, CPU 관리에서 많이 사용된다. [1][2][3][4][5] → [1]을 Pop → [pop][2][3][4][5] 일반적으로 배열을 직선 형태로 보았을 때, [1] 데이터를 Pop하면 다른 데이터를 차례대로 당겨줘야 한다. 이것은 소수의 자료의 경우는 상관이 없지만 많은 데이터의 경우 연산에 많은 시간이 걸린다. 이러한 문제를 해결하기 위해 원형 큐, 순환 큐, 환영 큐 라는 방법..
스택 (Stack) : '무언가를 쌓는다'라는 의미를 갖는 자료구조 == 자료를 순서대로 쌓아서 보관하고 사용한다. 순서대로 쌓이기 때문에 밑에 있는 것을 꺼내기 위해서는 맨위부터 쌓인 순서대로 빼내야 된다. 이처럼 가장 마지막에 들어간 원소가 제일 먼저 꺼내지기 때문에 일반적으로 LIFO(Last In First Out) : 후입선출 이라고 불린다. 1. Push : 자료넣기 & 입력 2. Pop : 자료빼기 & 삭제 Top : (초기값 : -1) 꼭대기, 즉 가장 위의 변수를 가르키는 변수 Stack Underflow : 자료가 없는데 Pop으로 자료를 빼내려 할때 발생하는 Err Stack Overflow : 배열의 크기 이상으로 자료를 Push하려 할때 더이상 자료를 넣을수 없어 발생하는 Err