본문 바로가기

개발자 세릴리/스펙업

[스펙업] IT 개발자 면접 질문 - CS 질문 / 면접 자료 / 면접 답변(1)

728x90
반응형
CS 질문 분야


  1. 자료 구조 (Data Structures): 배열, 연결 리스트, 스택, 큐, 해시 테이블, 이진 검색 트리, 힙 등을 포함하여 다양한 자료 구조에 대한 이해와 구현 능력을 묻을 수 있습니다.
  2. 알고리즘 (Algorithms): 정렬 (Sorting), 검색 (Searching), 그래프 (Graph) 알고리즘 등과 같은 다양한 알고리즘에 대한 이해와 구현 능력을 묻을 수 있습니다.
  3. 운영체제 (Operating Systems): 프로세스와 스레드, CPU 스케줄링, 메모리 관리, 파일 시스템 등과 같은 운영 체제의 기본 개념과 동작 방식에 대한 이해를 묻을 수 있습니다.
  4. 데이터베이스 (Database): 관계형 데이터베이스 (RDBMS)와 NoSQL 데이터베이스, 데이터베이스 인덱스, 트랜잭션 등과 같은 데이터베이스의 기본 개념과 동작 방식에 대한 이해를 묻을 수 있습니다.
  5. 네트워크 (Networking): OSI 모델, TCP/IP 프로토콜, HTTP, DNS 등과 같은 네트워크 프로토콜과 개념에 대한 이해를 묻을 수 있습니다.
  6. 프로그래밍 언어 (Programming Language): OOP 개념, 메모리 관리, 스레드, 동시성, 가비지 컬렉션 등과 같은 프로그래밍 언어의 기본 개념과 구현 방식에 대한 이해를 묻을 수 있습니다.
  7. 보안 (Security): 암호화, 해시 함수, 인증, 인가, 웹 보안 등과 같은 보안 개념에 대한 이해를 묻을 수 있습니다.
  8. 소프트웨어 개발 방법론 (Software Development Methodologies): Agile, Scrum, Waterfall 등과 같은 소프트웨어 개발 방법론에 대한 이해와 경험을 묻을 수 있습니다.

 

 

1. 자료구조

  • 배열 (Array)

Q: 배열이란 무엇인가요?

A: 배열은 연속된 메모리 위치에 같은 데이터 타입의 요소를 저장하는 자료구조입니다. 각 요소는 인덱스를 통해 접근할 수 있습니다.

 

Q: 배열의 장단점은 무엇인가요?

A: 배열의 장점으로는 빠른 접근과 삽입/삭제 연산이 가능하며, 인덱스를 통한 탐색이 빠릅니다. 단점으로는 크기가 고정되어 있어 크기를 변경할 수 없으며, 삽입/삭제 연산이 느리고 메모리 낭비가 될 수 있습니다.

 

  • 연결 리스트 (Linked List)

Q: 연결 리스트란 무엇인가요?

A: 연결 리스트는 각 노드가 데이터와 다음 노드를 가리키는 포인터로 구성된 자료구조입니다. 각 노드는 메모리의 임의 위치에 저장됩니다.

 

Q: 연결 리스트의 장단점은 무엇인가요?

A: 연결 리스트의 장점으로는 크기가 동적으로 조정될 수 있고 삽입/삭제 연산이 빠릅니다. 단점으로는 임의 접근이 불가능하고 각 노드마다 포인터를 가지고 있어 메모리 공간이 더 많이 필요합니다.

 

  • 스택 (Stack)

Q: 스택이란 무엇인가요?

A: 스택은 후입선출(LIFO) 원칙을 따르는 자료구조로, 삽입과 삭제가 같은 위치에서 이루어집니다.

 

Q: 스택의 활용 예시는 무엇이 있나요?

A: 스택은 괄호 짝 검사, 수식 계산, 함수 호출 등 다양한 분야에서 활용됩니다.

 

  • 큐 (Queue)

Q: 큐란 무엇인가요?

A: 큐는 선입선출(FIFO) 원칙을 따르는 자료구조로, 삽입은 한 쪽 끝에서, 삭제는 다른 쪽 끝에서 이루어집니다.

 

Q: 큐의 활용 예시는 무엇이 있나요?

A: 큐는 CPU 스케줄링, 네트워크 패킷 처리, 버퍼 등 다양한 분야에서 활용됩니다.

 

 

2. 알고리즘

  • 이진 탐색 (Binary Search)

Q: 이진 탐색이란 무엇인가요?

A: 이진 탐색은 정렬된 배열에서 원하는 값을 찾는 알고리즘으로, 탐색 범위를 반씩 줄여가며 값을 찾습니다.

 

Q: 이진 탐색의 시간 복잡도는 어떻게 되나요?

A: 이진 탐색의 시간 복잡도는 O(log n)입니다.

 

  • 퀵 정렬 (Quick Sort)

Q: 퀵 정렬이란 무엇인가요?

A: 퀵 정렬은 분할 정복 알고리즘으로, 배열을 pivot 값 기준으로 두 부분으로 나눈 뒤 각 부분을 재귀적으로 정렬하는 방식입니다.

 

Q: 퀵 정렬의 시간 복잡도는 어떻게 되나요?

A: 퀵 정렬의 평균 시간 복잡도는 O(n log n)이며, 최악의 경우 O(n^2)가 될 수 있습니다.

 

  • 병합 정렬 (Merge Sort)

Q: 병합 정렬이란 무엇인가요?

A: 병합 정렬은 분할 정복 알고리즘으로, 배열을 두 부분으로 나눈 뒤 각 부분을 재귀적으로 정렬한 후 병합하는 방식입니다.

 

Q: 병합 정렬의 시간 복잡도는 어떻게 되나요?

A: 병합 정렬의 시간 복잡도는 항상 O(n log n)입니다.

 

  • 깊이 우선 탐색 (Depth First Search, DFS)

Q: 깊이 우선 탐색이란 무엇인가요?

A: 깊이 우선 탐색은 그래프에서 한 정점을 시작으로 깊이를 우선으로 탐색하는 알고리즘입니다.

 

Q: 깊이 우선 탐색의 시간 복잡도는 어떻게 되나요?

A: 깊이 우선 탐색의 시간 복잡도는 인접 리스트로 표현된 그래프에서는 O(V+E), 인접 행렬로 표현된 그래프에서는 O(V^2)입니다.

 

  • 너비 우선 탐색 (Breadth First Search, BFS)

Q: 너비 우선 탐색이란 무엇인가요?

A: 너비 우선 탐색은 그래프에서 한 정점을 시작으로 인접한 정점들을 우선적으로 탐색하는 알고리즘입니다.

 

운영체제

  • 프로세스와 스레드

Q: 프로세스와 스레드의 차이는 무엇인가요?

A: 프로세스는 실행 중인 프로그램으로, 독립된 메모리 공간, 파일 핸들러, 프로세스 ID 등을 가지고 있습니다. 스레드는 프로세스 내에서 실행되는 작은 실행 단위로, 프로세스 내의 메모리 공간을 공유합니다.

 

Q: 스레드의 장단점은 무엇인가요?

A: 스레드의 장점으로는 프로세스보다 적은 메모리를 사용하고, 프로세스 간의 통신보다 더 빠르게 데이터를 공유할 수 있다는 것이 있습니다. 단점으로는 스레드 간의 동기화 문제와 경합 상태 등이 있습니다.

 

  • 프로세스 동기화

Q: 프로세스 동기화란 무엇인가요?

A: 프로세스 동기화는 여러 개의 프로세스가 공유된 자원에 동시에 접근할 때, 서로 간섭이 없도록 하는 기술입니다.

 

Q: 뮤텍스와 세마포어의 차이는 무엇인가요?

A: 뮤텍스는 상호 배제(mutex)의 약어로, 하나의 프로세스 또는 스레드가 공유 자원에 접근할 때, 다른 프로세스 또는 스레드가 동시에 접근하지 못하도록 막는 기술입니다. 세마포어는 다수의 프로세스 또는 스레드가 공유 자원에 접근할 때, 허용 가능한 접근 횟수를 제어하는 기술입니다.

 

  • 캐시

Q: 캐시란 무엇인가요?

A: 캐시는 CPU의 성능을 향상시키기 위해 사용되는 메모리 계층 구조 중 가장 빠른 메모리입니다. CPU가 자주 사용하는 데이터를 미리 읽어와 캐시에 저장하면, 다음에 사용할 때 메인 메모리보다 더 빠르게 접근할 수 있습니다.

 

Q: 캐시 미스(Cache Miss)와 캐시 히트(Cache Hit)의 차이는 무엇인가요?

A: 캐시 미스(Cache Miss)는 CPU가 원하는 데이터가 캐시에 없는 경우를 말합니다. 이 경우 메인 메모리에서 데이터를 읽어와야 하므로 더 느린 속도로 접근합니다. 반면, 캐시 히트(Cache Hit)는 CPU가 원하는 데이터가 캐시에 이미 존재하는 경우를 말합니다. 이 경우 메인 메모리보다 더 빠른 속도로 데이터를 읽을 수 있습니다.

 

  • 가상 메모리

Q: 가상 메모리란 무엇인가요?

A: 가상 메모리는 프로세스가 사용하는 메모리 공간을 물리적인 메모리보다 크게 설정할 수 있는 기술입니다. 이를 통해 여러 개의 프로세스가 동시에 실행될 때, 각각의 프로세스가 독립적인 메모리 공간을 사용하며, 물리적인 메모리 크기를 초과하지 않도록 제한할 수 있습니다.

 

Q: 페이지 교체 알고리즘이란 무엇인가요?

A: 페이지 교체 알고리즘은 가상 메모리에서 페이지 부재(page fault)가 발생했을 때, 새로운 페이지를 불러오기 위해 기존 페이지 중 어떤 페이지를 교체할지 결정하는 알고리즘입니다. 대표적인 페이지 교체 알고리즘으로는 FIFO, LRU, LFU 등이 있습니다.

 

  • 프로세스 스케줄링

Q: 프로세스 스케줄링이란 무엇인가요?

A: 프로세스 스케줄링은 CPU가 여러 개의 프로세스를 실행할 때, 어떤 프로세스를 실행할지 결정하는 기술입니다. 스케줄링 알고리즘에 따라 프로세스의 실행 순서가 결정됩니다.

 

Q: 선점형 스케줄링과 비선점형 스케줄링의 차이는 무엇인가요?

A: 선점형 스케줄링은 CPU가 현재 실행 중인 프로세스를 강제로 중단시키고, 다른 프로세스를 실행할 수 있는 기술입니다. 반면, 비선점형 스케줄링은 실행 중인 프로세스가 종료되거나 대기 상태가 될 때까지 계속해서 실행됩니다. 선점형 스케줄링 알고리즘에는 Round Robin, Priority-based 등이 있습니다. 비선점형 스케줄링 알고리즘에는 FCFS, SJF 등이 있습니다.

 

 

4. 데이터베이스

Q: 데이터베이스란 무엇인가요?

A: 데이터베이스는 데이터를 저장하고 관리하는 시스템입니다.

 

Q: 데이터베이스의 종류는 무엇이 있나요?

A: 관계형 데이터베이스, NoSQL 데이터베이스, 그래프 데이터베이스 등 다양한 종류의 데이터베이스가 있습니다.

 

Q: 관계형 데이터베이스란 무엇인가요?

A: 관계형 데이터베이스는 데이터를 테이블 형태로 저장하고 관리합니다. 각각의 테이블은 데이터의 속성들을 열(Column)로 표현하고, 각각의 데이터는 행(Row)으로 표현됩니다. 이러한 관계형 데이터베이스는 SQL(Structured Query Language)을 사용하여 데이터를 관리합니다.

 

Q: SQL이란 무엇인가요?

A: SQL은 Structured Query Language의 약어로, 관계형 데이터베이스에서 사용되는 데이터 조작 언어입니다. SQL을 사용하면 데이터의 검색, 삽입, 수정, 삭제 등의 작업을 수행할 수 있습니다.

 

Q: 데이터베이스 인덱스란 무엇인가요?

A: 인덱스는 데이터베이스에서 데이터의 검색 속도를 향상시키기 위한 구조입니다. 인덱스는 특정한 컬럼의 값을 사용하여 해당 컬럼에 대한 검색을 빠르게 수행할 수 있도록 합니다.

 

Q: 외래키란 무엇인가요?

A: 외래키는 관계형 데이터베이스에서 한 테이블의 컬럼이 다른 테이블의 기본키(PK)를 참조하는 경우 사용됩니다. 이러한 외래키를 사용하면 두 테이블 간의 관계를 설정할 수 있습니다.

 

Q: 데이터베이스 트랜잭션이란 무엇인가요?

A: 트랜잭션은 데이터베이스에서 여러 개의 작업을 논리적인 단위로 묶어서 하나의 작업으로 처리하는 것을 말합니다. 이러한 트랜잭션은 일련의 작업을 원자적으로 처리하여 데이터의 일관성을 유지할 수 있도록 합니다.

 

Q: 무결성 제약 조건이란 무엇인가요?

A: 무결성 제약 조건은 데이터베이스에서 데이터의 일관성과 정확성을 보장하기 위해 설정하는 제약 조건입니다. 무결성 제약 조건은 기본키, 외래키, 유일한 값, NULL 값 등을 설정할 수 있습니다.

 

Q: 데이터베이스 샤딩(Sharding)이란 무엇인가요?

A: 데이터베이스 샤딩은 대규모 데이터를 분산하여 저장하고 처리하는 기술입니다. 샤딩을 사용하면 데이터베이스의 부하를 분산시킬 수 있으며, 데이터의 수직적 확장(Vertical Scaling)보다는 수평적 확장(Horizontal Scaling)을 용이하게 할 수 있습니다.

 

Q: 데이터베이스 복제(Replication)이란 무엇인가요?

A: 데이터베이스 복제는 마스터 데이터베이스에서 데이터의 변경이 발생하면 슬레이브 데이터베이스로 데이터를 복사하여 전파하는 기술입니다. 데이터베이스 복제를 사용하면 데이터의 가용성을 향상시키고, 장애 발생 시 복구 및 백업 기능을 수행할 수 있습니다.

 

Q: NoSQL 데이터베이스란 무엇인가요?

A: NoSQL 데이터베이스는 관계형 데이터베이스와 달리 스키마가 없거나 유연한 스키마를 사용하는 데이터베이스입니다. NoSQL 데이터베이스는 대용량 데이터 처리에 적합하며, 분산 처리 및 확장성이 용이합니다.

 

Q: NoSQL 데이터베이스의 종류는 어떤 것이 있나요?

A: NoSQL 데이터베이스의 종류로는 key-value store, document store, column family store, graph database 등이 있습니다.

 

Q: ACID란 무엇인가요?

A: ACID는 데이터베이스에서 트랜잭션의 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)의 특징을 나타내는 약어입니다. 이러한 ACID 특징은 데이터의 안전성과 일관성을 보장하기 위해 필요합니다.

 

Q: CAP 이론이란 무엇인가요?

A: CAP 이론은 분산 시스템에서 일관성(Consistency), 가용성(Availability), 네트워크 분할 내성(Partition Tolerance)의 세 가지 특성 중 최대 두 가지만 만족할 수 있다는 이론입니다. 이러한 CAP 이론을 기반으로 데이터베이스 선택 시 일관성과 가용성, 분할 내성의 균형점을 고려해야 합니다.

 

Q: 데이터베이스 인덱스의 장단점은 무엇인가요?

A: 인덱스를 사용하면 데이터 검색 속도가 향상되지만, 인덱스를 추가하면 데이터 저장 및 업데이트 시간이 늘어나는 단점이 있습니다

 

 

나머지 부분에 대해서는 다음 포스팅에서 다룰게요!

2023.03.09 - [개발자 세릴리/스펙업] - [스펙업] IT 개발자 면접 질문 - CS 질문 / 면접 자료 / 면접 답변(2)

 

[스펙업] IT 개발자 면접 질문 - CS 질문 / 면접 자료 / 면접 답변(2)

이전 포스팅과 이어집니다. 2023.03.08 - [개발자 세릴리/스펙업] - [스펙업] IT 개발자 면접 질문 - CS 질문 / 면접 자료 / 면접 답변(1) [스펙업] IT 개발자 면접 질문 - CS 질문 / 면접 자료 / 면접 답변(1)

serylee.tistory.com

 

728x90
반응형