/CS_Study

Computer Science 개념 스터디 및 면접 준비

🤓 CS 스터디!

🙋‍♀️ 학습 방법

  • 매주 목요일 오후 10시
  • "1주차 숙제"로 issue 생성
    • Contents에 주차별 진행 이슈 적을 것.
    • ex)
      • [알고리즘]-퀵 정렬
      • [알고리즘] -버블 정렬
      • [네트워크]- ~
  • 해당 Issue를 Linking 하여 Pull Request → 학습한 내용들을 업로드
  • 마크다운 파일은 "본인 이름 폴더/학습주제 폴더/"에 업로드
    • ex) syheo/algorithm/퀵정렬.md
  • 학습 주제에 대한 질문을 무수히 생각해내며 해당 질문에 대한 답을 하는 방식으로 진행
  • 1주일에 학습주제당 하나의 소주제를 선정하여 진행
  • 스터디때는 각자 학습한 것을 설명을 하는 방식으로 진행
  • 스터디 전날까지 PR 올리기 ㅋ..ㅋ

👨🏻‍💻 복습 방법

  • 해당 주차의 큰 카테고리 안의 작은 카테고리 주제들에서 상대방을 위한 면접 질문 선정
  • 스터디 날에 상대방에게 실제 면접처럼 물어보고, 대답하는 형식으로 진행
  • 실제 면접처럼 꼬리의 꼬리를 무는 질문 형식을 준비하면 좋을듯‼️

📅 일정표 및 문제

주차 학습 소주제 학습 내용
2021/04/19-2021/04/25(1주차) Data Structure,OS 운영체제란, 프로세스VS스레드, array, linkedList
2021/04/26-2021/05/01(2주차) db,network,web OSI 7 계층, TCP 3 way handshake & 4 way handshake, 키(Key) 정리, SQL - JOIN, HTTP Method
2021/05/02-2021/05/08(3주차) design pattern,language,sw dev 클린코드 & 리팩토링 / 클린코드 & 시큐어코딩, TDD(Test Driven Development),디자인 패턴 개요, 어댑터 패턴, JVM 에 대해서 / GC 의 원리
2021/05/09-2021/05/15(4주차) Data Structure,OS Array&ArrayList&LinkedList, 스택(Stack) & 큐(Queue), 힙(Heap), 프로세스 주소 공간, 인터럽트(Interrupt)
2021/05/16-2021/05/23(5주차) 휴식
2021/05/24-2021/05/30(6주차) db,network,web TCP/IP 흐름제어 & 혼잡제어, UDP, SQL Injection, SQL vs NoSQL, RESTFul API 란?
2021/05/31-2021/06/06(7주차) design pattern,language,sw dev 싱글톤 패턴, 팩토리 메서드 패턴, 애자일, 객체지향, 컬렉션
2021/06/7-2021/06/13(8주차) Data Structure,OS 이진탐색트리(Binary Search Tree), 해시 (Hash), 시스템 콜(System Call), PCB와 Context Switching
9주차 휴식
2021/06/21-2021/06/27(10주차) db,network,web 대칭키 & 공개키, HTTP & HTTPS, 이상(Anomaly), 인덱스(Index), 브라우저의 작동 원리
2021/06/28-2021/07/04(11주차) design pattern,language,sw dev Annotation, Generic, final, 함수형 프로그래밍, 템플릿 메소드 패턴
12주차 휴식
2021/07/12-2021/07/18(13주차) Data Structure,OS IPC(Inter Process Communication), 데드락(DeadLock), 트라이(Trie), B-Tree & B+Tree
2021/07/19-2021/07/25(14주차) db,network,web Document Object Model, 로드 밸런싱(Load Balancing),Blocking & Non-Blocking I/O, 트랜잭션(Transaction), 트랜잭션 격리 수준(Transaction Isolation Level)
15주차 휴식
2021/08/02-2021/08/06(16주차) design pattern,language,sw dev 데브옵스(DevOps), 옵저버 패턴, Overriding vs Overloading, Access Modifier, Wrapper class
2021/08/7-2021/08/13(17주차) db,network,web 레디스(Redis), 정규화/반정규화, CDN, CORS, 크로스 브라우징
2021/08/14-2021/08/20(18주차) design pattern,language,sw dev 서드 파티(3rd party)란?, Multi-Thread 환경에서의 개발, java 8 & java 11 차이, 스트레티지 패턴, 템플릿 콜백
2021/08/21-2021/08/27(19주차) Data Structure,OS red block tree, 세마포어(Semaphore) & 뮤텍스(Mutex), 페이징 & 세그먼테이션 (PDF), 페이지 교체 알고리즘
2021/08/27-2021/09/02(20주차) db,network,web,알고리즘 OSI 7 계층, 키(Key) 정리, SQL - JOIN, HTTP Method, 거품 정렬(Bubble Sort)
2021/09/03-2021/09/09(21주차) Data Structure,OS 운영체제란, 프로세스VS스레드, array, linkedList, 선택 정렬(Selection Sort)

⁉️ 학습 주제

  • 알고리즘 (Algorithm) [optional 하게]

    • 거품 정렬(Bubble Sort)
    • 선택 정렬(Selection Sort)
    • 삽입 정렬(Insertion Sort)
    • 퀵 정렬(Quick Sort)
    • 병합 정렬(Merge Sort)
    • 힙 정렬(Heap Sort)
    • 기수 정렬(Radix Sort)
    • 계수 정렬(Count Sort)
    • 이분 탐색(Binary Search)
    • 해시 테이블 구현
    • DFS & BFS
    • 최장 증가 수열(LIS)
    • 최소 공통 조상(LCA)
    • 동적 계획법 (Dynamic Programming)
    • 비트 마스크(BitMask)
  • 컴퓨터 구조 (Computer Architecture) - 개인적으로..

    • 컴퓨터 구조 기초
    • 컴퓨터의 구성
    • 중앙처리장치(CPU) 작동 원리
    • 캐시 메모리
    • 고정 소수점 & 부동 소수점
    • 패리티 비트 & 해밍 코드
    • ARM 프로세서
  • 자료 구조 (Data Structure)

    • Array
    • LinkedList
    • Array&ArrayList&LinkedList
    • 스택(Stack) & 큐(Queue)
    • 힙(Heap)
    • 이진탐색트리(Binary Search Tree)
    • 해시 (Hash)
    • 트라이(Trie)
    • B-Tree & B+Tree
    • red block tree
  • 데이터베이스 (Database) TODO

    • 키(Key) 정리
    • SQL - JOIN
    • SQL Injection
    • SQL vs NoSQL
    • 이상(Anomaly)
    • 인덱스(Index)
    • 트랜잭션(Transaction)
    • 트랜잭션 격리 수준(Transaction Isolation Level)
    • 레디스(Redis)
    • 정규화/반정규화
  • 네트워크 (Network)

    • OSI 7 계층
    • TCP 3 way handshake & 4 way handshake
    • TCP/IP 흐름제어 & 혼잡제어
    • UDP
    • 대칭키 & 공개키
    • HTTP & HTTPS
    • 로드 밸런싱(Load Balancing)
    • Blocking & Non-Blocking I/O
    • CDN
  • 운영체제 (Operating System)

    • 운영체제란
    • 프로세스 vs 스레드
    • 프로세스 주소 공간
    • 인터럽트(Interrupt)
    • 시스템 콜(System Call)
    • PCB와 Context Switching
    • IPC(Inter Process Communication)
    • 데드락(DeadLock)
    • 세마포어(Semaphore) & 뮤텍스(Mutex)
    • 페이징 & 세그먼테이션 (PDF)
    • 페이지 교체 알고리즘
  • 소프트웨어 개발 (Software Development)

    • 클린코드 & 리팩토링 / 클린코드 & 시큐어코딩
    • TDD(Test Driven Development)
    • 애자일(Agile) 정리1 / 애자일(Agile) 정리2
    • 객체 지향 프로그래밍(Object-Oriented Programming)
    • 함수형 프로그래밍(Fuctional Programming)
    • 데브옵스(DevOps)
    • 서드 파티(3rd party)란?
  • 디자인 패턴 (Design Pattern)

    • 디자인 패턴 개요
    • 어댑터 패턴
    • 싱글톤 패턴
    • 팩토리 메소드 패턴
    • 탬플릿 메소드 패턴
    • 옵저버 패턴
    • 스트레티지 패턴
    • 템플릿 콜백
  • 개발 언어 (Language)

    • Java
      • JVM 에 대해서 / GC 의 원리
      • Collection
      • Annotation
      • Generic
      • final
      • Overriding vs Overloading
      • Access Modifier
      • Wrapper class
      • Multi-Thread 환경에서의 개발
      • java 8 & java 11 차이
  • 웹 (Web)

    • HTTP Method
    • RESTFul API 란?
    • 브라우저의 작동 원리
    • Document Object Model
      • Event Bubbling and Capturing
      • Event delegation
    • CORS
    • 크로스 브라우징
    • 웹 성능과 관련된 Issues
    • 서버 사이드 렌더링 vs 클라이언트 사이드 렌더링

    주오의 제안

    • 쿠키(Cookie) & 세션(Session)
    • HTTP Status Code
    • 웹 서버와 WAS의 차이점
    • OAuth
    • JWT(JSON Web Token)
    • Authentication and Authorization
    • 로그 레벨
    • UI와 UX
    • CSR & SSR
    • Vue.js vs React
    • 네이티브 앱 & 웹 앱 & 하이브리드 앱
    • PWA(Progressive Web App)
    • CSRF & XSS

2. 면접 질문들

  • 카카오
  • 네이버
  • 라인
  • NHN
  • etc

🗞️ 참고 자료

- github Repository

[Songwonseok/CS-Study](https://github.com/Songwonseok/CS-Study)

[gyoogle/tech-interview-for-developer](https://github.com/gyoogle/tech-interview-for-developer)

[JaeYeopHan/Interview_Question_for_Beginner](https://github.com/JaeYeopHan/Interview_Question_for_Beginner)

[MaximAbramchuck/awesome-interview-questions](https://github.com/MaximAbramchuck/awesome-interview-questions)