해당 포스팅에서는 개발자 기술 면접을 효과적으로 도와주는 서비스 테크톡과 관련된 내용을 포함하고 있습니다.
다운로드 링크 : 앱스토어 / 플레이스토어

정말 운이 좋게 길면 길었던 취준 생활을 마무리하게 되었습니다. 졸업 후 여러 회사에 지원서를 넣으면서 Flutter 개발자로 면접을 볼 기회가 많았는데요. 초기 스타트업부터 중견, 대기업까지 총 16곳의 회사에서 기술 면접을 보았고, 실제 면접에서 나온 질문들과 경험을 공유드리고자 합니다.

너무 뻔하고 수준 낮은 인사이트를 전달해 드리는 게 아닐지 하는 걱정이 들지만, 저도 면접을 앞두고 불안한 마음에 괜히 면접 관련 포스팅을 뒤적거리며 괜한 위안을 얻곤 했기에, 이 글이 조금이라도 여러분의 불안함을 해소할 수 있기를 바라는 마음에 적습니다:)

제가 경험한 Flutter 개발자 면접의 질문 유형은 아래와 같습니다.

  • 컬쳐핏(인성) 질문
  • 이력서/포트폴리오 또는 블로그 프로젝트에 기재된 기술과 관련된 심층 질문
  • 구현 과제와 관련된 기술 질문
  • 기초 Flutter, CS 개념 질문

컬쳐핏 질문

비용을 획기적으로 절감할 수 있다는 면에서 Flutter를 채택하고 있는 초기 스타트업이 많아지고 있습니다. 그래서 제가 면접을 경험한 여러 스타트업의 경우, 기술질문 보다는 지원자가 회사와 핏이 많고 스타트업에 적합한 인재인지 검증하는 질문들의 비중이 꽤 컸습니다. 심지어 기술 질문을 전혀 하지 않은 회사도 몇몇 있었고요.

컬쳐핏 질문은 다양하고 예측하기 어려워 완벽하게 대비하기 어렵겠지만, 아래와 같은 단골 질문들은 한 번쯤 되새기면 도움이 될 수 있습니다.

  • 지금까지 진행한 프로젝트 중 가장 어려웠던 기술적 문제는 무엇이었나요? 이 문제를 해결하기 위해 어떤 노력을 기울였나요?
  • 어떤 도메인(산업)에 대해 특별한 관심을 갖고 계신가요?
  • 최근 읽은 책이나 포스팅글이 있다면 소개해 주세요.
  • 주변의 주니어 개발자들과 비교했을 때 본인의 장점은 무엇이라고 생각하시나요?
  • 컴퓨터 공학에서 다양한 분야를 배우셨을 텐데, 왜 모바일(Flutter) 앱 개발을 선택하셨나요?
  • 앞으로 10년 동안 달성하고 싶은 커리어적 목표가 있나요?
  • 함께 일하고 싶은 우수한 동료의 특징이 있나요?
  • 신규 프로젝트와 기존 운영 중인 프로젝트의 유지보수 및 개선 업무 중 어느 쪽을 선호하시나요?

이 질문들에는 명확한 정답이 없으며 면접관은 답변을 통해 지원자의 태도를 파악하는데 초점을 둡니다. 지원자의 태도를 가장 잘 보여줄 수 있는 포인트는 일관성이라고 생각하는데요. 너무 당연한 말이겠지만, 본인이 이력서나 포트폴리오에 써놓은 경험을 바탕으로 일관성 있는 답변을 한다면 훨씬 더 설득력 있는 지원자의 태도를 보여줄 수 있겠습니다.

마지막 질문도 중요합니다!

마지막으로 저희 회사에 궁금하신 점이 있나요?

자, 앞서 예시로 들었던 컬쳐핏 질문들은 면접에 나올지는 미지수지만, 면접관이 지원자에게 마지막으로 하고 싶은 말이나 회사에 궁금한 부분이 있는지 물어보는 질문은 무조건 그리고 반드시 나옵니다. 이 질문에 대한 대답도 면접의 일부로서 신중하게 준비해야 합니다.

이런 질문이 단순히 면접관의 마무리 멘트라고만 생각하시는 분들이 있을 수 있는데요. 개인적으로 이런 마무리 질문은 또한 지원자의 자세를 어필할 수 있는 부분이기 때문에 면접 서두에 진행하는 1분 자기소개만큼 중요하다고 생각합니다.

그럼 어떤 질문을 해야 하나요?

실제로 궁금한 것을 물어보는 것이 가장 좋습니다. 회사의 서비스직무에 대해 자세히 알아본 상태에서 관련 질문하신다면 좋은 인상을 남길 수 있겠죠. 다만 너무 부정적이거나 공격적인 질문을 피하는 게 좋아요. 예를 들어 "작년 매출이 급격히 감소한 이유는 무엇인가요?" 또는 "퇴사자가 많은 이유가 무엇인가요?"와 같은 질문은 면접관을 곤란하게 할 수 있기 때문에 적절하지 않습니다.

물어보고 싶은 질문이 정말 없으면 어떻게 하나요?

질문을 준비해 가는 게 중요하다고 말씀드렸지만, 정말 물어보고 싶은 질문이 없을 수도 있습니다. 저도 한 회사에 1차(기술), 2차(컬쳐핏), 3차(임원) 면접을 하루 만에 본적 이 있었는데요. 마지막 3차 면접에서는 체력도 바닥나고 1,2차에서 궁금한 부분들은 모두 물어봐서 더 이상 물어볼 질문이 없었거든요.

이럴 때 저는 아래와 같이간단한 감사 멘트를 드리곤 합니다.

추가로 궁금한 건 없습니다. 바쁘신 와중에 시간을 내어주시고 면접 기회를 주셔서 감사드립니다.

너무 정직하게 "특별히 궁금한 건 없습니다!"라고 답변해 주시는 것만 피해주셔도 충분할 것 같네요. 또는 이전 면접 질문에서 본인의 답변에 아쉬움 부분이 있다면 면접관분들에게 양해를 구하고 해당 질문에 대해서 다시 답변해도 될지 여쭤보는 것도 괜찮습니다.

인트로 문구의 함정

저는 유저 친화적인 개발자 홍길동입니다.
단순 구현보다는 서비스가 해결하고자 하는 문제에 집중하는 개발자 홍길동입니다.

일반적으로 개발자의 이력서를 살펴보면 본인의 개발 철학이나 방향성을 강조하는 문구가 포함되어 있습니다. 근데 이런 문구들은 보통 추상적인 경우가 많습니다. 추상적인 문구가 문제가 된다고 말씀드리는 건 아닙니다만, 문구들이 추상적일수록 답변 또한 모호해질 수 있다는 게 문제가 될 수 있습니다.

예를 들어 면접관이 "유저 친화적인 개발자라고 적어주셨는데, 실제로 개발 업무를 하시면서 유저 친화적인 사고가 어떻게 도움이 되었는지 설명해 주실 수 있나요?"라고 실제 인트로문구와 관련된 사례를 물어보는 질문을 할 수도 있는데, 명확한 근거가 부족하다면 오히려 난항을 겪을 수 있습니다.

"개발자가 유저 친화적이고, 서비스가 해결하고자 하는 문제의 본질에 집중하는 것이 바람직하다" 라는 명제에 동의하지 않은 사람은 많이 없겠지만, 막상 이런 태도가 실제 업무에 어떻게 영향을 주는지 설명해 보라고 하면 쉽지는 않을 수 있습니다. 본인이 철학과 방향성을 인트로 문구에 적어두셨다면, 실제 관련된 사례를 한번 쯤 고민해 보세요.

개인적으로 저는 이런 컬쳐핏 질문들에 자신이 있다고 자만하다가 낭패를 본 적이 정말 많습니다. 저처럼 자만하시고 조금이라도 본인이 개발자로서 어떤 방향성을 가지고 계신는지 깊게 고민하시고 면접장에 가시면 큰 도움이 될 겁니다.


블로그 또는 이력서/포트폴리오에 기재된 기술과 관련된 심층 질문

블로그 또는 이력서/포트폴리오에 써 놓은 기술 항목들은 면접관한테 좋은 질문거리가 됩니다. 다만 단순 개념을 물어보는 질문보다는 심화 질문이 많이 나오는 게 특징이라고 할 수 있어요.

예를 들어, 제 블로그에는 네트워크 이미지 렌더링 최적화와 관련된 포스팅이 있습니다. 한 번 면접관이 해당 포스팅에서 'cached_network_image' 패키지를 활용하여 이미지 캐싱할 수 있다는 내용을 보고 네트워크 이미지가 어떤 기준으로 캐싱 되는지에 대해 질문한 적이 있습니다. 그전까지 저는 한 번도 네트워크 이미지가 어떤 기준으로 캐싱 되는지 고민해 본 적도 없고 단순히 이미지가 캐싱 된다는 개념만 알고 있었기에 제대로 된 답변을 하지 못했던 기억이 납니다. 이처럼 본인이 기재한 기술적인 항목에 대해 조금 더 깊게 알아보고 여러 심층 질문에 대해 준비하시는 게 좋습니다.


구현 과제와 관련된 기술 질문

"Flutter 개발자로 취업을 희망하고 있습니다. 알고리즘을 테스트 준비해야될까요?"

누군가 이런 질문을 한다면 "준비하면 좋죠" 라고 답변할 것 같습니다. 다만 질문을 조금 다르게 해서, "알고리즘을 준비하는 데 시간을 많이 할애해야 할까요?" 라고 물어본다면 저는 알고리즘 공부보다는 구현 과제를 준비하는 데 우선순위를 두시는 걸 추천한다고 말씀 릴 것 같습니다. 이유는 간단합니다. Flutter 개발자 채용 프로세스에서는 알고리즘 테스트보다 구현 과제가 압도적으로 많기 때문입니다.

단적인 예로, 저는 지금까지 총 5곳의 회사에서 코딩테스트를 봤었는데, 이 중에서 알고리즘 코딩 테스트를 진행한 곳은 한 곳밖에 없었습니다. 그리고 현재 원티트 flutter 채용공고 기준(2024.03.11) 총 44개의 회사 중 9곳에서 면접 프로세스에 구현 과제 전형이 포함되어 있기도 하고요.

구현 과제는 주로 간단한 토이 프로젝트를 구현하는 형태로 진행됩니다. 보통 2~5 페이지 내의 UI 디자인과 구현 요구사항을 전달받고 5~7일 기한 내로 완료해야 합니다. 대부분의 과제에서 상태관리 라이브러리를 사용하는 것을 권장하는 편인 것 같은데요. 특별한 상태 관리 패키지를 사용하도록 강제하는 곳을 드물지만, 제가 과제 전형을 보았던 한 회사는 getx는 사용할 수 없다는 조건이 붙기도 했으니 참고해 주세요.

과제 전형 관련 팁

과제 전형을 진행하는 데 있어 저만의 사소한 팁을 공유드려볼까 합니다.

1. 미리 boilerplate을 만들어두자
과제를 진행하는 동안 시간이 촉박해지는 경우가 많습니다. 특히 재직 중인 분들이라면 과제를 진행하기 위해 평일에 시간을 내기가 어려울 수 있습니다. 따라서 프로젝트 구조를 미리 설계하고 자주 사용하는 패키지와 커스텀 모듈이 포함된 boilerplate를 만들어두면 개발 시간을 단축할 수 있습니다.

2. 코드 퀄리티보다는 구현 요구사항 충족이 우선
시간이 부족하다 보면 코드 퀄리티요구사항 충족, 둘 중에 양자택일을 해야 할 경우가 생길 수도 있는데요. 저는 이때 코드 퀄리티가 낮더라도 요구사항을 충족시키는 것이 더 중요하다고 생각합니다. 함께 일하고 싶은 동료를 한 명 고른다면 코드 퀄리티가 조금 부족하더라도 요구사항을 알맞게 구현하시는 분과 함께 일을 하고 싶기 때문입니다.

근데 이건 저의 개인적인 생각이고, 실제 개발자를 채용하는 각 회사의 면접관분들은 어떤 선택을 할까요? 관련 내용 반려생활의 CTO 호돌맨님과, 인프랩의 CTO 향로님이 운영하시는 개발바닥 채널에서 확인해 보실 수 있으니 참고 부탁드립니다.

3. 비장의 무기를 하나쯤 준비
면접을 진행하는 회사 입장에서 보면 작게는 몇십 개에서, 많게는 수백개의 과제를 검토하게 됩니다. 즉, 모든 지원자가 동일한 기능을 구현하기 때문에 단순히 요구사항을 구현했다는 것만으로는 과제 전형에서 경쟁력을 가지길 힘들 수 있습니다. 이렇게 수많은 지원자 중에서 본인을 부각하려면 조금 특별한 전략이 필요할 수 있습니다. 예를 들어, 직접 상태 관리 모듈을 개발하거나 성능 최적화 작업을 진행하여 전후 차이를 보여주는 것 등 독특한 전략을 고려해 보세요. 혹은 과제 요구사항에 테스트 코드를 작성하라는 내용은 없었지만, 여러 테스트 시나리오를 설계하고 테스트 코드를 작성한다면 가산점을 받을 수도 있을 것 같다는 생각이 듭니다.

4. 과제 제출 전 불필요한 log, print문 및 불필요한 코드 블록 주석은 다 지우자
정신없이 과제를 진행하다 보면 테스트용 log, print문 또는 주석으로 처리된 코드 블록들같이 치열한 개발 흔적이 남게 될 수 있는데요. 과제를 제출하기 전에는 불필요한 log, print문 및 코드 블록 주석을 지워주세요. 이런 흔적들이 지원자의 꼼꼼하지 못함을 반영할 수 있습니다.

5. 아쉽고 부족한 부분은 먼저 언급해서 선수치기
마감 당일에 과제를 제출하려고 보면 항상 부족하고 아쉬운 부분이 있기 마련입니다. 이런 부분들을 개선할 시간이 부족하다면, 리드미(README)에서 본인의 생각하기에 부족한 부분과 이에 대한 개선안을 써주면 좋은 평가 요소가 될 수 있습니다. 미리 언급하지 않았다면 감점 요소가 될 수도 있지만, 지원자가 스스로 문제점을 인식하고 있다는 것만으로도 플러스 요인이 되는 것이죠.

6. 읽는 사람을 배려한 리드미 작성
리드미를 깔끔하게 잘 작성하는 것도 좋은 평가 요소가 된다고 생각합니다. 면접관도 사람이기 때문에 지원자가 작성한 모든 코드를 살펴보는 게 어려울 수 있습니다. 본인이 과제를 진행하면서 강조하고 싶은 부분을 리드마 잘 작성한다면, 면접관이 자칫 지나칠 수 있는 부분도 꼼꼼하게 살펴볼 기회를 만들 수도 있습니다. 특히 리드미 마크다운 파일에 코드의 특징에 대한 설명을 적고 파일에 링크 문법 [text](#link) 을 이용하여 특정 소스파일로 이동할 수 있도록 리드미를 구성해 주신다면 더 파악하고 읽기 좋은 프로젝트가 될 수 있습니다.

Best Practice는 아니지만 제가 작성한 리드미 양식을 가볍게 참고하실 수 있도록 링크를 남겨두겠습니다.
(https://github.com/Xim-ya/github_search_app)

미자믹으로, 사전 과제는 기술 면접 전에 진행되는 경우가 많습니다. 면접관은 지원자가 과제를 완료한 후 해당 과제를 기반으로 여러 기술 질문을 할 가능성이 높은데, 이를 위해 아래와 같은 제너럴한 질문들에 대한 답변을 준비해 두는 것이 좋습니다.

  • 과제 난이도는 어떠했나요?
  • 프로젝트를 진행하시면 새롭게 얻은 지식이 있었나요?
  • 과제를 진행하면서 기술적으로 어려웠던 부분이 있었나요? 또 어떻게 해결하셨나요?

기초 Flutter, CS 개념 질문

당연하게도 면접장에서는 여러 기초 Flutter 및 CS(컴퓨터공학) 개념을 물어봅니다. 개인적으로 단순한 개념을 물어보는 질문들의 난이도는 생각보다 평이했습니다. 좀 더 자세히 말씀드리자면 구글에 Flutter 개발자 질문 면접 또는 신입 개발자 CS 면접 질문라는 키워드로 검색하면 나오는 면접 질문들에서 크게 벗어나는 질문은 많이 없었습니다.

면접에 자주 나온 기초 Flutter 개념 면접 TOP 10 질문은 아래와 같습니다.

  • StatelessWidget과 StatefulWidget의 차이에 대해 설명해 주세요.
  • BuildContext에 대해 설명해주세요.
  • ListView와 ListView.builder의 차이점에 대해 설명 해주세요.
  • Dart에서 제공하는 컬렉션의 종류와 각각의 개념을 설명해주실 수 있나요?
  • 위젯이 빌드되는 과정을 주요 3가지의 위젯 트리를 통해 설명해 주세요.
  • Inherited Widget에 대해 설명해주세요.
  • Flutter에서 사용되는 Sliver에 대한 개념과 언제 사용하는지 설명해 주세요.
  • Scaffold.of(context) 코드가 어떻게 작동하는지 BuildContext의 개념을 사용하여 설명해 주세요.
  • mixin에 대해서 설명해주세요
  • 해당 코드에서 출력되는 알파벳 대문자를 순서대로 나열해 주세요.
void main() {  
  print('A');  
  Future(() {  
    print('B');  
    Future(() => print('C'));  
    Future.microtask(() => print('D'));  
    Future(() => print('E'));  
    print('F');  
  });  
  Future.microtask(() => print('G'));  
  print('H');  
}

기초적인 개념이라고 해도 실제 면접에서 생각이 잘 안나거나 버벅이는 경우가 있으므로 충분한 연습이 필요합니다. 그렇기 위해서는 단순히 눈으로만 면접 질문과 답변을 읽는 것이 아니라 실제 말하고 적는 연습이 필요하다고 생각하는데요. 가장 좋은 방법은 면접 스터디에 들어가서 스터디원끼리 서로 면접 질문을 주고받는 것이겠지만, 그러한 여건이 되지 못한다면 제가 개발한 테크톡 서비스를 이용해 보시는 걸 추천드립니다.

테크톡 서비스는 이직 또는 첫 취업을 준비하고 있는 개발자분들 대상으로 기술 면접을 도와주는 서비스입니다. AI 면접관과 진행하는데 모의 면접을 통해 기술 개념을 스스로 완벽하게 이해하고 있는지 점검하실 수 있어요.

해당 앱에서는 제가 지금까지 면접을 보면서 받았던 모든 Flutter 면접 질문과 모범 답변들이 있으니 Flutter 개발자 면접을 앞두고 계신 분들에게 조금이나 도움이 되었으면 좋겠습니다. 이외에도 iOS, Android, React , Spring, 자료구조, 데이터이스 등등 여러 기술 면접 주제들이 준비되어 있으니 많은 관심 부탁드립니다:)

📱 플레이스토어 : https://play.google.com/store/apps/details?id=com.techtalk.ai
🍎 앱스토어 : https://apps.apple.com/kr/app/id6478161786
🛠 깃헙 레포 주소 : https://github.com/MakeFrog/TechTalk


마무리하면서

면접은 항상 떨리고 긴장되죠. 그렇다고 너무 주눅들 필요는 없을 것 같아요. 이미 여러분들은 1차 서류에서 회사의 검증을 받으셨기 때문에 충분한 자심감을 가지고 면접장에 들어가셔도 됩니다.

혹시 서류에서 떨어지셨다고 해도 너무 낙담할 필요는 없습니다. 평소에 패기어린 마음에 운칠기삼(運七技三)이라는 말을 별로 좋아하지는 않았는데요. 취업 시장에 막상 뛰어들고 보니 여러 부분에서 운이 정말 큰 요소로 작용하거나라고 생각했었습니다. 제 경험을 잠깐 말씀드리자면, 하향으로 지원했던 회사는 서류 단계에서부터 떨어졌지만, 오히려 상향 지원이라고 생각했던 회사가 붙는 경우도 비일비재했었습니다.

그리고 요즘 채용 시장이 완전히 얼어붙었습니다. 특히 신입으로서 취업의 장벽이 더 높아진 것 같다는 생각이 듭니다. 올해 올라온 네이버랩스의 체험형 인턴 공고가 현재 개발자 취업 시장의 단면을 잘 보여준다고 생각하는데요. 정규직 전환율이 높지 않은 체험형 인턴을 뽑는 공고의 자격 요견에서 1년 이상의 실무 경험이 이례적으로 기재되어 있다는 점이 놀라우면서도 씁쓸한 마음이 드네요. 참고로 아는 지인으로부터 해당 공고에 총 300명이 넘게 지원했다는 소식을 들었습니다.

저는 너무 운이 좋게 Flutter 개발자로 취업을 할 수 있었습니다. 특히 주변 선배 개발자분들의 도움이 컸어요. 이 자리를 빌려 함께 사이드프로젝트를 진행하면서 많이 가르쳐주신 순억님과, 직접 이력서를 피드백 해주신 지혜님 그리고 커피챗에서 제 고민을 항상 잘 들어주신 토르, 맥스 그리고 제이에게 감사 인사를 드립니다.

이렇게 오랜 기간동안 취준을 하고, 주변 선배 개발자분들한테 도움을 많이 받으면서 저도 그들처럼 좋은 멘토가 되고 싶다는 생각을 하게 되었습니다. 체계적으로 멘토링 커리큘럼을 구축하고 올해 하반기에는 소규모 무료 Flutter 개발 멘토링을 진행할 계획입니다.

지금 글을 읽고 계신 취준생분들이 면접에서 좋은 결과를 얻으실 수 있기를 진심으로 기원하겠습니다 🔥
부족한 제 글을 읽어주셔서 감사드립니다.

profile
https://medium.com/@ximya

7개의 댓글

comment-user-thumbnail
2024년 3월 13일

취업 하셧군요 ㅎㅎ 축하드려요

1개의 답글
comment-user-thumbnail
2024년 3월 22일

와 ... 심야님이 16곳의 '면접'을 보셨다니, 그냥 모셔 가야 하는거 아닌가... 암튼 축하 드립니다. ㅎㅎ 코드 너무 잘 보고 있어서 커피챗 핑계로 커피쿠폰 하나 보내 드릴려고 이멜 보냈었어요 ㅎㅎ

1개의 답글
comment-user-thumbnail
2024년 4월 12일

플러터 멘토링! 취준이 아닌 개인개발에 관심있는 사람도 받아주시면 같이 하고싶네요..!

1개의 답글