안녕하세요. 오랜만에 글 남기는 욱이입니다 😊
그간 연구실 생활로 바쁘게 지내느라 포스팅도 못하고, 댓글도 못 달았네요.. 8ㅅ8 (어쩐지 핑계인 것 같지만..(?))
어제 처음으로 기술 면접을 보고 왔습니다!
상당히 긴장되더라구요.. 떨리진 않았는데, 긴장이 돼서 준비해간 것에도 답변을 제대로 못하고,
힌트를 받았는데도 코딩하지 못하는 불참사가 발생했습니다....
1명만 뽑기 때문에 어쩐지 1차 면접에서 탈락할 것 같지만
많은 분이 이런 면접 후기들을 자신의 블로그에 소개하는 걸 보고, 혹시나 도움이 되실까 글을 남겨 봅니다.
우선 들어가게 되면, 물을 하나 줍니다.
물을 받고서는 호명될 때까지 기다리고 있으면 되는 구조였어요.
면접은 총 두 시간동안 이루어졌습니다. 전반부 면접에서 두 분의 면접관님을 만났고, 후반부 면접에서도 두 분의 면접관님을 만났습니다. 총 네 분의 면접관님과 소통하였네요. (모든 면접은 면접관님 2 : 저 1로 구성되어있었습니다.)
면접 전반부
-> 우선 자기 소개를 부탁하셨습니다. 짧게 1분 정도의 자기소개를 마친 후, 본격적으로 기술 면접에 돌입했습니다.
1. Memory의 전반적인 구조를 질문하셨습니다.
-> Code / Data / BSS / Heap / Stack 정도로 구성된다고 말씀드렸고, 각각의 역할을 말씀드렸습니다.
2. Memory의 구조가 그러하다면, static 변수를 선언하면 어디에 위치하게 될지를 물어보셨습니다.
-> 여기서 큰 실수를 해버렸습니다. 분명 준비해간 내용이었는데,, 긴장해서 잘못 말씀을 드렸습니다. 명확하게 기억이 나지 않는다고 일단 말씀드리고 Stack으로 생각하고 있다고 말씀드렸습니다. (정답은 초기화 된 경우에는 Data 영역, 초기화 되지 않은 경우에는 BSS 영역에 위치한다고 말씀드리면 됩니다.)
3. Process 와 Thread의 차이점
-> 많이 나오는 유형이죠. 아시는대로 답하시면 됩니다.
4. Multi Processing과 Multi Threading의 차이점은 무엇이고, 왜 Multi Threading을 더 많이 사용하는지 질문하셨습니다.
-> Thread 끼리는 데이터를 공유할 수 있기 때문에, 데이터를 주고 받는데서 발생하는 오버헤드가 적다는 점을 위주로 말씀드린 것 같습니다.
5. Multi Threading에서 조심해야할 점이 있다면?
-> 자원의 사용 (+추가 질문 : 그 자원에 대해서 좀 더 구체적으로 말씀해주실 수 있을까요?) 을 조심해야 합니다. 서로 같은 자원을 동시에 접근할 수 있기 때문에 예상치 않은 문제가 발생할 수 있습니다.
6. 그럼 그 문제를 어떻게 해결할 수 있을까요?
-> 동기를 맞추는 방식으로 해결할 수 있습니다. Semaphore나 Mutex 등을 이용할 수 있습니다. (+추가 질문 : 그럼 그 방식으로 구현을 한 프로젝트가 있나요?)
7. Deadlock에 대해서 설명해주세요.
-> 이 부분에서도 실수를 했습니다. Deadlock을 유발하는 4가지의 필요충분조건이 있는데, 그 부분이 생각이 안나서, 어정쩡한 답변을 드리게 되었습니다 ㅠㅠ
이후에는 손 코딩을 하는 것이었습니다. 제가 파이썬을 주로 사용하였는데, 파이썬 말고 다른 언어로 해줄 수 있냐고 요청하셔서 C로 구현하였습니다.
+ 확률 문제가 하나 있었는데, 넌센스가 아님에도 불구하고 도저히 못 푼 문제가 있습니다. 아쉬웠어요 ㅠ
+ 배열의 정렬과 관련된 문제가 있었습니다. 풀기는 했는데, "다른 방식으로도 풀 수 있지 않을까요?"라고 여쭤보신 것에는 답변하지 못해서 아쉽습니다 ㅠㅠ
이후 시간이 다 되어 전반부 면접이 마무리 되었습니다. 좋은 분위기를 만들어주시려고 면접관님 두 분께서 노력해주셔서 아쉽지만 기분 좋은 면접을 할 수 있었습니다.
면접 후반부에 들어가기 전에 한 10분 정도의 여유 시간이 있었습니다. 그 동안 화장실을 다녀오실 분은 다녀오셨고, 제 경우 핫팩으로 손을 따땃하게 해주었어요.
면접 후반부
-> 후반부에서는 면접관님 두 분께서 먼저 자기소개를 해주셨습니다. 그리고 제 자기소개를 부탁하셨습니다.
1. 관심이 있는 기술 분야가 무엇인지 질문하셨습니다.
-> "인프라에 관심이 있어서 이러 이러한 걸 했습니다." 라고 소개드리니, 인프라에도 종류가 많은데 좀더 구체적으로 요청하셔서, "스토리지, 컴퓨팅, 네트워킹 등이 있는데 이 중에서 네트워킹을 주로 하고 있습니다." 라고 답변 드렸습니다.
2. 프로젝트에 관해 질문하셨습니다. 제일 많이 관여했다고 생각하는 개발 프로젝트를 설명해달라고 하셨습니다.
-> 설명을 드리다가, 제가 구현한 코드인데도 갑자기 기억이 안나기 시작하다니 머리가 하얘졌습니다...하하하하핳 어쩔 수 없이 설명 드릴 수 있는 부분까지만 설명 드리고, 나머지는 기회가 있다면 다음에 꼭 말씀드리겠다고 했습니다. ㅎ...
주로 Threading과 Sync에 관한 쪽에 관심이 많아 보이셨습니다.
+ 후반부 코딩 문제도 배열에서 특정 조건을 만족하는 요소를 찾아내는 문제였는데,, 많은 힌트를 주셨지만, 처음에 문제를 잘못 이해한 탓에 구현을 제대로 하지 못했습니다 8ㅅ8.... 너무 아쉬워요..
면접 분위기는 좋았습니다.
물론 오해하시면 안 되는게, 면접하면서 분위기가 좋다는게 막 이야기가 엄청 오가고, 훈훈하고 그런 것을 의미하는 것은 아닙니다.
적어도 긴장감을 주시거나 의도적으로 나쁘게 접근하시지 않았다는 의미에요.
정말 제 프로젝트에 대해 궁금하셔서 질문을 계속하신다는 것이 제게도 느껴져서 좋았습니다.
여러모로 아쉬웠던 첫 기술 면접이었습니다🥺
생각보다 떨지는 않아서 "오 다행이다."라고 생각했는데,,
떠는게 문제가 아니라 제 지식과 긴장하는 부분이 문제더라구요 ㅎㅎ
다음에 면접 기회가 다시 주어진다면, 꼭 이 부분을 잘 커버하고 가야할 것 같습니다.
그리고 "기술 면접" 이라고 적혀 있다면, 꼭 기술적인 부분을 잘 준비해 가시길 바라요.
일반 면접에서 나올법한 질문은 "자기소개" 정도였습니다.
마지막으로 자신이 했던 프로젝트에 대해 명확하게 준비해서 가세요. 어떤 목적, 어떤 문제, 어떤 로직, 어떤 성과 이런 정도의 질문에는 제대로 답변하실 수 있어야 할 거에요.
음.. 회사명은 따로 밝히지 않겠지만, 부디 이 후기가 도움이 되었으면 좋겠습니다. ☺️
그리고 저도 곧 취뽀할 수 있었으면 좋겠네요🙏