자기소개
자기소개 이후 나올 질문을 예상하여 준비하고 가는게 좋음
- 자기 신분소개와 여기 온 이유 설정
안녕하세요. 어느회사에서 어떤일을 하고 있는 누구 입니다.
누구 소개로 어느 포지션에 지원하게 되었습니다. - 왜 내가 이 포지션에 적합한가
미리 준비해온 세가지 경쟁력을 나열하면서 장점을 요약하는것 가능
직장을 연대기로 나열하면서 강점을 요약하는것도 가능 - 왜 옮기려 하는지 이직 사유
이 회사, 이 포지션이 왜 마음에 들었는지 여기서 어떤일을 하고 싶은지
OOP, AOP, FP
객체지향 프로그래밍(OOP)
- 설명
- Object(추상화 대상)을 추상화 시켜 상태(속성, 어트리뷰트)와 행위(메서드)를 가진 객체를 만듬
- 객체간의 상호작용을 통해 로직을 구현하는 방법
- 장점
- 재사용성 증가(클래스 가져다 쓰기, 상속)
- 유지보수가 간단(절차지향 보다)
- 클래스단위로 모듈화가 가능, 대형 프로젝트에 적합
- 단점
- 처리속도가 상대적으로 느리다
- 객체가 많으면 용량이 커진다
- 설계시 많은 시간과 노력이 필요하다
관점 지향 프로그래밍(AOP)
- OOP로 개발했을때 소스코드상에서 계속 반복되는 부분이 있음
- 트랜젝션, 인증, 로깅, 성능분석 등
- 이것을 공통모듈화하여 잘끼워넣는것을 말함
함수형 프로그래밍(FP)
- 함수가 1급 객체로, 파라메터로 할당 가능
- 변경 가능한 상태를 불변상태(Immutable)로 만들어 사이드 이펙트를 없앰
- 코드를 간결하게 하고 가독성을 높임
- 동시성 작업을 보다 쉽고 안전하게
MVC 와 MVVC
(추가조사)
Restful API
- 웹에있는 자원을 직관적으로 전달하기위한 인터페이스
- Http 프로토콜을 통해 Json/Xml 방식을 주로 씀
- 리소스의 응답 상태코드 값을 명확히
- REST 법칙
- URI는 자원명을 포함해야함
- 자원에대한 행위는 Http Method로 표현
- GET, POST, PUT, DELETE
운영체제
프로세스와 스레드
프로세스(Process)
- 실행중인 프로그램
- 디스크에서 메모리에 적재되어, CPU 자원을 할당받을수 있게된 상태
스레드(Thead)
- 프로세스의 작업 실행 단위
- 멀티스레드는 프로세스내에 여러개의 프로그램 흐름을 말한다
- 스레드간에는 프로세스의 주소나 자원을 공유할 수 있다
멀티 스레드 환경
- 장점
- 멀티 프로세스에 비해 자원 소모가 줄어듬
- 힙영역을 사용하면 스레드간 통신이 간단
- 스레드간의 Context Swiching은 캐시메모리를 비울 필요가 없다
- 시스템의 처리량이 늘며, 공간과 시간, 자원이 절약됨
- 단점
- 힙 영역을 공유하기 때문에, 해당 자원을 사용할때 동기화 필요
- 동기화를 위해 과도한 락 사용시, 병목현상 발생
멀티 스레드 vs 멀티 프로세스
- 멀티스레드
- 자원을 공유하여 효율적
- 힙 영역을 사용하여 스레드간 통신이 간단
- 동기화 문제
- 하나의 스레드 오류시, 다른 스레드 비정상 종료 위험
- 멀티 프로세스
- 자원을 공유하지 않아 자원소모 높음
- 서로간의 통신이 비교적 어려움
- CPU자원을 더 소모
동기/비동기, 블로킹/논블로킹
동기
- 요청과 그 결과가 동시에 일어난다는 뜻
- 함수의 결과를 호출한쪽에서 처리
비동기
- 요청과 그 결과가 동시에 일어나지 않는다는 뜻
- 함수의 그 결과를 호출한쪽에서 처리하지 않음
블로킹
- 자신의 수행결과가 끝날떄 까지 제어권을 가지고 있는 것
논블로킹
- 자신이 호출되었을 때 제어권을 바로 호출한쪽으로 넘기며, 호출한쪽에서 바로 다른일을 할 수 있도록 함
웹과 통신
HTTP 요청 흐름(웹 브라우저에서의 요청)
※면접 단골질문
- 브라우저
- URL 값 파싱후, HTTP 요청 메세지를 만듬
- OS는 DNS 서버를 조회해서 URL을 Host의 IP주소로 변환
- 프로토콜 스택(OS에 내장된 네트워크 제어용 소프트웨어, TCP/IP 계층)과 LAN 어댑터
- 패킷 생성 후 데이터 저장
- 수신주소를 제어정보에 붙임
- 패킷을 LAN 어댑터에 넘김
- LAN 어댑터는 패킷을 전기신호로 변환시켜 케이블에 송출
- 허브, 스위치, 라우터
- LAN 어댑터로부터 송신한 패킷을 수신
- 라우터는 패킷은 ISP에 전달, 인터넷으로 들어감
- 액세스 회선, ISP
- 액세스 회선은 인터넷의 입구에 있는 통신 회선
- 액새스 회선에 의해 통신사용 라우터(POP, Point Of Presence)까지 운반
- POP를 거쳐 인터넷의 핵심부로 진입
- 고속 라우터를 거쳐 목적지까지 패킷이 흘러감
- 방화벽, 캐시서버
- 목적지의 LAN에 도착하게 된다
- 방화벽이 먼저 패킷을 검사 한후
- 캐시서버로 보내서 웹 서버까지 갈 필요가 있는지 검사
- 웹서버
- 패킷이 물리적 웹 서버에 도착
- 웹서버의 프로토콜 스택이 패킷을 추출하여 메시지 복원후 웹 서버 App에 넘김
- 웹서버 App은 요청에대한 응답 데이터를 넣어 클라이언트로 회신
HTTP/HTTPS 차이
HTTP + SSL = HTTPS
HTTP
- 평문 통신이며 도청이 가능
- 사용자를 확인하지 않아 위장 가능
- 정확성 보장 불가
HTTPS
- HTTP에 SSL개념을 더한 프로토콜
- 기존 HTTP는 TCP와 직접 통신했지만, HTTPS는 중간에 SSL을 거친다
- SSL은 암호화
- (추가조사)
TCP/UDP
TCP
- 연결형 프로토콜
- 흐름제어, 오류제어를
- 요류시 재전송
UDP
- 비연결형 프로토콜
- 받았는지 확인안하고 그냥보냄
- 손상된 세그먼트를 재전송하지 않음
- timeout시에 다시보냄
CROS
CROS(Cross Origin Resource Sharing)란?
- 도메인 또는 포트가 다른 서버의 자원을 요청하는 매커니즘
- 동일 출처 정책(same-origin policy)
- 불러온 html이나 js가 다른출처에서 가져온 리소스와 상호작용하는것을 제한함
해결방법
- 서버에서 Access-Control-Allow-Origin response 헤더를 추가
- node.js의 미들웨어 CORS 추가
- react의 경우 webpack-dev-server의 proxy 기능을 사용