interview-questions

자기소개

자기소개 이후 나올 질문을 예상하여 준비하고 가는게 좋음

  1. 자기 신분소개와 여기 온 이유 설정

    안녕하세요. 어느회사에서 어떤일을 하고 있는 누구 입니다.
    누구 소개로 어느 포지션에 지원하게 되었습니다.

  2. 왜 내가 이 포지션에 적합한가

    미리 준비해온 세가지 경쟁력을 나열하면서 장점을 요약하는것 가능
    직장을 연대기로 나열하면서 강점을 요약하는것도 가능

  3. 왜 옮기려 하는지 이직 사유

    이 회사, 이 포지션이 왜 마음에 들었는지 여기서 어떤일을 하고 싶은지

OOP, AOP, FP

객체지향 프로그래밍(OOP)

  • 설명
    • Object(추상화 대상)을 추상화 시켜 상태(속성, 어트리뷰트)와 행위(메서드)를 가진 객체를 만듬
    • 객체간의 상호작용을 통해 로직을 구현하는 방법
  • 장점
    • 재사용성 증가(클래스 가져다 쓰기, 상속)
    • 유지보수가 간단(절차지향 보다)
    • 클래스단위로 모듈화가 가능, 대형 프로젝트에 적합
  • 단점
    • 처리속도가 상대적으로 느리다
    • 객체가 많으면 용량이 커진다
    • 설계시 많은 시간과 노력이 필요하다

관점 지향 프로그래밍(AOP)

  • OOP로 개발했을때 소스코드상에서 계속 반복되는 부분이 있음
    • 트랜젝션, 인증, 로깅, 성능분석 등
  • 이것을 공통모듈화하여 잘끼워넣는것을 말함

함수형 프로그래밍(FP)

  • 함수가 1급 객체로, 파라메터로 할당 가능
  • 변경 가능한 상태를 불변상태(Immutable)로 만들어 사이드 이펙트를 없앰
  • 코드를 간결하게 하고 가독성을 높임
  • 동시성 작업을 보다 쉽고 안전하게

MVC 와 MVVC

(추가조사)

Restful API

  • 웹에있는 자원을 직관적으로 전달하기위한 인터페이스
  • Http 프로토콜을 통해 Json/Xml 방식을 주로 씀
  • 리소스의 응답 상태코드 값을 명확히
  • REST 법칙
    1. URI는 자원명을 포함해야함
    2. 자원에대한 행위는 Http Method로 표현
      • GET, POST, PUT, DELETE

운영체제

프로세스와 스레드

프로세스(Process)

  • 실행중인 프로그램
  • 디스크에서 메모리에 적재되어, CPU 자원을 할당받을수 있게된 상태

    스레드(Thead)

  • 프로세스의 작업 실행 단위
  • 멀티스레드는 프로세스내에 여러개의 프로그램 흐름을 말한다
  • 스레드간에는 프로세스의 주소나 자원을 공유할 수 있다

멀티 스레드 환경

  • 장점
    • 멀티 프로세스에 비해 자원 소모가 줄어듬
    • 힙영역을 사용하면 스레드간 통신이 간단
    • 스레드간의 Context Swiching은 캐시메모리를 비울 필요가 없다
    • 시스템의 처리량이 늘며, 공간과 시간, 자원이 절약됨
  • 단점
    • 힙 영역을 공유하기 때문에, 해당 자원을 사용할때 동기화 필요
    • 동기화를 위해 과도한 락 사용시, 병목현상 발생

멀티 스레드 vs 멀티 프로세스

  • 멀티스레드
    • 자원을 공유하여 효율적
    • 힙 영역을 사용하여 스레드간 통신이 간단
    • 동기화 문제
    • 하나의 스레드 오류시, 다른 스레드 비정상 종료 위험
  • 멀티 프로세스
    • 자원을 공유하지 않아 자원소모 높음
    • 서로간의 통신이 비교적 어려움
    • CPU자원을 더 소모

동기/비동기, 블로킹/논블로킹

동기

  • 요청과 그 결과가 동시에 일어난다는 뜻
  • 함수의 결과를 호출한쪽에서 처리

비동기

  • 요청과 그 결과가 동시에 일어나지 않는다는 뜻
  • 함수의 그 결과를 호출한쪽에서 처리하지 않음

블로킹

  • 자신의 수행결과가 끝날떄 까지 제어권을 가지고 있는 것

논블로킹

  • 자신이 호출되었을 때 제어권을 바로 호출한쪽으로 넘기며, 호출한쪽에서 바로 다른일을 할 수 있도록 함

웹과 통신

HTTP 요청 흐름(웹 브라우저에서의 요청)

※면접 단골질문

  1. 브라우저
    • URL 값 파싱후, HTTP 요청 메세지를 만듬
    • OS는 DNS 서버를 조회해서 URL을 Host의 IP주소로 변환
  2. 프로토콜 스택(OS에 내장된 네트워크 제어용 소프트웨어, TCP/IP 계층)과 LAN 어댑터
    • 패킷 생성 후 데이터 저장
    • 수신주소를 제어정보에 붙임
    • 패킷을 LAN 어댑터에 넘김
    • LAN 어댑터는 패킷을 전기신호로 변환시켜 케이블에 송출
  3. 허브, 스위치, 라우터
    • LAN 어댑터로부터 송신한 패킷을 수신
    • 라우터는 패킷은 ISP에 전달, 인터넷으로 들어감
  4. 액세스 회선, ISP
    • 액세스 회선은 인터넷의 입구에 있는 통신 회선
    • 액새스 회선에 의해 통신사용 라우터(POP, Point Of Presence)까지 운반
    • POP를 거쳐 인터넷의 핵심부로 진입
    • 고속 라우터를 거쳐 목적지까지 패킷이 흘러감
  5. 방화벽, 캐시서버
    • 목적지의 LAN에 도착하게 된다
    • 방화벽이 먼저 패킷을 검사 한후
    • 캐시서버로 보내서 웹 서버까지 갈 필요가 있는지 검사
  6. 웹서버
    • 패킷이 물리적 웹 서버에 도착
    • 웹서버의 프로토콜 스택이 패킷을 추출하여 메시지 복원후 웹 서버 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가 다른출처에서 가져온 리소스와 상호작용하는것을 제한함

해결방법

  1. 서버에서 Access-Control-Allow-Origin response 헤더를 추가
  2. node.js의 미들웨어 CORS 추가
  3. react의 경우 webpack-dev-server의 proxy 기능을 사용
Share