4 minute read


신입 개발자 전공 지식 & 기술 면접 백과사전, 좋아요 7.5k


신입을 위한 인터뷰 질문


네트워크(network) 면접 예상 질문과 답변 운영체제(OS) 면접 예상 질문과 답변


기술면접 자료정리 - 네트워크(0)
기술면접 자료정리 - 네트워크(1)
기술면접 자료정리 - 네트워크(2)


한빛 리눅스 입문자를 위한 명령어사전


[보통의 취준생을 위한 코딩 테스트 W/Python]

  1. 개발 상식
    • 좋은코드?
    • 프로그램 개발은 협업환경 기반
    • 가독성이 좋은/중복시 함수화/테스트 용이한
  • 절차지향/객체지향
    • 절차지향
      • 위에서부터 한줄씩
      • 컴퓨터 처리구조와 유사, 실행속도 빠르지만 디버깅이 어려움
    • 객체 지향
      • 현실 세계의 사물을 객체로 보며 객체의 데이터와 절차를 덩어리로 처리
      • 코드 재사용이 용이하며 디버깅 간단 / 처리속도 느림, 설계 어려움
      • 특징 4개
        • 추상화: 객체들의 공통점을 뽑아내 속성&메서드
        • 캡슐화: 외부로부터 데이터 감춤 / 메서드를 통한 상호작용
        • 상속: 기존 클래스의 속성을 받아 새 속성 생성
        • 다형성: 같은 코드로 다른 행위 할 수 있음
      • 이를 위해 Overriding/Overloading 필요
        • Override: 부모클래스의 메서드 무시, 자식클래스에서 재정의 후 사용
        • Overload: 같은 이름의 메서드 여러개 정의, 매개변수 유형&개수 다르게하여 호출
  • RESTful API Design?
    • REpresental State Transfer
    • WEB Resource를 HTTP를 통해 전달하기 위한 인터페이스 설계. 리소스와 행위의 분리
      • URI로 표현되는 리소스
      • GET(조회),POST(추가),PUT(수정),DELETE(삭제) 행위
  • TDD(Test-Driven Dev)
    • 테스트 주도의 개발 방식, 기능 추가 전 테스트 먼저 작성
    • 장점: 검증된 테스트 코드로 인해 안정성 향상
    • 단점: 모든 상황에 대한 테스트 작성의 어려움, 생산성 저하
  • 함수형 프로그래밍
    • 함수를 사용하여 사이드이펙트 없도록 선언적인 프로그래밍
    • 동일입력=동일결과 초점
  • MVC 패턴
    • Model-View-Controller
    • 비즈니스 로직 / 사용자 인터페이스 구분. 상호 영향없는 개발가능
      • Model: 사용자에게 보이지않음. DB/내부 알고리즘 등 백그라운드의 로직
      • View: 사용자에게 보여지는 영역
      • CNTR: 모델과 뷰 사이의 연결. 사용자의 입력 처리 및 흐름 제어
  1. Network
  • HTTP의 GET/POST 비교
    • HTTP를 통해 서버에 무언가를 요청할 때 사용
    • GET: 요청 데이터가 Header에 담김. 데이터 크기 제한적&보안 우려
    • POST: 요청 데이터가 Bdoy에 담김. 데이터 크기 큼&보안 향상
  • OSI 7 Layer
    • 통신 접속부터 완료까지를 7단계로 정리한 국제 통신 표준 규약
    • 통신 과정을 단계적 파악 & 문제점 파악
Layer Name Protocol Device Descr.
7 응용 계층 DNS,HTTP,DHCP,Telnet   응용프로그램과 통신프로그램 간 인터페이스 제공
6 표현 계층 SMB, AFP   송신)컴퓨터가 관리 하는 방식으로 데이터 변환
수신)사용자가 볼 수 있도록 데이터 변환
5 세션 계층 SSH, TLS   포트 연결 담당
통신장치간 상호작용 설정 & 동기화
4 전송 계층 TCP,UDP,ARP   데이터 흐름 제어
데이터 정상전송 확인/오류복구를 위한 패킷 전송
3 네트워크 계층 IP,ICMP,IGMP 라우터 데이터를 목적지까지 전달하는 라우팅 역할
2 데이터 링크 계층 MAC 브리지, 스위치 N/W계층에서 전달된 패킷을 프레임화
1 물리 계층 Ethernet 데이터케이블, 허브 캡슐화 완료된 데이터를 전기 신호로 바꾸어 전송
  • TCP/UDP
    • UDP: L4의 비연결형 프로토콜. 손상된 세그먼트를 수신해도 재전송하지않음
    • TCP: L4의 연결형 프로토콜. 3WAY-HANDSHAKE, 전송이 양방향으로 일어나며 2개의 종단점을 지니는 점대점
  • TCP 3WAY-HANDSHAKE
    • 클라이언트와 서버가 통신하기 위한 3 단계 과정
    • SYN(Client) -> SYN+ACK(Server) -> ACK(Client)
      • 클라이언트 -> 서버: 접속 요청하는 SYN 패킷 발송
      • 서버 -> 클라이언트: 요청확인 ACK 패킷 + 클라이언트 응답 SYN 패킷 발송
      • 클라이언트 -> 서버: 서버 ACK 패킷 수신 이후 연결 수립, 통신 개시
  • HTTP <> HTTPS 차이점
    • HTTP/ Hypertext Transfer Protocol
      • HTML 전송을 위한 통신 규약
      • 보안 취약점: 평문 통신이므로 도청에 취약/ 통신상대확인X > 위장취약
    • HTTPS/ HTTP + SSL(Secure Socket Layer)
      • HTTP는 SSL과 통신, SSL은 TCP와 통신
      • 모든 HTTP 요청과 응답 데이터는 N/W 발송 전 암호화
  • URL 입력 후 어떤 통신?
    1. Browser
      • URL의 의미에 따라 HTTP 요청 메세지 생성 후 웹서버 전송
      • 브라우저 > OS, OS가 DNS 서버조회하여 웹서버의 IP 주소 지정
    2. 프로토콜 스택 & LAN 어댑터
      • 프로토콜 스택(운영체제에 내장된 네트워크 제어용 S/W)와 LAN 어댑터가 브라우저의 메세지를 패킷속에 저장
      • 패킷에 수신처 주소 등 제어 정보를 덧붙인뒤 LAN 어댑로 넘김
      • 패킷을 전기신호로 변환하여 LAN 케이블로 송출
    3. 허브,스위치,라우터
      • 패킷은 스위치,허브를 경유하여 인터넷 접속 라우터에 도달
      • 라우터는 패킷을 ISP에 전달
      • 인터넷 진입
    4. 액세스 회선, ISP
      • 통신사 라우터 도달
      • 기타 고속 라우터를 통해 목적지 까지 전달
    5. 방화벽, 캐시 서버
      • 목적의 LAN 도착
      • 방화벽에서 패킷을 검사한 뒤, 캐시 서버로 보내 웹서버까지 가야하는지 확인
    6. 웹 서버
      • 웹서버의 프로토콜 스택이 패킷 추출/메세지 복원/어플리케이션 전달
      • 어플리케이션은 요청에 대한 응답 데이터를 넣어 클라이언트로 회송
  1. 운영체제(OS)
  • 캐시의 사용 이유 및 캐시 적중률 향상 방법
    • 캐시: CPU와 Memory간 속도 차이 완화를 위해 메모리 데이터를 미리 저장해두는 임시 저장소
    • 필요 데이터를 수집하여 전달하는 버퍼의 일종, CPU가 사용예상되는 데이터 미리 저장
    • 캐시 적중률 향상 방법
      • 캐시의 크기 늘리기 > 가격이 비싸지는 단점
      • (지역성 이론) 현재 위치에서 가까운 데이터가 멀리 있는 데이터보다 사용 확률 높음
  • 프로세스와 쓰레드의 차이
    • 프로세스
      • 프로그램 실행 시, 디스크에서 메모리에 올라와 CPU 자원 할당을 받을 수 있는 상태
      • 프로세스 제어 블록에 프로세스 구분 정보, 우선순위, 메모리 등에 대한 정보 보관
    • 쓰레드
      • 프로세스가 CPU에 작업을 요청하는 실행 단위
      • 한 프로세스 내에 1개의/다수의 쓰레드 존재가능
      • 스레드 간 프로세스 주소/자원 공유 가능
  • 멀티프로세스와 멀티쓰레드의 차이
    • 멀티 프로세스
      • 다수의 CPU를 통해 다수의 쓰레드 처리
      • 장) 하나의 프로세스가 종료되어도 다른 프로세스에 영향X
      • 단) 많은 CPU, Memory 공간 차지
    • 멀티 쓰레드
      • 하나의 프로세스내 작업을 다수의 쓰레드로 분할하여 처리
      • 장) 적은 Mem, 빠른 context switching(CPU를 차지하던 프로세스의 전환)
      • 단) 오류로 인해 하나의 스레드가 종료되면 전체 스레드 종료 위험
  • 스케줄러, 스케줄러 3단계?
    • Scheduler
      • 프로세스 상황을 고려하여 CPU 및 시스템 자원 배분
      • Queue
        • 작업 큐: 현재 시스템 내에서 가동 중인 프로세스의 집합
        • 준비 큐: 메모리 안에서 CPU 할당을 대기중인 프로세스 집합
        • 장치 큐: 입출력을 대기하고 있는 프로세스 집합
      • 각 큐에 대해 프로세스를 넣고 빼주는 스케줄러
        • 장기 스케줄러: 어떤 프로세스를 준비 큐에 배정 할지
        • 중기 스케줄러: 메모리의 여유공간 부족 시 공간 확보를 위해 일부 프로세를 디스크로 옮김
        • 단기 스케줄러: 준비 큐의 프로세스 중 어떤 프로세스에 CPU를 배정할 지
  • CPU 스케줄링 방법
    • 준비큐를 대상으로 다음 방식 실행
      • FCFS(First Come First Served)
        • 선입선출, 선 프로세스가 먼저 스케줄링
        • 시간이 긴 프로세스가 먼저 오면 효율 떨어짐
      • SJF(Short Job First)
        • 프로세스의 수행 시간이 짧은 프로세스 선배정
        • 시간이 긴 프로세스는 영원히 할당안됨
      • SRT(Short Remaining Time)
        • 현재 프로세스 남은시간 > 대상 프로세스 완료예상 시간, 대상 프로세스에 CPU 배분
        • CPU의 수행시간을 측정할 수 없음
      • 우선순위 방식
        • 정수로 표현된 우선순위가 높은 프로세스에 할당
          • 선점형: 우선순위 높은 프로세스에 즉시 CPU 할당
          • 비선점형: 우선순위 높은 프로세스에 준비큐 맨 앞 등록
        • 우선순위 낮은 프로세스 영원히 CPU 못받음
      • Round Robin
        • 현대에서 많이 쓰이는 CPU 스케줄링
        • 동일한 CPU 할당 시간, 만료되면 준비큐의 맨뒤로
        • 할당시간이 길다면 FCFS랑 같아진다는 단점
  • 동기 VS 비동기 차이?

  • 프로세스 동기화?

  • 가상 메모리 및 작동 방식

  • 메모리 단편화와 해결책
  1. 컴퓨터 구조
  • 컴퓨터 3대 구성요소

  • CPU 구조

  • 병렬처리 파이프라인 기법과 슈퍼 스칼라 기법?

  • 메모리영역의 코드/데이터/힙/스택 영역?

  • 컴파일러와 인터프리터 차이?

  • RISC와 CISC차이

  1. 데이터베이스
  • DB의 사용 이유?

  • 인덱스란?

  • B-트리 인덱스 알고리즘 / 해시 인덱스 알고리즘

  • 정규화?

  • 트랜잭션?

  • RDMBMS <> NoSQL

Categories:

Updated:

Leave a comment