기술 면접 대비
신입 개발자 전공 지식 & 기술 면접 백과사전, 좋아요 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