2020년에 출간된 『파이썬 알고리즘 인터뷰』는 코딩 테스트와 알고리즘 인터뷰를 준비하는 분을 위한 대표적인 서적으로 자리매김하며 많은 사랑을 받았다. 카카오에 재직할 당시 국내 최초로 개발자 블라인드 채용을 진행하면서 코딩 테스트 출제 위원으로 참여한 것이 계기가 되어 좋은 책으로 이어졌다. 카카오에서 코딩 테스트를 진행했던 경험, 이후에 좋은 인재를 채용하기 위해 수많은 면접자들을 대상으로 기술 인터뷰를 수행한 경험, 현대자동차로 이직한 후에도 현대자동차그룹에 더 좋은 소프트웨어 인재를 채용하기 위해 수백여 차례의 면접을 진행한 경험, 그리고 더 좋은 면접을 진행하기 위해 다른 회사의 기술 인터뷰까지 면밀히 살펴본 경험을 당시 첫 책에 모두 담아냈다. 무엇보다 최고의 알고리즘 책을 만들어보겠다는 노력이 작은 결실을 맺어 더할 나위 없이 기쁘다.
이번에 3년 만에 새롭게 출간되는 『자바 알고리즘 인터뷰 with 코틀린』은 첫 책을 출간할 때의 마음가짐을 그대로 계승하여 다시 한번 최고의 알고리즘 책을 만들기 위해 노력한 책이다. 심혈을 기울여 선정한 리트코드 문제 88개, 프로그래머스 문제 7개, 카카오 기출 문제 7개를 풀이했다. 지난번보다도 훨씬 더 효율적이고 깨끗한 코드를 제시하려고 노력했고, 실무에 그대로 적용해도 문제가 없는 수준으로 작성했다. 간혹 문제 해결에 급급한 나머지 실무에서 활용하기 어려운 코드를 제시하는 자료나 책도 눈에 띄지만, 적어도 이 책은 그렇지 않다. 코딩 테스트를 통과해 취업에 성공한 이후 실무에서도 계속해서 활용할 수 있는 풀이 코드를 제공하는 데 주력했다.
이 책에서 제시하는 모든 코드는 실무에 바로 적용해도 문제가 없을 정도로 수준을 높였다. 여러분이 이 책을 통해 익힌 코딩 역량은 실무에도 그대로 도움이 될 것이다. 그뿐만 아니라 전작과 마찬가지로 어려운 알고리즘을 친절한 일러스트로 풀어서 설명했다. 어렵기만 한 알고리즘을 다양한 역사와 함께 부가 설명을 곁들여 200여 장이 넘는 일러스트를 통해 직관적으로 설명하는 데 많은 노력을 기울였다. 이처럼 『자바 알고리즘 인터뷰 with 코틀린』은 『파이썬 알고리즘 인터뷰』와 비슷하면서도 한층 더 업그레이드된 책이다. 게다가 이번 책에서 가장 두드러지는 차이점은 풀이 언어로 ‘자바’를 택했다는 점이다. 자바는 코딩 테스트를 치를 때 가장 많은 사람들이 택하는 언어다. 이번 책으로 인해 좀 더 많은 독자분에게 도움을 줄 수 있길 바랐다. 이 외에도 지난 책에서 부족하다고 생각하는 부분을 대폭 보완했다.
이 책은 현업에 종사하는 개발자뿐만 아니라 아직 학교에 재학 중인 대학생에게도 유용하다. 특히 이제 막 졸업하고 취업을 희망하는 취업 준비생, 연구실을 나서는 석박사들에게 많은 도움이 될 것이다. 그뿐만 아니라 좋은 문제를 찾기 위한 면접관들에게도 이 책은 좋은 선택이 될 것이다. 나 또한 면접관으로서 더 좋은 문제를 출제하기 위해 수많은 코딩 테스트와 경진 대회에 참여했고 수많은 알고리즘 서적을 뒤적여야 했다. 이 책에는 그간 내가 겪은 경험과 어려움까지 고스란히 모두 반영했다.
이 책의 모든 문제에는 풀이와 해설이 바로 제시된다. 하지만 되도록 책의 풀이를 보지 않고 먼저 직접 풀어보기를 권장한다. 이 책에서 제시한 풀이는 가능한 한 최적의 풀이가 되도록, 또한 우아한 코드가 되도록 노력했기 때문에 여러분이 먼저 문제를 풀어본 다음, 여러분의 풀이와 이 책의 풀이를 비교해보면서 어떤 부분에 차이가 있는지를 한번 살펴보자. 여러분의 코드 품질과 풀이 방법을 개선하고 최적화 기법을 익히는 데에 큰 보탬이 될 것이다.
2017년 8월, 카카오는 흥미로운 실험을 진행했다. 신입 개발자 채용을 이름과 연락처만 제시하면 누구나 지원할 수 있는 블라인드 방식의 공개 채용으로 진행한 것이다. 과감한 시도였고 당시 IT 업계에서조차 보기 드문 사례였다.
좋은 개발자를 선발하기 위한 출제 위원회의 움직임도 바빠졌다. 주요 알고리즘을 녹여 내면서도 응시자들에게 친근하게 다가서기 위해 카카오 캐릭터를 이용한 수십 항목의 문제를 만들었고, 출제 위원들이 각자 돌아가며 꼼꼼히 문제를 풀이해 나갔다. 피어 리뷰를 통해 충분히 논의를 진행했고, 다수결로 출제 여부를 확정했다. 지루한 절차가 반복됐지만 꼭 필요하고도 합리적인 과정이었다. 그렇게 여러 단계를 거쳐 최종적으로 총 7개 문제를 엄선했고, 이 문제들은 지금까지도 좋은 평가를 받으며 블라인드 채용의 모범 사례가 되었다(그해 카카오 공채 문제들은 이 책의 부록 B에서 모두 풀어본다). 당시의 성공 덕분에 이후에도 블라인드 채용은 계속 이어지고 있으며 다른 기업의 채용에까지 영향을 미쳤으니, 돌이켜 보면 그 자랑스러운 역사의 현장에 일원으로서 함께할 수 있었다는 사실이 그저 영광스러울 따름이다.
이 책에는 그렇게 당시 코딩 테스트를 진행했던 경험, 이후에도 수많은 면접자들을 대상으로 기술 인터뷰를 수행한 경험, 그리고 면접을 더 잘하기 위해 수많은 회사의 기술 면접 과정을 면밀히 살펴본 경험을 담았다. 그리고 이를 바탕으로, 나 또한 이직을 시도하면서 겪은 여러 가지 다양한 경험까지도 녹여내어 종합했다.
면접관으로서, 또는 면접자로서 겪은 다양한 경험은 한동안 면접관의 입장에서는 미처 느끼지 못했던 잘못된 관행들을 다시금 면접자의 입장에서 깨닫게 되는 좋은 계기가 됐고, 이직 후에는 더 좋은 면접관으로 거듭나게 됐으며, 이 책을 통해 그간의 경험들을 모두 잘 정리해 담아냈음은 물론이다.
간혹 알고리즘 면접이라는 것이 갓 졸업한 학부생들이나 풀 수 있는 형식적인 면접이 아니냐는 오해도 있다. 과연 그럴까? 여러분은 왜 알고리즘 문제를 푼다고 생각하는가? 왜 그동안 수학을 공부해왔다고 생각하는가? 우리가 수학과 알고리즘을 공부하는 이유는 튼튼한 기본(수학)을 바탕으로 논리적 사고(수학적 사고)를 거쳐 문제 해결(프로그래밍)을 하기 위해서다. 알고리즘 속에 깃든 다양한 사고의 방법, 자료구조, 문제 풀이 역량 등은 체계적으로 생각하는 방법을 길러주며 나아가 훌륭한 개발자로서 당연히 갖춰야 할 튼튼한 지적 기반을 쌓아준다. 알고리즘을 체계적으로 익혀 실력을 키운다면 좀 더 좋은 개발자가 될 수 있을 것이다.
이제부터 여러분이 할 일은 리트코드와 함께 이 책에 있는 문제들을 파이썬으로 열심히 풀이해 보는 것이다. 화이트보드에 풀어보는 것도 좋은 방법이다.
무엇보다 이 책이 여러분의 취업에, 여러분의 이직에, 여러분의 커리어에, 여러분의 인생에 좋은 길잡이가 되었으면 한다.