프랑스 이직기 #9: 파이널 테크 인터뷰 대장정.. 1편...
지난 번 debrief call 이후, 또 연락이 없어서 (....)된 상태였던 나. 24일에 콜 하고, 27일 새벽에 스케줄링하자는 연락이 왔다.
사실 생각해보면, 겨우 3일인데.. 요즘은 정말 이틀 삼일 기다리는 것도 너무 힘들고 버겁다.
취준이란 무엇인가.....
프랑스 개발자 이직기 #5: debrief call이 뭔데요...
지난 번 코딩 테스트... 끝나고 엉엉엉 울었다. 겨우 겨우 잡은, 첫 기회를 내가 내 발로 뻥 차버린 것 같아서...ㅠ정말 이 기회 하나 잡기가 얼마나 힘들었는데, 고작 테크 스크리닝에서 떨어지냐
2hyes.tistory.com
하여튼, 최대한 다른 면접과 안겹치게 그리고 공부할 시간을 좀 남겨놓고 스케줄을 잡았다. 이번 2차 및 파이널 테크 인터뷰는 팔란티어랑 비슷하게 3 stage로 구성되어있다. 각각 한시간씩 할당되는데, 다른 점은... 쪼개서 볼 수 있다는 점 ! 빨리 해치울까 생각도 했지만, 팔란티어때 3시간 연속으로 시험보고 기빨렸던 생각하니 다시는 경험하고 싶지않아서ㅎㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 금요일(오늘)에 하나 보고, 다음주 화, 수요일에 잡았다. (월요일 휴가쓸 생각이었는데, 요즘 회사에도 일이 많아서 쓰지못했다는 후문...쒸익)
1 stage: coding test
지난 번에 코딩 테스트 봤잖아요 왜 또 봐요 왜애애애애애앵ㄱ 울면서 준비했다 진짜. 솔직허게 말하면, 준비할 시간 별로 없어서... 이번에도 glassdoor 후기 뒤져서 빈출문제 싹 정리만 했다. 근데 저번에 봐보니, 문제 하나 쉬운걸로 시작해서 발전해나가면서 조건을 추가하시는 걸 보니, 대충 어떤게 나올 것 같다는 느낌이 빡 왔다.
준비 꿀팁을 주자면, 챗지피티한한테 teck mock interview하려고 한다고 하면서, 이 흐름으로 준비해보려고 한다고 하면 아주 잘 이끌어준다.
- 문제 이해 & 중요 키워드 파악
- input, output, time limit, sorted or not, duplicate allowed or not ,,,
- ex)
- "정렬된 배열" → Binary Search 가능할까?
- "중복이 있을 수도 있음" → First Occurrence or Last Occurrence?
- "실시간 데이터" → Streaming or Sliding Window 필요할까?
- Okay, so we're given a sorted array, and we need to find a target value efficiently. I'll assume that the array is sorted in ascending order unless stated otherwise. Are there any constraints on the size of the input?
- Reframe the question
- 이 문제를 이렇게 이해하면 맞나요?
- Just to clarify, the input is a sorted list of numbers, and I need to return the index of the target if it exists, or -1 if it doesn’t. Does that sound correct?
- edge cases 확인
- 특별한 입력 → 코드 잘 동작하는지 고려
- Before I start coding, let me check edge cases. What if the input array is empty? What if the target appears multiple times? Should I return the first occurrence?
- brute force 먼저
- 가장 직관적인 방법 → 그리고 나서 최적화
- A naive solution would be to scan the array one by one (O(N) Linear Search). But since the array is sorted, we can optimize this using Binary Search (O(log N)). Let me explain that next.
- 최적의 솔루션 제안 & time complexity 설명
- To optimize, we can use Binary Search, which reduces the time complexity to O(log N). Since the array is already sorted, we don’t need extra preprocessing.
- 최적 솔루션 okay?
- Would this O(log N) solution be acceptable, or would you like me to explore a different approach?
- 코드 작성 & 코드 한줄씩 따라가면서(dry run) 오류찾기
- 실행 하기 전에 직접 검토
- "Let me dry-run this with an example: nums = [1, 2, 3, 4, 5], target = 3...”
- edge case 보완. 필요하면 코드 수정
- "I see that I didn't handle empty arrays. Let me add a quick check at the beginning.”
- final complexity 리뷰
- 테스트 & 피드백 요청
오늘 퇴근하고 2시간 동안, intersection of two arrays 문제를 들이팠다. 느낌이 왔거든... 챗지피티랑 저번 면접 준비할 때, 특히 이 문제를 집중적으로 공부했었는데, sorted array 조건, sorted가 아니라면?, 중복을 허용할건지? 등등... 이런 흐름으로 모두 물어보셨다 허허.
특이했던 건, 실제 unittest 코드를 짜라고 했던 것. 사실 테스트코드 안짠지 오래돼서 기억이 안나서 가물가물했는데, 다행히 idle에 자동완성기능이 있었다ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 휴 !
또 하나의 배열이 다른 것보다 사이즈가 매우 크다면?에 대해서는, quick look을 할 수 있는 set()을 쓰겠다 했는데, 공간을 그렇게까지 쓸 수 없다면 어떻게 하겠냐고 하셨다. 흠.. 근데 정말 모르겠는 것임... 그래서 그냥 뱉은 게, A배열이 크다면, A배열을 기준으로 B 배열의 원소들로 바이너리 서치를 해보는 걸 구상해보고있다고 말했다. 근데 또 흥미로워하며 들어주시는 것... 같이 논의하면서 얘기해봤다. 이것도 어찌저찌 잘 넘어간 것 같다.
그리고 또, 그냥 말로 해보라고 한 것 중, 둘 다 데이터가 매우 커서 스트림으로 들어오는데, sorted가 보장되지도 않는다면 어떻게 할건지 물어보셨다. batch 로 쪼개는 방향으로 이끌고 가서, 이 방법은 좋다고 하셨으나, 결론적으로 내가 말한 방법은 틀리긴했다. 근데 내가 말한 논리는 좋게 봐주심. 그럼 됐다.
후기
오늘 인터뷰어 분은 특히 소프트웨어 엔지니어 파트셔서 코드와 알고리즘에 대한 관심과 이해도가 진짜 남다르신 것 같았다. 아 그리고 한국 음식 엄청 좋아하셔서, 올해에 여행오실 계획이라고ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
지난 번 인터뷰보다 발전한 모습을 보여서, 내 스스로가 너무 기특하고 대견하다 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
잘했다..잘했어... 장하다 !!!!!!!!!!!!!!!!!!!!!!! 푹 자라 !!!!!!!!!!(는 무슨 또 과제하러가야한다... 2차 후기로 오겠다...)