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
어제 출시된 따끈따끈한 ChatGPT Codex를 실제 프로젝트 레포에 써 보았습니다.
테스트가 있으면 스스로 테스트도 실행하고, 만든거 스스로 실행해보면서 버그도 수정하고 하는게 기특하긴 합니다.
개발을 아예 모르거나 다른 개발은 알고있지만 프론트엔드와 웹에대한 지식은 없는 분들에게 프론트엔드의 기술스택이 나온 이유를 쉽게 설명하기위해 작성된 글입니다.
... 더 보기오늘은 투자 완료일이자 아미고 런칭 100일. 별 생각 없었는데, VC 파트너님이 축하한다며 파티 안하냐고 전화주셨길래 편의점에서 맥주 한 캔과 꼬깔콘으로 조촐하게 파티 했습니다. 이제부터가 진짜 시작이겠죠. 잘 부탁드립니다.
... 더 보기ChatGPT 사용할 때 어떤 모델을 선택해야할지 망설여집니다. 모델명만 봐서는 어떤게 좋은지 모르겠더라고요.
... 더 보기R
... 더 보기