구글에 취업하기 위해 1년동안 준비해야할 것들

Google 입사 준비는 길고 어려운 과정이 될 수 있지만, 헌신과 끈기를 가지고 노력하면 충분히 해낼 수 있습니다. 다음은 Google에서 취업을 준비할 때 고려해야 할 몇 가지 범주입니다


기술 능력

Google은 컴퓨터 과학 및 엔지니어링 분야의 탄탄한 기초를 갖춘 인재를 채용합니다. Google에서 취업을 준비하려면 데이터 구조, 알고리즘, 객체 지향 프로그래밍, 컴퓨터 아키텍처와 같은 컴퓨터 과학의 기본 사항을 숙지하는 데 집중해야 합니다. 또한 Python, Java, C++와 같이 널리 사용되는 프로그래밍 언어를 사용하여 소프트웨어 및 애플리케이션을 개발한 경험이 있는 것도 중요합니다.

기술 역량을 향상하는 데 도움이 되는 리소스는 다음과 같습니다:

온라인 강좌: 컴퓨터 과학 및 프로그래밍 기술을 배우는 데 도움이 되는 온라인 강좌는 Coursera, Udemy, edX 등 다양하게 마련되어 있습니다.

도서: Gayle Laakmann McDowell의 ‘코딩 면접의 정석’, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein의 ‘알고리즘 입문’ 등의 책이 기술 면접을 준비하는 데 도움이 될 수 있습니다.

코딩을 연습하세요: LeetCode 및 HackerRank와 같은 웹사이트는 코딩 기술을 향상시키는 데 사용할 수 있는 코딩 과제와 연습 문제를 제공합니다.

프로젝트 및 경험

Google은 기술적인 능력 외에도 관련 프로젝트에 참여한 경험이 있는 인재를 중요하게 생각합니다. 오픈소스 프로젝트에 참여했거나 Google의 오픈소스 프로젝트에 기여한 경험이 있으면 유리할 수 있습니다.

프로젝트를 구축하고 경험을 쌓는 데 도움이 되는 리소스는 다음과 같습니다:

Github: Github에서 프로젝트를 빌드하고 오픈소스 프로젝트에 기여할 수 있습니다.

해커톤: 해커톤에 참여하면 프로젝트를 구축하고 팀 환경에서 일하는 경험을 쌓는 데 도움이 될 수 있습니다.

인턴십: 회사에서 인턴십을 하면 경험을 쌓고 네트워크를 구축하는 데 도움이 될 수 있습니다.

커뮤니케이션 능력

Google은 뛰어난 커뮤니케이션 능력을 갖춘 인재를 중요하게 생각합니다. 여기에는 구두 및 서면 의사소통 능력과 협업 능력이 모두 포함됩니다. 커뮤니케이션 능력을 향상하는 데 도움이 되는 리소스는 다음과 같습니다:

토스트마스터: 토스트마스터즈는 개인이 대중 연설 및 커뮤니케이션 기술을 향상할 수 있도록 도와주는 단체입니다.

글쓰기 강좌: 글쓰기 강좌를 수강하거나 글쓰기 관련 책을 읽으면 서면 커뮤니케이션 능력을 향상하는 데 도움이 될 수 있습니다.

그룹 프로젝트: 그룹 프로젝트에 참여하면 협업 및 커뮤니케이션 기술을 향상하는 데 도움이 될 수 있습니다.

네트워킹

네트워킹을 통해 Google의 채용 기회에 대해 알아보고 발을 내딛을 수 있습니다. 전문적인 네트워크를 구축하면 업계 사람들과 연결하고 잠재적으로 취업 기회를 얻을 수 있습니다. 인맥을 구축하는 데 도움이 되는 리소스는 다음과 같습니다:

업계 이벤트: 업계 이벤트 및 컨퍼런스에 참석하여 해당 분야의 사람들과 연결하세요.

LinkedIn: LinkedIn을 사용하여 해당 분야의 전문가와 연결하세요.

밋업: 업계와 관련된 모임에 참여하여 같은 생각을 가진 전문가들과 교류하세요.

Google에서 취업을 준비하려면 기술력, 경험, 커뮤니케이션 능력, 인맥이 모두 필요합니다. 이러한 분야에 집중하고 위에서 언급한 리소스를 활용하면 Google에 취업할 확률을 높일 수 있습니다.

추가.

기술 면접을 준비하는 방법은 다음과 같습니다.

이 하위 항목에 게시된 거의 모든 질문은 “기술 면접에 합격하고 취업하려면 무엇을 알고/해야 하나요?”라는 질문입니다. 다음은 제가 1000건 이상의 기술 면접을 진행하면서 얻은 몇 가지 조언입니다. 모든 것을 다루지는 않지만 가장 중요한 기본 요소는 다루고 있다고 생각합니다.

기대치 설정: 구직이 처음이거나 몇 년 동안 면접을 본 적이 없다면 면접 준비에 약간의 노력을 투자해야 합니다. 보통 이 단계를 완전히 무시하는 것은 업계 전문가들이지만, 일부 대학생들도 마찬가지입니다. 본질적으로 시험을 위해 공부하는 것이므로 느슨해지지 마세요. 그동안 스스로에게 중요하지 않다고 말해왔던 모든 것들(인터넷이 정확히 어떻게 작동하는지 잘 모를 수도 있습니다. URL 표시줄에 엔터를 누르면 어떤 일이 일어나는지 정말 알고 계신가요?)은 이제 그 차이를 정면으로 다룰 때입니다. 그래서 무엇이 중요할까요?

지면 관계상 신입사원이 준비해야 할 사항 중 회사마다 일관성이 있고 목록이 짧은 것들에 초점을 맞춰 설명하겠습니다.

Data Structures

위키피디아로 이동하여 각각의 전체 페이지를 몇 번 읽은 다음 직접 작성해 보세요(실제로 코드를 작성하고 이 내용을 가지고 놀아 보세요. 이것이 가장 중요한 부분입니다).

  • 배열
  • 연결된 목록
  • 스택/큐
  • 트리(트리, 이진 트리, 이진 검색 트리, 레드-블랙 트리 등) 가능한 한 많이 배우세요)
  • 해시 테이블(이것은 매우 중요합니다. 다양한 충돌 완화 메커니즘을 모두 이해하고, 상각된 상수 시간이 무엇을 의미하는지 이해해야 합니다.)
  • 직접/비직접/가중 그래프
  • 트리(“트리”로 발음)
  • 연결된 해시 맵(매우 구체적이지만 인터뷰에 자주 등장하는 개념)

삽입, 삭제, 조회 등에 대한 Big-O를 알아야 합니다. 메커니즘이 어떻게 작동하는지 알고 있어야 합니다. 좋은 면접 질문은 아니지만, 이 모든 것을 코딩할 수 있어야 합니다. 그런 다음 각 기능을 언제 사용할 것인지에 대한 실제 사례를 준비하고 왜 그것이 최선의 선택인지 설명하세요. 기술 면접에서 데이터 구조는 두 가지 방식으로 등장합니다. 첫 번째는 적시에 적절한 것을 사용해야 하는 코딩 질문입니다. 두 번째는 코드와 연결되지 않은 비교 질문으로, “Z 상황에서 왜 Y보다 X를 사용하겠는가?”라는 질문입니다.

Algorithms

다시 한 번 강조하지만, 연습할 때는 실제로 실제로 코딩해야 합니다. 다른 사람이 작성한 코드를 읽는 것만으로는 충분하지 않습니다. 좋아하는 IDE를 열고 입력을 시작하세요. 이것은 매우 중요한데, 실제로는 지식에 차이가 있지만 엉터리 두뇌가 괜찮다고 확신하는 경우가 많기 때문입니다(자신도 모르는 사이에 이런 일이 일어납니다). 이러한 차이를 발견하는 유일한 방법은 코드를 작성하는 것입니다. 이를 위해 모든 빅오를 알고 어떻게 파생되는지 알아야 합니다.

여기서 열중할 필요는 없지만 몇 가지를 검토해 보세요:

  • 정렬 알고리즘(비교 정렬 및 비비교 정렬 모두)
  • 트리 순회(순서, 선순서, 후순서, 레벨 순서를 모두 외우세요)
  • 순회 - Dijkstra’s, A*, BFS, DFS(DFS와 BFS의 차이점을 알고 언제 어느 쪽을 사용할지, 그 이유는 무엇인지 - 힌트, 전체 공간을 검색할 필요가 없을 때 주로 중요함). 또한 재귀적으로 코딩할 수 있고 자체 스택/큐를 사용할 수 있는지 확인하세요.)
  • 모든 접두사 트리 검색

이제 60% 정도 완성되었습니다. 이제 이 지식을 적용하는 연습을 해야 합니다. 인터뷰 질문의 출처를 찾아서(무작위 웹사이트, glassdoor.com, 크래킹 더 코딩 인터뷰 등) 해당 질문에 대한 답을 코딩하세요. 면접 환경에 있는 척하는 것을 강력히 추천합니다. 대부분의 질문은 10~15분 안에 풀 수 있지만, 어떤 질문은 20~25분 정도 걸릴 수도 있습니다. 스스로 시간을 정하세요. 한 줄의 코드를 작성하기 전에 생각을 정리하고 전체 솔루션을 파악한 다음 코딩을 시작하세요. 코딩 부분은 지루하지 않고 간단해야 합니다. 실제 면접에서도 똑같이 하세요. 한 줄의 코드를 작성하기 전에 면접관에게 자신의 접근 방식이 올바른지 확인해야 합니다. 이 부분을 연습하세요.

Fill Gaps

지금이 바로 자신에게 솔직해져야 할 때입니다. 모르는 것들에 대한 긴 목록은 사실 중요하지 않으니 괜찮다고 스스로에게 계속 말하세요…… 사실 중요합니다. 그렇지 않더라도 면접관은 중요하다고 생각할 수 있으며 옳은 것보다 직업을 갖는 것이 더 낫습니다. 다음은 사람들이 중요하지 않다고 말하는(하지만 여러분은 꼭 알아야 할) 제 머리 속에 떠오르는 목록입니다.

코드 작성 - (농담 반 진담 반으로 여기에 넣었습니다. 15년 이상의 경력을 가진 사람들에게 저와 함께 코드를 작성해 달라고 부탁하면 얼마나 많은 사람들이 당황하는지 모릅니다. 이런 ‘아키텍트’들은 결국 일자리를 얻지 못합니다. 관리자 및 기타 지원 직책도 마찬가지입니다. 프로덕션 코드를 작성하지 않을 거라는 건 알지만, 그래도 코드를 작성할 수 있어야 합니다).

비트와 바이트 - 예, 면접할 언어가 무엇이든 간에 비트 이동이 어떻게 작동하는지 이해해야 합니다. 큰 엔디안과 작은 엔디안이 무엇인지 알아야 합니다. 간단한 문제라도 몇 가지 연습 문제를 풀어보세요. 예를 들어 “정수의 비트 단위 표현이 팔린드롬인지 확인하는 방법을 작성하세요.”와 같은 질문을 해보세요.

인터넷의 작동 원리. 이것은 회사에 더 많이 적용됩니다….예아….요즘 모든 것에 적용됩니다. 소켓이 어떻게 작동하는지 알아야 하고, TCP/IP가 무엇인지 알아야 합니다. HTTP가 실제로 무엇인지 알아야 합니다. 네트워킹 계층과 무엇이 무엇을 담당하는지 알아보세요. 프로토콜의 모든 세부 사항을 알 필요는 없지만 프로토콜의 일부와 프로토콜이 존재한다는 것 정도는 알고 있어야 합니다. 어렵게 들리겠지만 몇 시간 정도면 충분합니다.

데이터베이스. 지원하는 직무에서 데이터베이스를 사용하는 경우 기본적인 SQL 및 데이터 모델링을 배우세요.

테스트에 대해 조금 알아보세요. 코드를 작성하고 테스트해 보세요. TDD란?

Windows만 사용해 본 적이 있다면…. 리눅스 사용을 잠시 고려해 보세요.

다른 어떤 것이든 생각해 보세요. 면접을 보는 자신을 상상해보는 것도 좋은 방법입니다.”이봐, X에 대해 묻지 않았으면 좋겠어.”라고요. X가 무엇인지 파악하고 그에 대해 읽어보세요.

좋은 소식은 이 목록에 있는 것들은 대개 생각보다 훨씬 쉽게 배울 수 있다는 것입니다. 대개는 학부 시절의 상처나 CS에 대한 비전통적인 경로로 인한 격차로 인해 어렵게 느껴질 수 있습니다. 모두 생각보다 쉽게 해결할 수 있습니다.

Behavioral

거의 다 끝났습니다. 기술 면접이 기술만 다루는 것은 아닙니다(요즘은 대부분 그렇지만 완전히 그렇지는 않습니다). 사람들이 함께 일하고 싶은 사람으로 보여야 합니다. 미소 짓고, 활기차고, 회사에 대해 흥분하고, 회사가 무엇을 하는지 알고, 무엇을 할 수 있는지에 대한 아이디어를 가지고 있어야 합니다. 거의 확실하게 행동 면접 질문을 받게 될 것입니다. 이에 대비할 수 있습니다. 기술 프로젝트를 진행하면서 일이 잘 풀렸던 상황 세 가지와 일이 잘 풀리지 않았을 때의 이야기 세 가지를 생각해 보세요. 그런 다음 이야기하는 연습을 하고, 설정 정보, 배경이 무엇이었는지, 프로젝트는 무엇이었는지, 함께 일한 사람은 누구였는지, 역할은 무엇이었는지… 그리고 이야기를 들려주세요… 그런 다음 긍정적인 이야기의 경우 작업의 영향력, 승리, 회사 비용 절감 등에 대해 이야기하세요. 부정적인 이야기의 경우, 배운 점과 앞으로 문제에 어떻게 다르게 접근할 것인지에 대해 이야기하는 것으로 마무리하세요.

Parting Words

숙면을 취하고 최선을 다하세요. 일부 면접에서 불합격할 수도 있지만, 이를 학습 경험으로 여기고 좋은 면접관과 나쁜 면접관이 모두 존재한다는 사실을 인식하세요. 훌륭한 지원자가 형편없는 면접관에게 던져져 취업에 실패할 수도 있습니다(사람들이 이야기하는 것보다 더 많이 일어납니다). 그렇다고 해서 경험에서 배우지 않으려는 핑계로 삼아서는 안 된다는 말은 아니지만, 면접은 게임입니다. 규칙에 맞서 싸우려고 하거나 어리석다고 생각하지 마세요. 그것이 바로 게임이고 그것이 여러분과 원하는 직업 사이에 있는 것입니다. 연습을 통해 게임을 플레이하고 승리하는 법을 배우세요 :-)

행운을 빕니다. 오타가 있어서 죄송합니다. 이제 막 시작하는 사람들에게는 사기꾼이 아니며, 갓 졸업한 대학 졸업생이 얼마나 적은지 우리 모두 알고 있으며, 우리는 그것을 램프업 프로세스에 고려합니다. 열심히 일할 준비를 하세요.

편집: 생각나는 대로 몇 가지를 더 적어보겠습니다. 사람들이 이 정보가 이렇게 유용할 줄은 몰랐습니다.

Don’t Sell Past the Close

외향적인 분들에게 너무 솔직했던 적이 몇 번이나 있는지 모르겠습니다. 제가 여러분을 인터뷰할 때 저는 여러분의 가장 친한 친구입니다. 제 목표는 몇 가지 이유로 여러분을 최대한 편안하게 만드는 것입니다. 첫째, (그리고 실제로 친절하게 대하는 가장 큰 동기 부여 요인인) 여러분의 성과는 편안할 때 가장 잘 반영됩니다. 면접에서 지나치게 스트레스를 받으면 얼어붙는 훌륭한 엔지니어도 있기 때문에 사람들을 놀라게 하는 것은 비용이 많이 듭니다(면접 스트레스 마비와 실제 업무 마비 사이에는 거의 상관관계가 없다는 사실도 발견했습니다). 저는 특정 유형의 내성적인 사람을 채용 풀에서 배제하고 싶지 않기 때문에 친절합니다. 제가 좋은 또 다른 이유는 외향적인 사람들이 우리를 친구라고 생각하기 때문입니다. 우린 친구가 아니라 면접을 보는 거예요.

면접관과 얼마나 친하다고 생각하든 상관없어요. 그는 이미 당신을 보트에 초대했으니까요. 친구가 아니니 입을 열지 마세요.

사람들과 유대감을 형성하고 싶은 것은 인간의 본능이며, 우리가 사람들과 친구를 사귀는 한 가지 방법은 사람들과 비밀을 공유하는 정교한 춤을 추는 것입니다. 초반에는 대개 꽤 가벼운 진실을 공유하는 경향이 있지만, 인터뷰 환경에서는 좋지 않은 생각입니다. 제가 들은 이야기입니다:

“네, 인상적으로 들리는 건 알아요. 하지만 저는 하루에 5~6시간만 일하면 이 일을 해낼 수 있었어요.”

“면접에서 이런 말을 하면 안 되는 건 알지만, 진짜 문제는 제 동료였습니다. 그는 사소한 디테일까지도 너무 까다로워서 코드를 완성할 수 없었죠.” (사실 “면접에서 이런 얘기를 하면 안 되는 건 알지만, 그냥 피하세요.”로 시작하는 모든 말은 피하세요).

지나치게 공유하지 마세요. 무언가가 자신을 나쁘게 보이게 할 것이라고 생각한다면 실제로 그렇게 될 가능성이 높습니다.

이 규칙에는 예외가 있습니다: 사람들이 나쁘다고 생각하는 것 중 몇 가지는 괜찮습니다:

모르는 것을 인정하는 것(지어내는 것보다 낫습니다)

문제를 확실히 이해하기 위해 질문하기

약간 긴장해서 몇 초 동안 자신을 진정시키고 싶다고 말하기 (완전히 괜찮습니다. 하지만 지나치게 극적으로 말하지는 마세요).

채용된 후에는 마음에 드는 면접관과 친구가 될 수 있습니다. 면접관에게 당신을 공짜로 고용하지 않을 이유를 주지 마세요.

위 글과은 GPT3와 해당 블로그를 바탕으로 작성되었습니다. how_to_prepare_for_tech_interviews