ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 면접을 위한 CS 전공지식노트
    독서 2025. 12. 1. 10:34

    디자인 패턴은 프로그램 설계 시 발생했던 문제들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것

     

    싱글톤 패턴 : 하나의 클래스에 오직 하나의 인스턴스만 가짐, TDD(Test Driven Development)할 때 걸림돌이 됨.

    싱글톤은 미리 생성된 하나의 인스턴스를 기반으로 구현하는 패턴이므로 각 테스트마다 '독립적인' 인스턴스 만들기 어려움

     

    팩토리 패턴 : 객체 사용 코드 중 객체 생성 부분을 떼어내 추상화한 패턴, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정

     

    전략 패턴 : 객체의 행위를 직접 수정하지 않고, 전략이라고 부르는 '캡슐화한 알고리즘'을 컨텍스트 안에서 바꿔주면서 상호 교체 가능하게 만드는 패턴, 우리가 어떤 것을 살 때 네이버페이, 카카오페이 등 다양한 방법으로 결제하듯, 전략만 바꿔서 결제.

    전략 패턴을 활용한 라이브러리로 passport가 있음

     

    옵저버 패턴 : 주체가 어떤 객체 상태 변화를 관찰하다가 변화가 생길 시 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 것. 트위터 같은 것이 옵저버 패턴을 이용

     

    상속과 구현의 차이 : 상속은 일반 클래스, abstract 클래스를 기반으로 구현하며, 구현은 인터페이스를 기반으로 구현

     

    프록시 패턴과 프록시 서버 

    프록시 패턴 : 대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴

    프록시 서버 : 서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램, nginx 등이 쓰인다.

    CloudFlare가 프록시 서버로서 많이 쓰임, 서버 앞단에 두고..

     

    CDN : 각 사용자가 인터넷에 접속하는 곳과 가까운 곳에서 콘텐츠를 캐싱 또는 배포하는 서버 네트워크를 말함. 사용자가 웹 서버로부터 콘텐츠를 다운로드하는 시간을 줄일 수 있음

     

    CORS : 서버가 웹 브라우저에서 리소스를 로드할 때 다른 오리진을 통해 로드하지 못하게 하는 HTTP 헤더 기반 메커니즘

     

    이터레이터 패턴 : 이터레이터를 사용하여 컬렉션의 요소들에 접근하는 것. 자료형 구조와 상관없이 이터레이터라는 하나의 인터페이스로 순회 가능

     

    노출모듈 패턴 : 즉시 실행 함수를 통해 private, public 같은 접근 제어자를 만드는 패턴. 자바스크립트는 private나 public 같은 접근 제어자가 존재하지 않고 전역 범위에서 스크립트가 실행되기 때문에 이 패턴을 통해 private, public 구현

     

    MVC 패턴 : 뷰, 모델, 컨트롤러로 이루어진 거, 스프링부트에서 많이 씀

    MVP 패턴 : MVC로부터 파생, C에 해당하는 컨트롤러가 프레젠터로 교체된 패턴, 뷰와 프레젠터는 일대일 관계이기 때문에 MVC보다 더 강한 결합을 지님

    MVVM 패턴 : MVC의 C가 뷰모델로 바뀐 패턴, 단위 테스팅이 쉽다.

     

    프로그래밍 패러다임은 프로그래머에게 프로그래밍 관점을 갖게 해주는 역할을 하는 개발 방법론임

     

    순수 함수 : 출력이 입력에만 의존하는 것, 함수 내에 다른 전역 변수가 출력에 영향을 주면 순수 함수가 아님

    고차 함수 : 함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 것

    일급 객체 : 고차 함수 쓰기 위해서 해당 언어가 일급 객체여야 하는데 그 특징은 1. 변수나 메서드에 함수를 할당 2. 함수 안에 함수를 매개변수로 담을 수 있음 3. 함수가 함수를 반환할 수 있음

     

    객체지향 프로그래밍 : 객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식, 추상화, 캡슐화, 상속성, 다형성이라는 특징이 있음

     

    추상화 : 복잡한 시스템으로부터 핵심적인 개념 또는 기능을 간추려내는 것, 예를 들어 누구는 군인, 장교, 키180, 안경씀 등을 간추리고 이를 코드로 나타내는 것

     

    캡슐화 : 객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것

     

    상속성 : 상위 클래스 특성을 하위 클래스가 이어 받아 재사용하거나 확장

     

    다형성 : 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것을 말함. 오버로딩, 오버라이딩 등이 있음

     

    오버로딩 : 같은 이름을 가진 메서드를 여러 개 두는 것

     

    오버라이딩 : 주로 메서드 오버라이딩을 말함, 상위 클래스로부터 상속받은 메서드를 하위 클래스가 재정의하는 것

     

    설계 원칙(SOLID)

    단일 책임 원칙(SRP, Single Responsibilty Principle) : 모든 클래스는 각각 하나의 책임만 가져야 하는 원칙

     

    개방-폐쇄 원칙(OCP, Open Closed Principle) : 유지 보수 사항이 생긴다면 코드를 쉽게 확장할 수 있도록 하고 수정할 때는 닫혀 있어야 하는 원칙

     

    리스코프 치환 원칙(LSP, Liskov Substitution Principle) : 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 하는 것

     

    인터페이스 분리 원칙(ISP, Interface Segregation Principle) : 하나의 일반적인 인터페이스보다 구체적인 여러 개의 인터페이스를 만들어야 하는 원칙

     

    의존 역전 원칙(DIP, Dependency Inversion Principle) : 자신보다 변하기 쉬운 것에 의존하던 것을 추상화된 인터페이스나 상위 클래스를 두어 변하기 쉬운 것의 변화에 영향을 받지 않게 하는 원칙

     

    네트 워크 토폴로지

    네트워크 노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 형태

     

    트리 토폴로지 : 노드 추가 삭제 쉬우며 특정 노드에 트래픽이 집중될 때 하위 노드에 영향 끼침

     

    버스 토폴로지 : 근거리 LAN에서 사용, 설치 비용 적고 신뢰성 우수, 노드 추가 삭제 쉬운데 스푸핑 가능한 문제점 있음

     

    스타 토폴로지 : 에러 탐지 쉬움

     

    링형 토폴로지 : 고장 노드 쉽게 찾음

     

    메시 토폴로지 : 트래픽 분산 처리 가능

     

    LAN : 근거리 통신망, 같은 건물, 캠퍼스 같은 좁은 공간에서 운영

     

    MAN : 도시 같이 넓은 지역

     

    WAN : 국가 또는 대륙

     

     

    ping : 

    netstat :  

    nslookup :

    tracert :

     

    전송

    가상회선 패킷 교환 방식 :

    데이터그램 패킷 교환 방식 : 

     

    3-웨이 핸드셰이크 : TCP 연결

    4-웨이 핸드셰이크 : TCP 연결 해제

     

    전이중화 통신 :

    CSMA/CD : 

    트위스트 페어 케이블 : 

    광섬유 케이블 : 

    반이중화 통신 : 

    CSMA/CA : 

     

    와이파이 :

    BSS : 

    ESS : 

    이더넷 프레임 : 

     

    PDU : 

    L7 스위치 :

    L4 스위치와 L7 스위치 차이 :

    헬스 체크 : 

    로드 밸런서 : 

    L3 스위치 : 

    라우터 : 

    L2 스위치 : 

    브리지 : 

     

    물리 계층을 처리하는 기기들

    NIC :

    리피터 : 

    AP : 

     

    홉바이홉 통신 : 

    라우팅 테이블 :

    게이트웨이 : 

     

    DHCP : 
    NAT : 

     

    (HTTP/1.0)RTT : 

    (HTTP/1.1)HOL Blocking : 

    (HTTP/2)멀티플렉싱 : 

    (HTTP/2)헤더 압축 : 

    (HTTP/2)서버 푸시 : 

    (HTTP/2)허프만 코딩 : 

    (HTTPS)SSL/TLS : 

    사이퍼 슈트 : 

    AEAD 사이퍼 모드 : 

    CA 발급 과정 : 

     

    암호화 알고리즘

    디피-헬만 키 교환 암호화 알고리즘 : 

    해싱 알고리즘 : 

    SHA-256 알고리즘 :

     

    운영체제

    DMA 컨트롤러 : 

    시간 지역성 :

    공간 지역성 : 

    캐시 히트와 캐시 미스 : 

    캐시 매핑 : 

    메모리

    TLB : 

    스와핑 : 

    페이지 폴트 : 

    스레싱 : 

    작업 세트 :

    PFF :

     

    고정 분할 방식 :

    가변 분할 방식 : 

    불연속/연속 할당 : 

    페이징 : 

    세그멘테이션 :

    페이지드 세그멘테이션 : 

     

    페이지 교체 알고리즘

    오프라인 알고리즘 : 

    NUR : 

     

    IPC : 

    익명 파이프 : 

    명명된 파이프 : 

     

     

    공유 자원 :

    임계 영역 : 

    뮤텍스 :

    세마포어 : 

    바이너리 세마포어 :

    카운팅 세마포어 : 

    모니터 : 

     

     

    포트폴리오 짜기

    첫 문장이 중요하다

    숫자로 말하라

    기술의 숙련도를 나눠서 표기하라

    리드미를 잘 작성하라

    오픈 소스 컨트리뷰터가 되자

    블로깅을 하자

     

    면접

    대답을 바꾸지 마라 ( 면접관이 정말요? 해도 바꾸지 말기)

    모르는 것은 모르는 것 ( 어느 정도 고민하고 대답..모른다고)

    공식 사이트를 봐라

    장단/차이 외우기 : 자신이 프로젝트에서 썼던 기술의 장점, 단점, 차이 외우는 것

    업무 예측 : 채용 공고에 업무 내용 있는데 이를 예측하고 거기에 대한 답변을 준비

    궁금한 것이 있냐는 면접관의 질문에는 '가볍고' 면접관이 '대답할 수 있는' 질문을 하는 것이 좋다

     

    '독서' 카테고리의 다른 글

    도둑맞은 집중력  (1) 2026.03.03
    소프트웨어 엔지니어 가이드북  (1) 2026.01.21
    그때, 맥주가 있었다  (1) 2025.12.24
    커서 AI 트렌드 & 활용백과  (1) 2025.12.15
Designed by Tistory.