핏투게더 면접

자기소개

Q) 간단히 자기소개 및 지원동기를 말씀해주세요. A) 고등학교 때 부터 무언가 새로 만드는 것을 좋아했고, 음악이나 글쓰기 등 해오다가 대학의 전공을 결정하는데 컴퓨터를 전공하면 새로 만드는 것을 많이 할 수 있을것 같아서 결정하였습니다. 그리고 대학에서 이것저것 공부를 하다가 보안을 특히 깊게 공부하게 되었는데, BoB 교육까지 수료하면서 결국 개발에 흥미가 많다는 것을 깨닫고 졸업프로젝트에서 웹개발을 시작한 이후 줄곧 웹개발을 해오고 있습니다.

Q) 4개월 간 근무하고 그만두었던데, 어떤 이유로 그만두었는지? A) (개인적인 사정과 쉼없이 달려와서 한숨 돌리고 싶은 마음이 들었다고 대답)

Q) 소개글에서 ‘모든 문제를 반드시 복잡한 코드로 해결해야할 필요는 없습니다. 때로는 좋은 구조나 좋은 정책이 얼마든지 더 좋은 해결방법이 되기도 합니다.' 라는 구절이 있던데, 인상깊었다. 어떤 뜻인가? 그러한 경험이 있는가? A) 아무래도 코드를 작성하는게 중요하지만 깊게 고민하지 않은 구조위에서 코드를 작성하면 수만줄의 코드, 비효율적인 코드가 나올 수 있는데, 심도있게 고민한 결과로 잘 설계된 구조위에서 작성한 코드는 고작 천줄정도의 깔끔한 코드를 작성할수도 있다는 경험을 했습니다.

Q) 2020년 졸업때부터 지금까지의 개인적인 경험을 쭉 말씀해주실 수 있나요? A) 네, 우선 2020년에 졸업을 하고 처음에는 친구들이 대기업을 가는게 부러워서 삼성전자같은 대기업만 생각했습니다. 그래서 특정분야를 정하지도 않고 코딩테스트 공부를 쭉 해왔습니다. 그런데 그것조차도 잘 되지 않는 제 모습이 보였고, 점점 나태해지고 여러가지 아픔도 있었습니다. 그러다가 그냥 처음부터 다시 공부해보자 하는 생각에 자바의 기초부터 다시 차근차근 공부해나갔습니다. 그러다가 코드스쿼드 코코아 과정부터 코드스쿼드 마스터즈로 이어지면서 지금까지 계속 웹 개발을 하게 된 것입니다.

기술질문

Q) 코딩테스트 문제 푼 것은 봤는데, 본인이 생각하기에 충분한 역량이라고 생각하는가? A) 전혀 그렇지 않습니다. 문제 자체가 어렵지 않은 것을 알면서도 구현을 제대로 못 한것 같아 아쉽습니다.

Q) 깃허브의 프로젝트 중에 ‘사이드디쉬'가 있는데 여기에 DDD라고 되어있는데, 내가 아는 그 DDD가 맞는가? A) 네, DDD라고 적은 이유가 Spring Data JDBC 라는게 Aggregate Root를 강제로 … Q) 아, 그러니깐 Domain Driven Design 이다? A) 아, 그렇습니다.

Q) Elastic Cache를 사용해본적이 있는지? A) 없습니다..

Q) 주니어 백엔드 개발자로서 궁금한 점 블로그에 글이 하나 있던데, 본인이 고민되었던 부분인가? 그 중에 REST API 부분에 있는 내용은 어떤것인지? A) 네, 그 부분은 제가 이전의 회사에서 처음으로 실무를 접하면서 매우 궁금하게 되었던 점들을 큰 것들만 정리해둔 것입니다. 계속 반복적으로 마주치는 궁금증에 대해서 확답을 얻을 곳이 없어서 동료들과 토론도 해보았지만 해결되지 않은 것들을 모아서 적어두었습니다. REST API 부분은 REST API 자체라기 보다는 JSON API를 한방에 모두 보내는 것이 좋을지, 아니면 관련된 것들만 모아서 보내는 것이 좋을지 그러한 고민에 대한 것이었습니다. 최근에 그에 대한 정보를 또 검색해 보았는데, OKKY 사이트 등에서 UI에 얽메이지 않고 도메인 별로 묶어서 보내는 것이 비록 여러번의 API를 호출하는 상황이라도 오히려 낫다는 의견이 많았고, 저도 동의하게 되었습니다.

Q) MSA라는 부분이 있는데 무슨 의문점인지? A) 제가 실무를 접하면서 가장 큰 차이점이 외부업체의 API 문서를 받아서, 그 문서를 토대로 개발할 일이 많다는 것 입니다. 이를 위해 RestTemplate같은 것들로 연동을하여 호출하고 응답으로 받은 외부 데이터를 받아서 내부 DB에 저장을 하든, 가공을 하여 또 다른 서비스에 활용을 하든 하는데, 이것이 MSA랑 차이가 무엇인가? 그러한 의문점이었습니다. 하지만 그 당시와 달리 현재는 그 차이점을 어느정도 알 것 같습니다. MSA라는 것은 내부의 서비스 덩어리 들을 분리한 것이라서 내부에서 서로 통신을 주고받지만, 외부 API를 연동한다는 것은 HTTP 통신을 외부에 요청해서 응답을 받아오는 것으로서 동작과정 자체도 약간 다릅니다.

Q) 그런 정보들을 공부하는 방법은 어떤 것들이 있는가? A) 음, 저는 책이나 인프런 강의를 보면서 공부를 하는데, REST API같은 경우에는 ‘웹 API 디자인'이라는 책을 최근에 보고있고, MSA같은 내용은 K-MOOC이라는 사이트에서 대학강의를 무료로 볼 수 있어서 가끔 보는 편입니다.

Q) 본인의 개발분야에서의 장점이 무엇이라고 생각합니까? A) 우선 개발분야를 약간 벗어나지만, 저는 수많은 팀 프로젝트를 거치면서 협업에는 매우 능숙하며 팀웍을 잘 이끌어낼 수 있다고 생각합니다. 그리고 개발 관련해서는 한 분야를 깊이 파고들어서 매우 구체적으로 알아야 납득이 가는편입니다. Q) 구체적으로 안다는게 어느정도 수준인지? A) 네, 컴퓨터 전공과목으로 따지면 대학과목중에 컴퓨터구조, 운영체제 같은 과목들을 좋아했는데요, 예를 들어, C언어로 프로그램을 작성하여 실행한다고 했을때, 저밑의 논리회로에서 부터 010101 신호가 기계어로, 어셈블리어로, 또 컴파일러를 거쳐서 C언어를 실행할 수 있는 등 그런 수준으로 이해했을때 명쾌했습니다. 그래서인지 처음 자바를 했을때도 약간의 거부감이 있었습니다. 객체가 메모리에 어떻게 저장된다는거지? 이런것들 이었습니다. 하지만 지금은 그래도 그 정도 수준으로 깊게 파고자 하는건 아니고, 예를 들어, 스프링 프레임워크가 실행될때 IoC나 DI를 구현하기 위해서 어떻게 자바를 사용하면서도 private 생성자를 public으로 사용할 수 있도록 해주는 것일까? 같은 부분에서 리플렉션을 사용하여 메모리 실행중에 잡아서 가능하도록 변경해준다 정도만 이해하게 되면 만족합니다. 참고링크

Q) 스프링 이야기가 나와서 말인데, 스프링의 요청부터 컨트롤러 디스패치서블릿으로 이어지는 흐름에 대해서 설명 가능한가요? A) 잘 모르겠습니다.. 참고링크

느낀점

이외에도 많은 질문들을 하였는데, 기억이 다 나진 않는다. 다만 매우 친절했고, 내가 헛소리를 많이 한 것 같지만 모두 이해해주는 눈치였다. 이전의 면접들과는 다르게 꽤나 여유로워 보였고 나 한명에게 집중해주는 느낌을 받았다. 나의 깃허브나 포트폴리오, 그리고 내 블로그의 글을 진짜로 읽어보고 물어본다는 점이 이전의 면접과는 확실히 다르게 느껴졌다.