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

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


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


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


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

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

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


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


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

댓글 2

함께 읽은 게시물

어제 출시된 따끈따끈한 ChatGPT Codex를 실제 프로젝트 레포에 써 보았습니다.


테스트가 있으면 스스로 테스트도 실행하고, 만든거 스스로 실행해보면서 버그도 수정하고 하는게 기특하긴 합니다.


... 더 보기

프론트엔드의 역사 with React,Typescript,Next.js

개발을 아예 모르거나 다른 개발은 알고있지만 프론트엔드와 웹에대한 지식은 없는 분들에게 프론트엔드의 기술스택이 나온 이유를 쉽게 설명하기위해 작성된 글입니다.

... 더 보기

오늘은 투자 완료일이자 아미고 런칭 100일. 별 생각 없었는데, VC 파트너님이 축하한다며 파티 안하냐고 전화주셨길래 편의점에서 맥주 한 캔과 꼬깔콘으로 조촐하게 파티 했습니다. 이제부터가 진짜 시작이겠죠. 잘 부탁드립니다.

... 더 보기

조회 1,289


ChatGPT 버전명 설명

ChatGPT 사용할 때 어떤 모델을 선택해야할지 망설여집니다. 모델명만 봐서는 어떤게 좋은지 모르겠더라고요.

... 더 보기

React Hooks 🪝 Testing Library 사용법

R

... 더 보기

React Hooks Testing Library 사용법

www.daleseo.com

React Hooks Testing Library 사용법

 • 

저장 21 • 조회 3,998


React Testing Library 사용법

T

... 더 보기

 • 

저장 37 • 조회 3,773