JSCODE 데이터베이스 스터디 8기 회고

안녕하세요! 1월 3일부터 31일까지 5주 동안 참여했던 JSCODE 데이터베이스 스터디에 대한 회고를해보고자 합니다!

스터디에 참여하고자 하는 분들께 도움이 될만한 내용들을 담아보았습니다.

1. 참여하게 된 계기

저는 정보통신 계열 학과생으로서 컴퓨터네트워크, 자료구조 관련 수업은 들었으나, 데이터베이스 수업은 한 번도 들어보지 못했습니다. 백엔드 개발자를 희망하지만 부끄럽게도 인덱스나 트랜잭션에 대해 제대로 알지 못하는 수준이었습니다. 그래서 늘 프로젝트를 하다가도 데이터베이스 관점으로 문제를 해결해야 할 때, 접근조차 못하는 문제가 있었습니다. 그러던 찰나에 JSCODE에서 데이터베이스 스터디를 5주 동안 진행한다는 공고글을 보고, 이번에야말로 꼭 극복해야겠다고 생각하며, 참여하였습니다.

 

2. 스터디 진행 방식

스터디는 5주 동안 진행되며, 매주 금요일 저녁 8시 ~ 10시까지 모의면접 스터디가 진행되었습니다. 처음 20분 동안은 멘토님께서 전체 피드백 및 간단한 멘토링을 해주십니다. 멘토링에는 취업과 관련된 내용들(자소서, 포폴, 면접 등)을 현직자 관점에서 이해하기 쉽도록 설명해주십니다. 또한, 자체적으로 LMS를 운영하고 계시다보니 관련 자료를 언제든지 열람할 수 있다는 장점도 있습니다.

 

etc-image-0
JSCODE LMS

 

약 20분간 멘토링 및 질의응답 이후에 4인 혹은 5인이 1개의 조로 구성되어 모의면접을 진행합니다. 이 때, 스터디원들이 돌아가며 면접자 혹은 면접관 역할을 하게 됩니다. 면접자 역할을 할 때는 공부한 내용을 면접관이 이해할 수 있도록 신경쓰며 답변하는 능력을 키울 수 있습니다. 반대로 면접관 역할을 할 때는 면접자의 답변을 들으며, 면접관의 입장을 이해할 수 있는 시간이 됩니다. 또 중간중간 담당과목의 멘토님이 참석하시기 때문에 타이밍이 잘 맞다면 실제 현직자분께서 면접관 역할로 참여하게 됩니다. (저는 운이 좋게도 두 번이나 현직자 멘토님께서 면접관으로 참여해주셨습니다)

 

모의면접이 끝나면, 서로 피드백을 하며 멘토님과 자유롭게 질의응답을 하는 시간을 갖습니다. 저는 이 시간동안 정말 많은걸 배울 수 있었습니다. 피드백이라는 것이 성장에 있어서 정말 중요하고, 필요하다는 걸 절실히 느낄 수 있었어요!

 

3. 5주 간 스터디에 대한 KPT 회고

1) Keep

이번 데이터베이스 개념을 공부하면서 Real MySQL 8.0과 데이터베이스 개론 웹 문서를 바탕으로 학습하고 내용을 정리하였는데, 전체적인 개념을 이해하면서도 디테일한 내용도 학습할 수 있어서 좋았습니다. 또한, 학습한 내용을 남에게 설명하듯이 직접 블로그에 기록함으로써 내용이 더 오래 남았고, 면접 답변에서도 긍정적으로 작용했습니다.

 

또한, JSCODE에서 주차별로 면접 질문을 제시해주셨고, 이를 기반으로 내용을 학습하다보니 좀 더 효율적으로 CS 공부를 할 수 있었습니다. 그래서 앞으로 공부할 CS도 이처럼 실무에서 주로 물어보는 내용들을 위주로 학습하며, 뿌리를 잡고 그 뒤에 디테일을 채워나가는 방식으로 나아갈 것입니다.

5주간 받은 면접 피드백에서 좋았던 부분 정리

  • 프로젝트 관련 내용에 대한 꼬리질문을 받았을 때, 과거의 실수를 설명하고 그 과정에서 배운 점을 설득력있게 잘 설명
  • 답변의 톤과 빠르기가 적절했으며, 압박질문에 침착하게 답변한 것이 큰 강점
  • 외운 것을 그대로 말하는게 아니라 경험을 토대로 유연하게 답변한 것이 큰 강점
  • 간단한 내용에도 예시를 들어서 설명한 부분이 인상적
  • 페이스의 큰 흐트러짐 없이 질문에 대한 대답을 잘함
  • 답변에 진정성이 있어서 좋았음 (인성질문 답변)
  • 잘 모르는 내용에 대해 추가로 공부해보겠다고 답변한 부분이 인상적 (면접 태도)

2) Problem

주차별 학습 내용을 상세하게 적다보니 실제로 말하기 연습에는 많은 시간을 할애하지 못했습니다. 모의면접인만큼 면접에 임하기 위해 필요한 것들을 좀 더 숙지할 필요가 있을 것 같습니다.


또한, 프로젝트 경험을 잘 정리해서 말하지 못하는 문제가 있었습니다. 머리 속으로 알고 있어도 실제 입 밖으로 나오는 것은 생각했던 것보다 더 많은 연습이 필요할 것 같습니다.

5주간 받은 면접 피드백에서 개선할 부분 정리

  • 약간의 제스처와 미소와 함께 답변하기
  • 효과적으로 의도를 전달할 수 있도록 문장을 좀 더 짧게 나눠서 답변하기
  • 이미 알고있는 내용을 답변하더라도 좀 더 생각을 해서 정리하고 침착하게 답변하기
  • 간단한 내용에도 예시를 들어서 설명한 부분이 인상적
  • 질문이 어떤걸 묻는지 쪼개어서 기억하고, 두괄식으로 답변하기
  • 프로젝트에서 겪었던 경험을 상세하게 정리하기
  • 예상치 못한 질문을 받았을 때, 잠시 생각을 정리하기

모의면접에서 답변에 어려웠던 질문

  • 프로젝트에서 DB 설계 과정에서 겪었던 어려움은 무엇인가요?
    • 테이블을 작게 분리했을 때, 단점은 무엇이었나요?
    • 외래 키를 잘못 설정했던 흐름을 설명해주세요.
  • SELECT FOR UPDATE는 언제 사용하며, 많이 사용할 경우 어떠한 문제가 발생하나요?
  • B+Tree가 B-Tree와 다른 점은 무엇이며, 어떠한 장점이 있나요?
  • gonghak98 서비스는  유저 요청이 왔을 때 실시간으로 저장이 되었어야하는 프로세스였나요?
  • @Transactional(readOnly = True)의 세부 동작 원리는 무엇인가요?

3) Try

1주차 때와 5주차 때를 비교해보면 답변의 퀄리티나 면접 태도 등이 많이 좋아졌다는 피드백을 얻었습니다. 꾸준히 연습을 하고, 학습한 내용 혹은 경험한 것들을 정리하는 습관이 중요하다고 느꼈습니다.

  1. 프로젝트 경험을 STAR 원칙으로 정리하고, 답변 연습하기
  2. 스터디에서 학습한 내용을 실제 프로젝트에 적용하여 성능 최적화하기
  3. Real MySQL 4,5장 + 친절한 SQL 튜닝 1,2,3장 읽고, 내용 정리하기
  4. 답변하기 어려웠던 질문들 정리해서 답변 연습하기
  5. 가상면접 사례 책 읽고, 화이트보드 면접 연습하기

4. 정리

5주간 스터디에 참여하면서 나름 강제성이 있으면서도 자율적으로 학습할 수 있었던 시간이었습니다. 또 성장에 있어서 스터디가 왜 필요한지도 알 수 있었습니다. 열심히 참여한다면 그만큼 얻어갈 수 있는게 많은 스터디이니 시간이 된다면 주저하지 말고 참여하시길 적극 권장합니다!

 

다음은 제가 스터디에 참여하면서 정리했던 내용들입니다.

1) 1주차 : https://whxogus215.tistory.com/145

 

1. DB와 RDB의 기본 개념

1. 파일 시스템과 데이터베이스의 차이1) 파일 시스템파일시스템은 컴퓨터를 사용하는 우리들에게 가장 익숙한 데이터 저장방식입니다. 엑셀 시트, 메모장, 이미지 등 다양한 형태의 데이터가 SS

whxogus215.tistory.com

2) 2주차 :

https://whxogus215.tistory.com/146

 

2. SQL

1. SQL이란?SQL은 Strucutred Query Language로 구조화된 질의 언어라고 해석할 수 있습니다. 앞선 포스팅에서 DBMS는 응용 프로그램과 컴퓨터 언어를 통해 데이터를 주고 받으며, 다양한 처리를 한다고 하

whxogus215.tistory.com

https://whxogus215.tistory.com/147

 

SELECT FOR UPDATE의 권한 범위

SELECT FOR UPDATE는 테이블 내 레코드의 동시성 제어를 위해 사용할 수 있는 SQL 구문입니다. 하지만 SELECT FOR UPDATE를 사용했을 때, 락이 걸려있는 레코드에 대한 접근이 어디까지 제한되는지 직접 실

whxogus215.tistory.com

3) 3주차 : https://whxogus215.tistory.com/148

 

3. 인덱스

1. 인덱스란?인덱스는 관계형 DBMS가 관리하는 테이블에 존재하는 데이터를 빠르게 조회할 수 있도록 데이터를 저장하는 데이터베이스 객체입니다. 인덱스는 테이블의 특정 컬럼을 기준으로 만

whxogus215.tistory.com

4) 4주차 : https://whxogus215.tistory.com/150

 

4. 정규화

1. 이상현상정규화란, 릴레이션이 연관된 속성만을 갖도록 분리시키는 것을 말합니다. 이 정규화 작업의 필요성을 알기 위해서는 먼저, 이상현상에 대해 알아둘 필요가 있습니다. 이상현상은

whxogus215.tistory.com

5) 5주차 : https://whxogus215.tistory.com/151

 

5. 트랜잭션과 회복

1. 트랜잭션과 ACID1) 세션과 커넥션 세션은 사용자가 DB 서버에서 작업하는 논리적인 단위를 말합니다. 다시 말해, 데이터베이스를 사용하기 시작하고, 종료하기까지의 작업 상태를 저장하는 반

whxogus215.tistory.com