본문 바로가기

verdantjuly/Today I Learned

TIL 20231030

728x90

이번 주 목표

면접 준비 확실히 

면접 잘 보기

오늘 목표

오전 : 플링커 면접 준비, 플링커 면접

오후 : 팀플백 면접 준비

오늘 한 것

플링커 면접 준비

 

[ 플링커 면접 준비 ]

 

0. 자기소개

저는 거꾸로 생각하길 좋아하는 개발자 이다영입니다. 더 좋은 리더십을 찾기 위해 더 좋은 팔로워십을 연구했습니다.
제가 연구한 더 좋은 팔로워십으로 더 나은 서비스를 만들고 싶어서 지원하게 되었습니다. 

1. 지원동기

저는 그림이나 사진이 기술을 만나 사람들에게 주는 영향력이 크다고 생각합니다.

평소에 고흐의 꽃 피는 아몬드나무라는 그림을 참 좋아하는데

미디어전시를 통해서 그 아몬드 나무 아래에 있는듯한 행복한 경험을 하였습니다.

또 번화가를 지나며 찍은 스티커 사진들로 남겼던 추억들을 되짚어 보면서

앞으로 더 나아갈 힘을 얻습니다.

짧은 순간의 감동과 추억이 사람에게 살아갈 에너지를 준다고 생각합니다.

그 변화를 이루는 것들을 만들어 보고 싶어서 지원하게 되었습니다.

2. 사전 질문

  • 플링커가 어떤 회사라고 생각하는지
    플링커는 기술을 통해 예술을 전달하고 추억을 남겨 사람들에게 내일을 살아갈 에너지를 주는 회사라고 생각합니다.

  • 어떤 도움을 줄 수 있을까요?
    저는 흡수력이 좋은 개발자로 한 번 배운 것은 활용할 줄 알아야 기분이 좋아집니다.
    플링커에 입사하게 된다면 지금까지 배운 Node.js와 데이터베이스 설계와 CI/CD를 포함해
    앞으로 배워나가는 것들의 장점을 모두 서비스에 녹여낼 수 있습니다.

  • 비전공자로써 전공자와의 차별점 어필
    폭발적인 성장력과 몰입하는 습관이라고 생각합니다.
    전공자는 4년에 걸쳐 과정을 배우지만 비전공자에게 주어진 시간은 많지 않습니다.
    6개월이라는 시간 동안 최대한 열심히 살아야만 프로젝트들을 완성할 수 있었습니다.
    그래서 주어진 시간에 더 몰입하는 습관을 갖게 되었습니다.
    그 결과 변수를 모르는 사람에서 프로젝트 리더로 성장할 수 있었습니다.

3-1. Node.js 란?

Chrome V8 javascript 엔진으로 빌드된 자바스크립트 런타임입니다. 

논블로킹 I/O와 싱글스레드를 특징으로 갖습니다.

 

논 블로킹이란 이전 작업이 완료될 때까지 대기하지 않고 다음 작업을 수행하는 것을 의미합니다. 

싱글 스레드는 스레드가 하나 밖에 없다는 뜻입니다.

 

3-2. 프로세스와 쓰레드 그 차이

프로세스는 컴퓨터에서 실행되는 독립적인 프로그램의 인스턴스입니다.

쓰레드는 어떤 프로그램 내에서 특히 프로세스 내에서 실행되는 독립적인 실행 흐름 단위입니다.

 

프로세스는 완전히 독립되어 있어 하나의 프로세스의 오류가 다른 프로세스에 영향을 끼치지 않습니다.

쓰레드는 같은 프로세스 안에서 실행되며 공간과 자원을 고융하며 사용합니다. 

4-1. CI/CD란? 

지속적 통합과 지속적 배포로 
개발단계를 자동화하여 더 짧은 주기로 고객에게 제공하는 방법입니다. 

 

4-2. 내가 구현한 CI/CD

처음에 Github Actions의 secerets 기능을 통해 env를 생성하고 빌드합니다. 

빌드가 마친 파일은 node_modules 및 불필요한 파일을 제외하고 S3에 압축되어 올라가게 됩니다.
CodeDeploy를 통해 압축 받은 파일을 내려받고 after-deploy라는 쉘 스크립트를 실행하게 됩니다.

npm 을 설치하고 전체 서버를 종료한 뒤 pm2로 각 서버를 올립니다. 

5. TDD란?

테스트 주도 개발입니다.

작은 단위의 테스트 케이스를 작성하고

이를 통과하는 코드를 추가하는 단계를 반복하여 구현합니다.

6. 트래픽 부하가 발생한다면?

먼저 모든 서버의 트래픽을 감지하는 서버를 만듭니다. 이 서버에서 이상 트래픽이 감지되면 일시적으로 인스턴스의 용량을 늘리는 수직 확장이나 로드밸런서를 이용해 서버의 수를 늘리는 수평확장을 진행합니다. 그리고 개발자에게 로그를 이메일, 슬랙 등의 알림으로 보내줍니다. 

7. NoSQL과 RDBMS의 차이점

NoSQL은 비관계형 데이터베이스입니다. 
고정된 스키마가 없어 자유로운 데이터 저장이 가능합니다.

데이터가 규격화 되어 있지 않아 Key 값에 대한 입출력만 지원합니다.

 

RDBMS는 관계형 데이터베이스입니다. 

데이터를 테이블로 구성하고 이들간의 관계를 정의하여 데이터 탐색 속도가 빠릅니다. 
하지만 반드시 스키마 규격에 맞춰서 데이터를 다뤄야 합니다. 

8. RDBMS의 정규화

RDBMS의 정규화란 중복을 최소화 하게 데이터를 구조화하는 프로세스입니다.

예를 들면 일치하는 primary key와 foreign key를 이용하여 두 테이블을 join 하는 경우가 있습니다. 



[ 플링커 면접 ] 


1. 앞으로 어떤 프로젝트를 만들고 싶은가요?
제가 이전에 공부했었던 커피 분야를 활용하여 생두에서부터 커피잔에 담기기까지의 과정을 T for 2와 같은 어플리케이션으로 제작하고 싶습니다. 교육용 앱으로 제작하여 바리스타 교육 비용을 절감할 수 있을 것 같습니다. 

 

2. url을 주소창에 입력하고 화면에 출력될 때까지의 과정을 설명해 주세요. 

url을 주소창에 입력하면 프론트엔드 서버 역할도 담당하고 있는 8000번 gateway로 요청을 보냅니다. gateway에서 담당하는 TCP서버로 보냅니다. TCP서버에서 비즈니스 로직을 통과시켜 응답을 반환합니다. 반환된 응답을 다시 Gateway를 통해 화면에 출력합니다. 이때 status code에 따라 메시지 객체를 통과시켜 해당하는 메시지를 alert로 출력합니다. 

 

3. TCP통신의 3way handshaking을 설명해 주실 수 있나요?

3 way handshaking에 대하여 공부하였으나 아직 설명할 수준이 되지 못합니다.

 

4. 선호하는 기업상

저는 사람이 좋은 기업에 가고 싶습니다. 좋은 사람을 만나면 좋은 에너지가 생기기 때문입니다. 

 

5. 자기소개, 지원동기, 프로젝트 설명, 플링커에게 어떤 도움을 줄 수 있을지, 코드적 문제를 해결하는 방법 

 

[3 way handshaking]

[STEP 1]

A클라이언트는 B서버에 접속을 요청하는 SYN 패킷을 보낸다.

이때 A클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는SYN_SENT 상태가 되는 것이다.

 

[STEP 2] 

B서버는 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 설정된 패킷을 발송하고 A가 다시 ACK으로 응답하기를 기다린다. 이때 B서버는 SYN_RECEIVED 상태가 된다.

 

[STEP 3]

A클라이언트는 B서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는것이다.

이때의 B서버 상태가 ESTABLISHED 이다.

 

위와 같은 방식으로 통신하는것이 신뢰성 있는 연결을 맺어 준다는 TCP의 3 Way handshake 방식이다.

참고자료 : https://mindnet.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-22%ED%8E%B8-TCP-3-WayHandshake-4-WayHandshake


정리 

내가 구현한 CI/CD

처음에 Github Actions의 secerets 기능을 통해 env를 생성하고 빌드합니다. 

빌드가 마친 파일은 node_modules 및 불필요한 파일을 제외하고 S3에 압축되어 올라가게 됩니다.
CodeDeploy를 통해 압축 받은 파일을 내려받고 after-deploy라는 쉘 스크립트를 실행하게 됩니다.

npm 을 설치하고 전체 서버를 종료한 뒤 pm2로 각 서버를 올립니다. 

[3 way handshaking]

[STEP 1]

A클라이언트는 B서버에 접속을 요청하는 SYN 패킷을 보낸다.

이때 A클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는SYN_SENT 상태가 되는 것이다.

 

[STEP 2] 

B서버는 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 설정된 패킷을 발송하고 A가 다시 ACK으로 응답하기를 기다린다. 이때 B서버는 SYN_RECEIVED 상태가 된다.

 

[STEP 3]

A클라이언트는 B서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는것이다.

이때의 B서버 상태가 ESTABLISHED 이다.

 

위와 같은 방식으로 통신하는것이 신뢰성 있는 연결을 맺어 준다는 TCP의 3 Way handshake 방식이다.

 

KPT

Keep

하려고 노력하는 것

 

Problem

더 열심히 하지 못하는 것
3악수!!!!!!!!! 를 대답 못하는 건 말이 안 됨

 

Try

더욱 열정적으로 하자
공부를 하자

소감

초심을 잃지 말자

암기력이 부족하다면 더 많이 보고 제대로 이해하고 더 눈에 들어오게 하자

 

 

 

'verdantjuly > Today I Learned' 카테고리의 다른 글

TIL 20231101  (2) 2023.11.01
TIL 20231031  (0) 2023.10.31
TIL 20231026  (0) 2023.10.26
TIL 20231023  (1) 2023.10.23
TIL 20231022  (0) 2023.10.23