wa_ter_ve

면접 준비 - CS 기초 본문

공부/면접

면접 준비 - CS 기초

수win 2025. 6. 8. 20:22
💡 면접 팁 요약
• 기술 용어는 너무 과도하게 쓰기보단 쉬운 말로 본질을 설명하는 게 더 좋음.
• 잘 모를 경우:  "정확히는 모르지만 제가 이해한 바는..."으로 시작.
• 두괄식 구조로 답하기. (결론 먼저)
• 되도록 3문장 이내로 끊고 말하는 훈련.

 

1. 자료구조

Q1. 배열(Array)과 연결 리스트(Linked List)의 차이점은?
- 배열: 고정 크기. 메모리상 연속된 공간에 데이터 저장.
장점: 인덱스를 통해 빠른 접근.
단점: 삽입/삭제 비효율적.
- 연결 리스트: 각 노드가 다음 노드를 가리키는 동적 구조.
장점: 삽입/삭제가 효율적.
단점: 인덱스 접근 느림.

 

Q2. 스택(Stack)과 큐(Queue)의 차이점과 예시는?
- 스택: 후입선출(LIFO) 구조. 한쪽 끝에서만 삽입과 삭제가 나타나는 리스트.
(ex. 웹 브라우저 뒤로가기)
- : 선입선출(FIFO) 구조. 한쪽에서는 삽입 다른 쪽에서는 삭제만 되는 순서화된 리스트.
(ex. 프린터 작업 순서 처리, 대기열 시스템)

 

Q3. 해시 테이블의 장점과 단점은?
- 해시 테이블: 키를 해시 함수에 넣어 인덱스를 계산한 뒤, 해당 인덱스에 데이터를 저장.
장점: 평균적으로 O(1)의 빠른 접근 속도. 검색이나 삽입에 유리.
단점: 해시 충돌 발생 가능성 있음. (서로 다른 키가 같은 해시값을 가질 때 발생)
 → ‘체이닝 방식’으로 연결 리스트에 저장 or ‘오픈 어드레싱 방식’으로 다음 빈 공간을 찾아 저장.

 

Q4. 트리와 그래프의 차이점은?
- 트리: 계층적인 구조. 루트 노드O,  순환X.
- 그래프: 노드와 간선의 일반적인 연결 구조. 방향성/순환O.
트리는 그래프의 특수한 형태라고도 볼 수 있음.

 

Q5. 이진 탐색 트리의 조건은?
- 이진 탐색 트리는 ‘왼쪽 자식 < 루트 < 오른쪽 자식’이라는 규칙을 갖는 이진 트리.
이 조건을 만족하면 탐색, 삽입, 삭제가 평균 O(log n)의 효율로 이루어짐.

 

2. 알고리즘

Q1. 선택 정렬과 삽입 정렬의 차이는?
- 선택 정렬: 최솟값을 찾아 교환하는 방식.
- 삽입 정렬: 앞에서부터 정렬된 부분에 값을 끼워 넣는 방식.
둘 다 시간복잡도는 O(n²)이지만, 삽입 정렬은 데이터가 거의 정렬된 경우 더 효율적.

 

Q2. 재귀 함수는 언제 사용하는 것이 좋나요?
재귀 함수는, 문제를 작은 문제로 분할해서 해결할 때 유용.
- 장점: 코드 간결 (피보나치 수열, 팩토리얼, DFS(깊이우선탐색) 등에서 자주 사용)
- 단점: 스택 메모리 많이 사용 → 성능 저하 (스택 오버플로우 주의)

 

Q3. 시간복잡도란 무엇이며, O(n log n)은 어떤 알고리즘에서 나오나요?
- 시간복잡도는, 입력 크기에 따른 연산 횟수의 증가량을 수학적으로 표현한 것.
- O(n log n)은 퀵 정렬, 병합 정렬 등 분할 정복 알고리즘에서 자주 나타납니다.

 

Q4. 그리디 알고리즘은 어떤 문제에 적합한가요?
- 그리디 알고리즘: 매 순간 최선의 선택을 하는 방식.
문제에 최적 부분 구조가 있어야 적용 가능. (Ex. 동전 거스름돈 문제, 크루스칼 알고리즘 등)
(최적 부분 구조: 부분 문제의 답을 이용해서 기존 문제의 답을 구할 수 있는 구조)
- 단, 그리디 알고리즘을 사용하면 매 선택이 그 순간에 대해서는 최적이지만, 종합적으로 봤을 때에도 최적이라는 보장은 없음.

 

3. 운영체제

Q1. 프로세스(Process)와 스레드(Thread)의 차이점은?
- 프로세스: 실행 중인 프로그램의 단위. (정적 개체)
- 스레드: 프로세스 내부에서 실행되는 작은 작업 단위. (동적 개체)
하나의 프로세스는 여러 개의 스레드 가질 수 있으며, 스레드끼리는 메모리를 공유.
(스레드는 가볍지만, 동기화 문제에 주의해야 함.)

 

Q2. 교착 상태의 조건과 해결 방법은?
- 교착 상태(Deadlock): 여러 프로세스가 서로 자원을 기다리며 무한 대기하는 상태.
- 발생 조건: (1)상호 배제, (2)점유와 대기, (3)비선점, (4)환형 대기
- 해결 방법: 자원 할당 순서 지정 / 교착 상태 발성 가능성 탐지하여 하나의 프로세스 종료 / 사전에 발생 조건 중 하나를 제거하여 예방 등

 

Q3. 가상 메모리란?
- 가상 메모리는, 물리 메모리보다 큰 주소 공간을 제공 → 프로그램이 연속된 공간을 사용하는 것처럼 보이게 함.
- 페이지 단위로 나눠 실제 메모리와 디스크를 교환하며, 메모리 부족 문제 해결.

 

Q4. 프로세스 스케줄링이란?
- 프로세스 스케줄링: CPU를 여러 프로세스에게 효율적으로 나누어주는 방식.
운영체제는 동시에 여러 프로그램이 실행될 수 있도록 여러 프로세스를 생성. → CPU는 한 순간에 하나의 작업만 수행 → 어떤 프로세스에게 CPU를 언제 줄지 결정하는 알고리즘이 필요.

 

Q5. 캐시(Cache)에 대해 설명해보라.
- 캐시: 자주 사용하는 데이터를 빠르게 불러오기 위해 임시로 저장해두는 고속 메모리.
일반적으로 CPU와 RAM 사이에 위치하며, 속도가 느린 주기억장치의 접근을 줄여 성능을 향상시킴.
(Ex. 웹 브라우저가 자주 방문한 웹사이트의 이미지나 데이터를 브라우저 캐시에 저장해 다음에 더 빠르게 불러오는 것)
- 단점: 오래된 데이터가 남아 있을 수 있고, 캐시 미스가 발생하면 오히려 더 느려질 수 있음.
 → 캐시 미스: CPU가 찾는 데이터가 캐시에 없을 때 발생. RAM에서 직접 불러와야 해서 속도 저하.

 

4. 컴퓨터 구조

Q1. RAM과 ROM의 차이는?
- RAM은 휘발성 메모리.
전원이 꺼지면 내용이 사라짐. 주로 작업 중 데이터를 임시 저장.
- ROM은 비휘발성 메모리.
시스템 부팅에 필요한 기본적인 명령어가 저장되어 있어 꺼져도 유지.

 

Q2. CPU와 GPU의 차이점은?
- CPU: 범용 연산 장치. 순차적인 작업 처리에 적합.
- GPU: 병렬 연산에 최적화. 이미지 처리, 딥러닝 같은 대량의 데이터 동시 처리에 유리.

 

5. 네트워크

Q1. HTTP와 HTTPS의 차이는?
- HTTPS는 HTTP에 보안 계층인 SSL/TLS가 추가된 프로토콜.
데이터를 암호화하여, 외부로부터 탈취되거나 변조되는 것을 방지함.

 

Q2. IP 주소와 MAC 주소의 차이는?
- IP: 네트워크상의 위치를 나타내는 논리 주소.
- MAC: 장치의 물리적 식별 번호.
IP는 바뀔 수 있지만, MAC은 고정.

 

Q3. TCP와 UDP의 차이점은?
- TCP: 연결형 프로토콜. 데이터의 신뢰성과 순서 보장을 제공 (ex. 웹 브라우징, 파일 전송)
- UDP: 비연결형 프로토콜. 지연 감소, 속도 빠름. (ex. 실시간 스트리밍, 온라인 게임)

 

Q4. DNS란 무엇인가요?
- 도메인 이름을 IP로 변환해주는 시스템.
(Ex. google.com을 입력하면 DNS가 IP 주소로 변환하여 접속하게 해줌.)

 

Q5. HTTP 상태코드 404와 500은?
- 404: 클라이언트 오류로, 요청한 리소스가 서버에 없다는 뜻
- 500: 서버 내부 오류로, 서버가 요청을 처리하는 중 문제가 발생했다는 의미

 

Q6. SSL/TLS의 역할은?
- SSL/TLS는 인터넷 통신을 암호화하여 데이터가 안전하게 전달되도록 함.
인증서 기반으로 상대방 신원을 확인하고, 암호화·복호화를 통해 중간 공격을 방지.

 

Q7. 방화벽이란?
- 방화벽: 네트워크 접근을 제어하는 보안 장치.
인가되지 않은 접근을 차단. 주로 포트와 IP 기반의 필터링을 함.

 

6. 데이터베이스

Q1. SQL과 NoSQL의 차이는?
- SQL: 관계형 데이터베이스로 정형화된 스키마와 구조를 가짐.
- NoSQL은 유연한 구조의 비관계형 데이터베이스로, 데이터 구조와 목적에 따라 선택됨.

 

7. 프로그래밍

Q1. 절차지향과 객체지향의 차이는?
- 절차지향: 작업 순서 중심으로 프로그래밍. 구조체와 함수 중심.
(Ex. C)
- 객체지향: 데이터와 기능을 묶은 객체 중심. 유지보수성과 확장성 좋음.
(Ex. Java, Python)
 → 핵심 4대 특성: 추상화, 캡슐화, 상속, 다형성.

 

Q2. SDLC(소프트웨어 생명주기)의 단계는?
요구사항 분석 → 설계 → 구현 → 테스트 → 유지보수의 단계로 구성.
체계적인 개발을 통해 오류 줄이고 품질 높이기 위해 사용됨.

 

Q3. 콜백 함수란 무엇인가요?
- 콜백함수는, 다른 함수의 인자로 전달되어 특정 시점에 실행되는 함수.
(Ex. Javascript에서는 이벤트 처리나 비동기 작업에서 자주 사용됨.)

 

Q4. JavaScript에서 비동기 처리란 무엇인가요?
- 비동기 처리는, 코드 실행 순서와 관계없이 특정 작업이 완료될 때까지 기다리지 않고, 다른 작업을 먼저 수행하는 방식입니다.
JavaScript에서는 async/await, Promise를 사용하여 비동기 코드를 처리.