ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [면접질문 대비] cs지식 예상 질문 & 답변
    면접질문 2024. 6. 5. 10:28
    반응형

    질문: 객체 지향 프로그래밍 (OOP)란 무엇인가요?

    • 답변: 객체 지향 프로그래밍(OOP)은 프로그램을 객체들로 나누어 설계하는 프로그래밍 패러다임입니다. 객체는 데이터와 데이터를 조작하는 메서드를 포함하며, 클래스는 이러한 객체의 설계를 정의합니다. 주요 개념에는 캡슐화, 상속, 다형성, 추상화가 있습니다. OOP는 코드의 재사용성을 높이고, 유지보수를 쉽게 만들어 줍니다.

    질문: 데이터 구조란 무엇인가요?

    • 답변: 데이터 구조는 데이터를 조직하고 관리하는 방식입니다. 효율적인 데이터 구조는 데이터의 저장, 검색, 수정, 삭제 등을 효과적으로 수행할 수 있게 합니다. 일반적인 데이터 구조에는 배열, 연결 리스트, 스택, 큐, 트리, 그래프, 해시 테이블 등이 있습니다.

    질문: 스택과 큐의 차이점은 무엇인가요?

    • 답변: 스택과 큐는 둘 다 선형 데이터 구조이지만, 동작 방식이 다릅니다. 스택은 LIFO(Last In First Out) 원칙을 따르며, 마지막에 삽입된 요소가 먼저 제거됩니다. 반면, 큐는 FIFO(First In First Out) 원칙을 따르며, 가장 먼저 삽입된 요소가 먼저 제거됩니다.

    질문: 기본적인 정렬 알고리즘에 대해 설명해 주세요.

    • 답변: 기본적인 정렬 알고리즘에는 버블 정렬, 삽입 정렬, 선택 정렬, 퀵 정렬, 병합 정렬 등이 있습니다. 버블 정렬은 인접한 두 요소를 비교하여 교환하고, 삽입 정렬은 이미 정렬된 부분에 새 요소를 삽입하며, 선택 정렬은 가장 작은 요소를 선택해 제자리에 놓습니다. 퀵 정렬은 피벗을 중심으로 분할 정복하여 정렬하고, 병합 정렬은 반으로 나누어 정렬 후 병합합니다.

    질문: 해시 테이블이란 무엇인가요?

    • 답변: 해시 테이블은 키-값 쌍을 저장하는 데이터 구조입니다. 해시 함수는 키를 해시 값으로 변환하여 인덱스를 생성하며, 이를 통해 값을 빠르게 검색, 삽입, 삭제할 수 있습니다. 충돌을 해결하기 위해 체이닝이나 개방 주소법 같은 방법이 사용됩니다.

    질문: 빅오 표기법(Big O Notation)에 대해 설명해 주세요.

    • 답변: 빅오 표기법은 알고리즘의 시간 복잡도와 공간 복잡도를 나타내는 방법입니다. 입력 크기 n이 증가할 때 알고리즘의 실행 시간이 어떻게 증가하는지를 표현합니다. 예를 들어, O(1)는 상수 시간, O(n)은 선형 시간, O(n^2)은 이차 시간 복잡도를 의미합니다.

    질문: 재귀 함수란 무엇인가요?

    • 답변: 재귀 함수는 자기 자신을 호출하는 함수입니다. 일반적으로 기본 조건(base case)과 재귀 조건(recursive case)을 포함합니다. 재귀 함수는 문제를 작은 부분 문제로 분할하여 해결할 때 유용합니다. 예를 들어, 팩토리얼 계산이나 피보나치 수열 생성에 사용됩니다.

    질문: 데이터베이스의 기본 개념에 대해 설명해 주세요.

    • 답변: 데이터베이스는 데이터를 체계적으로 저장하고 관리하는 시스템입니다. 관계형 데이터베이스(RDBMS)는 테이블 간의 관계를 정의하며, SQL을 사용하여 데이터를 관리합니다. 주요 개념으로는 테이블, 행, 열, 기본 키, 외래 키, 인덱스, 조인 등이 있습니다.

    질문: HTTP와 HTTPS의 차이점은 무엇인가요?

    • 답변: HTTP는 Hypertext Transfer Protocol의 약자로, 웹 브라우저와 서버 간의 데이터를 전송하는 프로토콜입니다. HTTPS는 HTTP에 보안 기능을 추가한 것으로, SSL/TLS 암호화를 사용하여 데이터의 기밀성과 무결성을 보호합니다. HTTPS는 URL 앞에 'https://'로 표시됩니다.

    질문: 소프트웨어 개발 생명 주기(SDLC)란 무엇인가요?

    • 답변: 소프트웨어 개발 생명 주기(SDLC)는 소프트웨어 개발의 단계별 과정을 정의하는 모델입니다. 일반적인 단계는 요구 분석, 설계, 구현, 테스트, 배포, 유지보수가 포함됩니다. SDLC는 프로젝트 관리를 체계적으로 하고, 품질을 보장하며, 일정과 비용을 관리하는 데 도움을 줍니다.
     

    질문: OSI 7 계층 모델에 대해 설명해 주세요.

    • 답변: OSI 7 계층 모델은 네트워크 통신을 7개의 계층으로 나누어 설명하는 모델입니다. 각 계층은 특정 기능을 담당합니다. 7개의 계층은 물리 계층, 데이터 링크 계층, 네트워크 계층, 전송 계층, 세션 계층, 표현 계층, 응용 계층으로 구성됩니다. 예를 들어, 물리 계층은 실제 전송 매체를 다루고, 전송 계층은 신뢰성 있는 데이터 전송을 담당합니다

    질문: TCP와 UDP의 차이점은 무엇인가요?

    • 답변: TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 인터넷 프로토콜 스위트의 전송 계층 프로토콜입니다. TCP는 연결 지향적이고 신뢰성 있는 전송을 제공하며, 데이터 패킷의 순서 보장과 오류 검출 및 수정 기능을 갖추고 있습니다. 반면, UDP는 비연결 지향적이고 신뢰성이 낮지만, 더 빠른 전송 속도를 제공합니다. UDP는 실시간 스트리밍이나 온라인 게임 등에서 사용됩니다.

    질문: 가비지 컬렉션(Garbage Collection)이란 무엇인가요?

    • 답변: 가비지 컬렉션은 더 이상 사용되지 않는 메모리 공간을 자동으로 해제하는 메모리 관리 기법입니다. 주로 자바나 C# 같은 고급 프로그래밍 언어에서 사용됩니다. 가비지 컬렉션은 메모리 누수를 방지하고 프로그램의 안정성을 높이는 데 기여합니다.

    질문: 소프트웨어 디자인 패턴이란 무엇인가요?

    • 답변: 소프트웨어 디자인 패턴은 자주 발생하는 문제를 해결하기 위한 재사용 가능한 설계 솔루션입니다. 디자인 패턴은 코드의 재사용성을 높이고 유지보수를 용이하게 합니다. 대표적인 디자인 패턴으로는 싱글턴, 팩토리, 옵저버, 스트래티지 패턴 등이 있습니다.

    질문: RESTful API란 무엇인가요?

    • 답변: RESTful API는 Representational State Transfer 원칙을 따르는 웹 API입니다. REST는 클라이언트와 서버 간의 상호 작용을 단순화하고 확장 가능하게 설계합니다. 주요 원칙으로는 무상태성, 일관된 인터페이스, 자원 기반 URL 등이 있습니다. HTTP 메서드(GET, POST, PUT, DELETE)를 통해 자원을 조작합니다.

    질문: 병렬 처리와 동시성의 차이점은 무엇인가요?

    • 답변: 병렬 처리와 동시성은 다수의 작업을 처리하는 방법입니다. 병렬 처리는 여러 작업을 동시에 실행하는 것으로, 여러 CPU 코어를 사용하여 실제로 동시에 수행됩니다. 동시성은 작업의 실행 순서를 조정하여 효율적으로 처리하는 것으로, 반드시 동시에 실행되지는 않지만 작업 간의 상호작용을 관리합니다.

    질문: 데이터베이스 정규화란 무엇인가요?

    • 답변: 데이터베이스 정규화는 데이터를 구조화하여 중복을 최소화하고 데이터 무결성을 보장하는 과정입니다. 정규화는 여러 단계로 나뉘며, 각 단계는 특정 규칙을 따릅니다. 1차 정규형(1NF)은 각 열이 원자값을 가지도록 하고, 2차 정규형(2NF)은 부분 종속성을 제거하며, 3차 정규형(3NF)은 이행 종속성을 제거합니다.

    질문: 소프트웨어 테스트의 종류에는 어떤 것들이 있나요?

    • 답변: 소프트웨어 테스트는 소프트웨어의 품질을 보장하기 위한 과정입니다. 주요 테스트 종류에는 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트가 있습니다. 단위 테스트는 개별 모듈을 테스트하고, 통합 테스트는 모듈 간의 상호작용을, 시스템 테스트는 전체 시스템을, 인수 테스트는 사용자의 요구사항을 만족하는지를 테스트합니다.
    1. 질문: 버전 관리 시스템(VCS)이란 무엇인가요?
      • 답변: 버전 관리 시스템(VCS)은 소스 코드를 포함한 프로젝트 파일의 변경 내역을 관리하는 도구입니다. VCS는 여러 개발자가 협업할 때 충돌을 방지하고, 변경 사항을 추적하며, 이전 버전으로 쉽게 되돌릴 수 있게 합니다. 대표적인 VCS로는 Git, SVN, Mercurial 등이 있습니다.

    질문: MVC 패턴이란 무엇인가요?

    • 답변: MVC(Model-View-Controller) 패턴은 소프트웨어 설계 패턴으로, 애플리케이션을 세 가지 주요 컴포넌트로 나눕니다. Model은 데이터와 비즈니스 로직을, View는 사용자 인터페이스를, Controller는 사용자 입력을 처리하고 모델과 뷰를 연결합니다. MVC 패턴은 코드의 재사용성과 유지보수성을 높이는 데 도움을 줍니다.

    질문: 소프트웨어 개발에서 버그를 찾고 수정하는 과정은 무엇인가요?

    • 답변: 버그를 찾고 수정하는 과정은 디버깅이라고 합니다. 일반적으로 문제를 재현하고, 원인을 분석하며, 수정한 후 테스트하여 문제 해결을 확인합니다. 디버깅 도구와 로그를 활용해 효율적으로 문제를 찾고 해결합니다.

    질문: 동적 타이핑과 정적 타이핑의 차이는 무엇인가요?

    • 답변: 정적 타이핑은 컴파일 시 변수의 타입이 결정되며, 동적 타이핑은 실행 시 변수의 타입이 결정됩니다. 정적 타이핑은 타입 오류를 컴파일 타임에 잡을 수 있지만, 동적 타이핑은 더 유연한 코딩을 가능하게 합니다.

    질문: 인터프리터 언어와 컴파일러 언어의 차이는 무엇인가요?

    • 답변: 인터프리터 언어는 소스 코드를 한 줄씩 읽고 실행하며, 컴파일러 언어는 소스 코드를 기계어로 번역한 후 실행합니다. 인터프리터 언어는 실행이 느릴 수 있지만, 더 빠른 개발 사이클을 제공합니다.

    질문: 배열과 연결 리스트의 차이는 무엇인가요?

    • 답변: 배열은 연속된 메모리 공간에 저장되며, 인덱스를 통해 빠르게 접근할 수 있습니다. 연결 리스트는 각 요소가 다음 요소를 가리키는 포인터를 포함하며, 요소의 추가 및 삭제가 더 효율적입니다.

    질문: 링크드 리스트에서 중간 노드를 삭제하는 방법을 설명해 주세요.

    • 답변: 중간 노드를 삭제하려면 이전 노드의 다음 포인터를 삭제할 노드의 다음 노드로 설정합니다. 메모리 관리를 위해 삭제할 노드를 해제합니다.

    질문: 정렬 알고리즘 중 퀵 정렬의 시간 복잡도는 무엇인가요?

    • 답변: 퀵 정렬의 평균 시간 복잡도는 O(n log n)이며, 최악의 경우 O(n^2)입니다. 피벗 선택에 따라 성능이 달라집니다.

    질문: 소프트웨어 개발에서 유닛 테스트의 중요성은 무엇인가요?

    • 답변: 유닛 테스트는 개별 모듈이나 함수가 의도한 대로 작동하는지를 검증합니다. 이는 버그를 조기에 발견하고, 코드의 유지보수성과 안정성을 높이는 데 중요합니다.

    질문: 함수형 프로그래밍이란 무엇인가요?

    • 답변: 함수형 프로그래밍은 수학적 함수의 개념을 기반으로 한 프로그래밍 패러다임입니다. 상태와 부작용을 최소화하고, 불변성을 강조합니다. 대표적인 언어로는 Haskell과 Lisp가 있습니다.

    질문: TDD(Test-Driven Development)란 무엇인가요?

    • 답변: TDD는 테스트 주도 개발로, 코드를 작성하기 전에 테스트를 먼저 작성하는 방법론입니다. 테스트를 통해 요구사항을 명확히 하고, 개발 과정을 체계적으로 진행합니다.

    질문: 싱글턴 패턴이란 무엇인가요?

    • 답변: 싱글턴 패턴은 클래스의 인스턴스가 하나만 생성되도록 보장하는 디자인 패턴입니다. 전역적으로 접근 가능한 인스턴스를 제공하며, 자원 관리나 설정 관리에 유용합니다.

    질문: SQL과 NoSQL의 차이점은 무엇인가요?

    • 답변: SQL 데이터베이스는 관계형 모델을 사용하고, 구조화된 쿼리 언어(SQL)를 사용합니다. NoSQL 데이터베이스는 비관계형 모델을 사용하며, 다양한 데이터 모델을 지원합니다. SQL은 스키마가 고정된 반면, NoSQL은 유연한 스키마를 지원합니다.

    질문: JOIN 연산에 대해 설명해 주세요.

    • 답변: JOIN 연산은 두 개 이상의 테이블을 결합하여 데이터를 조회하는 연산입니다. INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN 등의 종류가 있으며, 각기 다른 방식으로 데이터를 결합합니다.

    질문: 트랜잭션의 ACID 특성이란 무엇인가요?

    • 답변: ACID는 트랜잭션의 특성을 나타내는 약자로, 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)을 의미합니다. 이는 데이터베이스의 무결성과 신뢰성을 보장합니다.

    질문: 인덱스란 무엇인가요?

    • 답변: 인덱스는 데이터베이스 테이블에서 검색 속도를 높이기 위한 자료 구조입니다. 인덱스를 사용하면 특정 컬럼에 대해 빠른 검색이 가능하지만, 삽입과 삭제 작업의 성능에 영향을 미칠 수 있습니다.

    질문: 네트워크 프로토콜이란 무엇인가요?

    • 답변: 네트워크 프로토콜은 네트워크 상에서 데이터를 전송하기 위한 규칙과 절차의 집합입니다. 대표적인 프로토콜로는 HTTP, FTP, TCP/IP 등이 있으며, 각각 다른 목적과 기능을 가집니다.

    질문: DNS(Domain Name System)의 역할은 무엇인가요?

    • 답변: DNS는 도메인 이름을 IP 주소로 변환하는 시스템입니다. 사용자가 기억하기 쉬운 도메인 이름을 통해 웹사이트에 접근할 수 있도록 도와줍니다.

    질문: IP 주소와 MAC 주소의 차이점은 무엇인가요?

    • 답변: IP 주소는 네트워크 상의 논리적 주소로, 장치가 인터넷에서 통신하기 위해 사용됩니다. MAC 주소는 네트워크 인터페이스 카드(NIC)의 물리적 주소로, 로컬 네트워크 내에서 장치를 식별합니다.

    질문: SSL/TLS의 목적은 무엇인가요?

    • 답변: SSL/TLS는 인터넷 통신에서 데이터의 기밀성과 무결성을 보장하는 보안 프로토콜입니다. 이를 통해 데이터가 전송되는 동안 도청이나 변조를 방지합니다.

    질문: 네트워크 토폴로지란 무엇인가요?

    • 답변: 네트워크 토폴로지는 네트워크 구성 요소 간의 물리적 또는 논리적 연결 형태를 나타냅니다. 주요 토폴로지 유형으로는 버스, 스타, 링, 메시 토폴로지가 있습니다.

    질문: 방화벽(Firewall)이란 무엇인가요?

    • 답변: 방화벽은 네트워크 보안을 위한 장치나 소프트웨어로, 승인되지 않은 접근을 차단하고 허가된 트래픽만을 통과시킵니다. 이를 통해 네트워크를 외부 위협으로부터 보호합니다.

    질문: 운영체제의 주요 기능은 무엇인가요?

    • 답변: 운영체제는 하드웨어와 소프트웨어 간의 중재자 역할을 하며, 주요 기능으로는 프로세스 관리, 메모리 관리, 파일 시스템 관리, 장치 관리, 네트워크 관리 등이 있습니다.

    질문: 멀티스레딩이란 무엇인가요?

    • 답변: 멀티스레딩은 하나의 프로세스 내에서 여러 스레드를 동시에 실행하는 기술입니다. 각 스레드는 독립적인 실행 흐름을 가지며, CPU 사용률을 높이고 응답성을 향상시킵니다.

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

    • 답변: 가상 메모리는 실제 물리적 메모리보다 큰 주소 공간을 제공하는 메모리 관리 기법입니다. 이를 통해 프로그램은 제한된 물리적 메모리 공간에서 실행되면서도 큰 메모리 공간을 사용하는 것처럼 동작할 수 있습니다.

    질문: 스케줄링 알고리즘의 종류에는 어떤 것이 있나요?

    • 답변: 스케줄링 알고리즘은 CPU를 프로세스에 할당하는 방법입니다. 주요 알고리즘으로는 FCFS(First-Come, First-Served), SJF(Shortest Job First), Round Robin, Priority Scheduling 등이 있습니다.

    질문: 교착 상태(Deadlock)란 무엇인가요?

    • 답변: 교착 상태는 두 개 이상의 프로세스가 서로의 자원을 기다리며 영원히 블로킹되는 상태입니다. 이를 방지하기 위해 자원 할당 그래프를 사용하거나, 교착 상태 회피 알고리즘을 적용할 수 있습니다.

    질문: 스레싱(Thrashing)이란 무엇인가요?

    • 답변: 스레싱은 과도한 페이지 교체 작업으로 인해 시스템 성능이 급격히 저하되는 현상입니다. 주로 가상 메모리를 과도하게 사용할 때 발생하며, 이를 해결하기 위해 작업 집합 모델을 사용할 수 있습니다.

    질문: 캐시 메모리의 역할은 무엇인가요?

    • 답변: 캐시 메모리는 CPU와 메인 메모리 간의 속도 차이를 줄이기 위해 사용되는 고속 메모리입니다. 자주 사용되는 데이터를 캐시에 저장하여 접근 시간을 단축합니다.

    질문: 파일 시스템이란 무엇인가요?

    • 답변: 파일 시스템은 데이터 저장소에서 파일과 디렉터리를 관리하는 시스템입니다. 주요 기능으로는 파일 생성, 삭제, 읽기, 쓰기, 접근 권한 관리 등이 있으며, 대표적인 파일 시스템으로는 NTFS, FAT, ext 등이 있습니다.

    질문: RAID란 무엇인가요?

    • 답변: RAID(Redundant Array of Independent Disks)는 여러 개의 하드 디스크를 하나의 논리적 단위로 결합하여 성능 향상 및 데이터 중복을 제공하는 기술입니다. RAID 레벨에는 RAID 0, RAID 1, RAID 5, RAID 10 등이 있습니다.

    질문: 메모리 단편화란 무엇인가요?

    • 답변: 메모리 단편화는 메모리 공간이 작은 블록들로 나뉘어 사용되지 못하는 현상입니다. 내부 단편화는 할당된 메모리 블록 내의 사용되지 않는 공간을 의미하며, 외부 단편화는 할당되지 않은 작은 메모리 블록들이 흩어져 있어 큰 메모리 블록을 할당할 수 없는 상태를 의미합니다.

    질문: BFS와 DFS의 차이점은 무엇인가요?

    • 답변: BFS(Breadth-First Search)는 너비 우선 탐색으로, 큐를 사용하여 그래프의 모든 이웃 노드를 탐색합니다. DFS(Depth-First Search)는 깊이 우선 탐색으로, 스택을 사용하여 그래프의 한 경로를 끝까지 탐색한 후 다른 경로를 탐색합니다.

    질문: 해시 함수의 충돌 해결 방법에는 어떤 것이 있나요?

    • 답변: 해시 함수의 충돌 해결 방법에는 체이닝(Chaining)과 개방 주소법(Open Addressing)이 있습니다. 체이닝은 동일한 해시 값을 가진 항목들을 연결 리스트로 저장하고, 개방 주소법은 충돌 발생 시 다른 해시 값을 찾아 빈 슬롯에 저장합니다.

    질문: 이진 탐색 트리의 특징은 무엇인가요?

    • 답변: 이진 탐색 트리는 각 노드가 최대 두 개의 자식을 가지며, 왼쪽 자식은 부모 노드보다 작고, 오른쪽 자식은 부모 노드보다 큽니다. 이를 통해 효율적인 검색, 삽입, 삭제 작업이 가능합니다.

    질문: 그래프의 인접 행렬과 인접 리스트의 차이점은 무엇인가요?

    • 답변: 인접 행렬은 정방 행렬로 그래프의 모든 간선 정보를 저장하며, 간선 존재 여부를 빠르게 확인할 수 있습니다. 인접 리스트는 각 노드에 연결된 노드들을 리스트로 저장하여 메모리를 효율적으로 사용합니다.

    질문: 최소 신장 트리(MST)란 무엇인가요?

    • 답변: 최소 신장 트리는 그래프의 모든 노드를 포함하면서 간선의 가중치 합이 최소가 되는 트리입니다. 대표적인 알고리즘으로는 크루스칼 알고리즘과 프림 알고리즘이 있습니다.

    질문: 다익스트라 알고리즘이란 무엇인가요?

    • 답변: 다익스트라 알고리즘은 가중치 그래프에서 출발 노드로부터 다른 모든 노드까지의 최단 경로를 찾는 알고리즘입니다. 우선순위 큐를 사용하여 효율적으로 최단 경로를 계산합니다.

    질문: 힙(Heap)이란 무엇인가요?

    • 답변: 힙은 완전 이진 트리의 일종으로, 부모 노드가 자식 노드보다 크거나 작은 특성을 가집니다. 최대 힙은 부모 노드가 자식 노드보다 크고, 최소 힙은 부모 노드가 자식 노드보다 작습니다. 힙은 우선순위 큐 구현에 사용됩니다.

    질문: AVL 트리란 무엇인가요?

    • 답변: AVL 트리는 자가 균형 이진 탐색 트리로, 각 노드의 자식 노드 높이 차이가 1 이하가 되도록 유지합니다. 이를 통해 검색, 삽입, 삭제 작업의 시간 복잡도를 O(log n)으로 유지합니다.

    질문: 해시 함수란 무엇인가요?

    • 답변: 해시 함수는 임의 크기의 데이터를 고정 크기의 값으로 매핑하는 함수입니다. 해시 함수는 데이터의 빠른 검색을 가능하게 하며, 해시 테이블의 기본 요소입니다.

    질문: 큐의 주요 연산은 무엇인가요?

    • 답변: 큐의 주요 연산은 요소를 추가하는 enqueue, 요소를 제거하는 dequeue, 맨 앞 요소를 확인하는 peek(front)입니다. 큐는 FIFO(First-In-First-Out) 원칙을 따릅니다.

    질문: 코드 리팩토링이란 무엇인가요?

    • 답변: 코드 리팩토링은 기능을 변경하지 않으면서 코드를 구조적으로 개선하는 과정입니다. 이를 통해 코드의 가독성, 유지보수성, 성능을 향상시킵니다.

    질문: 소프트웨어 버전 관리의 중요성은 무엇인가요?

    • 답변: 소프트웨어 버전 관리는 프로젝트의 변경 내역을 기록하고, 여러 버전을 관리하며, 협업을 용이하게 합니다. 이를 통해 충돌을 방지하고, 이전 버전으로 쉽게 되돌릴 수 있습니다.

    질문: 애자일 개발 방법론이란 무엇인가요?

    • 답변: 애자일 개발 방법론은 적응적 계획, 진화적 개발, 조기 전달, 지속적인 개선을 중시하는 소프트웨어 개발 접근 방식입니다. 작은 단위의 작업을 반복적으로 수행하여 빠르게 가치를 제공하는 것이 목표입니다.

    질문: CI/CD란 무엇인가요?

    • 답변: CI(Continuous Integration)와 CD(Continuous Deployment/Continuous Delivery)는 소프트웨어 개발의 자동화된 프로세스입니다. CI는 코드 변경을 지속적으로 통합하고 테스트하는 과정이며, CD는 변경 사항을 자동으로 배포하거나 배포 준비 상태로 유지합니다.

    질문: 마이크로서비스 아키텍처란 무엇인가요?

    • 답변: 마이크로서비스 아키텍처는 애플리케이션을 독립적으로 배포되고 확장 가능한 작은 서비스로 분리하는 접근 방식입니다. 각 서비스는 고유한 기능을 수행하며, 서로 독립적으로 배포 및 유지보수할 수 있습니다.

    질문: DRY 원칙이란 무엇인가요?

    • 답변: DRY(Don't Repeat Yourself) 원칙은 코드 중복을 피하고, 재사용 가능한 모듈을 작성하는 것을 강조하는 원칙입니다. 이를 통해 코드의 유지보수성을 높이고, 오류를 줄일 수 있습니다.

    질문: SRP(Single Responsibility Principle)란 무엇인가요?

    • 답변: SRP는 단일 책임 원칙으로, 하나의 클래스나 모듈은 하나의 책임만 가져야 한다는 원칙입니다. 이를 통해 코드의 응집도를 높이고, 변경의 영향을 최소화할 수 있습니다.

    질문: 테스트 커버리지란 무엇인가요?

    • 답변: 테스트 커버리지는 소프트웨어의 코드 중 테스트된 코드의 비율을 나타내는 지표입니다. 높은 테스트 커버리지는 코드의 품질과 안정성을 보장하는 데 도움을 줍니다.

    질문: 모놀리식 아키텍처와 마이크로서비스 아키텍처의 차이점은 무엇인가요?

    • 답변: 모놀리식 아키텍처는 모든 기능이 하나의 단일 애플리케이션으로 배포되는 구조입니다. 반면, 마이크로서비스 아키텍처는 기능을 독립적인 서비스로 분리하여 배포 및 관리합니다. 마이크로서비스는 독립적인 배포와 확장이 가능하지만, 모놀리식 아키텍처는 단순한 배포와 관리가 용이합니다.

    질문: 코드 리뷰의 중요성은 무엇인가요?

    • 답변: 코드 리뷰는 다른 개발자가 작성한 코드를 검토하여 오류를 발견하고, 코드 품질을 개선하며, 지식을 공유하는 과정입니다. 이를 통해 코드의 가독성, 유지보수성, 안정성을 높일 수 있습니다.

    질문 : Java에서 클래스와 객체의 차이는 무엇인가요?

     

    답변: 클래스는 객체를 생성하기 위한 설계도 또는 틀입니다. 객체는 클래스를 기반으로 생성된 인스턴스이며, 클래스의 속성과 메서드를 실제로 사용할 수 있습니다.

    질문 : 배열과 리스트의 차이는 무엇인가요?

     

    답변: 배열은 고정된 크기의 자료구조로, 선언 시 크기를 지정해야 하며, 크기를 변경할 수 없습니다. 리스트는 동적 크기의 자료구조로, 요소의 추가와 삭제가 용이하며, 크기를 자유롭게 변경할 수 있습니다.

     

    질문 : Java에서 == 연산자와 equals() 메서드의 차이는 무엇인가요?

     

    답변: == 연산자는 두 객체의 참조 주소를 비교하여 동일한 객체를 참조하는지 확인합니다. equals() 메서드는 두 객체의 실제 값을 비교하여 논리적으로 동일한지 확인합니다.

     

    질문 : HTTP와 HTTPS의 차이는 무엇인가요?

     

    답변: HTTP는 데이터를 암호화하지 않고 전송하는 프로토콜입니다. HTTPS는 SSL/TLS를 사용하여 데이터를 암호화하여 전송함으로써 데이터의 기밀성과 무결성을 보장합니다.

     

    질문 : API란 무엇인가요?

     

    답변: API(Application Programming Interface)는 서로 다른 소프트웨어 시스템 간의 상호 작용을 위한 명령어, 함수, 프로토콜의 집합입니다. 이를 통해 애플리케이션 간 데이터와 기능을 공유할 수 있습니다.

     

    질문 : Git에서 commit과 push의 차이는 무엇인가요?

     

    답변: commit은 로컬 저장소에 변경 사항을 기록하는 명령어입니다. push는 로컬 저장소의 변경 사항을 원격 저장소에 업로드하는 명령어입니다.

     

    질문 : Java에서 예외(Exception)와 오류(Error)의 차이는 무엇인가요?

     

    답변: 예외는 프로그램 실행 중에 발생할 수 있는 예측 가능한 문제를 나타내며, 보통 코드에서 처리할 수 있습니다. 오류는 시스템 레벨에서 발생하는 심각한 문제로, 보통 프로그램에서 복구할 수 없습니다.

     

    질문 : HTML과 CSS의 역할은 무엇인가요?

     

    답변: HTML은 웹 페이지의 구조와 내용을 정의하는 마크업 언어입니다. CSS는 웹 페이지의 스타일과 레이아웃을 정의하는 스타일시트 언어로, HTML 요소의 시각적 표현을 담당합니다.

     

    질문: 변수란 무엇인가요?

    답변: 변수는 데이터를 저장하는 메모리 공간에 대한 이름입니다. 변수는 값을 저장하고 이를 참조하거나 수정할 수 있도록 합니다.

     

    질문: 상수란 무엇인가요?

     

    답변: 상수는 값을 한 번만 할당할 수 있으며, 이후 변경할 수 없는 변수입니다. Java에서는 final 키워드를 사용하여 상수를 선언합니다.

     

    질문: 조건문이란 무엇인가요?

     

    답변: 조건문은 주어진 조건에 따라 코드 블록을 실행하거나 실행하지 않도록 제어하는 구문입니다. 대표적으로 if, else if, else 문이 있습니다.

     

    질문: 반복문이란 무엇인가요?

     

    답변: 반복문은 특정 코드 블록을 여러 번 반복 실행하는 구문입니다. 대표적인 반복문으로는 for, while, do-while 문이 있습니다.

     

    질문: 함수(메서드)란 무엇인가요?

     

    답변: 함수(또는 메서드)는 특정 작업을 수행하는 코드 블록으로, 재사용 가능하도록 정의됩니다. 함수는 호출될 때 실행됩니다.

     

    질문: 리스트와 배열의 차이는 무엇인가요?

     

    답변: 배열은 고정된 크기를 가지며, 크기를 변경할 수 없습니다. 리스트는 동적 크기를 가지며, 요소의 추가 및 삭제가 용이합니다.

     

    질문: Java의 기본 데이터 타입은 무엇인가요?

     

    답변: Java의 기본 데이터 타입은 byte, short, int, long, float, double, char, boolean이 있습니다.

     

    질문: Java에서 null이란 무엇인가요?

     

    답변: null은 참조 타입 변수가 어떤 객체도 가리키지 않음을 나타내는 값입니다.

     

    질문: 상속이란 무엇인가요?

     

    답변: 상속은 기존 클래스를 기반으로 새로운 클래스를 생성하는 객체지향 프로그래밍의 개념입니다. 상속을 통해 코드 재사용성과 확장성을 높일 수 있습니다.

     

    질문: 다형성이란 무엇인가요?

     

    답변: 다형성은 동일한 인터페이스나 부모 클래스를 통해 다양한 형태의 객체를 사용할 수 있게 하는 객체지향 프로그래밍의 원칙입니다.

     

    질문: 추상화란 무엇인가요?

     

    답변: 추상화는 불필요한 세부 사항을 숨기고, 중요한 개념이나 기능만을 표현하는 객체지향 프로그래밍의 원칙입니다.

     

    질문: 인터페이스란 무엇인가요?

     

    답변: 인터페이스는 메서드 시그니처만을 정의하며, 구현은 하지 않는 추상 타입입니다. 인터페이스를 구현하는 클래스는 해당 메서드를 반드시 구현해야 합니다.

     

    질문: 오버로딩과 오버라이딩의 차이는 무엇인가요?

     

    답변: 오버로딩은 같은 이름의 메서드를 여러 개 정의하되, 매개변수 목록이 다르게 하는 것입니다. 오버라이딩은 상속받은 메서드를 자식 클래스에서 재정의하는 것입니다.

     

    질문: 추상 클래스란 무엇인가요?

     

    답변: 추상 클래스는 하나 이상의 추상 메서드를 포함하는 클래스입니다. 추상 메서드는 구현이 없으며, 하위 클래스에서 반드시 구현해야 합니다.

     

    질문: 접근 제어자란 무엇인가요?

     

    답변: 접근 제어자는 클래스, 메서드, 변수의 접근 권한을 설정하는 키워드입니다. Java의 접근 제어자는 public, protected, default, private가 있습니다.

     

    질문: 클래스란 무엇인가요?

     

    답변: 클래스는 객체를 생성하기 위한 청사진 또는 틀로, 속성(필드)과 동작(메서드)을 정의합니다.

     

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

     

    답변: 연결 리스트는 각 요소가 다음 요소를 가리키는 포인터를 포함하는 자료구조입니다. 요소의 삽입과 삭제가 배열보다 용이합니다.

     

    질문: 트리란 무엇인가요?

     

    답변: 트리는 계층 구조를 나타내는 자료구조로, 루트 노드와 자식 노드들로 구성됩니다. 이진 트리는 각 노드가 최대 두 개의 자식을 가질 수 있는 트리입니다.

     

    질문: 그래프란 무엇인가요?

     

    답변: 그래프는 노드(정점)와 노드 간의 연결(간선)으로 구성된 자료구조입니다. 방향성 여부와 가중치 여부에 따라 다양한 유형의 그래프가 있습니다.

     

    질문: 정렬 알고리즘이란 무엇인가요?

     

    답변: 정렬 알고리즘은 주어진 데이터를 일정한 순서로 재배열하는 알고리즘입니다. 대표적인 정렬 알고리즘으로는 버블 정렬, 삽입 정렬, 퀵 정렬, 병합 정렬 등이 있습니다.

     

    질문: 검색 알고리즘이란 무엇인가요?

     

    답변: 검색 알고리즘은 데이터 집합에서 특정 값을 찾는 알고리즘입니다. 대표적인 검색 알고리즘으로는 선형 검색과 이진 검색이 있습니다.

     

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

     

    답변: 이진 탐색은 정렬된 배열에서 중간 값을 기준으로 검색 범위를 반씩 줄여가며 값을 찾는 알고리즘입니다. 시간 복잡도는 O(log n)입니다.

     

    질문: 재귀 함수란 무엇인가요?

     

    답변: 재귀 함수는 함수가 자기 자신을 호출하는 함수입니다. 재귀는 문제를 더 작은 문제로 분할하여 해결할 때 유용합니다.

     

    질문: 버전 관리란 무엇인가요?

     

    답변: 버전 관리는 소스 코드의 변경 이력을 기록하고, 여러 버전을 관리하는 시스템입니다. 대표적인 버전 관리 시스템으로는 Git이 있습니다.

     

    질문: Git에서 clone과 pull의 차이는 무엇인가요?

     

    답변: clone은 원격 저장소를 로컬로 복사하는 명령어입니다. pull은 원격 저장소의 변경 사항을 로컬 저장소로 가져오는 명령어입니다.

     

    질문: IDE란 무엇인가요?

     

    답변: IDE(통합 개발 환경)는 코드 작성, 디버깅, 컴파일 등을 지원하는 소프트웨어 도구입니다. 대표적인 IDE로는 IntelliJ IDEA, Eclipse, Visual Studio Code 등이 있습니다.

     

    질문: 컴파일러와 인터프리터의 차이는 무엇인가요?

     

    답변: 컴파일러는 소스 코드를 한 번에 기계어로 변환하는 프로그램입니다. 인터프리터는 소스 코드를 한 줄씩 읽고 실행하는 프로그램입니다.

     

    질문: 빌드 도구란 무엇인가요?

     

    답변: 빌드 도구는 소스 코드를 컴파일하고, 테스트를 실행하며, 배포 가능한 형태로 패키징하는 자동화 도구입니다. 대표적인 빌드 도구로는 Maven, Gradle이 있습니다.

     

    질문: CI/CD란 무엇인가요?

     

    답변: CI(지속적 통합)와 CD(지속적 배포/전달)는 소프트웨어 개발의 자동화된 프로세스를 통해 코드 변경 사항을 지속적으로 통합하고, 배포하는 방법론입니다.

     

    질문: 유닛 테스트란 무엇인가요?

     

    답변: 유닛 테스트는 소프트웨어의 작은 단위(주로 메서드나 클래스)를 독립적으로 테스트하는 방법입니다. 이를 통해 코드의 정확성을 검증할 수 있습니다.

     

    질문: TDD란 무엇인가요?

     

    답변: TDD(테스트 주도 개발)는 먼저 테스트를 작성하고, 테스트를 통과하는 코드를 작성하는 소프트웨어 개발 방법론입니다.

     

    질문: RESTful API란 무엇인가요?

     

    답변: RESTful API는 HTTP 프로토콜을 기반으로 하는 웹 서비스로, 자원(Resource)을 URI로 표현하고, HTTP 메서드를 사용하여 자원에 대한 작업을 수행합니다.

     

    질문: JSON과 XML의 차이는 무엇인가요?

     

    답변: JSON은 경량의 데이터 교환 형식으로, 사람이 읽기 쉽고, 기계가 분석하고 생성하기 쉬운 구조입니다. XML은 데이터 저장 및 전송을 위한 마크업 언어로, 태그 기반의 계층적 구조를 가집니다.

     

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

     

    답변: 데이터베이스는 데이터를 구조화하여 저장하고 관리하는 시스템입니다. 데이터베이스 관리 시스템(DBMS)을 통해 데이터를 효율적으로 관리할 수 있습니다.

     

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

     

    답변: 관계형 데이터베이스는 테이블 형식으로 데이터를 저장하며, 테이블 간의 관계를 통해 데이터를 연결합니다. SQL을 사용하여 데이터를 관리합니다.

     

    질문: SQL이란 무엇인가요?

     

    답변: SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 관리하고 조작하기 위한 표준 언어입니다.

     

    질문: SQL에서 SELECT 문은 무엇을 하나요?

     

    답변: SELECT 문은 데이터베이스에서 데이터를 조회하는 SQL 명령어입니다.

     

    질문: SQL에서 INSERT 문은 무엇을 하나요?

     

    답변: INSERT 문은 데이터베이스 테이블에 새로운 행을 삽입하는 SQL 명령어입니다.

     

    질문: SQL에서 UPDATE 문은 무엇을 하나요?

     

    답변: UPDATE 문은 데이터베이스 테이블의 기존 데이터를 수정하는 SQL 명령어입니다.

     

    질문: SQL에서 DELETE 문은 무엇을 하나요?

     

    답변: DELETE 문은 데이터베이스 테이블에서 기존 데이터를 삭제하는 SQL 명령어입니다.

     

    질문: 기본 키(Primary Key)란 무엇인가요?

     

    답변: 기본 키는 테이블에서 각 행을 고유하게 식별하는 하나 이상의 열로 구성됩니다. 기본 키는 중복 값을 가질 수 없으며, 항상 고유합니다.

     

    질문: 외래 키(Foreign Key)란 무엇인가요?

     

    답변: 외래 키는 한 테이블의 열이 다른 테이블의 기본 키를 참조하는 키입니다. 외래 키는 테이블 간의 관계를 정의합니다.

     

    질문: 인덱스란 무엇인가요?

     

    답변: 인덱스는 데이터베이스 테이블의 검색 성능을 향상시키기 위해 사용되는 자료구조입니다. 인덱스를 사용하면 데이터를 더 빠르게 조회할 수 있습니다.

     

     

    반응형

    '면접질문' 카테고리의 다른 글

    BackEnd 면접 질문 복기 (java, cs, DB 등)  (0) 2024.06.10

    댓글

Designed by Tistory.