LinkedIn 프로필을 잠깐 관리한적이 있었는데, 어느 헤드헌터님이 그 프로필을 보시고 적합한 포지션을 제안해주셨습니다.
23/07/27에 LinkedIn 메신저와 이메일로 위와 같은 포지션으로 제안이 왔고, 마침 이직 생각도 어느정도 있어 포지션에 지원하게 되었습니다.
15년부터 일해오면서 LinkedIn 프로필 관리할 때 조금 정리한거 빼고는 구체적으로 정리한적이 없어 막막하더군요.
그래서 일단 어떤 항목을 넣을지 정리하기 위해 기본적으로 이력서에 포함되어야할 정보와 나를 어필할 수 있는 정보를 리스트업 했습니다.
- 개인정보
- 자기소개
- 학력
- 경력
- 프로젝트
- 기술스택
- 대외활동
- 해외경험
- 자격증
이렇게 항목을 정리하니 무엇을 써야할지 방황하지 않고 시간낭비를 줄일 수 있었습니다.
23/07/31에 이력서를 제출하였습니다. 헤드헌터분께서 바로 답을 해주시고 회사로 전달해주셨습니다. 오전에 이력서를 전달했는데 오후에 서류전형 합격 소식을 전해주셨고 면접일정 조율을 안내해주셨습니다.
면접은 코딩테스트 + 기술면접 이후 합격 시 임원면접이 추가적으로 이루어진다고 했습니다.
상대회사에서 면접일정을 23/08/01, 23/08/02, 23/08/09 중 봤으면 좋겠다고 하였습니다. 저는 면접 준비가 아예 되어있지 않았기에, 일주일 뒤인 23/08/09을 얘기했고 해당 날짜로 면접일이 정해졌습니다.
면접준비는 헤드헌터분께서 주신 자주 나오는 면접 질문 리스트 위주로 준비하였습니다.
(자기소개 1분, 수행 프로젝트, 이직사유 등의 질문이 있었음)
CS, C#, WPF 지식은 그냥 인터넷에 "C# 면접질문", "CS 면접질문"과 같이 검색해서 나오는 질답들을 대충 읽는 정도로만 준비하였습니다.
코딩테스트는 알고리즘 및 자료구조를 주제로 이루어진다고 했으며, 언어는 제한 없다고 알려주셔서 python으로 알고리즘 문제를 조금 풀었습니다.
23/08/09 당일에 회사를 방문하여 코딩테스트, 면접을 진행하였습니다. 저랑 같이 면접을 보러오신 분이 1분 계셨습니다. 코딩테스트는 같은 공간에서 진행되었고, 면접은 따로 봤습니다.
3시간 동안 7문제가 출제되었습니다.
7문제 중 6문제는 알고리즘 중점이 아닌 코딩스타일을 보는 문제였습니다.
최대, 최소값을 구하는 함수 구현, 문자열 형태의 숫자를 서로 더하는 함수 구현, binary 파일에서의 데이터 추출 등과 같은 문제 였으며, Assert 구문, Seperate of Concern 등과 같은 요소를 고려하여 작성하는 것을 중점으로 채점한다고 말씀하시더군요.
마지막 1문제는 알고리즘 문제였는데 회사 내에서 사용하는 솔루션을 조금이나마 체험할 수 있는 알고리즘 문제였습니다.
저는 주석이랑 Assert, 코드 나누기 등을 고려해가며 문제를 풀다가 6번 문제를 푸는 중에 시간이 끝나더군요. 7번 문제를 꼭 풀어보고 싶었는데 손도 못 댄게 아쉬웠습니다.
코딩테스트가 끝나자마자 5분도 되지않아 바로 면접이 진행되었습니다.
면접관 2명 / 면접자 1명 형식으로 진행되었으며, 약 3~40분 정도 진행했던거 같습니다.
생각했던 1분 자기소개는 바로 건너뛰시고, 기술적인 질문이 엄청 들어오더군요. 역시 경력직면접은 쉽지 않구나 했습니다.
기억에 남는 질문으로는 이렇게 있습니다.
- MVC, MVP, MVVM의 차이점
- 객체지향프로그래밍의 단점을 얘기해주세요
- 의존역전에 대해 설명해주세요
- boxing, unboxing에 대해 설명해주세요
- WPF xaml파일 작성 시 StaticResource, DynamicResource라는 것이 있는데 둘의 차이점은 ?
- Binding, DataContext과 대해 아는대로 설명해주세요
- 프리저블에 대해서 들어본적 있는가 ? (Freezable ?)
- UI자동화 테스트에 관해 아는대로 설명해주세요
- Dispatcher에 대해 설명해주세요
- Singleton이 왜 현재 안티패턴으로 불리는지
- 100만장의 사진을 폴더 별로 보여줘야하고 스크롤이 가능한 컴포넌트를 만들때
고려해야할 점- B-Tree, B+Tree의 차이를 얘기해주세요
- 모나드 라는 걸 들어본적 있는가?
이외에도 다른 질문이 더 있었지만, 잘 기억이 나질 않네요. (질문 자체를 이해못한 경우도 있었음)
기술질문 외에는 다음과 같은 질문이 있었습니다.
- 이직사유
- GitHub 내에서 인상적인 프로젝트 질문 (dotnet-flexgrid)
- 직장에서 프로젝트 수행 시 어려웠던 점
- 개발 프로세스를 구축한 적이 있다고 했는데 어떤 경험인지 구체적으로 설명
- 왜 현 직장에서 개발을 시작했는지? (현 직장이 개발회사가 아니란 것에 대한 궁금증)
- 희망연봉이 조금 높은 거 같은데 조정가능한가?
등과 같은 질문이 들어왔었고 이는 모두 면접 준비를 하면서 준비했던 내용이라 기술질문에 비해 수월하게 답할 수 있었지만, 그래도 아쉬움이 남는 대답들이었습니다.
제가 생각해도 면접관들 입장에서 불합격을 줄꺼 같다는 생각이 들어 포기반 기대반의 마음으로 결과를 기다렸으나, 다음날 헤드헌터분에게서 불합격 결과를 알려주셨습니다.
코딩테스트는 점수가 어떤지 알 수 없어 무엇이 아쉽고, 무엇이 부족했는지 알 수 없으나,
면접은 확실하게 아쉬움이 많이 남았습니다.
이 글을 적게된 계기도 이 면접에서 느낀 저의 부족함 때문에 이를 기록하기 위해 적게 되었습니다.
면접에서 상대방이 알아들을 수 있게 제대로 설명하지 못한 것이 너무 아쉽더군요.
이번 면접에서 제일 큰 문제점을 하나 생각해보자면 대답 말투였던거 같습니다. 보통 "~대해서 설명해주세요"라고하면 "~은 ~입니다."라고 답을 해야하는데, 반면 저는 아는 내용을 간단하게 정리해본적이 없으니 "~을 이런 경우에 이런식으로 활용한 적이 있습니다" 이렇게 답을 하게 되더군요.
또, 외부 개발자들과 소통을 해본 경험이 많이 없어서 프리저블이나 레이지와 같은 약간의 한국식 영어발음을 알아듣기 힘들었습니다. (프리저블 = Freezable, 레이지 = Lazy 등)
이러한 아쉬움을 겪고나니 앞으로는 다음과 같은 습관을 만들기 위해 노력하려합니다.
1. 지식을 심도있게 파악하고 정리하기
2. 면접 질답 항상 정리해놓기
3. 관련 개발자 커뮤니티 자주 접속하기
이번 velog 글을 쓰기로 마음먹은 이유 중 하나입니다. 이제부터는 velog를 통해 CS관련 지식이나 직무 관련 지식을 조금 더 심도있게 연구하고 글로 작성하고, 한 문장으로 정리해갈 예정입니다. 물론 쉽지는 않겠지만, 최소 2주에 1개의 글을 작성하도록 노력하려 합니다.
면접 질답을 정리하면서 제 자신의 경력을 다시 되돌아보는 느낌이 들더군요. 이걸 항상 해왔다면 제가 어떤 개발자이고, 어떤 방향으로 발전할지에 대한 길잡이가 될 수 있겠다라는 생각이 들었습니다. 따라서 2달을 주기로 면접질답 형태로 저에 대해 정리를 하려 합니다. (회고글이 될 수도 있겠군요)
기술면접에서 개발 트렌드에 대한 질문이 조금 나왔었습니다. (모나드 프로그래래밍, 리액티브 등) 따라서 커뮤니티를 자주 접속해서 다른 사람들의 생각과 개발 트렌드에 대해 조금 접하고, 새로운 지식이 는다면 1번 항목에서 얘기한 것 처럼 velog에 정리할 생각입니다.
끝으로, 이번 면접을 통해 제 자신을 되돌아볼 수 있었고, 많은 것을 느낄 수 있었습니다. 내가 무엇이 부족한지 무엇을 해야하는지에 대해 생각할 수 있었고, 느낌적으로도 리프레시 되는 효과를 얻을 수 있었습니다. 지인들이 면접 준비가 안되더라도 가서 그냥 한번 보고오라는 이유를 알겠더군요. 주변 지인 중에 면접을 고민하고 있다면 똑같이 얘기할 거 같네요 ㅎㅎ
유익한 글이었습니다.