[면접] 면접 연습1
질문 내용
- REST API가 뭔가요? 왜 이걸 써야하나요? REST API 외에 다른 방법도 있을까요? (REST API 어렵다…다른 포스트를 계속 찾아봐도 이해가 안 됌ㅜㅜ 많이 읽어보고 그나마 이해되는 부분만 정리…)
- REST: 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나. HTTP Url을 통해 자원(Resource)를 명시하고, HTTP Method(GET, POST, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것.
- CRUD : Create(생성-POST), Read(조회-GET), Update(수정-PUT), Delete(삭제-DELETE) [장점]
- REST API 메세지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악 가능.
- 서버와 클라이언트의 역할을 명확히 분리한다. [단점]
- 표준이 존재하지 않는다.
-
사용할 수 있는 Method가 4가지 밖에 없어서, HTTP Method 형태가 제한적이다.
- REST API는 REST를 기반으로 API를 구현한 것.
- Array와 Linked-List를 설명해보세요.
- Array: 검색을 할 때 인덱스로 찾을 수 있어서 유용하다. 추가/삭제를 할 때 그 위치에서 한 칸씩 당겨지거나 밀어야하기 때문에 Linked-List보다 느림.
- Linked-List: 각 노드는 다음 노드의 주소값만 알고 있어서 검색을 할 때 하나하나 확인해야한다. 하지만 추가/삭제의 경우 그 위치에서 연결 하거나 끊으면 되기 때문에 Array보다 빠르다.(여기에서 실수…Linked-List는 중간에서 추가/삭제가 있을 경우에 빠른 것. 마지막 요소를 수정할 때는 전체를 다 검색해서 마지막 요소를 찾은 후 작업해야하기 때문에 Array보다 효율이 좋지 않다!)
- 관리자 로그인을 할 때 비동기로 구현했는데 동기로 해도 되지 않나요?
- 관리자 페이지에서 로그인이 된 후 다른 작업이 되도록 했기 때문에 이 부분에서는 순서대로 작업되야하는 게 맞음. 하지만 이게 동기로 구현된 것은 아니다. 로그인을 하면서 시간 체크를 해서 몇 초 이상 로그인이 안 되면 서버가 꺼졌다던지, 에러가 생겼다던지 등의 문제를 확인할 수 있는 기능을 쓸 수도 있고, 여러 명의 관리자가 로그인을 할 때 동기로 하게 되면 한 사람이 로그인이 되야 다음 사람이 로그인 요청을 보낼 수 있게 된다. 요청/응답은 비동기를 써야한다.
- 4주 프로젝트 설명 및 구현한 기능 설명
- 특정 SNS를 크롤링해서 그 정보를 확인할 수 있고, 제휴를 맺을 수 있는 메세지 기능을 추가한 관리자 페이지를 구현함. 약 2주 간 크롤러를 작업했고, 관리자 페이지를 React, Next.js를 이용하여 구현하였다. SNS 특정 유저에 메세지를 보내는 기능과 OAuth 체크 모듈을 만듦.
- OAuth가 뭔가요?
- OAuth는 Open Authorization(인증), Authentication(입증)을 뜻하고, 어플리케이션(구글, 페이스북, 인스타그램 등)의 유저 비밀번호를 Third party앱에 제공하지 않고 인증, 인가를 할 수 있는 오픈 스탠다드 프로토콜이다. OAuth 인증을 통해 어플리케이션 API를 유저 대신 접근할 수 있는 권한을 얻을 수 있다.
토요일 면접 연습 피드백
- 기초 부족. 실제 면접이었으면 탈락.
- 대답은 자신있게 해서 괜찮음.
- 모르는 부분은 모른다고 하는 게 좋다. 정말 잘못된 대답을 하면 마이너스.
-
외워서 대답하는 것 보단 공부를 한 뒤 자기만의 가공된 내용을 얘기하는 게 좋음.
- 테스트코드, 일정관리, 크롤러 코드
- 지금도 크롤러를 모른다고 하면 관심이 없다는 것
- 시도한 것 OK, 아쉬운 점, 해결하려고 했던 점?
- 유닛 테스트가 없음. 잘 모르는 부분이지만 대답을 했으면 점수를 딸 수 있음.