본문 바로가기

Diary/TIL

2024-05-28) 기술 면접 공부

  1. 운영체제
    • 프로세스와 스레드의 차이점은 무엇인가?
      • 프로세스는 현재 실행중인 프로그램의 흐름
      • 스레드는 그 흐름의 가장 작은 단위
    • (질문 받았던 문제) 멀티 프로세스와 멀티 스레드 프로그램의 차이는?
      • 통신 비용 vs 안정성(자원 공유 등으로 발생하는 데드락)
      • 연계 질문으로 멀티프로세스도 자원공유 문제가 발생한다. 
    • 뮤텍스와 세마포어의 차이점과 사용 사례는 무엇인가?
      • 뮤텍스는 자원에 2개 이상의 자원이 요청될 수 없도록 하는 것이며, 세마포어는 자원에 여러개의 스레드가 접근 가능하되 그 갯수를 일정 개수 이하로 제한하는 것입니다.
    • 가상 메모리의 개념과 페이지 교체 알고리즘에 대해 설명하시오.
      • 실제로 프로그램 메모리 용량을 추가해주는것이 아닌, 현재 일하고 있지 않은 휴식중인 프로세스를 잠시 보관하기 위한 공간을 생성하고, 옮긴 후에 생성된 메모리 공간에 프로세스를 실행해주는것
      • 페이지 교체 알고리즘 - 외부 메모리 막수를 박기 위하여 사용하는 것
    • 교착 상태(Deadlock)의 조건과 해결 방법은 무엇인가?
      • 여러 스레드가 동일한 자원에 대하여 접근하게 됐을 때 발생하게 됩니다. db에 락을 걸거나 대기열을 구현하여 해결할 수 있습니다.
    • 스케줄링 알고리즘의 종류와 각각의 장단점은 무엇인가?
  2. 네트워크
    • OSI 7계층 모델에 대해 설명하시오.
      • 물리계층 - 데이터 링크 계층 - 네트워크 계층 - 전송 계층 - 세션 계층 - 표현 계층 - 응용 계층으로 표기됩니다.
      • 물리 계층에서 공유기와 같은 곳에서 물리적으로 전송되며, 데이터 링크 계층에선 물리적 주소(MAC)을 부여받고, 네트워크 계층에선 IP 전송계층에선 TCP/UDP 방식으로 통신하며, 세션에서는 그렇게 받은 값을 저장하고, 표현계층에서는 값을 해독, 응용계층은 그 값을 표기하는 방식입니다.
    • TCP와 UDP의 차이점과 사용 사례는 무엇인가?
      • 통신 프로토콜로 TCP의 경우 신뢰받는 데이터 전송 프로토콜이다. 어플리케이션간 통신에 주로 사용된다.
      • UDP의 경우 신뢰하지 않는 데이터 전송 프로토콜로, 상대방의 수신 여부 등을 파악하지 않습니다. 대신 헤더의 암호화 부분에서 TCP가 20바이트를 사용하는데 비해 8바이트만 사용하는 등 전송속도가 빠릅니다.
    • HTTP와 HTTPS의 차이점은 무엇인가?
      • 신뢰받는 프로토콜의 차이 (둘다 같은 방식이지만 HTTPS는 사이에 SSH 인증서가 껴있다.) 그렇기 떄문에 통신이 암호화되어있고, 신뢰성이 높지만 속도가 느리다. HTTP는 신뢰할수 없지만 빠른 속도를 자랑한다.
    • DNS의 역할과 작동 원리에 대해 설명하시오.
      • DNS는 Domain network 서비스이며, 사용자에게 도메인을 입력받으면 서비스의 ip주소를 반환하는 등의 방식으로 사용됩니다.
    • IP 주소와 서브넷 마스크의 개념을 설명하시오.
    • 라우팅과 스위칭의 차이점은 무엇인가?

심화 주제

  1. 소프트웨어 공학
    • Agile과 Waterfall 개발 방법론의 차이점과 장단점은 무엇인가?
    • 디자인 패턴의 종류와 각각의 사용 사례는 무엇인가?
    • 소프트웨어 개발 생명 주기(SDLC)에 대해 설명하시오.
    • 코드 리뷰의 중요성과 베스트 프랙티스는 무엇인가?
  2. 시스템 설계
    • 대규모 분산 시스템 설계 시 고려해야 할 요소는 무엇인가?
      • 데이터베이스 요청 분산, 메인 트래픽 분산, 동일 ip의 최대 요청수 제한
    • 마이크로서비스 아키텍처의 장단점은 무엇인가?
      • 장점: 안정성, 수용량
      • 단점: 느린 속도, 복잡해지는 코드 구조
    • 데이터베이스 샤딩과 리플리케이션의 차이점은 무엇인가?
      • db 샤딩의 경우 쓰기 db를 여러개로 나누어 쓰기에 대한 분산, 쓰기 한계량이 증가하지만 구현 난이도가 매우 어렵고, 유지보수가 어렵다.
      • 리플리케이션의 경우 db를 복제하는 것이기 때문에 읽기에 대한 db connection pool의 수용량은 증가하지만, 쓰기의 경우 한계가 그대로다. 다만 구현 난이도가 쉽다.
    • 캐싱 전략과 캐시 무효화 방법에 대해 설명하시오.
  3. 보안
    • 대칭키 암호화와 비대칭키 암호화의 차이점은 무엇인가?
    • 해시 함수의 역할과 특성에 대해 설명하시오.
    • 인증(Authentication)과 인가(Authorization)의 차이점은 무엇인가?
      • 인증의 경우 로그인이 이에 해당되며, 인가의 경우 
    • XSS와 CSRF 공격에 대해 설명하고, 방어 방법은 무엇인가?

프로젝트 경험 및 문제 해결

  1. 프로젝트 경험
    • 최근에 진행한 프로젝트에 대해 설명하시오.
    • 프로젝트에서 맡은 역할과 기여한 부분은 무엇인가?
    • 프로젝트 진행 중 겪은 어려움과 이를 해결한 방법은 무엇인가?
    • 프로젝트에서 사용한 기술 스택과 그 이유는 무엇인가?
  2. 문제 해결 능력
    • 주어진 문제를 해결하기 위한 접근 방식을 설명하시오.
    • 코드 최적화 경험이 있다면, 그 사례와 결과를 설명하시오.
    • 팀 프로젝트에서 발생한 갈등을 해결한 경험이 있는가? 어떻게 해결했는가?
    • 복잡한 문제를 작은 단위로 나누어 해결한 경험이 있는가? 그 방법은 무엇인가?

기타 질문

  1. 자기 소개 및 동기
    • 본인을 소개하고, 컴퓨터공학을 전공하게 된 계기는 무엇인가?
    • 자신의 강점과 약점은 무엇인가?
    • 5년 후의 목표는 무엇인가?
    • 컴퓨터공학 분야에서 가장 관심 있는 분야는 무엇인가? 그 이유는 무엇인가?
  2. 기술 동향
    • 최근에 관심 있게 본 기술 뉴스나 트렌드는 무엇인가?
    • 클라우드 컴퓨팅의 장단점과 주요 제공 업체는 무엇인가?
    • 인공지능(AI)과 머신러닝(ML)의 차이점은 무엇인가?
    • 블록체인의 개념과 사용 사례에 대해 설명하시오.