본문 바로가기
후기

첫 회사 면접 후기 - 신입 백엔드 개발자, 스프링, 산업기능요원

by 윤호 2021. 11. 10.

강남의 한 스타트업에서  면접을 봤다.

기술면접 1시간의 경험을 쓰려한다.

 

+ 산업기능요원으로 검색 유입이 되길래 이를 알아보는 사람들을 위해 지원과정을 얘기하자면

로켓펀치, 원티드, 프로그래머스에서 병역특례를 모집하는 공고를 찾고, 해당 플랫폼의 이력서로 지원했습니다.

해당 기업에 지원하고 코테를 보라는 메일이 왔고, 이 코테에 합격하고 면접을 보게 됐습니다.

 

내가 했던 프로젝트

먼저 물어본 것은 내가 이력서에 제출한 프로젝트의 내용들이다.

로켓펀치 이력서에는 내가 했던 프로젝트들을 모두 넣지 않고, 세 가지를 넣었는데

모두 분야가 달랐다. 의외였던 것은 백엔드로 지원했기 때문에 백엔드에 관한 질문 위주로 할 줄 알았는데,

가장 먼저 물어보신 것은 AI 대회에서 상을 받았던 언택티콘에 대한 것이었다.

나머지 두 프로젝트도 물어보셨는데, 언택티콘 프로젝트를 가장 흥미롭게 보신 것 같았다.

 

기술 질문

프로젝트에 관한 질문 이후 본격적으로 기술 질문이 들어왔다.

기술도 기술이지만 개발자로서의 태도를 보기위한 질문들도 많았던 거 같다.

질문 받았던 것들을 생각나는대로 적어보겠다.

  • 자바의 콜렉션에 대해 설명해주세요
  • set 자료구조를 어떻게 구현할 수 있을까요?
    • 해당 질문은 바로 대답하지 못 하고 계속 헤맸지만 계속 힌트를 주시고 답을 유도해 주셨다. 때문에 가장 인상 깊었던 질문이다.
    • 처음엔 O(N) 짜리 구현을 생각해내고, 해쉬를 사용하는 것을 힌트로 받아 O(1)로 구현하는 것을 이끌어냈고, 거기서 해쉬 충돌이 나는 것을 어떻게 해결할지 까지 질문이 이어졌다. 충돌해결도 처음엔 답변을 잘못했는데, 자료구조를 사용하라는 얘기를 듣고 연결리스트로 충돌을 해결하는 것을 답했다. 실제로 자바의 해쉬맵이 그런식으로 구현이 됐다고 설명해주셨고 면접중에 뭔가 수업을 받은 느낌이어서 좋았다.
  • 의존관계 주입 방법 중 생성자를 이용한 방법과 필드에서 바로 주입하는 방법이 있는데, 이 둘의 장단점을 얘기해주세요
    • 답: 생성자 주입은 딱 한 번만 주입되는 것을 보장하여 불변/필수 의존관계에 사용되고, 필드 주입은 코드를 간결하게 할 수 있지만 외부에서 변경할 수가없다. 그래서 테스트 시 DI 프레임워크를 사용하지 않고는 테스트할 수 없다.
  • 언어와 프레임워크에 대해 어떻게 생각하는지?
  • 자신이 공부한 언어 말고 다른 언어를 사용해야한다면 어떤지?
  • 자주 사용하는 언어가 무엇인지? -> 파이썬과 자바라고 답함
  • 위의 질문과 이어져서 파이썬과 자바의 장단점과 차이점을 알려주세요.
  • 테스트 코드에 대해 어떻게 생각하는지?
  • ERD 설계에서 중시하는 것이 있나요?
    • 면접관께서 답이 있는 질문은 아니라고 하셨다. 답변은 못했다.
  • 데이터베이스 정규화 세 가지를 얘기해주세요
    • 이것은 질문을 주시려다 마시고 대신 위의 질문을 하셨다.
  • jpa 영속성 컨텍스트에 대해 설명해주세요
  • 디자인패턴에 대해 얘기가 나와서 아는 디자인 패턴을 알려달라 하셨고, 싱글톤 패턴과 퍼사드 패턴을 얘기했다.
  • 위의 질문과 이어져서 싱글톤 패턴은 스레드간 충돌을 일으킬 수 있는데 어떻게 해결할 수 있을지
    • 처음에 싱글톤 패턴의 구현을 static 변수를 통한 구현을 설명했는데, 조건문을 통한 싱글톤패턴 구현으로 해결할 수 있다고 얘기했다. (맞는 얘기인진 확인해 봐야할 거같다. 운영체제 수준이 아닌 코드 수준에서 설명해달라고 하셨으니 내 최선의 답변이었다.)
  • 싱글톤 패턴의 장점과 단점에 대해 얘기해주세요.
  • 솔리드원칙에 대해 설명해주세요 - 이 질문은 내 블로그를 보고 CTO 분께서 개인적으로 이 원칙을 좋아하신다고 하셔서 질문하셨다.
  • 제어의 역전에 대해서 설명해주세요
  • Autowire로 의존관계 주입이 어떻게 이뤄지는지
  • 스프링 빈들 간의 의존관계는 어떻게 정의되는지?
    • 질문이 잘 기억 안 나는데, 빈을 생성할 때도 어떤 클래스를 의존하게 되는데 이를 의존할 때 스프링컨테이너에 해당 빈이 있는지 없는지 확인하고 주입을 하고 의존관계를 정의한다고. 싱글톤 패턴을 사용한다고.... 답변도 잘 기억이 안 난다
  • aws에서 콘솔을 꺼도 실행되게하는 리눅스 명령어가 뭔가요?
    • 답: 리눅스 백그라운드 실행 명령어로 nohup, disown, screen 등이 있다
  • 백엔드 프레임워크 중에 스프링을 선택한 이유
  • 팀장을 하면서 팀원간의 의사결정을 할 때 어떻게 하셨는지

 

첫 회사 면접이었는데, 면접관 분들이 너무 친절하시고 뒤에 HR 면접(?)을 또 한 시간 했는데 좋게 얘기해주셔서 너무 감사했다.

다른 회사 면접 후기들을 보면 내가 쓴 것처럼 질문위주로만 돼있어서 "이거를 갑자기 물어보면 어떻게 말이 나올까?"란 걱정을 했는데,

후기에서 저렇게 적어서그렇지 면접은 대화로 진행된다. 잘 몰라도 충분히 답을 유도해주셨다 (면접관 분들이 좋았던 것 같긴하다)

정해진 질문 몇 가지와 대화를 하다가 물어보고 싶은 부분들이 생기면 물어보는 식인 것 같다. 그래서 준비만 열심히 한다면 너무 걱정할 필요 없는 것 같다. 

 

결과에 상관없이 막막한 생각을 떨칠 수 있었던 좋은 경험이었다.

댓글