민스씨의 일취일장

후기 | F-Lab Java Backend 과정 17주차 ~ 18주차 본문

Personal Development

후기 | F-Lab Java Backend 과정 17주차 ~ 18주차

읻민스 2024. 10. 5. 20:24
반응형

F-Lab Java Backend 과정 17주차~18주차 후기글입니다.

F-Lab Java Backend 과자어 17주차 ~ 18주차

F-Lab Java Backend 17주차 18주차 썸네일 이미지이다.
F-Lab Java Backend 17주차 18주차

17주차 ~ 18주차 멘토링 주제

라이브 코딩
1. 동시성 컨트롤

이론
1. Database View
2. url 요청 보낸 후 일어나는 일들
3. RDBMS vs. NoSQL
4. LRU/LFU/FIFO 캐시 알고리즘

프로젝트

라이브 코딩

17주차에는 16주차에 이어서 동시성 컨트롤에 대한 라이브 코딩을 진행했다. 동시성 컨트롤이라는 걸 한다면 직관적으로 아주 간단하게 synchronized를 적용하는 것을 생각했었다. 하지만 여기까지만 해서는 단순히 동시성 컨트롤을 했지만, 잘했다 소리는 듣지 못한다. 왜냐하면 synchronized는 해당 로직에 접근하는 모든 경우에 lock을 걸기 때문이다. 하지만 상황에 따라서 이미 조회중인 데이터일 경우에만 Lock을 걸거나, 메서드가 아닌 데이터에만 Lock을 거는 등 다양한 시나리오에 맞게 섬세하게 처리할 수도 있다.

나름 공부를 한다고 했는데, 라이브 코딩 테스트라는 환경에서 당장 구현하려고 해보니 정말 쉽지 않았고 적용을 해보지 않고 이론 공부만 하는 것으론 정말 반쪽짜리 공부에 불과하다는 것을 새삼 다시 한번 느낀 계기가 되었다. 이 라이브 코딩 테스트를 계기로 요즘 동시성에 딥다이브 중이다!

이론

LRU, LFU를 어떻게 구현할 수 있는지에 대한 토론을 했다. LRU는 가장 오랫동안 사용되지 않은 것을 먼저 제거하는 알고리즘이고 LFU는 가장 적은 빈도로 사용된 것을 먼저 제거하는 알고리즘이다. 멘토님께서 어떻게 구현할 수 있겠냐는 질문을 주셨을 때에는 '딱' 알맞는 자료구조를 찾기 위해 고민을 했다. 하지만 이렇게해도 안되고, 저렇게해도 안된 끝에 "2개의 자료구조를 쓰면 어떨까?"하는 생각으로 이어졌다. 그래서 LRU까지는 LinkedList와 HashSet을 사용해 보는 것까진 생각해 냈는데, LFU는 멘토링 시간 내에 찾아내지 못했다. 좀 더 고민이 필요하다.

이 이야기를 한 이유는 저 지식을 공부했기 때문이 아니다. 1개의 자료구조로만 해결하려다 2개의 자료구조 사용하려는 시도를 스스로 찾게된 순간을 기록하기 위함이다. 나는 이렇게 사고가 확장되는 핵심 질문들을 만날 때 정말 뿌듯하다. 결국 고민을 하고 토론을 하는 이유는 나의 빈틈을 찾고, 이처럼 사고를 확장시키기 위함인데 혼자서 공부하는 것으론 이런 생각을 매 순간하기 쉽지 않다. 또 저런 LRU, LFU등과 같은 알고리즘은 알아두기 바빴지, "이걸 어떻게 구현할지"에 대해서 크게 생각해 보지 않았었다. 이번 멘토링 시간에는 스스로에게 던져보면 좋을 질문들을 만난게 된 것이 큰 수확이다.

취업준비 & 연장

요즘은 취업에대한 이야기를 멘토링 시간에 정말 많이 한다. 취업 원서 넣고, 코딩테스트 준비하느라 너무 바쁘다. 그렇지만 아직 완성되지 않은 프로젝트를 마무리 짓고 싶다. 취업준비로 바쁜 와중에도 조금씩이라도 프로젝트 이어나가고 싶어서 F-Lab 한 달 더 연장했다. 

728x90
반응형