FE

Promise 패턴 잘 활용하기

  • Promise 패턴을 활용한 코드 사용(setTimeout 또는 fetch API)
    -then과 catch 메서드를 활용해서 구현

fetch API를 활용한 데이터 통신

  • fetch API를 활용해서 GET/POST 요청 보내기 성공

  • async 함수를 활용

DOM 렌더링

  • 렌더링 작업에서 template literal 방식을 적극 활용
  • 반복적인 DOM 탐색 작업을 줄이려는 시도

JS 문법 활용

  • 해체활용(destructuring) 문법활용
  • spread operator, rest parameter, optional chaining 중 한가지 이상 사용 경험

클린코드

  • 배열의 고차함수, 비동기 함수(setTimeout, addEventlistener, then)에 전달되는 콜백함수를 별도로 분리해서 선언
  • 함수이름은 동사+명사 형식, 변수는 명사로 ‘의도’를 충분히 알 수 있는 네이밍으로 구현
  • 들여쓰기가 3-4단계로 되어 있는 코드를 줄이려는 본인만의 시도

서술형

  • Promise패턴의 resolve, reject, then메서드를 중심으로 동작과정을 설명해 보세요.
    • promise는 fulfilled(완료), pending(대기), rejected(거부)의 상태로 나뉜다. 프로미스 객체를 반환하게 되면 무조건 pending 상태로 시작하게 되는데, pending 상태에서 거부와 완료 상태로 나누어 해당 결과가 나올때까지 비동기적으로 기다린 후 이러한 결과에 대해서 then 안에 이벤트 핸들러를 실행해줌으로써 promise작업이 resolve된 후 비동기적으로 이벤트를 실행한다. 하지만 resolve가 아닌 reject가 될 경우에는 catch문으로 가서 해당 예외에 대한 처리를 하거나, 에러 핸들러를 then에 같이 넣어줌으로써 비동기적으로 reject가 일어난 후 이벤트를 실행시키는 방향으로 동작시킬 수도 있다.

BE

인증 구현

  • 쿠키와 세션으로 로그인 및 인증 구현

  • 외부 모듈 설치 없이 기본 Node.js와 Express 만으로 인증 구현 또는 passport의 동작을 이해하고 passport-local을 이용해서 로그인 구현

배포

  • 가상 서버에 배포 수행

  • 별도의 자동화 도구를 사용하지 않고 직접 리눅스 명령어를 이용해서 배포 수행

서술형

  • 인증(Authentication)과 인가(Authorization)가 무엇인지 설명해 보세요. 인증은 식별된 사용자가 자기 자신임을 인증하는 과정이며, 해당 과정에서 해당 사용자에 대해 사실이라고 주장하는 부분에 대해 검증하는 단계이다. 반면 인가의 경우는 신원에 따라 접근 권한을 부여하는 것으로, 인증과 인가는 서로 다른 개념이다.
  • 세션이 무엇인지 설명해 보세요.
    • 세션은 클라리언트로부터 오는 일련의 요청을 하나의 상태로 보고 그 상태를 일정하게 유지하는 기술이다. 이러한 세션의 단위는 클라이언트가 웹 서버에 접속하고 있는 상태별로 단위를 가진다.
    • 세션은 웹 서버에 클라이언트의 상태를 유지하기 위한 정보를 저장 및 유지하고, 클라이언트에 고유 ID를 부여한 다음 요청이 오면 이에 대해 인증하는 과정을 거친다.
  • 웹 로그인 과정에서 쿠키가 필요한 이유를 설명해 보세요.
    • 웹 로그인 과정에서 쿠키는 정보를 유지하기 위해 필요하다. 세션은 연결된 자체만으로는 이를 제대로 확인할 수 없기 때문에 식별 가능한 정보를 가지고 해당 유저가 현재 세션을 유지하고 있는지에 대해서 확인할 방법이 필요하다. 이를 위해서 사용하는 것이 쿠키이다.
    • 쿠키는 사용자의 컴퓨터, 즉 브라우저에 저장하는 작은 기록을 담고 있는데, 이러한 정보를 로그인 요청이나 다른 api 요청 과정에서 함께 보내면서 매 요청마다 인증 및 인가를 검사하는 과정을 거쳐야 한다. 이렇게 서버에서만이 아니라 클라이언트에서도 유지되어야 하는 세션ID와 같은 것들을 사용자의 브라우저에 저장시킴으로써 세션을 유지시키고, 브라우저로 요청으로부터 적당한 정보를 제공받아 서버는 이에 따른 처리를 할 수 있다.
  • bash 셸에서 linux 명령어를 실행할 경우 OS 내부에서 일어나는 일을 설명해 보세요.
    • 명령어 실행 과정은 가장 먼저 명령어를 파싱하면서 해석하는 과정을 거친다. 파싱을 통해 적절한 명령어를 실행하고 이 과정에서 리눅스 명령어에 해당하는 내장 명령어가 있다면 이를 실행하지만 없다면 환경변수를 참조하여 해당 경로에서 실행파일을 찾는다.
    • 명령어를 찾은 후에는 새로운 프로세스가 생성된다. 해당 과정에서 자식 프로세스를 통해 이러한 실행 파일에 대해 실행하거나 명령어에 따른 작업을 수행한다. 작업이 끝난 후에는 자식 프로세스를 종료시키고 부모 프로세스 또한 자식 프로세스의 상태를 보고 종료시키며, 종료시킨 후에는 프롬프트로 돌아가게 된다.
  • SSH로 접속한 클라이언트를 종료하자 서버 프로세스도 함께 종료되었습니다. 왜 그런 걸까요?
    • 이러한 현상의 이유는 시그널에 의해 발생되는 것으로, ssh로 접속한 클라이언트가 종료될 시에 해당 서버에 sighup이라는 시그널을 보내게 되는데, 이 설정을 받으면 서버의 프로세스들도 종료하는 설정이 되어있어 서버의 프로세스도 함께 종료되는 것이다. 이를 위해서는 nohup 명령어를 통해 ssh 연결 종료가 발생하더라도 sighup 시그널을 받지 않도록 해야한다.

https://velog.io/@captain-yun/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%AA%85%EB%A0%B9%EC%96%B4%EB%A5%BC-%EC%B2%98%EB%A6%AC%ED%95%98%EB%8A%94-%EC%9B%90%EB%A6%AC-feat.%EC%85%B8 https://computing-jhson.tistory.com/126