기술 면접 대비
신입 개발자 전공 지식 & 기술 면접 백과사전, 좋아요 7.5k
네트워크(network) 면접 예상 질문과 답변 운영체제(OS) 면접 예상 질문과 답변
기술면접 자료정리 - 네트워크(0) 
기술면접 자료정리 - 네트워크(1) 
기술면접 자료정리 - 네트워크(2)
한빛 리눅스 입문자를 위한 명령어사전
[보통의 취준생을 위한 코딩 테스트 W/Python]
- 개발 상식
    - 좋은코드?
 - 프로그램 개발은 협업환경 기반
- 가독성이 좋은/중복시 함수화/테스트 용이한
 
- 절차지향/객체지향
    - 절차지향
        - 위에서부터 한줄씩
- 컴퓨터 처리구조와 유사, 실행속도 빠르지만 디버깅이 어려움
 
- 객체 지향
        - 현실 세계의 사물을 객체로 보며 객체의 데이터와 절차를 덩어리로 처리
- 코드 재사용이 용이하며 디버깅 간단 / 처리속도 느림, 설계 어려움
- 특징 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: 모델과 뷰 사이의 연결. 사용자의 입력 처리 및 흐름 제어
 
 
- 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 발송 전 암호화
 
 
- HTTP/ Hypertext Transfer Protocol
        
- URL 입력 후 어떤 통신?
    - Browser
        - URL의 의미에 따라 HTTP 요청 메세지 생성 후 웹서버 전송
- 브라우저 > OS, OS가 DNS 서버조회하여 웹서버의 IP 주소 지정
 
- 프로토콜 스택 & LAN 어댑터
        - 프로토콜 스택(운영체제에 내장된 네트워크 제어용 S/W)와 LAN 어댑터가 브라우저의 메세지를 패킷속에 저장
- 패킷에 수신처 주소 등 제어 정보를 덧붙인뒤 LAN 어댑로 넘김
- 패킷을 전기신호로 변환하여 LAN 케이블로 송출
 
- 허브,스위치,라우터
        - 패킷은 스위치,허브를 경유하여 인터넷 접속 라우터에 도달
- 라우터는 패킷을 ISP에 전달
- 인터넷 진입
 
- 액세스 회선, ISP
        - 통신사 라우터 도달
- 기타 고속 라우터를 통해 목적지 까지 전달
 
- 방화벽, 캐시 서버
        - 목적의 LAN 도착
- 방화벽에서 패킷을 검사한 뒤, 캐시 서버로 보내 웹서버까지 가야하는지 확인
 
- 웹 서버
        - 웹서버의 프로토콜 스택이 패킷 추출/메세지 복원/어플리케이션 전달
- 어플리케이션은 요청에 대한 응답 데이터를 넣어 클라이언트로 회송
 
 
- Browser
        
- 운영체제(OS)
- 캐시의 사용 이유 및 캐시 적중률 향상 방법
    - 캐시: CPU와 Memory간 속도 차이 완화를 위해 메모리 데이터를 미리 저장해두는 임시 저장소
- 필요 데이터를 수집하여 전달하는 버퍼의 일종, CPU가 사용예상되는 데이터 미리 저장
- 캐시 적중률 향상 방법
        - 캐시의 크기 늘리기 > 가격이 비싸지는 단점
- (지역성 이론) 현재 위치에서 가까운 데이터가 멀리 있는 데이터보다 사용 확률 높음
 
 
- 프로세스와 쓰레드의 차이
    - 프로세스
        - 프로그램 실행 시, 디스크에서 메모리에 올라와 CPU 자원 할당을 받을 수 있는 상태
- 프로세스 제어 블록에 프로세스 구분 정보, 우선순위, 메모리 등에 대한 정보 보관
 
- 쓰레드
        - 프로세스가 CPU에 작업을 요청하는 실행 단위
- 한 프로세스 내에 1개의/다수의 쓰레드 존재가능
- 스레드 간 프로세스 주소/자원 공유 가능
 
 
- 프로세스
        
- 멀티프로세스와 멀티쓰레드의 차이
    - 멀티 프로세스
        - 다수의 CPU를 통해 다수의 쓰레드 처리
- 장) 하나의 프로세스가 종료되어도 다른 프로세스에 영향X
- 단) 많은 CPU, Memory 공간 차지
 
- 멀티 쓰레드
        - 하나의 프로세스내 작업을 다수의 쓰레드로 분할하여 처리
- 장) 적은 Mem, 빠른 context switching(CPU를 차지하던 프로세스의 전환)
- 단) 오류로 인해 하나의 스레드가 종료되면 전체 스레드 종료 위험
 
 
- 멀티 프로세스
        
- 스케줄러, 스케줄러 3단계?
    - Scheduler
        - 프로세스 상황을 고려하여 CPU 및 시스템 자원 배분
- Queue
            - 작업 큐: 현재 시스템 내에서 가동 중인 프로세스의 집합
- 준비 큐: 메모리 안에서 CPU 할당을 대기중인 프로세스 집합
- 장치 큐: 입출력을 대기하고 있는 프로세스 집합
 
- 각 큐에 대해 프로세스를 넣고 빼주는 스케줄러
            - 장기 스케줄러: 어떤 프로세스를 준비 큐에 배정 할지
- 중기 스케줄러: 메모리의 여유공간 부족 시 공간 확보를 위해 일부 프로세를 디스크로 옮김
- 단기 스케줄러: 준비 큐의 프로세스 중 어떤 프로세스에 CPU를 배정할 지
 
 
 
- Scheduler
        
- CPU 스케줄링 방법
    - 준비큐를 대상으로 다음 방식 실행
        - FCFS(First Come First Served)
            - 선입선출, 선 프로세스가 먼저 스케줄링
- 시간이 긴 프로세스가 먼저 오면 효율 떨어짐
 
- SJF(Short Job First)
            - 프로세스의 수행 시간이 짧은 프로세스 선배정
- 시간이 긴 프로세스는 영원히 할당안됨
 
- SRT(Short Remaining Time)
            - 현재 프로세스 남은시간 > 대상 프로세스 완료예상 시간, 대상 프로세스에 CPU 배분
- CPU의 수행시간을 측정할 수 없음
 
- 우선순위 방식
            - 정수로 표현된 우선순위가 높은 프로세스에 할당
                - 선점형: 우선순위 높은 프로세스에 즉시 CPU 할당
- 비선점형: 우선순위 높은 프로세스에 준비큐 맨 앞 등록
 
- 우선순위 낮은 프로세스 영원히 CPU 못받음
 
- 정수로 표현된 우선순위가 높은 프로세스에 할당
                
- Round Robin
            - 현대에서 많이 쓰이는 CPU 스케줄링
- 동일한 CPU 할당 시간, 만료되면 준비큐의 맨뒤로
- 할당시간이 길다면 FCFS랑 같아진다는 단점
 
 
- FCFS(First Come First Served)
            
 
- 준비큐를 대상으로 다음 방식 실행
        
- 
    동기 VS 비동기 차이? 
- 
    프로세스 동기화? 
- 
    가상 메모리 및 작동 방식 
- 메모리 단편화와 해결책
- 컴퓨터 구조
- 
    컴퓨터 3대 구성요소 
- 
    CPU 구조 
- 
    병렬처리 파이프라인 기법과 슈퍼 스칼라 기법? 
- 
    메모리영역의 코드/데이터/힙/스택 영역? 
- 
    컴파일러와 인터프리터 차이? 
- 
    RISC와 CISC차이 
- 데이터베이스
- 
    DB의 사용 이유? 
- 
    인덱스란? 
- 
    B-트리 인덱스 알고리즘 / 해시 인덱스 알고리즘 
- 
    정규화? 
- 
    트랜잭션? 
- 
    RDMBMS <> NoSQL 
 
      
Leave a comment