CS 기술면접 예상 질문과 답변

yun·2024년 8월 6일
post-thumbnail

CS를 공부하고 관련 기술면접에 나올법한 질문들을 뽑아보고 답변을 작성해 보았다.

컴퓨터 구조와 운영체제

  1. CPU와 GPU에 대해 설명하세요.
  • CPU중앙처리장치로 컴퓨터의 두뇌 역할을 하는 중요한 부품입니다. 명령어를 해석하여 연산을 수행하는 역할을 하며 컴퓨터의 성능에 가장 크게 관여합니다.
  • GPU그래픽처리장치로 그래픽 연산을 하기 위해 병렬처리를 할 수 있도록 설계되어 있는 장치입니다.
  1. 주기억장치와 보조기억장치에 대해 설명하세요.
  • 주기억장치는 컴퓨터가 구동될 때 수치, 자료, 명령등을 기억하며 프로그램 및 운영체제가 실행하도록 해줍니다.
    RAM은 휘발성 메모리로 컴퓨터를 끄게 되면 RAM에 적재된 모든 데이터는 삭제됩니다.

  • 반대로 보조기억장치는 비휘발성 메모리로 운영체제 및 일반 프로그램, 여러 지워지면 안 되는 데이터들을 저장합니다. RAM보다 속도가 느려 데이터를 적재하는 용도로만 쓰입니다.
    하드디스크는 플래터에 물리적으로 접근하여 데이터를 적재하고 SSD는 반도체에 전기 신호를 이용하여 데이터를 적재하는 보조기억장치입니다.

  1. 운영체제와 목적에 대해 설명하세요.
  • 운영체제란 사용자가 컴퓨터를 조작 및 제어하고 작업의 편의성을 제공하기 위한 시스템 소프트 웨어 입니다. windows, MacOS, Linux등을 예시로 들 수 있습니다.
  • 운영체제의 목적은 일정 시간내에 시스템이 처리하는 처리능력, 작업을 완료할때까지 걸리는 반환시간, 요청이 있을 때 즉시 사용 가능한 사용가능도, 주어진 요청을 정확하게 해결하는 신뢰도 입니다.

소프트웨어 설계

  1. 자료구조와 자료구조의 여러 가지 형태를 설명하세요.
  • 자료구조란 데이터를 효과적으로 저장하기 위해 어떤 논리나 규칙으로 자료를 모아놓은 구조입니다.
  • 자료구조의 여러 가지 형태로는 크게 선형 구조와 비선형 구조로 나눌 수 있으며 선형구조란 자료들 간에 관계가 1:1로 순차적으로 나열되어 있는 것을 의미합니다. 선형구조에는 배열, 리스트, 스택, 큐가 있습니다. 비선형 구조란 자료들 간에 관계가 1:N으로 나열되어 있는 것을 의미합니다. 비선형 구조에는 그래프, 트리가 있습니다.
  1. 컴파일러와 인터프리터에 대해 설명하세요.
  • 컴파일러란 고급 프로그래밍 언어로 작성된 소스코드를 기계어로 번역 및 실행하기 위한 프로그램 입니다. C언어, JAVA와 같은 언어는 컴파일러에 의해 컴파일되고 실행됩니다.
  • 인터프리터란 컴파일러와 마찬가지로 고급 프로그래밍 언어로 작성된 소스코드를 기계어로 번역 및 실행하기 위한 프로그램입니다. 둘의 큰 차이점은 한줄씩 소스코드를 번역하고 실행한다는 점입니다. Python, javascript와 같은 언어들이 인터프리터에 의해 번역 및 실행 됩니다.
  1. 메모리 영역에 대해 설명하세요.
  • 메모리는 작업을 효율적으로 하기 위해 다양한 영역들로 나뉘는데 코드 영역, 데이터 영역, Heap 영역, Stack 영역 으로 나뉩니다. 이 영역들은 운영체제에 의해 관리됩니다.
  • 코드 영역은 프로그램을 실행하기 위해 명령어들이 저장되는 공간, 데이터 영역은 정적 변수, 전역 변수와 같은 데이터들이 저장되고, 힙 영역은 동적 메모리 할당을 위한 곳으로 프로그래머가 직접 사용 및 관리해야하는 메모리 영역입니다. 마지막으로 스택 영역은 정적 메모리 할당을 위한 곳으로 함수, 지역변수, 매개변수 등을 사용하기 위한 공간입니다.
  1. 소프트웨어 개발 방법론이란?
  • 소프트웨어 개발 방법론에는 폭포수 방법론애자일 방법론이 있습니다.
  • 폭포수 방법론은 하향식 방법으로 가장 오래된 개발 방법으로 계획-> 설계-> 개발-> 시험-> 유지보수 순차적으로 진행하며 소프트웨어 개발 생명 주기가 굉강히 깁니다. 때문에 매우 큰 규모의 프로젝트에 적합하며 이미 진행 된 작업에 대해서는 변경 및 수정이 어렵다는 단점이 있습니다.
  • 애자일 방법론은 반복적이고 점진적으로 개발하는 방법으로 계획-> 설계-> 개발-> 시험-> 유지보수 순차적으로 진행하되 소프트웨어 개발 생명 주기가 굉장히 짧기 때문에 여러번 반복하며 점진적으로 개발해 나갑니다. 때문에 이해관계자의 피드백을 빠르게 반영할 수 있지만 개발 계획을 세우기 어려울 수 있습니다.
  1. 디자인 패턴과 형상관리에 대해 설명하세요.
    -디자인 패턴은 소프트웨어 설계 및 구현할 때 어떠한 공통된 구조를 띄는 형태를 말합니다.
    -형상 관리란 소프트웨어의 변경사항을 추적하고 통제하기 위한 작업을 의미합니다.

0개의 댓글