기업 면접 후기

김남형·2021년 3월 12일
0

42 교육과정을 진행하는 중에 우연찮게 기업 면접 볼 기회가 생겼습니다.
신입에게 이러한 것을 바라는 기업은 피해야 한다는 사례를 알려드리기 위해 작성합니다.
면접을 보는 회사도 면접자를 배려하는 회사라는 느낌을 느낄 수 있는 좋은 회사를 찾아야 합니다!

Q : 프로그래밍 경험이 42서울에서 한 것 밖에 없는데 그 갭을 어떻게 채울것인지? (저는 전공자와의 갭이라고 인식하고 대답)
A : 과제를 진행 하면서 CS지식이 필요성을 인식했습니다. 프로젝트를 진행하면서 그때 그때 필요한 CS를 찾아보는 편 입니다. 그리고 흔히 말하는 공룡책, HTTP완벽가이드 같은 책을 하루 한 챕터씩 읽고 있습니다.
면접관 조언 : 갭을 채우기 위해 야간 대학을 간다던지 그러한 대학교에서 채울 수 있는 교육적 로드맵이 필요합니다.

Q : C언어를 중심으로 배웠는데 우리 회사 솔루션에 맞게 오픈 소스를 튜닝하거나 인풋과 아웃풋에 관해 말하면 그에 해당하는 미들웨어를 만들 수 있는지?
A : 솔루션에 맞게 오픈소스 튜닝은 어떠한 오픈소스인지에 따라 다를 것 같습니다.
인풋과 아웃을 주시고 미들웨어 만드는 것은 만들 수 있을 것 같습니다.

Q : 테스트코드 커버리지는 얼만큼 나왔나요?
A : repo, service, controller 계층 별 mockito, junit, assertJ를 사용해 탑다운 TDD 개발방법 연습 했던 것이지 커버리지는 고려하지 않았습니다.

Q : DB에 데이터는 얼마나 있었나요?
A : 2500건 정도 기업체의 정보를 저장했습니다.
DB의 핵심은 많은 데이터가 누적 되어있을때 느려지는 것을 튜닝 하는것에 있는데 그런 경험이 있는지 확인하려고 물어봤습니다.
면접관 조언 : DB에 대한 지식을 쌓는게 한순간에 되는게 아닌데 공부 해야하는 양이 너무 많지 않을까 싶네요.

Q : JPA ORM을 사용하셨던데 그럼 쌩쿼리는 사용하지 않으셨나요?
A : 조회의 경우 JPA로 해결 하기 어려운 부분은 @Query 어노테이션을 사용해서 JPQL을 사용해서 조회용 Dto 객체로 처리했습니다.
면접관 조언 : CS 지식이 너무 부족하지 않나 싶네요.

Q : 채팅서버 아키텍처가 어떻게 되나요?
A : 처음엔 스프링서버에 DB만 연결하려고 했는데 여러 유저가 빈번하게 write/read를 하다보면 DB에서 지연이 발생하고 애플리케이션에 장애가 생깁니다. 그래서 메시지를 바로 받아 아파치 카프카를 메시지큐로 토픽을 저장해서 별도로 처리하여 DB저장과 동시에 메시지를 받은 유저에게 전달하도록 했습니다. 그리고 다른 서버에 있는 유저는 메시지를 받을 수 없으므로 redis의 구독/발행 기능을 사용하여 브로드캐스팅 할 예정입니다.

Q : 프론트엔드 프레임워크가 많은데 리액트는 왜 썼나요?
A : angular은 MVC을 기반으로 프론트엔드를 하기엔 디자인 맞지 않는다고 생각했고,
vue, react는 둘다 virtual dom, component를 사용하지만 스타일을 별도로 두는 리액트가 좋다고 생각했고 레퍼런스가 많아서 선택했습니다.

Q : Go언어로 시작해서 java로 넘어간 이유는?
A : C언어와 비슷한 문법을 갖고 있어서 선택했습니다. 그리고 Gin라는 프레임워크를 사용해서 컨트롤러에 디비접근부터 서비스로직까지 모아두었습니다. 그러다가 수정 해야 할 일이 발생하면 어느 부분인지 명확하지 않아 헷갈리기도 했고 서비스에 필요한 것들을 스스로 하나하나 챙겨야해서 처음 웹 프로그래밍을 하는 저에겐 적합하지 않았습니다. 그러던 중 자바로 하라는 멘토님의 조언을 듣고 스프링으로 옮겼습니다. 많은 레퍼런스와 통상 repo, service, controller로 나누는 규칙을 적용해서 수정사항에 대응하기 편해졌습니다.

Q : ERD, 시퀀스다이어그램을 했다고 하던데 왜 학습했나요?
A : 머릿속에 담긴 생각을 바로 코드로 옮기다보니 예외 사항이 생기고 그러다보면 바닥부터
다시 시작해야 하는 경우가 반복되었습니다. 이렇게 하다보면 결국 완성하지 못할 것이라고 생각했고 그 해결책으로 ERD, 시퀀스 다이어그램 작성을 작성하도록 조언을 받았습니다. 데이터를 정의하고 ERD를 통해 데이터를 정규화했고 시퀀스다이어그램을 통해 각 계층에서 실행해야하는 과정들을 정했습니다.
면접관 조언 : 가르쳐 준게 아니라 스스로 학습했다는거죠? 스스로 학습 했으면 그게 제대로 학습 했는지 싶네요

Q : 왜 아파치 카프카를 사용했나요?
A : 레빗엠큐, 아파치카프카 두개의 선택지가 있었는데 검색 했을때 아파치 카프카가 검색양이 많아서 아파치카프카를 사용했습니다. 카프카가 메시지큐 뿐만 아니라 저장도 되지만 메시지큐 용도로만 사용하려고 했습니다.
면접관 조언 : 아파치 카프카가 더 쉬워서 사용 한거 아닌가요? 쉬우니까 사용 했겠지

profile
제빵사에서 개발자되기

0개의 댓글