본문 바로가기

면접

cs 면접 스터디

질문 : SRAM VS DRAM의 차이점은?

  • 답변 : SRAM은 정적 / DRAM은 동적메모리임. SRAM은 전원 공급이 되는 동안은 기록된 내용이 지워지지 않기 때문에 재충전 필요X + 접근 속도가 빠르고 가격이 비싸다는 특징이 있으며 주로 캐시메모리나 레지스터로 사용됨 BUT,!!!! DRAM은 전원이 계속 공급되어도 재충전 필요O + 주로 대용량 기억장치에 사용됨
  • 꼬리질문 : 둘 중에서 우리가 주로 표현하는 RAM은?
    • 답변 : 우리가 주로 RAM이라고 표현하는 것은 DRAM이다!
    • 꼬리질문 : 그럼 각각 언제 많이 사용되나?
      • 답변 : SRAM은 주로 임베디드 컴퓨터, data, 변수, stack 저장용, DRAM은 프로그램 저장용,data, 변수 저장용 대형 컴퓨터

질문 : 폰노이만 구조의 장점과 단점은?

  • 답변 : 장점:내장 방식 컴퓨터이다 하드웨어는 그대로 두고 소프트웨어만 교체하면 다양한 작업을 처리할 수 있기 때문에 편의성과 범용성이 향상됨 단점: 명령과 데이터메모리가 하나의 버스를 이용하기 때문에 병목현상이 일어난다.
  • 꼬리질문 : 병목현상 단점을 해결할수있는 구조가 있나?
    • 답변 : 하버드 구조는 명령과 데이터메모리가 물리적으로 다른 버스를 이용함, 따라서 병목현상을 생기지 않음
    • 꼬리질문 : 그럼 왜 현재의 컴퓨터는 대부분 폰노이만 구조인가??
      • 답변 : 하버드 구조를 만들려면 더 많은 전기회로가 필요하다. 또한 두개의 버스와 메모리를 가지게 되므로 CPU코어에서 공간을 많이 차지하게된다.

질문 : CPU의 주요 구성 요소들과 각각의 역할을 간단히 설명해보세요.

  • 답변 :
  1. 제어 장치(Control Unit): 제어 장치는 명령어의 실행 순서를 관리하고 , 실행할 작업을 결정하는 역할을 합니다. 제어 신호를 생성하여 다른 하드웨어 구성 요소를 제어합니다.
  2. 연산 장치(ALU - Arithmetic Logic Unit): ALU는 산술 및 논리 연산을 수행하는 부분입니다. 이 부분에서 숫자 연산, 비교, 논리 연산 등이 처리됩니다.
  3. 레지스터(Registers): 레지스터는 CPU 내부에 위치한 고속 데이터 저장소입니다. 레지스터는 데이터를 일시적으로 저장하거나 연산을 수행할 때 사용됩니다. 레지스터의 크기와 개수는 CPU의 성능과 연관이 있습니다.
  4. 캐시 메모리(Cache Memory): 캐시 메모리는 빠른 속도로 데이터에 접근하기 위한 고속 메모리입니다. CPU와 주 메모리(램) 사이에서 데이터를 주고 받는 역할을 하며, 데이터 캐싱을 통해 실행 속도를 향상 시킵니다.
  • 꼬리질문 : 레지스터의 구분
    • 답변 : 용도에 따라 범용 레지스터와 특수 목적 레지스터로 구분됩니다.
    • 꼬리질문 : 각각 설명해 달라
      • 답변 : 범용 레지스터는 연산에 필요한 데이터나 결과를 임시 저장하는 레지스터이고 특수 목적 레지스터는 말 그대로 특수한 목적을 위해 사용되는 레지스터이다. 예시로는 다음에 실행할 명령어를 저장하는 프로그램 카운터와 현재 실행 중인 명령어를 저장하는 명령어 레지스터 등이 있습니다.

질문 : CPU구성에 있는 캐시메모리와 메모리 그룹의 캐시메모리의 다른점을 설명해보세요.

  • 답변 : CPU 구성에 있는 캐시 메모리는 L1캐시메모리 이고, 메모리 그룹에 속한 CPU와 별개로 구성되어 있는 캐시메모리는 L2캐시 메모리, L3 캐시 메모리 라고 부릅니다. L2,L3 캐시메모리는 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 놓고, CPU가 필요한 데이터를 캐시에서 먼저 찾도록 하여 시스템 성능을 향상시켜 줍니다.
  • 꼬리질문 : L1, L2, L3 캐시 메모리의 성능 차이는 어떻게 되나요?
    • 답변 : 가장 큰 차이는 크기, 속도, 위치입니다.
    L1 L2 L3(플래그십 CPU)
    크기 캐시 저장 용량은 작다. L1보다 훨씬 크다 코어당 512KB
    각 코어에 자체 L1및 L2 캐시가 있으며 마지막 수준인 L3캐시는 다이의 모든 코어에서 공유된다. 일반적으로 10MB에서 64MB 까지 다양한 크기      
    속도 컴퓨터에서 가장 빠른 메모리로 RAM보다 최대 100배 빠릅니다. 느리다. 다양한 요인에 따라 달라질 수 있습니다.
    • 꼬리질문 :L3 캐시 메모리의 용량이 커질수록 성능이 향상되나요?
      • 답변 : L3캐시 메모리의 용량이 커질수록 적중률이 높아지지만, 비용이 증가하고 주변 회로가 더 복잡해져서 액세스 시간이 더 길어집니다. 따라서 L3 캐시 메모리의 용량이 커질수록 성능이 향상되는 것은 아닙니다.

질문 : CPU와 메모리가 실제 동작하는 순서를 설명하세요

  • 답변 : 주기억장치가 입력장치에서 입력 받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어옴→ CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억장치에 저장→ 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보내서 출력→ CPU 내의 제어장치(CU)가 1~3번 과정에서 명령어가 순서대로 실행되도록 각 장치들을 제어
  • 꼬리질문 : 주기억장치와 보조기억장치의 차이?
    • 답변 : 주기억장치(휘발성)는 작업 중인 데이터와 프로그램을 일시적으로 저장하고 빠른 속도로 접근할 수 있지만 전원이 꺼지면 데이터가 사라진다. 반면 보조기억장치(비휘발성)는 큰 데이터를 영구적으로 저장하고 느린 속도로 접근하며 데이터를 유지한다.
      • 꼬리질문 : 그럼 컴퓨터가 꺼진 이후에도 데이터를 유지하고 싶으면 어떻게 해야 하나?
        • 답변 : 데이터를 하드디스크(보조기억장치)에 저장 해야 한다.

상태관리를 왜 할까요? 그리고 평소 state 관리는 어떻게 하시나요?

  보통 부모자식관계에 있는 컴포넌트들은 state를 props로 전달하게 됩니다. 이 데이터는 부모에서 자식으로 가기도, 자식에서 부모로 전달되기도 합니다. 컴포넌트간 상태 의존도가 높아져 너무 여러 컴포넌트를 거치게되면 props가 어디에서 시작된 것인지 추적을 하기가 힘들기 때문에 유지 보수를 하는데 문제가 생깁니다. 따라서 상태 관리를 전역에서 할 수 있는 tool이 필요합니다. 저는 평소 state관리를 할 때 사용하는 방법으로 redux toolkit을 사용하고 있습니다. redux는 쓰기가 복잡하고, 보일러 플레이트를 많이 써야하는 점 등이 불편합니다. 리덕스툴킷은 immer가 내장되어 있어 상태의 불변성을 지키는 것이 매우 편리하고, 타입스크립트를 지원하며, 리덕스 청크가 내장되어 있어 비동기 작업에 수월하고 redux보다 간편하게 사용이 가능한 장점이 있습니다.

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

기술 면접 준비 - 프론트엔드  (0) 2023.09.22