무브라더

너무나도 망한 프론트엔드 기술면접 복기.. 본문

Programming/WEB

너무나도 망한 프론트엔드 기술면접 복기..

동스다
반응형
SMALL

평소에 해당 회사 서비스를 많이 이용했었고 개발문화도 잘 되어있어 붙으면 좋겠다라고 생각하고 지원한 회사에 서류 합격하여 면접 기회가 생겨 평소에도 긴장을 많이 하지만 긴장을 엄청 하고 면접에 참여를 했다

처음 git 관련 질문에서 너무 어버버하고 잘 대답하지 못해서 멘탈이 나가 이후 질문에서 아는 문제도 제대로

답변하지 못했다... 면접에는 떨어질거로 예상하지만 이 면접 경험을 토대로 나의 부족함을 깨달았고 이번 면접을 복기해보려고한다.

 

- git에서 Pull Request란?

- git stash란?

- 만약 develop 브랜치에서 파생된 브랜치에서 작업을 진행했을때 서로 다른 코드를 들고있으면 어떻게 할건가?

- 아르고CD 와 젠킨스에 대해 설명해주세요.

- CICD가 뭔가요?

- http에 대해 설명해주세요

- http 200 300 400 500 에 대해 설명해주세요

- vue 에서 이벤트 버스에 대해 설명해주세요.

- vue 에서 자식에서 부모로 데이터를 전달하는 방법?

- http 구조? (response header 에 어떤게 있는지?)

- git cherry pick이란?

- git 에서 commit, pull, push 를 제외하고 사용해본 명령어

 

  • git에서 Pull Request란?

사용자가 원격 저장소에 Push하여 새로운 사항이 적용됐을 경우, 다른 사용자에게 푸쉬된 상황을 알리는 것을 말한다.

만약 원격 저장소에 Push를 했다면 깃하브에서 해당 레포지토리에 들어가면 상단에 Compare & pull request 라는 버튼이 뜰 것이다. 해당 버튼을 클릭하면 Push한 내용은 간단하게 요약해서 알려줄 수 있는 입력칸이 등장한다.

메시지를 작성한 뒤 우측 하단의 Create Pull Request 버튼을 클릭함으로서 전송된다.

pull request를 보내놓으면 협업하는 사람들에게 리뷰를 받을 수 있고, 내가 올린 코드에 동료가 병합하여 진행할 수도 있다.

  • git stash 란

아직 마무리하지 않은 작업을 스택에 잠시 저장할 수 있도록 하는 명령어다.

이를 통해 아직 완료하지 않은 일을 commit 하지 않고 나중에 다시 꺼내와 마무리할 수 있다.

stash란 아래에 해당하는 파일들을 보관해두는 장소이다.

 - Modified 이면서 Tracked 상태인 파일 ( Tracked : 과거에 이미 commit 하여 스냅샷에 넣어진 관리 대상 상태의 파일)

 - Staging Area에 있는 파일 (Staged 상태의 파일)

  • 만약 develop 브랜치에서 파생된 브랜치에서 작업을 진행했을때 서로 다른 코드를 들고있으면 어떻게 할건가?
  • 아르고CD 와 젠킨스에 대해 설명해주세요.

젠킨스는 소프트웨어 개발 시 지속적으로 통합 서비스를 제공하는 툴이다. CI(Continuous Integration) 툴이라고 표현한다

젠킨스의 이점으로는 개발중인 프로젝트에서 커밋은 매우 빈번하게 일어나기 때문에 커밋 횟수만큼 빌드를 실행하는 것이 아니라 직업이 큐잉되어 자신이 실행될 차례를 기다리게된다. 코드의 변경과 함께 이뤄지는 이 같은 자동화된 빌드와 테스트 작업들은 다음과 같은 이점들을 가져다준다

- 프로젝트 표준 컴파일 환경에서의 컴파일 오류 검출

- 자동화 테스트 수행

- 정적 코드 분석에 의한 코딩 규약 준수여부 체크

- 프로파일링 툴을 이용한 소스 변경에 따른 성능 변화 감시

- 결합 테스트 환경에 대한 배포작업

https://ict-nroo.tistory.com/31 참고

 

아르고CD는Kubernetes 환경에서의 애플리케이션 배포와 관리를 지원하는 도구이다.

Kubernetes 클러스터에 배포된 애플리케이션의 CICD 파이프라인에서 CD부분을 담당하며 Git 저장소에서 변경사항을 감지하여 자동으로 Kubernetes 클러스터에 애플리케이션을 배포할 수 있다.

https://wlsdn3004.tistory.com/37 참고

https://jenakim47.tistory.com/74 참고

  • CICD란

CI/CD는 애플리케이션 개발 단계부터 배포 때까지의 모든 단계를 자동화를 통해서 좀 더 효율적이고 빠르게 사용자에게 빈번히 배포할 수 있는 것을 말한다.

CI는 지속적인 통합이라는 의미이다. 애플리케이션의 버그 수정이나 새로운 코드 변경이 주기적으로 빌드 및 테스트 되면서 공유되는 레포지토리에 통합(merge)되는 것을 의미한다.

 

CD는 지속적인 제공이라는 의미와 지속적인 배포라는 의미가 있다 (Continuous Delivery, Continuous Deployment)

CI에서 Build되고 Test 된 후에 배포 단계에서 릴리즈 할 준비 단계를 거치고 문제가 없는지 수정할만한 것들이 없는지 개발자가 검증하는 팀이 검증한다.

그 후 나온 결론이 이제 사용자들에게 서비스를 제공해도 되겠다고 정해져서 배포를 수동적으로 진행하는 것이 Continuous Delivery 지속적인 제공이며 위와 같이 배포할 준비가 되자마자 자동화를 통하여 배포를 진행하는 것을 Continuous Deployment 지속적인 배포라고 한다.

  • HTTP에 대해 설명해주세요

https://www.cloudflare.com/ko-kr/learning/ddos/glossary/hypertext-transfer-protocol-http/ 참고

  • HTTP 200, 300, 400, 500 에 대해 설명해주세요

https://www.cloudflare.com/ko-kr/learning/ddos/glossary/hypertext-transfer-protocol-http/ 참고

  • vue 에서 이벤트 버스에 대해 설명해주세요.

https://mirabo.tistory.com/119 참고

  • vue 에서 자식에서 부모로 데이터를 전달하는 방법?

emits를 사용!

https://velog.io/@falling_star3/Vue.js-Props-Emits-%EB%B6%80%EB%AA%A8%EC%9E%90%EC%8B%9D-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%84%EB%8B%AC 참고

  • http 구조? (response header 에 어떤게 있는지?)

https://www.cloudflare.com/ko-kr/learning/ddos/glossary/hypertext-transfer-protocol-http/ 참고

  • git cherry pick이란?

다른 브랜치에 있는 커밋을 선택하여 내 브랜치에 적용시킬 때 사용하는 명령어

rebase도 원하는 커밋을 선택할 수 있지만 현재 브랜치 위에서만 가능하다.

다른 브랜치의 commit을 가져오고 싶다면 해당 브랜치를 현재 브랜치로 merge 후 rebase 해야한다.

cherry pick은 같은 내용을 갖고 있는 커밋을 여러개 생성하기 때문에 꼭 사용해야만 할 때 진행하는 것이 좋다.

https://brownbears.tistory.com/606 참고

  • git 에서 commit, pull, push 를 제외하고 사용해본 명령어
반응형
LIST
Comments