소프트웨어 엔지니어링 일자리를 구하려고 할 때 아마도 행동 및 시스템 설계를 포함하여 여러 번의 인터뷰를 거쳐야 할 것입니다. 하지만 결국 모든 것은 한 가지로 귀결됩니다. 바로 코딩 능력입니다. 귀하의 코딩 능력은 귀하가 해당 역할에 완벽하게 적합한지 여부를 결정하는 핵심 요소입니다. 노련한 개발자이든 갓 대학을 졸업했든 경험 수준에 관계없이 코딩 인터뷰에 성공하는 것은 어려울 수 있지만 끈기와 노력은 보상을 받습니다. 1년 동안 준비한 끝에 페이스북에서 제안을 받은 사람으로서 저는 이 사실을 직접 알고 있습니다. 이 글에서는 제가 그동안 배운 몇 가지 팁과 전략을 여러분과 공유하고 싶습니다. 뛰어 들어 봅시다.
팁 #1 — 코딩 연습
소프트웨어 엔지니어로서 일상적인 작업에서 알고리즘과 데이터를 많이 사용하지 않을 수도 있습니다. 그래도 알아야 할 필수 기본 사항입니다. 그럼 어떻게 하면 그걸 잘 할 수 있나요? 알고리즘과 데이터 구조를 배우는 것은 어려울 수 있지만 엄청난 과학이나 비밀 기술은 아닙니다. 가장 큰 문제는 학습하는 데 걸리는 시간이므로 계획과 실습이 중요합니다. 근육을 키우는 것처럼 코딩 기술을 향상시키는 것을 생각해 보세요. 단지 몇 주간 집중적인 운동을 한다고 해서 모든 것이 탄탄해지고 탄탄해지는 것을 기대할 수는 없습니다. 마찬가지로 며칠 만에 알고리즘을 마스터할 수는 없습니다. 중요한 것은 원하는 결과를 얻기 위해 장기간에 걸쳐 일관되고 꾸준한 노력을 기울이는 것입니다. 2019년 코딩 인터뷰 준비를 시작했을 때 저는 이진 검색과 같은 가장 기본적인 알고리즘조차 작성하는 방법에 대해 전혀 몰랐습니다. Google과의 첫 번째 현장 인터뷰를 받기까지 약 6개월 동안 꾸준히 연습했습니다. 어떻게 됐나요? 나는 실패했다. 그런데 내가 포기한 걸까? 아니요. 마침내 Facebook(지금은 Meta로 알려져 있음)으로부터 제안을 받을 때까지 1년 동안 계속 연습했습니다. 따라서 중요한 점은 이러한 기술을 배우는 데는 시간과 노력이 필요하지만 그 대가는 인생을 바꿀 수 있다는 것입니다! 처음 코딩 문제 작업을 시작할 때 약간 압도감을 느끼는 것은 지극히 정상입니다. "나에게 무슨 문제가 있는 걸까? 나는 왜 가장 간단한 문제도 해결하지 못하는 걸까?"라는 생각이 들 수도 있습니다. 그것은 학습 과정의 자연스러운 부분일 뿐입니다. 시간이 지나면 좋아질 거예요. 압도감을 다루는데 도움이 되고 오랜 시간에 걸쳐 검증된 전략은 큰 작업을 관리 가능한 덩어리로 나누고 달성 가능한 목표를 설정하는 것입니다. 매일 1~2개의 쉬움 또는 중간 수준의 문제부터 시작하여 각 문제에 약 15~30분을 투자하는 것이 좋습니다. 이는 점진적으로 문제 해결 능력을 키우고 압도당하는 것을 방지하는 데 도움이 될 것입니다. 일단 자신감이 생기기 시작하면 하루에 최대 3-4개의 문제를 해결하여 강도를 높일 수 있습니다. 꾸준한 연습으로 무엇이 가능한지 알려드리기 위해 저는 거대 기술 회사로부터 첫 제안을 받기 전 1년에 걸쳐 개인적으로 약 200개의 문제(중간 50%, 쉬움 40%, 어려움 10%)를 해결했습니다. 모든 사람은 자신의 속도에 따라 학습하므로 자신에게 가장 적합한 연습량을 결정하십시오. 중요한 것은 집중력을 유지하고 유지하는 것입니다.
코딩을 연습하고 인터뷰 기술을 연마하기 위한 훌륭한 리소스를 찾고 싶다면 고려할 수 있는 몇 가지 옵션이 있습니다. 최고 중 일부는 Leetcode , 및 Codeforces입니다. 이러한 플랫폼은 코딩 능력을 연마하는 데 도움이 될 수 있는 다양하고 어려운 문제를 제공합니다.
그러나 더 많은 구조나 지침이 필요한 경우에는 Interviews.school과 같은 리소스나 Algoexpert.io와 같은 유료 코스도 있습니다. 이는 이제 막 시작했거나 어디서부터 시작해야 할지 확신이 없는 경우 특히 도움이 될 수 있습니다. 나는 인터뷰 준비 과정에서 이러한 모든 리소스를 사용했으며 그 품질을 보증할 수 있습니다.
팁 #2 — 프로그래밍 언어를 알아두세요
기술적인 능력과 문제 해결 능력을 최대한 발휘하려면 사용할 언어에 대한 탄탄한 구사력을 갖추는 것이 중요합니다. 일반적으로 알고리즘 코딩에 사용할 언어를 선택하게 되지만 때로는 면접관이 특정 언어 요구 사항을 요구할 수도 있습니다. 그 점을 미리 확인해 보세요. 기본 언어가 아니더라도 가장 편안한 언어를 사용하세요. 일반적인 데이터 구조, 단축키 및 메모리 관리를 알고 있는지 확인하십시오. 저는 매일 PHP로 작업하지만 코딩 인터뷰를 위해 Python을 선택했습니다. Python의 쉬운 구문은 솔루션 프로토타입을 빠르게 만드는 데 도움이 되며 $ 기호, 대괄호 또는 세미콜론과 같은 것에 대해 걱정할 필요가 없습니다. 프로그래밍 언어 기술을 향상하려면 기본 사항을 배우고, 코딩을 연습하고, 다른 프로그래머의 솔루션을 연구하는 데 시간을 투자하세요. Leetcode를 확인해 보시기 바랍니다. 댓글 및 토론 섹션에서 배울 수 있는 몇 가지 훌륭한 예제와 기술을 찾을 수 있습니다.
팁 #3 - 명확한 질문을 해보세요
먼저 질문하지 않고 문제 해결을 서두르지 마십시오. 이는 면접관에게 위험 신호가 될 수 있는 일반적인 실수입니다. 문제를 올바르게 이해했다고 확신하더라도 몇 가지 명확한 질문을 해보세요. 코딩 문제는 의도적으로 모호하므로 면접관은 필요한 모든 세부 정보를 미리 제공하지 않습니다.
대신 면접관은 귀하가 세부 사항을 명확히 하기를 기대하므로 귀하와 면접관이 같은 입장에 있는지 확실히 확인하기 위해 몇 가지 질문을 하십시오.
게다가, 이런 식으로 극단적인 사례를 식별하고 명확하게 할 수 있습니다. 예를 들어, 입력 형식, 관련 데이터 유형 또는 문제에 제약 조건이 있는지 여부에 대해 질문할 수 있습니다. 구체적인 세부 사항을 알면 시간을 절약하고 현재 작업에 집중할 수 있습니다.
팁 #4 — 코딩하기 전에 솔루션에 대해 이야기하세요.
인터뷰에서 문제를 해결할 때 서두르지 말고 코딩을 시작하세요. 먼저 솔루션에 대해 이야기해 보세요. 이렇게 하면 문제를 명확히 하고 시작하기 전에 탄탄한 계획을 세울 수 있습니다. 문제에 대해 이야기하면 시간을 절약하고 불필요한 실수를 방지할 수도 있습니다. 나 자신도 이 함정에 빠질 뻔했다. 한 인터뷰에서 문자열 접두사 일치를 구현해 달라는 요청을 받았습니다. 나는 즉시 Trie와 관련된 다소 복잡한 솔루션을 생각했습니다. 하지만 내 아이디어를 큰 소리로 설명하기 시작하자 면접관은 나를 멈추고 두 문자열을 반복하는 간단한 방법을 요청했습니다.
바로 코딩을 시작했다면 면접관이 요구하지도 않는 너무 복잡한 솔루션에 시간을 낭비했을 것입니다.
솔루션에 대해 설명하고 면접관이 이에 만족한 후에야 솔루션 구현을 시작할 수 있습니다.
팁 #5 — 의사소통
코딩 인터뷰 중에 면접관은 실제로 솔루션에 도달했는지 여부에는 그다지 관심이 없습니다.
그들은 문제 해결 과정에 어떻게 접근하는지 알고 싶어합니다.
진행하면서 자신의 생각을 자세히 설명하고 추론을 설명하세요. 면접관은 당신의 편이며 당신의 성공을 돕기 위해 존재한다는 것을 기억하세요. 인터뷰를 당신과 면접관이 함께 해결책을 찾기 위해 노력하는 팀 노력이라고 생각하십시오. 하지만 대부분의 대화를 해야 합니다(시간의 약 70-80%). 면접관은 때때로 피드백을 제공하거나 당신을 정정할 수 있습니다. 열린 마음을 갖고 면접관의 피드백을 기꺼이 활용하여 이를 유리하게 활용하십시오. 인터뷰 내내 친절하고 신속하게 대응하십시오. 집중할 시간이 필요하다면 면접관에게 알려주세요. 잠시 멈춰서 생각을 정리하세요. 하지만 너무 오래 끌지는 마세요.
팁 #6 — 솔루션 테스트
완료한 후에는 코드를 엄격하게 테스트하는 것을 잊지 마십시오. 테스트는 놓쳤을 수 있는 실수나 문제를 파악하는 데 중요합니다. 코드가 예상한 출력을 생성하는지 확인하려면 면접관이 제공한 예제 입력을 사용하세요. 입력 경계, 입력 형식이나 유형, 빈 값, Null 또는 음수 값, 너무 작거나 큰 입력 등 극단적인 경우를 테스트해 보세요. 테스트할 때 코드를 한 줄씩 살펴보고 변수와 표현식의 값을 확인하세요. 이렇게 하면 코드를 한 눈에 보는 것만으로는 발견하기 어려운 오류를 잡을 수 있습니다. 모든 것을 테스트한 후에는 한발 물러서서 코드를 더욱 향상시킬 수 있는 방법에 대해 생각해 보십시오. 문제를 해결하는 더 효율적인 방법이 있을 수도 있고, 코드를 더 쉽게 읽고 이해하도록 만들 수도 있습니다.
결론
코딩 인터뷰는 어려운 일이지만 철저한 준비와 연습을 통해 성공 가능성을 크게 높일 수 있습니다.
주요 내용을 요약해 보겠습니다.
- 기본을 공부하세요.
- 귀하의 언어를 아십시오.
- 명확한 질문을 하십시오.
- 코딩하기 전에 솔루션에 대해 이야기하십시오.
- 솔루션을 철저히 테스트하세요.
침착함을 유지하고 공동 문제 해결 프로세스로 인터뷰에 접근하십시오. 향후 코딩 인터뷰에서 행운을 빕니다!
리드 이미지는 "페이스북 코딩 인터뷰" 프롬프트를 통해 HackerNoon의 Stable DiffusionAI Image Generator 기능을 사용하여 생성되었습니다.