공부

면접을 눈 앞에 두고...

오잎 클로버 2023. 4. 26. 14:22
728x90

면접을 눈앞에 두고, 기술 면접과 더불어 임원 면접 준비를 하고 있습니다.

주변에 통화 면접을 봤던 친구들이 여럿 있어 공통적으로 자주 나오는 질문들을 간추려서 각 항목마다 답변을 달고 있습니다. 공통적으로 나왔던 질문들은 다음과 같습니다.

1. REST API의 정의
2. Transaction이란?
3. 토큰과 세션의 차이
4. 정규화와 반정규화의 차이
5. 우리 회사에 왜 지원했는가

6. 오픈소스에 관심이 많은 이유 (이력서에 오픈소스에 관심이 많다고 작성함)

 

순서대로 짧게 답변을 달아보자면

A1. 리소스에 이름을 부여한 후, HTTP를 통해 리소스에 접근하는 방식
     - HTTP Method를 통해 접근하며, CRUD 마다 METHOD를 지정한다.
     - 이러한 HTTP 표준 규격을 잘 지키며 만든 REST API를 RESTful API라고 한다.
A2. 데이터베이스의 처리 단위. 데이터의 일괄성을 유지하면서 안정적으로 데이터를 복구하기 위함
     (꼬꼬무)
     락 -> 여러 사용자가 동일한 데이터에 접근할 때 순차적으로 처리하도록 함으로써 일관성과 정합성을 보장
        베타 락 -> 데이터를 변경하고자 할 때 사용되며, 트랜잭션이 완료될 때까지 유지됨.
                      베타 락이 해제될 때까지 해당 리소스에 접근하는 것이 불가하다.
                      또한, 다른 트랜잭션이 수행되고 있는 데이터에 대해서는 접근하여 함께 Lock을 설정할 수 없다.
        공유 락 -> 데이터를 읽을 때 사용되는 락으로, 동시 접근을 허용한다. 단, 수정은 불가하다.
     특징 4가지 -> ACID (원자성, 일관성, 독립성, 지속성)

A3. 세션은 서버에서 직접적으로 관리를 하며, 임의로 수정 및 삭제가 가능하다.
     토큰은 서버에서 직접적으로 관리하지 않으며, 임의로 수정 및 삭제가 불가능하다.
     (꼬꼬무)
     동작 방식 -> 클라이언트가 요청하면 서버는 쿠키에 세션 아이디를 넘겨준다.
                      클라이언트가 요청하면 서버는 토큰을 생성해서 넘겨준다.
     확장성 -> 서버 분산 / 클러스터 환경이라면 세션은 계속해서 접근해야 한다. (서버가 여러 개이니 인증 불가)
                  반면, 토큰은 stateless 하며, 서버에서 직접적으로 관리하지 않기에 인증만 하면 인증이 됩니다.

A4. 정규화는 데이터베이스의 중복되는 데이터를 허용하지 않으며, 디스크의 용량을 최소화할 때 사용한다.
       이를 통해 무결성을 유지할 수 있다.
      반정규화(혹은 비정규화)는 과도한 정규화로 인해 유지보수 등이 어려워질 경우, 정규화했던 
        테이블을 정규화 이전 상태로 1단계씩 돌아가는 것을 의미한다.

A5. ...(스킵)

A6. 내가 기여한 소스를 다양한 사람들이 사용하고, 수정된다는 점에서 흥미를 가지게 되었다.

 

물론 위 질문들은 자주 하는 질문들만 간추려낸 것이기에 더 어렵고 많이 공부하지 않으면 답변하지 못하는 기술 질문들도 여럿 있을 것으로 예상을 하고 있다.

예를 들면 프레임워크(Spring)와 직·간접적인 질문들이나 언어(Java, Kotlin)에 대한 질문들도 여럿 할 것 같다.

사실 면접 준비를 위한 공부보다 말을 구약현하하게 잘하는 것이 더 좋을 듯싶지만, 말하는 연습보다는 지식을 다시 쌓는 과정이 더 중요하다고 생각해 말하는 연습은 조금 미룰 것 같다.

 

취업을 향해 달려가는 오잎클로버🍀입니다!