본문 바로가기
개발자, 탐구생활/개발자, 취업

[비전공, 개발자로 살아남기] 14. 신입 개발자 자주 묻는 기술면접 내용 요약

by The Career 2023. 8. 20.
반응형

비전공, 개발자로 살아남기

#14. 신입 개발자 자주 묻는 기술면접 내용



[메인 메모리의 영역]
- 코드 영역: 프로그램의 소스 코드가 저장되는 영역으로, CPU는 코드 영역에 저장된 명령어(소스, 함수, 제어문)를 가져와서 처리합니다. 예를 들어, C언어로 작성된 프로그램이 실행될 때, 코드 영역에는 이 프로그램의 소스 코드가 저장되어 있습니다.
- 데이터 영역: 전역 변수와 정적 변수가 저장되는 영역으로, 프로그램 시작과 함께 할당되며, 프로그램이 종료될 때까지 소멸하지 않습니다. 예를 들어, C언어로 작성된 프로그램이 실행될 때, 데이터 영역에는 이 프로그램에서 선언한 전역 변수나 정적 변수가 저장됩니다.
- 스택 영역: 프로그램이 사용하는 임시 메모리 영역으로, 함수의 호출과 관계되는 지역 변수와 매개 변수가 저장됩니다. 함수의 호출과 함께 할당되며, 함수가 종료되면 소멸합니다. 예를 들어, C언어로 작성된 함수를 호출할 때, 해당 함수에서 사용하는 지역 변수나 매개 변수가 스택 영역으로 할당됩니다.
- 힙 영역: 사용자가 메모리 공간을 동적으로 할당하고 해제하는 영역입니다. 예를 들어, C언어에서 malloc() 함수를 사용하여 메모리를 동적으로 할당할 때, 할당된 메모리 영역이 힙 영역에 저장됩니다.

[자료구조]
- 스택: 후입선출(LIFO) 방식의 자료구조입니다. 예를 들어, 컴퓨터에서 '뒤로가기' 버튼이 스택과 유사합니다. 이전에 방문한 페이지들이 스택에 저장되고, '뒤로가기' 버튼을 누르면 가장 최근에 저장된 페이지가 꺼내져 나타나는 것과 같습니다.
- 큐: 선입선출(FIFO) 방식의 자료구조입니다. 예를 들어, 은행에서 대기번호표를 받아 대기열에 들어가는 것이 큐와 유사합니다. 가장 먼저 도착한 사람이 가장 먼저 처리받고, 가장 나중에 들어온 사람이 가장 나중에 처리받는 것과 같습니다.
- 트리: 데이터를 계층 구조로 표현하는 자료구조입니다. 예를 들어, HTML의 DOM 트리가 트리와 유사합니다. HTML 페이지의 구조가 트리로 표현되며, 루트 노드인 html 태그에서 시작하여 하위 노드들이 순차적으로 표현됩니다.
- 힙: 이진 트리 구조 중 하나로, 최대 힙과 최소 힙으로 나뉩니다. 예를 들어, 우선순위 큐에서 가장 높은 우선순위를 가진 데이터가 힙의 루트 노드에 위치하고, 그 다음으로 높은 우선순위를 가진 데이터가 하위 노드로 위치한 것이 최대 힙의 예시입니다.

[RDBMS와 NoSQL]
- RDBMS: 엄격한 스키마로 데이터를 구조적으로 정의하고 관리하는 데이터베이스입니다. 데이터를 분산 저장할 수 있으며 수정이 용이합니다. 예를 들어, MySQL, Oracle, MS-SQL 등이 RDBMS의 대표적인 예시입니다.
- NoSQL: 유연한 스키마로 데이터를 저장하고 관리하는 데이터베이스입니다. 대용량 데이터 처리 및 저장에 적합하며, 확장성도 높습니다. 예를 들어, MongoDB, Cassandra, HBase 등이 NoSQL의 대표적인 예시입니다.

[절차 지향과 객체 지향]
- 절차 지향 프로그래밍: 순차적인 처리가 중요시되는 프로그래밍 기법입니다. C, Pascal 등의 언어가 절차 지향적인 언어입니다.
- 객체 지향 프로그래밍: 객체(Object)라는 개념을 기반으로 데이터와 절차를 논리적으로 묶어 처리하는 방법입니다. Java, C++, Python 등의 언어가 객체 지향적인 언어입니다. 예를 들어, 자동차 시뮬레이션 프로그램에서 자동차를 객체로 표현하여, 자동차가 가지는 속성(색상, 가속도 등)을 데이터로, 자동차가 수행하는 기능(달리기, 멈추기 등)을 메소드로 표현합니다.

[Overriding과 Overloading]
- Overriding: 부모 클래스가 가지고 있는 메소드를 자식 클래스에서 재정의해서 사용하는 것입니다. 자식 클래스에서 부모 클래스의 메소드를 호출하면 부모 클래스의 메소드보다 자식 클래스에서 재정의한 메소드가 실행됩니다. 예를 들어, Java에서의 toString() 메소드가 Overriding의 예시입니다.
- Overloading: 같은 이름의 메소드를 여러개 정의하되, 매개 변수의 유형과 개수를 달리하여 다양한 유형의 호출에 응답하는 것입니다. 매개 변수가 다르지만 같은 이름을 가지는 여러 메소드들이 동작합니다. 예를 들어, Java에서 print() 메소드가 Overloading의 예시입니다.

[페이지 교체 알고리즘]
- FIFO: 물리 메모리에 적재된지 가장 오래된 페이지를 교체합니다. 컴퓨터에서 일어나는 '작업 표시줄에서 닫기'도 FIFO 알고리즘과 유사합니다. 가장 처음 실행한 프로그램이 가장 마지막에 표시되어 닫히는 것과 같습니다.
- LRU: 가장 오랜 기간 사용되지 않은 페이지를 교체합니다. 자주 사용되지 않는 앱 중에 오래된 앱을 종료시키는 '앱 종료 어플'도 LRU 알고리즘과 유사합니다.
- LFU: 가장 적은 참조 횟수를 갖는 페이지를 교체합니다. 예를 들어, 브라우저에서 새로 열린 탭 중에 사용이 가장 적은 탭을 닫는 '탭 닫기' 기능도 LFU 알고리즘과 유사합니다.
- MFU: 가장 많은 참조 횟수를 갖는 페이지를 교체합니다. MFU 알고리즘은 사용이 잘 이루어지지 않는 편입니다.

[프로세스와 스레드]
- 프로세스: 운영체제로부터 할당받은 실행 작업 단위로 프로그램을 의미합니다. 여러 개의 프로세스가 동시에 실행될 경우, 각각의 프로세스는 독립된 메모리 영역과 CPU를 할당받습니다.
- 스레드: 프로세스 내에서 동작하는 실행 단위로, 프로세스가 할당받은 자원을 공유하면서 실행됩니다. 예를 들어, 웹 브라우저에서 각각의 탭은 프로세스가 아니라 스레드로 동작합니다.

[OSI 7Layer]
- Application layer: 사용자와 네트워크를 연결하는 계층으로, HTTP, FTP, SMTP 등의 프로토콜이 속합니다.
- Presentation layer: 데이터의 표현 방식을 정의하는 계층으로, JPEG, MPEG, SSL 등의 프로토콜이 속합니다.
- Session layer: 통신하는 두 시스템 사이에서 세션을 관리하는 계층입니다.
- Transport layer: 데이터 전송을 담당하는 계층으로, TCP, UDP 등의 프로토콜이 속합니다.
- Network layer: 데이터를 전송하기 위한 경로를 설정하는 계층으로, IP, ICMP 등의 프로토콜이 속합니다.
- DataLink layer: 물리적인 주소(MAC 주소)에 의해 데이터를 전송하는 계층으로, Ethernet, Token Ring 등의 프로토콜이 속합니다.
- Physical layer: 물리적인 연결 및 전송 매체에 대한 통신을 담당하는 계층입니다.

[TCP와 UDP]
- TCP: 연결형 서비스로 신뢰성있게 데이터를 전송하는 방식입니다. 3-way handshaking과 4-way handshaking 방식을 통해 연결을 설정하거나 해제합니다. 예를 들어, 웹사이트에서 로그인하거나 파일을 전송할 때, TCP 방식을 사용합니다.
- UDP: 비연결형 서비스로 데이터 전송을 위한 신호 절차를 거치지 않으며, 데이터의 신뢰성은 낮지만 처리 속도가 빠르다는 특징이 있습니다. 예를 들어, 동영상 스트리밍이나 온라인 게임 같은 경우, 빠른 전송이 중요하므로 UDP 방식을 사용합니다.

반응형