Decoding Google's coding interview
Medium
많은 사람들은 코딩 문제를 많이 해결하면 구글이나 페이스북과 같은 거대 테크 회사에 취업하는 데 도움이 될 것이라 생각합니다. 그치만 문제를 푸는 것보다는 문제를 이해하는 게 더 중요하다고 합니다.
실제로 많은 코딩 테스트를 통과한 지원자들은 면접관들에게 이런 질문을 받아서, 식별 된다고 합니다. 구글의 코딩 테스트의 성공은 곧 질문에 올바르게 답하는 능력에 달려 있다고 합니다. 사고 과정과 문제 해결 접근 방식을 더 깊이 파고들도록 요청하죠. 단순 답이 아닌 최적의 솔루션, 시간 및 공간 복잡성 등등을 완전히 파악하고 싶어 합니다.
핵심은 프롬프트를 통해 작업하면서 강력한 분석적 사고와 의사소통 기술을 보여주는 것입니다.
속이기보다 모르는 것이 있으면 인정하기
필요한 경우 명확하게 면접관에게 질문하기
문제를 큰 소리로 생각해보기
이는 연습과 준비를 통해 코딩 테스트 이후 진행되는 면접 질문에 답하는 기술을 익힐 수 있다고 합니다.
다음은 인기 있는 2개 노드의 LCA(Lowest Common Ancesto) 찾기 인데요.
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if (root == null || root == p || root == q) return root;
TreeNode left = lowestCommonAncestor(root.left, p, q);
TreeNode right = lowestCommonAncestor(root.right, p, q);
return left == null ? right : right == null ? left : root;
}
이런 문제에 대해서 다음과 같은 후속 질문이 나올 수 있죠.
2개의 노드 대신, k개의 노드가 제공되는데, 이 k개의 노드 중 LCA(Lowest Common Ancestor)를 찾아야 한다면 어떻게 될까요?
n-배열이거나 n-자식 트리라면 어떻게 될까요?
n-자식 트리이고 LCA를 찾기 위해 k 노드가 제공된다면 어떻게 될까요?
다들 잘 답하실 수 있겠나요?
여기서 모르는 것이 있으면 인정하고, 필요한 경우 면접관에게 물어보고 문제를 크게 되내어 생각해보는 스킬이 필요하죠. 물론 가장 좋은 건 이러한 기술에 답변을 잘 하는 것입니다. 단순히 문제만 푸는 것이 아닌!
예를 들어 이진 트리가 아닌 일반 트리라면 어떨까요?라고 했을 때
class TreeNode {
int val;
List<TreeNode> children;
public TreeNode(int val, List<TreeNode> children) {
this.val = val;
this.children = children;
}
}
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if (root == null || root == p || root == q) return root;
TreeNode result = null;
for (TreeNode child : root.children) {
TreeNode childLCA = lowestCommonAncestor(child, p, q);
if (childLCA != null) {
if (result != null) {
// If both p and q are found in different subtrees, then root is the LCA
return root;
} else {
result = childLCA;
}
}
}
return result;
}
이러한 솔루션을 낼 수 있다는 로직을 생각해서 이야기 하는 거죠.
코딩 테스트보다도 코딩 테스트를 뜯어보라 그리고 그 후속 인터뷰에 대비하여 공부해라 라는 좋은 명언을 담고 있는데요. 원문은 아래에서 보시면 됩니다. 개인적으로 코딩 테스트를 준비하는 가장 알맞는 방법이 아닐까 싶습니다.
https://medium.com/@rohitverma_87831/decoding-googles-coding-interview-20b1f8fcaf66
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 2월 29일 오전 9:47
바이브 코딩을 여러가지 카테고리에 적용해보고 있는데, 머신러닝쪽은 압도적으로 좋네요. 진짜 코드를 안 봐도 될 정도임.
심지어 머신러닝 연구 작업 특성상 코드를 안봐도 되니까 실험하는게 겁나 재밌어짐. 미쳤음. GPU 무한대로 준다는 말에 혹한다는 것이 완전 이해가 됨.
S
... 더 보기