Week1

[숙제]

  • 서버 & 클라이언트 기초 개념

  • 서버 & 클라이언트 통신 방식

  • 인터넷 작동 원리

  • HTTP 에 대해서

  • TCP / UDP 에 대해서

  • REST API 에 대해서

앞으로 할 것들

  • 객체 지향 프로그래밍의 필수 요소(추상화, 상속, 다형성, 캡슐화)에 대해 깊이 학습

  • 서버-클라이언트 통신 및 인터넷 작동 원리에 대한 학습 및 정리

  • 배열과 리스트의 차이를 자바 컬렉션과 연관지어 명확히 이해

  • 동시성 문제 해결 방법(불변 객체, volatile, synchronized, CAS 등)에 대해 학습 및 실습

  • HTTP와 인터넷 작동 원리에 대해 학습 및 정리

  • 트리와 그래프의 구조적 차이와 활용 사례에 대해 학습

  • 컨커런트 패키지의 동작 원리와 사용 사례에 대해 학습

인사이트 정리

  • 객체 지향 프로그래밍의 필수 요소(추상화, 상속, 다형성, 캡슐화)에 대한 이해가 부족한 경우가 많음.

  • 서버와 클라이언트의 역할 및 통신 방식에 대한 명확한 이해가 필요함.

  • 배열과 리스트의 차이를 설명할 때, 자바의 ArrayList와 배열의 차이를 혼동하는 경우가 있음.

  • 링크드 리스트의 삽입/삭제 효율성과 검색의 시간 복잡도에 대한 이해는 양호함.

  • 스레드와 프로세스의 차이를 이해하고 있으나, 동시성 문제 해결 방법에 대한 깊은 이해가 필요함.

  • HTTP와 인터넷 작동 원리에 대한 기초적인 이해가 부족하며, 이를 보완할 필요가 있음.

  • 컨커런트 패키지와 동시성 문제 해결을 위한 다양한 방법(불변 객체, volatile, synchronized, CAS 등)에 대한 이해가 필요함.

  • 트리와 그래프의 차이에 대한 기본적인 이해는 양호하나, 더 깊은 구조적 이해가 필요함.

  • CPU와 메모리, 메모리와 디스크의 차이에 대한 기초적인 이해는 있음.

  • 스택과 큐의 동작 원리와 사용 사례에 대한 이해는 양호함.

키워드

  • 객체 지향 프로그래밍

  • 추상화

  • 서버-클라이언트 통신

  • CPU와 메모리

  • 메모리와 디스크

  • 스택과 큐

  • 배열과 리스트

  • 트리와 그래프

  • 링크드 리스트

  • 해시맵과 해시테이블

  • 스레드와 프로세스

  • 동시성 문제 해결

  • HTTP

  • 인터넷 작동 원리

  • 컨커런트 패키지

오늘 내용에 맞춰진 질문들

  • 객체 지향 프로그래밍의 추상화와 다형성의 차이를 설명하고, 이를 실제 코드로 구현해 보세요.

    • 추상화와 다형성을 활용한 설계의 장단점은 무엇인가요?

    • 추상화 계층이 많아질 경우 발생할 수 있는 문제는 무엇인가요?

    • 다형성을 활용한 설계에서 성능 최적화 방안은 무엇인가요?

    • 추상화와 다형성을 활용한 설계가 적합하지 않은 경우는 언제인가요?

    • 추상화와 다형성을 활용한 설계에서 테스트 전략은 어떻게 수립하나요?

  • 서버와 클라이언트의 통신 과정을 HTTP 프로토콜을 기반으로 설명하세요.

    • HTTP/1.1과 HTTP/2의 차이점은 무엇인가요?

    • HTTP 요청과 응답의 헤더 필드 중 중요한 항목을 설명하세요.

    • HTTP 상태 코드 중 4xx와 5xx의 차이를 설명하세요.

    • HTTPS가 HTTP보다 안전한 이유는 무엇인가요?

    • HTTP/3에서 QUIC 프로토콜이 도입된 이유는 무엇인가요?

  • 스레드와 프로세스의 차이를 설명하고, 동시성 문제를 해결하기 위한 방법을 제시하세요.

    • 스레드 풀(Thread Pool)의 장단점은 무엇인가요?

    • 동시성 문제를 해결하기 위한 CAS(Compare-And-Swap)의 동작 원리를 설명하세요.

    • 스레드 간 데이터 공유를 안전하게 처리하기 위한 디자인 패턴은 무엇인가요?

    • 멀티스레드 환경에서 데드락(Deadlock)이 발생하는 조건은 무엇인가요?

    • 스레드와 프로세스의 차이를 고려한 애플리케이션 설계 전략은 무엇인가요?

  • 링크드 리스트와 배열의 차이를 설명하고, 각각의 장단점을 비교하세요.

    • 링크드 리스트에서 중간 노드를 삭제하는 시간 복잡도는 무엇인가요?

    • 배열 기반의 데이터 구조에서 메모리 재할당이 발생하는 이유는 무엇인가요?

    • 링크드 리스트와 배열을 활용한 캐시(Cache) 설계 방법은 무엇인가요?

    • 링크드 리스트에서 순환(Cycle)을 탐지하는 알고리즘은 무엇인가요?

    • 배열과 링크드 리스트를 혼합한 데이터 구조의 설계 사례를 설명하세요.

  • 트리와 그래프의 차이를 설명하고, 각각의 활용 사례를 제시하세요.

    • 이진 탐색 트리(Binary Search Tree)에서 균형을 유지하는 알고리즘은 무엇인가요?

    • 그래프에서 최단 경로를 찾는 알고리즘 중 다익스트라(Dijkstra)와 벨만-포드(Bellman-Ford)의 차이는 무엇인가요?

    • 트리 구조에서 순회(Traversal) 방법 중 In-order와 Pre-order의 차이를 설명하세요.

    • 그래프의 인접 리스트와 인접 행렬의 차이점은 무엇인가요?

    • 트리와 그래프를 활용한 네트워크 설계 사례를 설명하세요.

Last updated