# 지수 라인 면접 ## 스터디 하고 있나? 스터디는 저는 안하고 같은 팀했던 친구 한명이랑 카페 만나서 공부중 같은 팀 계신 분 중에 면접 보실 분도 있는 거 같아여 아~ 아~ 네네 맞아요 (인정) 다름 부캠퍼들이랑 연락하나? ㅇㅇ 면접 보신 분 있나? 내가 처음 모든 인원이 커뮤니티가 되는게 아니구나 알겠다. ## ❓ 프로젝트 관련 질문 시작 ### 프로젝트 최근에 한 것도 좋고 기술 위주 질문하기 좋게 내가 한 것 위주로 자기소개 하기 코코드 프로젝트 코드샌드박스를 클론한 프로젝트 코드가 실시간으로 빌드되는게 궁금해서 시작 주요한 목표 : 클라이언트 사이드 빌드 기능 구현 지수가 한 것 - CI/CD 프로세스 구축 - 파일 시스템 트리 구조 UI 구현 - 클라이언트 사이드 빌드 팀원 한명과 짝코딩 - IndexedDB를 이용한 브라우저 캐싱 기능 구현 ### 만든 서비스의 구성 그리기 기능위주로 크게 서비스를 일단 3개로 추가적으로 라이브서버를 넣었으나 완벽하게 구현은 못했었음 -> 원래 하려고 했던 어떤 기능이냐? -> 설명 설명 / 완벽하게 기능 구현X / 동기화 문제 -> 구성하기에 편한 방식으로 그려주고 나중에 설명할 때 부가 설명 가능 APIServer / 코코드 클라이언트 앱 제공 서비스 / 코코넛은 클라이언트 사이드 빌드 기능을 제공하는 웹 앱 프로젝트 페이지 그리면서 설명 - iframe에 코코넛 - 프로젝트 정보를 가져와서 빌드만 해주는 것 - 코코넛의 링크만 가지고 다른 브라우저에서 접속하면 배포된 것 처럼 느낄 수 있도록 크게 3서비스로 분류를 나누었고 추가적으로 라이브서버 존재 외부 라이브러리를 사용할 수 있게 디펜던시서버 구성 - 설치한 적이 있으면 캐싱된 해당 모듈 전송 - 서버의 로컬에서 모듈을 설치하고 트랜스파일링 한 뒤 전송 ### 실제 물리적인 서버들인지? ### 각각 서버가 어떻게 구현되어 있느지? - api 서버는 node.js로 구성 - 클라이언트 서버는 엔진엑스로 한번 감싸놓음 ### 앞단에 nginx 서버를 두어야겠다고 생각한 이유는?(16분 46초) - 절었다. - 하나의 요청에 따라 해당하는 응답을 보내주기 위해 사용했다. > 면접관: 결국 유저는 첫번째 nginx 서버를 통해서 어느 서버에 요청을 해야 할지 알게 되고 실제 서버에 전송하는 거군요? > 나: 네 맞습니다. https://jcdgods.tistory.com/322 ### 물리적으로 나눈 이유는 무엇인지? - 각각의 서버를 서로 연관이 안되게 할 수 있다고 생각했고 - 코드를 작성할 때 서로 충돌도 안날 것 같다고 생각 ### 그러면 기능이 추가되면 서버가 하나씩 계속 추가가 되는 것인가? - 존재하는 서버에 섞일 수 없다면 하나 생겨야 한다 ### 제일 효율적이라고 생각하나? - 다른 방법도 있을 것으로 생각하나 - 우리가 할 수 있는 방법 중에서 이 방법이 가장 효율적일 것으로 생각했다 ### 물리적으로 서버로 나눠야 하는 타당한 이유는 무엇이 있을까? - 하나의 서버안에서 모든 것이 실행되면 - 해당하는 서버가 특수한 이유로 인해 장애가 발생할 수 있기 때문에 나우어야 한다, - 나눠진 경우 어느 서버에서 에러가 났는지 빨리 알 수 있다. ### 한 서버에서 논리적으로 분리되어 있으면 트러블 슈팅이 어려울까? - 경우에 따라서 다를 것으로 생각된다. - 한 서버에서 여러개의 서버가 돌아가고 있을 때 - 하나의 장애로 인해 다른 곳에 영향을 끼칠 수 있을 것으로 - 생각하는데 자세하게는 모르겠다. ### 코드샌드박스를 참고해서 만들었다고 했는데 참고한 내용과 직접 고민한 내용을 나눠서 설명하면? (20:58) - 직접 해보면서 느꼈다. ### 클라이언트 사이드 빌드에 관해서 질문한듯, 개절었다.(21:40 ~ 24:50) - 파일로 저장안하고 데이터로 저장 - 파일 데이터를 가지고 런타임에서 바벨로 트랜스파일링 - 나온 결과를 우리만의 웹팩으로 번들링 ### 클라이언트 사이드 빌드과정에서 보안적으로 위험한 부분은 없었을지? - 그 과정에서 보안적으로 위험될 부분은 생각을 못했다. - 프로젝트의 정보가 훼손되거나 하는 부분인데 - 트랜스파일링 하고 번들링 하는 부분이 브라우저 내에서만 이루어 지기 때문에 보안 문제는 없을 것으로 생각했다. #### ⛱ 대답을 잘 할 수 있다면 하면 좋을 것 같은 말 SQL인젝션, XSS문제가 있을 수도 있을 것 같다. 보안에 위험이 되는 코드를 작성하고 저장을 누르면 이것이 DB에 저장되면 SQL인젝션 문제가 발생한다. 내 프로젝트에 악성 스크립트를 작성하고 다른 사람이 해당 프로젝트에 접속하면 XSS문제 발생 ### 파일을 데이터 구조로 어떻게 나누었는지? (25:30) ## ❓ 이력서 관련 질문 시작 ### 이력서에 RESTapi를 적어주셨는데 무엇인지 설명할 수 있는지? ### 어떤 API가 Restful하다는 것과 Restful하지 않은 것이라고 부를 수 있을 것이라고 생각하나? ### REST의 약어를 아는지? ### GraphQL과 뭐가 다른가? ### 그러면 RESTAPI는 GraphQL보다 안좋은 거고 다 바꿔야 겠네요? ### GraphQL이 새로나온 쿼리 랭귀지 라고 하면 REST도 머 언어인가? 새로나온 프로토콜인가? ### 백엔드에서는 그럼 GraphQL로 어떻게 구현해야 하는가? - 절었다. 기억이 안났다. ## ❓ 자바스크립트 질문 시작 ### 클로저에 대해서 설명 부탁 ### 클로저는 어떤 어떤 것을 갖춘 함수이다 인가요? ### 결국 끝은 함수인거죠? - 함수이기도 하고 환경이기도하다. ### 클로저를 선언한 곳이라고 하셨는데 클로저는 어떻게 선언하는지? ### 어떠한 자바스크립트 언어의 현상 때문에 이런게 생기는지 설명할 수 있는지? ### 클로저에서 상위 스코프에서 선언한 것이 남아 있다고 하셨는데 어떻게 남겨둘것과 없어질 것을 판단하는지? - 가비지 컬렉터 이야기 했음 ### 함수 선언식과 표현식의 차이와 장단점 그리고 특징을 설명할 수 있나 - 호이스팅, 변수 선언 / 초기화 / 할당 단계 ## ❓ 웹 관련? 질문 시작 ### 브라우저에서 html을 받았을 때 화면에 어떻게 그려지는 지 과정 ### dom트리를 만들게 되는데 dom이 뭔데요 ### dom이 어떤 것의 약자인지 아는지? 문서를 해석하고, 화면에 그려내고, 해제하고 할 때 발생하는 이벤트들 ### 렌더링 과정 중간중간에 특정 이벤트가 발생하는데 어떤 것들이 있을까? document event 관련 문서 https://developer.mozilla.org/ko/docs/Web/Events ### 사용자가 주소 표시줄에 주소를 치고 엔터를 쳤을 때 서버에 도착하기 전까지 일어나는 과정 여기 시리즈 한번 봐보기 https://d2.naver.com/helloworld/2922312 혁우님 추천 만화 - DNS에 대한 상세 설명 인 듯 https://howdns.works ## ❓ 문제 해결력 관련 질문 ### 10만명의 친구 데이터를 관리하는 자료구조는 어떤 것이 좋을까? ### 그 정보가 정렬도 되어야 한다면? - 나는 맵이라고 하였고 - b트리를 주로 쓴다고 말하심 ### 맵으로 한다면 중복이 일어나는 경우에는 어떻게 할 것인가? # 😡 회고(지수) 그 저 어 이런거를 너무 많이 섞는다. 듣기 싫다. 말을 너무 뜸들인다. 자세히 알지 못하는 경우에는 잘 정리가 되지 않은 상태로 이야기를 하기때문에 말을 하는 도중에 단어를 계속 정정하게 되고 이는 듣기 매우 불편하게 느껴진다. 한 문장을 또박또박 제대로 말하지 못했던 것 같음.