면접 대비 멘토링

국내 IT 서비스 회사 면접 준비, CS편

이런 질문은 자주 나오네?

어디까지 답변해야할까? 또는 상대적으로 남들이 준비하는 것보다 여기까지

손코딩을 준비하자

어떤 것을 공부할까?

운영체제, 자료구조, 알고리즘, 네트워크, 데이터베이스

🍎 운영체제

가장 빈번하게

  • Thread vs Process
    • 프로세스를 공장에 비유한다면 공장의 일꾼을 쓰레드에 비유할 수 있다.
    • 쓰레드는 고유한 스택을 가지며 다른 자원은 프로세스에서 공유한다. 그리고 컨텍스트 스위칭이 빠르다.
    • 프로세스
      • 메모리 구조 → 코드, 스택, 힙
      • IPC를 통해 프로세스 간의 자원 공유가 가능하다.
  • Cache?
    • 주기억장치에서 빈번하게 조회하는 데이터를 cache에 보관하여 조회 효율을 높인다.
    • locality, hit rate
      • cache의 효율을 극대화하기 위한 지표
      • locality
  • Deadlock?
    • 둘 이상의 프로세스가 점유 중인 자원을 서로 기다리면서 무한 대기에 빠지는 상태
    • 발생조건 4가지
    • 해결방법 4가지
  • 페이지 교체 알고리즘
    • LRU, Least Recently Used
      • 실제로 구현해보자
        • counter
        • double linked list

🍎 자료구조

시간복잡도와 구현을 할 수 있냐

  • stack 2개로 queue를 구현해봐
    • A stack를 모두 B stack에 pop하고 push
  • 단일 연결 리스트 vs 원형 연결 리스트
    • 끝 노드의 다음 값이 null이면 단일, 아니면 원형
  • 트리 순회
    • 전위, 중위, 후위
  • ArrayList vs LinkedList
    • 조회
      • Array → O(1), Linked → O(N) (최악의 경우)
    • 삭제
      • Array → O(N), Linked → O(1)
  • Hash 충돌
    • 서로 다른 key값에 value가 같은 현상
    • 해결방법
  • Hash Map vs Hash Table
    • Map
      • key로 조회하기 때문에 빠르게 찾을 수 있다.
      • 상대적으로 Hash Collision이 적다. ← 보조
      • Thread safe 하지 않다.
    • Table
      • Thread safe하다. 하지만 Map보다 느리다.
  • Concrete Hash Map
    • Hash Map과 Hash Table의 장점만 모은 자료구조
      • CAS 알고리즘을 통해 구현
  • Binary Search Tree, BST
    • 시간복잡도
      • Worst Case
        • 편향 트리
  • BST vs Hash Table, 모바일 기기용 주소록에는 어떤 자료구조가 좋을까?
    • 메모리가 많이 제한되어 있다고 가정
      • BST
        • 주소록에 정렬이 되어있는 채로 출력하기 때문에
          • input size가 매우 크지 않기 때문에 O(1)과 O(log N)의 차이가 없다.

🍎 알고리즘

상황에 맞는 알고리즘을 선택할 수 있어야한다.

  • 정렬 알고리즘
    • 각 알고리즘의 평균 시간복잡도, 최악 시간복잡도, 단점
  • 그리디 알고리즘

🍎 네트워크

나오는 주제만 나온다

  • TCP vs UDP
    • TCP
      • 3-way hand shaking으로 연결형 통신
      • 4-way 통신 해제
    • UDP
      • 일단 쏜다
      • Ex> packet이 유실되도 상관없는 유튜브 스트리밍, 게임
  • OSI 7 Layer
    • 각 계층의 장비를 기억할 것
    • Physical Layer
    • Data-Link Layer
      • 장비
        • 스위치
        • 브릿지
        • 이더넷
    • Network Layer
      • Routing
    • Transport Layer
      • TCP, UDP
    • Presentaion, Session, Application Layer
      • Presentation: 보안
      • Session: 세션
      • Application: http
  • DNS
    • www.naver.com을 입력하면 어떤 일이 벌어지나요?
      • 우선, 로컬 캐시에 조회
      • OSI 7 Layer로 설명할 수 있을까?
        • 7계층의 역순으로 설명하자
        • TCP로 조회. http 1.1를 사용 → 네이버의 경우

🍎 데이터베이스

  • 인덱스? 장단점은?
    • 테이블에서 조회할 때, 빠르게 할 수 있다.
    • 하지만, 추가적인 저장 공간이 필요하고, 모든 필드가 인덱스로 삭제할 때 soft delete를 하기 때문에 데이터가 남아있을 수 있다.
  • 카디널리티? 어떤 필드를 인덱스로 선택해야할까?
    • 중복도가 가장 낮은 필드로
  • 인덱스의 자료구조?
    • Hash Table은 사용할 수 없다. 왜?
      • single result만 조회하는 것이 아니라 range 조회도 하기 때문에
    • Binary Search Tree를 개선한 Balanced Tree
  • 트랜잭션?
    • 데이터베이스의 처리 단위
    • 특징
      • ACID
  • INNER JOIN vs OUTER JOIN, 집합으로 표현
    • inner join
      • 두 테이블의 공통된 필드값으로 조회
      • 교집합
    • outer join
      • 합집합

🍎 OOP

  • 객체지향 프로그래밍?
    • 추가로 SOLID와 연결지을 수 있으면 좋다.
    • 공통된 속성과 함수를 추상화한 클래스로 구현한 객체로 프로그래밍한 것
    • 장점
      • 코드 재사용성
      • 유지보수가 쉽다
      • 대형 프로젝트에 적합하다.
    • 단점
      • 설계에 시간이 오래 걸린다.
      • 처리 속도가 느리다.
    • 특징
      • 추상화
        • 공통된 속성과 함수를 뽑아내는 것
      • 캡슐화
        • 접근제어자를 통해 구현한다
      • 상속
        • 자바는 왜 다중 상속을 왜 지원하지 않을까?
          • 다이아몬드 문제
      • 다형성
        • overload, override

🍎 보안

  • Hash vs Encryption
    • Hash
      • 단방향 암호화
      • SHA256, SHA512
    • Encryption
      • ?
      • https를 예로 들 수 있다.
    • 보안 알고리즘은?

🍎 소프트웨어 공학

  • 애자일 vs 워터폴

🍎 디자인패턴

  • 아는 디자인패턴을 모두 말해봐라

'컴퓨터과학' 카테고리의 다른 글

파이썬 정리 (1)  (0) 2024.01.07
[소마] 블록체인 멘토링  (0) 2024.01.07
OpenSSL을 사용해서 localhost와 https로 통신하자  (0) 2023.11.29
[운영체제] 개요  (0) 2023.10.25
리눅스  (0) 2023.09.17