CS를 공부하고 관련 기술면접에 나올법한 질문들을 뽑아보고 답변을 작성해 보았다.
CPU는 중앙처리장치로 컴퓨터의 두뇌 역할을 하는 중요한 부품입니다. 명령어를 해석하여 연산을 수행하는 역할을 하며 컴퓨터의 성능에 가장 크게 관여합니다.GPU는 그래픽처리장치로 그래픽 연산을 하기 위해 병렬처리를 할 수 있도록 설계되어 있는 장치입니다.주기억장치는 컴퓨터가 구동될 때 수치, 자료, 명령등을 기억하며 프로그램 및 운영체제가 실행하도록 해줍니다.
RAM은 휘발성 메모리로 컴퓨터를 끄게 되면 RAM에 적재된 모든 데이터는 삭제됩니다.
반대로 보조기억장치는 비휘발성 메모리로 운영체제 및 일반 프로그램, 여러 지워지면 안 되는 데이터들을 저장합니다. RAM보다 속도가 느려 데이터를 적재하는 용도로만 쓰입니다.
하드디스크는 플래터에 물리적으로 접근하여 데이터를 적재하고 SSD는 반도체에 전기 신호를 이용하여 데이터를 적재하는 보조기억장치입니다.
운영체제란 사용자가 컴퓨터를 조작 및 제어하고 작업의 편의성을 제공하기 위한 시스템 소프트 웨어 입니다. windows, MacOS, Linux등을 예시로 들 수 있습니다.운영체제의 목적은 일정 시간내에 시스템이 처리하는 처리능력, 작업을 완료할때까지 걸리는 반환시간, 요청이 있을 때 즉시 사용 가능한 사용가능도, 주어진 요청을 정확하게 해결하는 신뢰도 입니다.자료구조란 데이터를 효과적으로 저장하기 위해 어떤 논리나 규칙으로 자료를 모아놓은 구조입니다.자료구조의 여러 가지 형태로는 크게 선형 구조와 비선형 구조로 나눌 수 있으며 선형구조란 자료들 간에 관계가 1:1로 순차적으로 나열되어 있는 것을 의미합니다. 선형구조에는 배열, 리스트, 스택, 큐가 있습니다. 비선형 구조란 자료들 간에 관계가 1:N으로 나열되어 있는 것을 의미합니다. 비선형 구조에는 그래프, 트리가 있습니다.컴파일러란 고급 프로그래밍 언어로 작성된 소스코드를 기계어로 번역 및 실행하기 위한 프로그램 입니다. C언어, JAVA와 같은 언어는 컴파일러에 의해 컴파일되고 실행됩니다.인터프리터란 컴파일러와 마찬가지로 고급 프로그래밍 언어로 작성된 소스코드를 기계어로 번역 및 실행하기 위한 프로그램입니다. 둘의 큰 차이점은 한줄씩 소스코드를 번역하고 실행한다는 점입니다. Python, javascript와 같은 언어들이 인터프리터에 의해 번역 및 실행 됩니다.코드 영역은 프로그램을 실행하기 위해 명령어들이 저장되는 공간, 데이터 영역은 정적 변수, 전역 변수와 같은 데이터들이 저장되고, 힙 영역은 동적 메모리 할당을 위한 곳으로 프로그래머가 직접 사용 및 관리해야하는 메모리 영역입니다. 마지막으로 스택 영역은 정적 메모리 할당을 위한 곳으로 함수, 지역변수, 매개변수 등을 사용하기 위한 공간입니다.폭포수 방법론과 애자일 방법론이 있습니다.폭포수 방법론은 하향식 방법으로 가장 오래된 개발 방법으로 계획-> 설계-> 개발-> 시험-> 유지보수 순차적으로 진행하며 소프트웨어 개발 생명 주기가 굉강히 깁니다. 때문에 매우 큰 규모의 프로젝트에 적합하며 이미 진행 된 작업에 대해서는 변경 및 수정이 어렵다는 단점이 있습니다.애자일 방법론은 반복적이고 점진적으로 개발하는 방법으로 계획-> 설계-> 개발-> 시험-> 유지보수 순차적으로 진행하되 소프트웨어 개발 생명 주기가 굉장히 짧기 때문에 여러번 반복하며 점진적으로 개발해 나갑니다. 때문에 이해관계자의 피드백을 빠르게 반영할 수 있지만 개발 계획을 세우기 어려울 수 있습니다.디자인 패턴은 소프트웨어 설계 및 구현할 때 어떠한 공통된 구조를 띄는 형태를 말합니다.형상 관리란 소프트웨어의 변경사항을 추적하고 통제하기 위한 작업을 의미합니다.