백엔드 중소기업 첫번째 면접 후기

Kim Ju Young·2022년 1월 19일
3

면접

목록 보기
1/2
post-thumbnail

시작하기 전에

필자는 백엔드 국비과정을 마쳐가는 백엔드 신입이다.

오늘은 1차 면접을 진행하였다. 1차 면접은 필기시험과 필기시험을 바탕으로 질문하는 기술면접으로 진행됐다. 현재 듣던 국비과정이 1월 26일을 끝으로 수료하기 때문에, 잡코리아와 사람인에 이력서를 등록 후 취업을 도전하고 있다. 어제는 금천구에 있는 연봉 3000정도인 회사에 면접을 보러 갔다왔다. 채용 프로세스는 2차까지 있고 앞으로 경과에 따라 진행할 예정이다.

가는길 기분좋은 긴장

내 집에서 독산역까지 가는 길은 꽤 멀었다. 왕복 3시간 정도였으니 결코 가까운 거리는 아니다. 그래도 내가 지원하는 곳이 SI / SM 이라는 사실은 알고 있었다.

SI라면 파견직일 것이므로 거리는 그다지 신경쓰지 않았다. 인터넷에는 SI에 대한 안 좋은 소리들이 많지만 그런 사실들을 미리 알고 2차 면접 때 다음과 같은 항목을 체크하면 괜찮다고 생각했다.

  • 사수는 있는지
  • 파견 가게 되는 곳이 어디인지

1차 면접 후 확인하니 취업하고 1달간은 교육을 시켜주는 곳이라고 해서 막장인 곳은 아니구나라고 확신했다. 오랜만의 면접이라서 그런지 전날부터 마음이 콩닥콩닥 뛰기 시작했다. 독산역으로 가는 길에도 긴장했는지 배가 살살 아파왔는데 화장실을 가게되서 가는 시간보다 30분 일찍 나와서 다행이라고 생각했다.

하지만, 긴장이 정말 나쁘지 않았다. 아는 사람은 알 것이다. 이런 기분좋은 긴장은 자운대 통신학교에서 과목마다 시험볼 때와 비슷했다. 기분좋은 긴장을 가지고 1차 면접에 임했다.

필기시험

사실, 지금까지 프로그래머스같은 웹사이트에서 코딩테스트만 보다가 필기시험은 처음 봐본다. 필기시험은 5과목으로 구성되었다. <JAVA / JSP / DB / WEB UI / Framework> 가 주제였는데 주관식으로 10문제씩 출제되다 보니 만만치 않았다. 제한시간도 1시간이라 들었을 때 '아 이건 모두 풀라는 문제가 아니구나' 싶었다.

시험 문제를 50문제 푼 셈인데, 과목마다 아주 세세하게 물어본 것 같다. 기억 나는 것만 살짝 생각해보면, Framework 중 MVC 모델이 무엇이고 MVC 모델을 쓰는 종류엔 무엇이 있냐. XML의 효용성은 무엇이냐 등등을 물어봤다. 당연히 많은 분량이다보니 답이 긴가민가했고 최선을 다하고 답변을 제출했다.

다음에 면접관님이 들어오셨는데 해당 답변을 가지고 면접 질문을 하였다.

면접 테스트

  1. 클래스 변수, 인스턴스 변수, 지역변수가 무엇이냐.
  2. List와 배열의 차이점이 무엇이냐? 차이가 있다면 왜 나는가?
  3. HttpServletRequest가 클래스인데 이것을 쓰기 위해선 어디서 객체 생성을 해주나.
  4. AOP와 DI를 설명해보아라.
  5. JPA의 영속성 컨텍스트가 해주는 역할이 무엇이냐?

지금 생각해보면 1번 답을 너무 못했다. 이 때까지만 해도 클래스 변수가 클래스명으로 접근할 수 있는 static 변수인걸 모르고 있었다. 아주 당당하게 클래스 내 선언된 변수라고 설명했던 내 자신이 창피하다(...)

2번은 List는 크기가 한정되어 있지않고, 무한정 커질 수 있다고 했다. 배열은 크기가 한정되어 있다. 이건 쉽게 답변할 수 있었으나 그런데 여기서 한 걸음 더 나아가 List는 왜 무한정 커질 수 있냐고 물어보셨다. 답변은 List는 동적 메모리 영역에 있기 때문에 데이터가 가변적으로 늘어날 수 있고, Array는 정적 메모리 영역에 있기 때문에 데이터가 가변적일 수 없다고 답변했다. 이건 그래도 맞게 답변한 것 같다.

3번, 4번은 솔직하게 답변했다. 객체 생성이 어디에 되는지 모르고, AOP도 잘 모르겠다고. DI에서 괜히 XML로 변수를 넣어주는 거라고 어설프게 이야기하였으나 올바른 답은 아니었다.

잠깐 올바른 답을 찾자면 DI란

  • Spring을 적용하여 applicationContext.xml에서 설정만 해주면 외부 설정파일(xml)에서 연관관계에 있는 객체를 주입해주기 때문에 의존객체를 찾기 위한 코드가 필요하지 않게 됨.
  • 즉, 외부설정에서 객체를 찾아서 쓰기 때문에 코드 내에 의존관계를 맺는 코드 생성이 불필요.

AOP란

  • Aspect oriented programming = 관점 지향 프로그래밍
  • 프로그래밍 할 때 특정한 관심사를 가진 코드 부분을 별도의 모듈로 분리함으로써 기존 객체지향의 강력한 기능(상속, 위임)만으로는 처치가 곤란했던 중복을 할 수 있게 됨.

사실, 이걸로 답변하긴 힘들고 나도 이렇게 답변하진 않았다. 이해한대로 답변했으니 이 정의도 한번 보고 자신의 답과 비교하는 편이 좋을 것 같다.

5번은 JPA를 많이 다뤄보지 않았기 때문에, 영속성이란 단어에 집중했다. 그나마 최근에 JPA를 포스팅으로 다뤄봐서 답변을 한 줄이라도 길게 할 수 있었던 것 같다.

JPA 정리

마무리하며

아무래도 첫 면접이라 그런지 전날부터 두근거렸던 그런 느낌이 있었다. 이번 면접은 답변에 대한 실수도 있었고 공부도 부족하다는 걸 느낄 수 있었다. 지속적으로 면접 후기를 작성하고 면접 준비를 한다면, 충분히 개발자로서 취업할 수 있을 것 같다. 파이팅!

profile
호호선생

2개의 댓글

comment-user-thumbnail
2022년 4월 20일

고생하셨어요 좋은 결과 있었나요?

1개의 답글