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

많은 사람들은 코딩 문제를 많이 해결하면 구글이나 페이스북과 같은 거대 테크 회사에 취업하는 데 도움이 될 것이라 생각합니다. 그치만 문제를 푸는 것보다는 문제를 이해하는 게 더 중요하다고 합니다.


실제로 많은 코딩 테스트를 통과한 지원자들은 면접관들에게 이런 질문을 받아서, 식별 된다고 합니다. 구글의 코딩 테스트의 성공은 곧 질문에 올바르게 답하는 능력에 달려 있다고 합니다. 사고 과정과 문제 해결 접근 방식을 더 깊이 파고들도록 요청하죠. 단순 답이 아닌 최적의 솔루션, 시간 및 공간 복잡성 등등을 완전히 파악하고 싶어 합니다.


핵심은 프롬프트를 통해 작업하면서 강력한 분석적 사고와 의사소통 기술을 보여주는 것입니다.


  • 속이기보다 모르는 것이 있으면 인정하기

  • 필요한 경우 명확하게 면접관에게 질문하기

  • 문제를 큰 소리로 생각해보기


이는 연습과 준비를 통해 코딩 테스트 이후 진행되는 면접 질문에 답하는 기술을 익힐 수 있다고 합니다.


다음은 인기 있는 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<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

Decoding Google's coding interview

Medium

Decoding Google's coding interview

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 2월 29일 오전 9:47

 • 

저장 167조회 7,559

댓글 2

함께 읽은 게시물

바이브 코딩을 여러가지 카테고리에 적용해보고 있는데, 머신러닝쪽은 압도적으로 좋네요. 진짜 코드를 안 봐도 될 정도임.


심지어 머신러닝 연구 작업 특성상 코드를 안봐도 되니까 실험하는게 겁나 재밌어짐. 미쳤음. GPU 무한대로 준다는 말에 혹한다는 것이 완전 이해가 됨.



인프라에 관심있는 분께 추천드렸던 책들...

최근에 인프라에 관심이 있는데 어떤 것들을 공부하면 좋을까? 어떻게 공부하면 좋을까? 질문주신 분이 있어서 이런 저런 이야기를 적다가, 시간이 되시면 이런 책도 읽어보면 좋을 것 같아요. 하고 추천했던 책들을 정리해봤어요. ---- https://www.yes24.com/Product/Goods/44376723 DevOps와 SE를 위한 리눅스 커널 이야기 - 강진우 저 리눅스 서버 운영할 때 어떤 부분들을 신경써야 하는지, 어떤 지표들을 어떻게 모니터링해야 하고, 문제상황에... 더 보기

 • 

댓글 1 • 저장 115 • 조회 7,748


영화 '로비'



... 더 보기

《기다림이 허락되지 않는 시대》

... 더 보기