Community

코테도 중요하지만 이게 더 중요하다!!

많은 사람들은 코딩 문제를 많이 해결하면 구글이나 페이스북과 같은 거대 테크 회사에 취업하는 데 도움이 될 것이라 생각합니다. 그치만 문제를 푸는 것보다는 문제를 이해하는 게 더 중요하다고 합니다. 실제로 많은 코딩 테스트를 통과한 지원자들은 면접관들에게 이런 질문을 받아서, 식별 된다고 합니다. 구글의 코딩 테스트의 성공은 곧 질문에 올바르게 답하는 능력에 달려 있다고 합니다. 사고 과정과 문제 해결 접근 방식을 더 깊이 파고들도록 요청하죠. 단순 답이 아닌 최적의 솔루션, 시간 및 공간 복잡성 등등을 완전히 파악하고 싶어 합니다. 핵심은 프롬프트를 통해 작업하면서 강력한 분석적 사고와 의사소통 기술을 보여주는 것입니다. * 속이기보다 모르는 것이 있으면 인정하기 * 필요한 경우 명확하게 면접관에게 질문하기 * 문제를 큰 소리로 생각해보기 이는 연습과 준비를 통해 코딩 테스트 이후 진행되는 면접 질문에 답하는 기술을 익힐 수 있다고 합니다. 다음은 인기 있는 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; } 이런 문제에 대해서 다음과 같은 후속 질문이 나올 수 있죠. 1. 2개의 노드 대신, k개의 노드가 제공되는데, 이 k개의 노드 중 LCA(Lowest Common Ancestor)를 찾아야 한다면 어떻게 될까요? 2. n-배열이거나 n-자식 트리라면 어떻게 될까요? 3. n-자식 트리이고 LCA를 찾기 위해 k 노드가 제공된다면 어떻게 될까요? 다들 잘 답하실 수 있겠나요? 여기서 모르는 것이 있으면 인정하고, 필요한 경우 면접관에게 물어보고 문제를 크게 되내어 생각해보는 스킬이 필요하죠. 물론 가장 좋은 건 이러한 기술에 답변을 잘 하는 것입니다. 단순히 문제만 푸는 것이 아닌! 예를 들어 이진 트리가 아닌 일반 트리라면 어떨까요?라고 했을 때 class TreeNode { int val; List children; public TreeNode(int val, List 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

알림

알림이 없습니다