본문 바로가기

면접준비

면접 오답 노트

 

- 우선순위

1) 컴파일러와 인터프리터의 차이점은 무엇인가?

2) 절차지향 언어와 객체지향 언어의 차이점은 무엇인가?

3) 람다란 무엇인가?

4) 스트림이란 무엇인가?

5) 리플렉션이란 무엇인가? 

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

- Oauth란 무엇인가?

- Docker를 사용해봤는가?

- JPA의 영속성 컨텍스트란 무엇인가?

- JPA의 영속성 컨텍스트의 로컬 캐시란 무엇인가? 

- JPA N+1문제란 무엇인가?

- 컴파일러와 인터프리터의 차이점은 무엇인가?

- 절차지향 언어와 객체지향 언어의 차이점은 무엇인가?

- 1400명인 서비스를 14만명이 사용한다면 어떻게 구성하겠는가?

- 인덱스를 사용해봤는가?

- 인덱스의 클러스터링 인덱스에 대해 알고 있는가?

- 멀티 스레드 코드를 짜봤는가?

- 해시 맵의 내부 구조를 이해하고 있는가?

- AWS를 사용해봤는가?

- 어떤 개발자가 되고 싶은가?

- 람다에 대해서 알고 있는가?

- 스트림에 대해서 알고 있는가?

-> map과 forEach의 차이점은 무엇인가?

- 에러 로그는 어떻게 남겼는가?

- 리플렉션을 알고 있는가?

- 가상 메모리를 알고 있는가?

- JWT에 대해 알고 있는가?

- 인프라쪽 작업을 많이 해봤는가?

- 명령형 프로그래밍과 선언형 프로그래밍의 차이점에 대해 알고 있는가? 

 

- 최근에 어떤 책을 공부했는가?

-> 그 책에서 배운 내용을 실무에 적용해봤는가?

 

- 쿼리 튜닝을 어떻게 했는가? 

- PUT과 POST의 차이점은 무엇인가?

- NodeJS에서 트랜잭션을 직접 설정했는가?

- 금융과 관련된 데이터를 안전하게 거래하기 위해서는 어떻게 코드를 작성해야 하는가?

- 옵저버 패턴에 대해 알고 있는가?

- DNS의 내부 구조에 대해서 알고 있는가?

- 정규화란 무엇인가?

- CORS란 무엇인가?

 

모의 면접 질문

- (정규화 질문에 덧붙여) 역정규화란 무엇인가?

 

 

 

1) 서버 방 탈출
  당신은 토스의 편리한 기능을 OPEN API로 제공하는 팀의 서버 개발자로 합류 했습니다.
  아직 서비스의 아키텍처 파악에 한참이던 때, OPEN API 클라이언트로부터 예상보다 이른 연락을 받았습니다.
  고객: API가 안됩니다.
  나: 어떻게 안되세요? 오류 응답이나 메시지가 있으신가요?
  고객: 그건 잘모르겠는데....일단 API가 안된다고 합니다. 확인 부탁드리겠습니다.
   
  서버의 요청/응답 로그를 확인해보니 실패 이력을 찾을 수 없었습니다.
  실마리를 찾기 위해, 당신은 고객에게 전화하여 문제 상황을 구체적으로 들어보고자 합니다.
  어떤 것들을 물어보면 좋을지 상상하여 작성해 주세요.
  OPEN API는 공중망 인터넷에서 HTTPS로 제공하고 있다고 가정합니다.
 

 

2) 자동이체 요청량 제어하기
  토스은행은 수많은 고객들의 자동이체를 처리하고 있습니다.
  자동이체란, 고객이 설정한 날짜에 고객이 설정한 금액과 날짜에 자동으로 이체되는 서비스입니다.
  평화롭던 어느 날, 남극은행으로의 자동이체 요청이 갑자기 급증하였고, 잠시 후에는 급기기야 자동이체가 실패하기 시작했습니다.
  "토스에서 발생시킨 트래픽으로 인해 거래 장애가 발생하고 있으니, 초당 20건을 넘겨 요청하지 말아달라"는 내용입니다.
  현재 남극은행으로 자동이체 해야할 건은 일 평균 1만 건입니다.
  남극은행 본점의 요청사항을 어떻게 구현할 수 있을지 작성해 주세요.

 

3) 토스 가계부 서비스 개발
  카드, 계좌 사용이력을 하나의 화면에 보여주는 토스 가계부 서비스를 만들려고 합니다.
  현재 토스는 Microservice Architecture(MSA)를 사용하고 있습니다.
  즉, 소규모의 독립적인 서비스들로 구성되어 있으며, 각 서비스는 API를 통해 서로를 호출합니다.
  이러한 맥락에서 카드 서비스의 계좌 서비스 또한 분리되어 있습니다.
  가계부 서비스에서는 카드 서비스와 계좌 서비스에서 데이터를 가져와야 하고, 이때 캐쉬를 적용하려고 합니다.
  A방법 - 가계부 서비스에서 카드 서비스와 계좌 서비스에 대해 Rest API로 통신하고, 카드 서비스와 계좌 서비스 쪽에선 캐쉬 레이어를 적용
  B방법 - 가계부 서비스에서 카드 서비스와 계좌 서비스에 대해 Rest API로 통신하고, 가계부 서비스 측에서 캐쉬 레이러를 적용
  C방법 - 카드 서비스와 계좌 서비스가 각각 Kafka로 데이터를 전송하고, 가계부 서비스는 이 데이터를 Consume 하여 자체적으로 NoSql에 저장 (중간 짤림) 이를 적용
  각 방법으 장점, 단점을 설명해 주세요.
 

 

4) 온라인 명함 조회수 어뷰징 막기
  이번에 보험 설계사가 자신을 PR할 수 있는 '온라인 명함 서비스'를 만들었습니다.
  '온라인 명함 서비스'는 누구나 링크를 통해서 보험 설계사의 정보를 확인하고 상담신청 할 수 있는 웹서비스 입니다.
  온라인 명함 서비스를 널리 알리기 위해서 온라인 명함 UV(Unique Visitor) 100회 당 행운상자를 제공하는 이벤트를 만들었습니다.
  해당 이벤트는 쿠키 기반으로 UV 카운팅하는 로직을 구현했습니다. 서버에서 쿠키를 발급하고 해당 쿠키를 가진 브라우저의 요청은 하루에 한 번만 카운팅 되도록 했습니다.
  그런데 쿠키는 브라우저에서 쉽게 조작할 수 있습니다. 쿠키가 없는 요청은 새 쿠키가 발급되는 것을 이용하여, 조회수를 쉽게 늘리는 어뷰징이 가능한 상황입니다. 이 어뷰징을 막기
  위해서 어떤 방법이 있을지 작성해 주세요,
  UV(Unique Visitor): 측정 기간 동안 중복을 제거한 순방문자 수 / 사용장수, 조회 기간에 방문한 유니크한 사람의 수
5) 실시간 거래량 기반 TOP 100 캐시 갱신
  튼튼증권에서 실시간 거래량 상위 종목 랭킹을 노출하는 서비스를 준비하고 있습니다.
  5분 간격으로 랭킹 데이터가 갱신되는 단순한 구조라, 개발자 김튼튼은 서버의 로컬 메모리에 캐싱을 하였습니다.
  그런데 상장폐지 된 종목 정보가 잘못 랭킹에 섞여 들어가는 사고가 발생했습니다!!
  랭킹 데이터는 즉시 갱신하였지만, 각 서버의 로컬 메모리에 캐싱된 데이터는 갱신할 수 없어서 즉각적인 대응에 실패하였고,
  일부 고객님들은 5분간 노출된 상장폐지 된 종목을 클릭하기도 하였습니다.
  고객님들에게 호된 질타를 받은 후, 로컬 캐시을 거의 동시에(혹은 수 초 이내에) 갱신하는 방법을 준비하기로 마음 먹었습니다.
  어떤 방법들을 활용해 볼수 있을지 작성해 주세요.
  [조건]
  1) 종목 정보는 언제든 수정될수 있음.(종목 정보 어드민에서 수정)
  2) TOP 100 종목과 랭킹은 db에 적재되어 있음.
  3) 로컬 캐싱 방법의 제약은 없음, 따라서 자유롭게 구현 가능.
  4) 도구, 라이브러리 등의 제약은 없음.
  상장폐지: 증권시장에 상장된 종목에 대한 상장 취소. 거래소를 통한 고객 거래가 불가능합니다.

'면접준비' 카테고리의 다른 글

MVC 1편 요약  (0) 2022.07.20
자바 면접 준비  (0) 2022.07.19
스프링 면접 준비  (0) 2022.07.19
base64  (0) 2022.07.03
커피챗 0624  (0) 2022.06.24