라이브 코딩 테스트 | [기술면접 라이브코딩] 리트코드 최초의 문제! Lc #1 Two Sum 3645 좋은 평가 이 답변

당신은 주제를 찾고 있습니까 “라이브 코딩 테스트 – [기술면접 라이브코딩] 리트코드 최초의 문제! LC #1 Two Sum“? 다음 카테고리의 웹사이트 you.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://you.maxfit.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 승지니어 Sengineer 이(가) 작성한 기사에는 조회수 3,407회 및 좋아요 83개 개의 좋아요가 있습니다.

라이브 코딩 테스트 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 [기술면접 라이브코딩] 리트코드 최초의 문제! LC #1 Two Sum – 라이브 코딩 테스트 주제에 대한 세부정보를 참조하세요

이번 영상에서는 리트코드의 1번문제 Two Sum을 다뤄보았습니다. 두가지 다른 해법을 통해 시간복잡도와 공간복잡도의 트레이드오프를 살펴보았고, 해쉬맵을 면접에서 사용하게되는 예시를 알아보았습니다.
https://leetcode.com/problems/two-sum/description/

라이브 코딩 테스트 주제에 대한 자세한 내용은 여기를 참조하세요.

라이브 코딩테스트 / 기술 면접 준비하기 – NEWBLUE’s

‘360시간 만에 개발자 되기 프로젝트’의 다섯 번째 글- ‘뚜뚜뚜 들리세요? 네 그럼 지금부터 말씀하시면서 풀어주세요! – 라이브 코딩 테스트 / 기술 …

+ 자세한 내용은 여기를 클릭하십시오

Source: new-blue.tistory.com

Date Published: 9/16/2021

View: 5943

라이브코딩.. – 클리앙

얼마전 이직의 큰 꿈을 안고.. 이직 서류접수를 했는데,, 운 좋게 서류통과하고 온라인 코딩 테스트 까지 통과해서,, 한시름 놓을 찰나에.

+ 자세한 내용은 여기를 클릭하십시오

Source: m.clien.net

Date Published: 9/8/2022

View: 6061

개발자 기술 과제, 라이브 코딩 테스트 후기(자바 스트림 활용 …

과제 겸 라이브 코딩. 1. 후기. 제가 생각하는 일반적인 개발자 채용 프로세스는 아래와 같습니다. 서류전형 → 코딩테스트(온라인) → 기술면접 …

+ 여기에 더 보기

Source: jeong-pro.tistory.com

Date Published: 11/4/2022

View: 9673

라이브코딩 – 나무위키

보통 개발 및 테스트를 위한 환경을 별도로 구축하고, 퍼블리싱은 버그 등의 수정을 완료한 후 퍼블리싱 서버에서만 작동시키기 때문이다. 다만 대부분의 …

+ 더 읽기

Source: namu.wiki

Date Published: 11/5/2021

View: 1172

손코딩, 라이브코딩테스트(라이브코테) 면접 관련 대비

손코딩, 라이브코테는 예로 자료구조는 퀵정렬, 삽입정렬 등 정렬이 나오는 편입니다. 또한 알고리즘은. 스택 두개주고 큐만들기, 소수문제, 길찾기 문제, …

+ 자세한 내용은 여기를 클릭하십시오

Source: garden1500.tistory.com

Date Published: 11/20/2022

View: 8881

취업했다 휴 …

1차 면접 때 라이브 코딩테스트를 완벽하게는 아니지만, 마지막 후처리가 조금 덜 완성 되었지만, 간단한 이야기를 나누고 긍정적인 표현을 하셨다.1 …

+ 여기에 보기

Source: velog.io

Date Published: 8/25/2021

View: 830

신입 프론트엔드 개발자의 면접 후기 – 3 – Sanghoon’s Blog

L사는 의료 인공지능 기술을 바탕으로 하는 스타트업이다. 채용 프로세스. 서류 제출 → 1차 실무자 면접 → 1차 라이브 코딩 테스트 → 2차 기술 과제 → …

+ 여기에 더 보기

Source: blog.seiker.kr

Date Published: 10/18/2022

View: 4002

라이브 코딩 테스트를 위한 조언 – ASH84

2021-08-10 / coding test coding interview. 라이브 코딩 테스트를 위한 조언. 주니어 서버 엔지니어 포지션을 오픈한 이후에 요즘 일주일에 최소 3 …

+ 여기에 표시

Source: ash84.io

Date Published: 4/23/2022

View: 6925

주제와 관련된 이미지 라이브 코딩 테스트

주제와 관련된 더 많은 사진을 참조하십시오 [기술면접 라이브코딩] 리트코드 최초의 문제! LC #1 Two Sum. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

[기술면접 라이브코딩] 리트코드 최초의 문제! LC #1 Two Sum
[기술면접 라이브코딩] 리트코드 최초의 문제! LC #1 Two Sum

주제에 대한 기사 평가 라이브 코딩 테스트

  • Author: 승지니어 Sengineer
  • Views: 조회수 3,407회
  • Likes: 좋아요 83개
  • Date Published: 2018. 9. 6.
  • Video Url link: https://www.youtube.com/watch?v=ly-zKS3ubYo

5. 뚜뚜뚜 들리세요? 네 그럼 지금부터 말씀하시면서 풀어주세요!

728×90

‘360시간 만에 개발자 되기 프로젝트’의 다섯 번째 글- ‘뚜뚜뚜 들리세요? 네 그럼 지금부터 말씀하시면서 풀어주세요! – 라이브 코딩 테스트 / 기술 면접 준비하기입니다. ‘개발자 구직 과정’에 익숙하지 않은 분이시면 0. 개발자 취업 프로세스 이해하기 를 먼저 보시는 것을 권합니다.

– D 회사 Data Analyst

– E 회사 Software Engineer

– F 회사 Backend Engineer

– G 회사 Data Analyst / Backend Engineer 동시에 지원

– H 회사 Data Engineer

위와 같이 5개 회사 채용과정 (못 보신 분은 지난 글을 참조하시면 됩니다)은 순조롭게 진행되었다.

다섯 바구니에 나눠 담긴 제 달걀은 어떻게 되었을까요?

전화코딩 지옥이 시작되다

먼저 3개의 회사는 라이브 코딩 테스트를 한다고 했다. 긴장감을 유지하며 바짝 준비하려고, 하루~이틀 정도만 차이를 두게 한 후 전부 몰아넣었다.

여기저기에서 프로그래밍을 가르친 경험도 많았고, 기본적인 것만 물어본다기에 형식 자체에 대해 큰 준비는 하지 않고 그저 계속 일반 코딩 테스트 준비를 했다. 그리고 그게 화근이었다

참고로 필자는 동행이 있을 때 전화가 걸려오면 괜히 동행이 의식되어서(?) 전화도 잘 못 받는 편이기에, 나가서 받는 편이다. 면접관을 의식하지 않고 편하게 푸는 연습을 하거나, 혹은 적당히 설명하면서 푸는 연습을 했어야 할 텐데 그러지 못했다. 그리고 결과는……

E회사 Software Engineer- 라이브 코딩 테스트

구글닥스와 hangout으로 진행되었다. 면접관님께서 조금 늦으셨다. 정각에 인사 담당자분이 한번 들어왔다가 나가셨는데, 그때 잠깐 docs에 메모라도 해주셨으면 좋았을 텐데 센스가 아쉬웠다.

String shuffle + recursion과 관련된 문제가 나왔다. 바로 recursion을 떠올렸으면 좋았을 텐데, 조건문으로 풀려다가 완벽하게 풀지 못했다.

처음에 조용하게 생각을 하고 있었는데, 면접관님께서 계속 말을 해달라고, 어떤 걸 생각하고 있는지 말씀을 달라고 피드백을 주셨다. 그래서 ‘침묵을 하지 말자’ + ‘어떻게 풀지?’가 섞여서 제대로 풀지 못했던 것 같다. 삐빅 핑계입니다. 늘 그렇듯, 면접 다 끝나고 그제야 깔끔한 풀이가 생각이 났다.

그리고 면접이 끝나자마자 떨어졌음을 알았고 역시 감은 맞았다.

탈락 이유 피드백

신기하게 피드백을 주셨다. 짧긴 했지만 ‘귀하의 역량은 훌륭했지만, 한정적인 재원과 TO로 인해서 등등’의 말보다는 훨씬 좋았다. 늘 피드백을 좋아하기에 잘 새겨들었다. ‘전반적으로 문제에 대한 이해도가 좋고 스마트한 후보자로 판단되지만, 코딩으로 구현하는 부분에 있어 다소 아쉬운 부분이 있었다’

라이브 면접에 익숙하지 않아서 어버버 거리던 모습이 비쳤기에 100% 수용하고 열심히 보충하기로 했다.

라이브 코딩 테스트를 본 적이 없으시다고요? 아직 경험해보시지 못한 근사한 일이 남아있습니다:)

F회사 Backend Engineer & Data Analyst – 라이브 코딩 테스트

E회사 면접 후 이틀 연속 다른 코테를 보고, 다음 날이었다.

정시에 휴대폰으로 전화가 와서 진행되었다. coderpad.io라는 플랫폼을 이용했다.

준연예인(?) 급의 Head 분께서 직접 진행하셨다. 사실 여기서부터 당황해버렸다. 아니 지난주에 TV 프로그램에서 봤는데

list 안에서 특정 원소를 찾기 위해서 binary search를 직접 구현하는 내용이었다. 처음부터 패기 있게 (python) list.index 써도 되냐고 물어봤는데, 무엇인지 모르셨다가 설명해드리니 (당연히) 안된다고 하셨던 기억이 난다.

항상 혼자서 문제를 풀 때마다 binary search 나오면 구글에 binary search 검색해서 해당 부분 복붙하거나 아니면 python bisect 같이 라이브러리 홈페이지를 보고 썼었던 내 모습이 아주 빠르게 지나갔다ㅎ.ㅎ 물론 그래도 비교적 익숙했기에 바로 슈슈슉 풀고 테스트 케이스까지 제시했는데, 아 binary search의 기본 조건문에서 약간 실수가 있었다는 것을 종료 직전에 발견하게 되는데…… (이후 중략)

Data Analyst와 관련해서는 프로그래밍 지식보다는 실제로

– DAU가 감소했다면? 어떻게 하실래요?

– SQL 실무에서 사용하신 적이 있나요? 어떻게 사용하셨나요?

– 실무에서 데이터 가지고 임팩트를 내본 적이 있나요?

라는 질문에 대해 꼬리의 꼬리를 무는 식으로 진행되었다. 아무래도 학교에서의 이론 지식과 6개월 내외 프로젝트 경험으로는, 대답하기 쉽고 어려움을 떠나 아예 대답이 불가능한 질문들이 많았다.

이번에는 지난번 E회사와는 다르게 의식적으로 말을 계속하려고 했다. 그랬더니 오히려 면접관님께서 너무 말 많이 안 하셔도 된다고, 적당히 2~3분에 한 번씩 뭐하셨는지만 말씀해주시면 된다(!)고 하셨다.

그리고 면접이 끝나자마자 떨어졌음을 알았고 역시 감은 맞았다(2)

탈락 이유 피드백

이번엔 반대로 ‘의식적으로 말을 많이 해야지’라는 생각으로 면접에 들어갔는데, 그래서 오히려 꼬여서 계획했던 대로 안 풀렸다. 2번 극단적으로 태도를 바꾸고 나서 내 페이스를 깨달았달까ㅎㅎ

Data Analyst의 경우에는 실무와 비슷한 경험(최소한 Kaggle)이 없으면, 아무리 영혼까지 끌어모아도(?) 면접에서 말할 내용이 거의 없다는 사실도 깨달았다. 그래서 대부분의 회사들에서 2~3년 이상의 경력을 요구하는 것 같기도 하다.

원래 삼세판인거 다 아시죠? 🙂

H회사 – Data Enginner 라이브 코딩 테스트 및 1차 기술 면접

2 연속 탈락을 경험하고, 이제야 어떤 느낌으로 준비해야 될지 깨달았던 것 같다.

H회사는 1차 온라인 코딩 테스트가 따로 있었다. SQL, 알고리즘에 대해서 이틀에 나눠서 2시간씩 시험을 봤다.

– 알고리즘 테스트는 문자열, 리스트를 다루는 위주로 나왔다. 아무래도 Data Engineer라서 ETL 관련 문제가 출제된 것으로 보인다.

– SQL의 경우 WINDOW FUNCTION, JOIN, CASE 문이 적절히 조합되어 출제되었다. WINDOW FUNCTION은 SQL 코테의 단골 메뉴(?)인 듯하다.

다행히 합격통보를 받았다. 이번에는 그래도 4일 정도 준비할 시간이 있었다.

i) 푸는 것과 ii) 설명하는 것과 iii) 풀면서 설명하는 것은 미묘하게 다르기에, 계속 예상 문제를 뽑아놓고 풀면서 설명하는 연습을 했다. 사실 전화 면접의 난이도는 그렇게 어렵지가 않아서 코딩 테스트 사이트들에 있는 기초적인 알고리즘들 (스택, 큐, 문자열 연산, 눈물의 이진 검색 등)을 연습했다. 구글에 입사한 지인에게 듣기를, 실제로 재직자에게 모의 인터뷰를 많이 연습한다고 한다.

– 리스트에서 합이 n이 되는 두 원소를 빠르게 찾는 방법과 관련된 문제가 출제되었다.

– 처음에 직관적으로 O(n^2)로 풀고, 두 번째로는 python dictionary를 사용해서 O(nlogn)으로 풀었다.

기존의 두 코딩 테스트보단 확실히 한결 나았다. 준비를 어느 정도 했었어서 그런지, 억지로 의식해서 말하기보단 자연스럽게 진행되었다. 면접관님께서 종종 던지는 질문에 빠르게 대답하거나 동시에 힌트를 얻을 수 있었다. 좋은 의미로 핑퐁핑퐁 하며(?) 진행되었다. (돌이켜보면 내 마음가짐만 변했지, 전 면접관님들도 큰 차이가 없었을 것이다.)

면접 직후의 감은 나쁘지 않았다. 그리고 얼마 지나지 않아 첫 라이브 코딩 테스트 합격의 기쁨을 누렸다ㅎ.ㅎ 만세(!)

H회사 – Data Enginner 2차 기술면접

일주일 정도 후 2차 면접을 봤다. 코로나로 인해서 화상면접으로 진행되었다.

면접관이 3명 다 다른 곳에 계셨는데, 그중 1분이 차 조수석으로 추측되는 곳에서 이동하고(?!) 계셨다. (심지어 소음이 생겨서 계속 마이크를 껐다 켰다 하셨다…..!) 정말 자유로움(?)의 끝판왕을 보여주는 회사였다.

3문제 정도 문제를 같이 풀고 설명하는 식이었고, 다음에는 일반적인 인성/기술 면접이 진행되었다.

– list 순회하며 연산 수행하기

– Binary Tree가 Binary Search Tree인지 체크하기

– Stack 2개로 Queue 구현하기 (그렇습니다. A회사와 같은 문제였습니다!)

– 데이터 관련 경험, 꼬리에 꼬리를 무는 질문

– DB 인덱스 관련 경험, 꼬리에 꼬리를 무는 질문(2)

– 인공 신경망

– 머신러닝 cross validation

– overfit vs underfit

기술면접에서 느낀 건 역시 경험의 부족함이었다. Data Enginner라서 그런지, 데이터 / DB 관련 질문이 대부분이었다. 추가로 회사에서 머신러닝 파이프라인 관련 역량도 기대했는지, 머신러닝 분야에 대한 질문도 있었다.

지식과 관련해서는 어느 정도 적당히 대답할 수 있었는데, 총평은 A라기보단 B+ 정도랄까. 경험과 관련해서는 역시 영혼을 끌어모아도 수업 관련 프로젝트 정도밖에 없었다. 끝나고 나니, 압도적으로 지식 관련 답변을 잘한 것도 아니고 관련 경험이 많은 편도 아니라서 높은 확률로 떨어질 것 같다는 생각이 들었다. 그리고 역시 결과는 맞았다.

무슨 일이든 다 그렇겠지만, 면접도 운칠기삼인 게 잘 아는 분야의 질문만 나올 수도 있고 전혀 모르는 분야만 나올 수도 있다ㅎㅎㅎ 특히 경력 직의 경우에는 본인의 경험을 토대로 질문하겠지만, 신입은 그럴만한 경험이 많지 않아서 일반적인 지식을 물어볼 테고 더 여러 상황에 좌우될 수밖에 없다. 그러니 많은 분야에 대해서 차분히 잘 준비하는 수밖에 ㅎ.ㅎ

회사 규모가 클수록 기본기를 갖춘 사람을, 반대일수록 즉시전력감(?)을 선호하는 것 같아요. 물론 둘 다 되면 좋겠지요.

D회사 채용과정

D회사는 비교적 다른 회사들과 결이 다른(?) 경험이었다.

지원하자마자 이틀 후에 바로 면접을 보게 되었다.

굉장히 급하게 사람을 뽑고 있어서 약간 경계되기도 했는데, 인원을 채용해야 하는 이유가 있다고 하셨다.

알고 보니 새로 데이터 팀이 생길 예정인데, 팀을 초기부터 만들 팀장급을 뽑는다는 것이었다.(!) 그 말을 듣자마자 아마 떨어지겠고, 혹여나 붙어도 가지 않아야겠다고 생각했다. 우선은 어느 정도 만들어진 조직에서 좋은 시스템에 대해서 한 번 익숙해지고 싶었기 때문이다. 그리고 결국엔 큰 조직의 신생 팀으로 오게 되는데

D회사 – Data Analyst 1차 CEO 면접 (인성+기술 약간)

일반적인 회사와는 다르게, 임원 면접이 먼저였다. 20여분 정도 회사의 비전과 목표에 대해서 설명해주셨는데, (사실 거의 다 찾아봤기에 알고 있는 사실이긴 했다.) 이 또한 역시 흥미로웠다.

– 왜 Data 분석가가 되고 싶으신가요?

– 머신러닝과 딥러닝의 차이가 무엇인가요?

(컨설턴트 출신 비 개발자 CEO였기에, 비전공자에게 설명을 잘하는지 판단하기 위해 설명하신 것으로 추측된다.)

– 특정 회사의 문제와 관련해서 어떻게 머신러닝으로 해결할 것 같은지?

– 라벨링이 없는 데이터의 경우 어떻게 사용할지? (기존 데이터가 라벨링이 안 되어있는데, 활용을 하고 싶으셨다)

D회사 – Data Analyst 2차 CTO 면접 (기술+인성)

돌이켜보면, 경험했던 기술면접과는 조금 결이 달랐다. 다른 회사들은 해당 직군에 사람이 필요해서 그 ‘직군’에 맞는 면접을 봤었는데, 이번 면접은 그 ‘직군’에 잘 맞냐도 중요하지만 ‘개인’에 대해서 궁금해하는 것 같았다.

– 프로그래밍을 모르는 분이랑도 같이 잘 일할 수 있나요? (가게 될 팀에 아직 개발자가 없었다ㅎ.ㅎ)

– Python SQL R 숙련도 순으로 나열해주시고, 경험을 알려주세요

– Git 사용해보셨어요? 왜 사용하는 것 같아요? Git을 사용하기 전이랑 요즘이랑 차이가 무엇일까요?

– 위치 데이터를 저장한다고 생각해봅시다. 예를 들어 x값 y값 두 가지만 있다면? 해당하는 데이터 스트럭쳐 어떻게 하실래요?

– 일반적으로 편의점에서 맥주 4개를 묶어서 파는데, 새로 대항할 아이템을 만든다면 어떻게 만드실래요? 어떻게 조사하시고, 결과는 어떻게 분석하실래요?

– 데이터에서 아웃라이어를 어떻게 제거하실 것 같나요?

– 평소에 공부를 어떻게 하고 계신가요? (!)

D회사 – Data Analyst 3차 실무자 면접 (인성+기술 약간 )

Top Down 면접의 폐해(?)이자 이득인진 잘 모르겠지만, 실무자분들께서 물어보시는 대부분의 질문이 1차, 2차에서 먼저 CEO/CTO 분께서 먼저 물어보셨거나, 아니면 내가 물어봐서 답을 알고 있는 내용들이었다. 그래서 늘 빠르게 답변을 드렸고, 오히려 필자가 회사/팀에 대해 질문을 더 많이 드리게 되어 후반부로 갈수록 오히려 면접자가 아닌 면접관이 되어버린(?) 느낌이었다.

소규모 팀이어서 그런지, 면접관분들과 필자의 성향이 잘 맞을지에 대한 질문도 꽤 있었다.

– 왜 데이터 애널리스트가 되고 싶나요?

– 왜 우리 회사에 오고 싶으신가요?

– 가장 인상 깊었던 프로젝트는?

– 데이터 애널리스트 필요역량 3가지는 뭐라고 생각하시나요?

– 문제를 해결한 경험은? 구체적으로 알려주세요.

– 데이터 아웃라이어 해결 방법은?

(CTO님과 주고받은 대화를 복붙 하니, 오 저희가 정말 그렇게 하고 있어요(!)라고 하셨다. 이 글을 보실 일은 없겠지만 진실은 이랬습니다. )

– 일할 때 조용한 편이신가요? 아니면 반대이신가요?

– 점심에 밥 같이 먹는 걸 선호하시나요, 아니면 혼자 드시나요?

총평 및 탈락 이유 피드백

지금까지 본 모든 면접들 중에서 손에 꼽힐 정도로 화기애애하게 재밌었다(?) 그래서인지 총 3시간 반을 쉬지 않고 했는데도 그렇게 지치지 않았던 것 같다. 다만 내가 합류하게 되면 기술 백그라운드를 가진 사람은 나 혼자 일 것 같았기에, 신입이 가기보단 기존 기업에서 기본기를 다진 경력 직군이 새로운 문제를 풀고 싶을 때 가면 좋을 것 같다고 생각했다. 그리고 회사의 선택도 나와 같았다ㅎㅎ

다섯 바구니에 나눠담아도 위험한 건 마찬가지였네요ㅎ.ㅎ 이제 하나 남았습니다.

G회사 – Backend Enginner 라이브 코딩 테스트 및 면접

G회사는 면접 볼 때의 면접관의 ‘태도’에 대해서 많이 느끼게 해 준 회사였다. 나중에 회사에서 면접관이 되거나 면접관을 교육하게 된다면 생각날만한 경험이었다.

G회사의 경우 지원 후 한 2주 정도 후에 느지막이 연락이 왔다.

정시가 되기 1분 전에 전화를 주시면서 ‘혹시 시간 괜찮으세요?’라고 물어보시는데 목소리와 인성에 반해버렸다(?)

두 개 정도 문제를 풀고, 그 이후에 여러 가지 문답으로 구성되어 있었다. 특이하게, 프로그래밍 문제를 푸는 방식을 말로 설명해달라고 하셨다.

문장에서 단어 뒤집기

문장에서 단어 횟수 세기

프로세스와 스레드 차이

시간 복잡도에 대해서 아는 대로 설명하기

RESTful 하다는 의미는?

node.js로 api 만들어본 경험

쿠키와 세션의 차이?

로그인 한 사용자를 대상으로 인증서를 어떻게 발급해야 옳을지?

MD5 해시를 사용하는 이유?

RDB 사용해본 경험?

DB 트랜젝션과 관련해서 아는대로 설명하기

깃 사용 경험?

쿠키와 세션 관련 질문, 인증서 관련 질문만 제대로 답하지 못했고 나머지는 잘 대답했다. 구글에서 ‘개발자 면접’이라고 검색했을 때 나오는 질문들로만 질문 주시고 별다른 팔로잉 질문도 없으셨기에 솔직히 무난하게 붙을 줄 알긴 했다.

탈락 이유 피드백

잘 봤다고 생각했는데 떨어진 최초이자 마지막 면접이었다. 쿠키/세션 관련 인증의 질문이 중요하다고 생각하셨거나, 아니면 다른 질문들에 대해서 질문이 떨어지기가 무섭게 단답식으로 말씀드렸다는 점에서 주입식 인재(?)라는 느낌을 받으셨을 수도 있겠다고 생각했다.

어쨌든 그래서 서버의 인증과 관련한 원리를 다시 공부하고, 어떤 질문이더라도 내 표현으로 소화시키는 연습을 조금 더 해야겠다고 할 일에 적어두었다.

직접 쓰기 부끄럽지만 필자도 말을 예쁘게 하는 편이라는 말을 종종 들을 때가 있는데 , 이분은 따뜻함 끝판왕(?)이셨기에 떨어졌지만 면접 태도의 여운이 남았다. (최근의 언론을 통해 큰 규모의 투자유치를 받았다고 들었는데, 응원합니다. 사업 번창하세요~)

여러 시행 착오 끝에, 면접 직후 느낌과 합격결과와의 상관관계를 밝혀냈습니다. ‘잘 본 것 같다’가 아니면 조용히 다시 준비를 하면 됩니다 :=)

1라운드 총평

그렇게 지난 화에서 열심히 지원했던 5개의 기업은 모두 다 떨어졌다.

스타트업이 시장에서 프로덕트 마켓 핏을 찾아가는 것처럼, 유사하게 조금씩 구직시장에서 나 – 회사/직군 핏을 맞춰가는 것 같은 미묘한 느낌이 들었다. 기분탓일지도모른다. 오히려 준비가 100% 되어있지 않은 상태에서 다양한 직군들의 면접 과정을 거치니 부족한 점이 무엇인지 빠르게 알 수 있었다. 동시에 ‘ 과연 그 부족한 점을 단기 / 장기적으로 채우길 진정 원하는가? ‘라는 질문에 대한 답을 찾아가는 과정 또한 흥미로웠다.

조금 더 관심 영역을 넓혀 볼까 했었기에, 주로 엔지니어가 대부분이었던 1라운드(?)에 비해 2라운드는 조금 다양한 직군들로 구성되어 있었다. (탈락 소식을 듣자마자 바로 다음 기업을 지원해서 항상 채용 프로세스 중인 회사 개수를 거의 유지했었다.)

그중 세 개만 먼저 언급하자면,

재밌어 보여서 지원했던, J회사 Data Analyst

지인의 추천으로 보게 된, K회사 Research Engineer

가 있고, 그리고 Data Enginner로 면접을 봤던 H회사에서, Product Manager가 더 어울리는 것 같으니 해당 포지션으로 면접을 다시 보겠냐는 연락이 왔다. 모든 가능성에 열려있는 편이라서, 곧바로 응했다.

그리고 얼마 안 있어 바로 면접을 보게 되었는데……

(과연 2-1라운드의 결과는 어떻게 되었을까요? 제가 원하는, 저를 원하는 회사와 직군을 잘 찾을 수 있을까요? 다음 화에 계속됩니다)

728×90

라이브코딩.. : 클리앙

얼마전 이직의 큰 꿈을 안고.. 이직 서류접수를 했는데,, 운 좋게 서류통과하고 온라인 코딩 테스트 까지 통과해서,,

한시름 놓을 찰나에.. 기술면접에서 라이브 코딩을 한다는 소리를 들었네요..;;

라이브 코딩 주제가 몬지,, 하나도 모르고,, 인터넷 찾아봐도 잘 정보가 없는데… 라이브 코딩은 대체 어떻게 준비해야 할까요??

온라인 코딩테스트야… 프로그래머스,백산 등등 여러 사이트 들에서 준비할 수 있었는데.. 라이브코딩은 처음이라..

몰 어떻게 준비해야 할지 모르겠네요 ㅠ

개발자 기술 과제, 라이브 코딩 테스트 후기(자바 스트림 활용 능력 with flatMap)

반응형

과제 겸 라이브 코딩

1. 후기

제가 생각하는 일반적인 개발자 채용 프로세스는 아래와 같습니다.

서류전형 → 코딩테스트(온라인) → 기술면접 → 임원면접 → 최종합격

여기에 조금 추가되면 코딩테스트를 여러번 본다든지 오프라인 코딩테스트를 한 번 더 본다든지하는 경우가 있습니다.

또한 경우에 따라 기술 면접 전에 필기 문제를 푸는 경우도 있고, 코딩테스트 대신 과제 전형이나 기술 면접 중 수도코드 작성, 아주 드물게 기술 면접 단계에서 라이브 코딩을 할 수도 있죠.

그러한 여러 과정 중 제가 이번에 “라이브 코딩”을 봐서 후기를 남기려고 합니다.

조쉬 롱(josh long)만큼 라이브 코딩을 할 수 있다면 두려울 것이 없겠지만 제 현실은 나약한 주니어 개발자죠…. 그래도 나름 깨달은 것이 있어서 공유하고자 합니다.

2. 1시간 짜리 라이브 코딩에서 보여줄 수 있는 것

코딩 테스트도 보통 2~3시간 정도는 소요됩니다. 과제는 보통 1주일 정도는 시간이 있죠.

제가 이번에 본 라이브 코딩 테스트는 “1시간” 안에 요구하는 기능을 구현하는 것이었습니다.

(뜬금 없지만 우아한(?) 어떤 회사의 프론트엔드 개발자 과제 테스트도 4시간이었던 걸로 기억합니다…)

1시간이기 때문에 과도하게 어려운 기능을 구현하라고는 보통은 못 할 거라고 예상합니다.

사설이 길어지는데요, 제가 본 과제는 csv 형식의 데이터가 있고, 그것을 읽어서 가공하거나 통계를 내보는 기능이었습니다.

(제가 이번에 시험을 본 회사의 이름과 문제는 유출하면 안 되기 때문에 나름대로 기억하고 변형한 것임을 미리 알려드립니다.)

개인적으로 문제를 받아보는 순간 스트림 API를 얼마나 잘 다루는 지 보려는 것 같은데? 했습니다.

3. 일부 문제 공유 겸 코드 연습

//member.csv 파일 일부 이름, 취미, 소개 김프로, 축구:농구:야구, 구기종목 좋아요 정프로, 개발:당구:족구, 개발하는데 뛰긴 싫어 앙몬드, 피아노, 죠르디가 좋아요 좋아좋아너무좋아 죠르디, 스포츠댄스:개발, 개발하는 죠르디 …

csv파일은 콤마(,)로 구분되는 데이터고 한 줄에 한 명의 정보가 저장되어 있습니다.

위와 같은 구조의 csv파일이 있다고 가정합니다.

취미는 여러 개가 올 수 있고 콜론(:)으로 구분하는 구조입니다.

3.1 취미별 인원 수를 구하라

public void printMemberCountGroupByHobby() { List> persons = CsvReader.getLines(); //첫 줄 제거 persons.remove(0); //결과를 담을 해시맵 구성 Map result = new HashMap<>(); persons.stream() .flatMap(member -> Arrays.stream(member.get(1).split(“:”))) //취미를 플랫하게 스트림으로 분리 .forEach(hobby -> result.merge(hobby, 1, (oldValue, newValue)->++oldValue)); //출력 result.entrySet().forEach(entry-> System.out.println(entry.getKey() + ” ” + entry.getValue())); }

csv파일을 읽은 것을 저는 List의 List로 읽어왔습니다.

한 라인에 하나의 멤버 정보가 담겨있기 때문에 첫 번째 리스트는 Member를 나타내고, Member의 정보는 콤마(,)로 구분된 데이터들을 List로 나타냈습니다.

csv파일 정보를 읽는 것은 읽어서 파싱하는 개발자 마음이므로 이차원 배열로 가져올 수도 있고 저 처럼 List로 가져올 수도 있습니다. (배열이든 리스트든 오브젝트든 스트림화 시킬 수 있어서 무관함)

그 다음에 첫 줄은 해당 컬럼에 대한 설명(이름, 취미, 소개)이기 때문에 지웠습니다.

그 후에는 스트림처리로 했습니다.

먼저 관심있는 데이터 즉, 1번 인덱스에 있는 취미를 콜론(:)기준으로 split 메서드를 이용해 나눴고, 그 값을 flatMap을 이용해 플랫한 스트림으로 변경하였습니다.

그러면 중간에 변경한 스트림은 아래와 같이 변경될 것입니다.

//before 축구:농구:야구, 개발:당구:족구, 피아노, 스포츠댄스:개발, … //after 축구, 농구, 야구, 개발, 당구, 족구, 피아노, 스포츠댄스, 개발, …

그 후 Map에 결과를 담으면 되겠습니다.

containsKey로 확인하고 추가하는 방법이 있겠지만 코드를 간결하게 하기위해서 평소에 써본 적도 없는 merge메서드를 써봅니다…

default V merge(K key, V value, BiFunction remappingFunction) { Objects.requireNonNull(remappingFunction); Objects.requireNonNull(value); V oldValue = get(key); V newValue = (oldValue == null) ? value : remappingFunction.apply(oldValue, value); if(newValue == null) { remove(key); } else { put(key, newValue); } return newValue; }

merge메서드의 default 구현은 위와 같습니다.

key로 값을 찾아서 없으면 value로 넣고 key로 찾은 값이 있으면 remappingFunction 메서드 처리에 따라 map에서 찾은 값과 value로 넣어준 값 중에 어떻게 처리할지 정하는 거라고 보시면 됩니다.

그렇게 1번을 처리했습니다. (실제 라이브코딩 중에는 엉망진창으로 했습니다… 블로그에 올릴 때는 나름대로 간결하게 짰다는 것을 알려드립니다…)

3.2 취미별 정씨 성을 갖는 멤버 수를 구하라

public void printMemberCountGroupByJeongMember() { List> lines = CsvReader.getLines(); lines.remove(0); Map result = new HashMap<>(); lines.stream() .filter(member-> member.get(0).startsWith(“정”))//정씨 성을 갖는 멤버를 필터링 .flatMap(member -> Arrays.stream(member.get(1).split(“:”))) .forEach(hobby -> result.merge(hobby, 1, (oldValue, newValue)->++oldValue)); //출력 result.entrySet().forEach(entry-> System.out.println(entry.getKey() + ” ” + entry.getValue())); }

아까 코드와 달라진게 filter가 추가된 것 밖에 없습니다.

정씨 성을 갖는 사람만 대상이므로 아까 작성한 스트림에 filter로 name.startsWith(“정”)만 걸어주면 됩니다.

3.3 소개 내용에 ‘좋아’가 몇 번 등장하는지 구하라

모든 멤버의 소개를 탐색해서 ‘좋아’라는 문자열이 총 몇 번 등장하는지 계산하는 것입니다.

public void printLikeCount() { List> lines = CsvReader.getLines(); lines.remove(0); final String word = “좋아”; int result = lines.stream() .map(member -> countFindString(member.get(2), word)) .reduce(0, Integer::sum); //출력 System.out.println(word+” “+result); } //recursive search private int countFindString(String source, String target){ int idx = source.indexOf(target); if(idx == -1){ return 0; }else{ return 1 + countFindString(source.substring(idx + 1), target); } }

특정 문자열을 찾는 부분에서는 map, reduce 패턴으로 처리했습니다.

특정 문자열이 몇 번 등장하는지를 세는 메서드로 따로 빼고 map함수로 스트림을 변경하고 reduce로 숫자를 모두 더하는 방식으로 처리했습니다.

4. 정리

추가적으로 유사한 2문제가 더 있었지만 생략하겠습니다…

그리고 다시 한 번 말씀드리지만 실제로 라이브코딩때 위와 같이 하지는 못했습니다.

회고 차원에서 어떻게하면 더 깔끔하게 할 수 있을까하면서 정리한 것이고, 위의 코드가 정답도 아닙니다.

고수분들은 훨씬 더 깔끔하게 처리하실 수 있겠지만, 주니어 개발자 입장에서 한 번 써본거라 여겨주시고 코드 리뷰는 환영합니다! 노하우 좀 알려주세요!

이번에 배운 것은 스트림에서 flatMap을 잘 활용하면 코드가 깔끔해질 수 있다?! 이 정도로 정리하였습니다.

ps. 문제를 낸 회사가 어딘지도 밝히지 않았고 나름대로 문제도 변경하였으나, 문제 유출의 위험이 있으면 언제든지 이 포스트는 비공개로 전환될 수 있다는 것을 알려드립니다…

반응형

손코딩, 라이브코딩테스트(라이브코테) 면접 관련 대비

[손코딩, 라이브코테 면접 관련 대비]

질문중에 면접 때 라이브코테, 손코딩은 어떻게 준비하냐고 물어보셔서 답변드립니다.

손코딩, 라이브코테는 예로 자료구조는 퀵정렬, 삽입정렬 등 정렬이 나오는 편입니다.

또한 알고리즘은

스택 두개주고 큐만들기, 소수문제, 길찾기 문제, 숫자중에 0이나, 7의 개수, 팩토리얼 수중에 0인것, 피보나치, 완전탐색 기초적인것(DFS, BFS), 달팽이문제, 배열돌리기, 해쉬맵으로 카운트해서 정렬하기 , 이진검색트리, 타켓숫자을 주고 배열중 두수로 타켓숫자 만들기 등 문제가 나오는편이며,시간복잡도를 높게짜면, 줄이는 방식으로 물어봅니다. 다시짜면됩니다.

로직설명은 알고리즘 스터디때 하는 설명 방식으로 면접관님께 차분히 설명해주시면됩니다.

문제를 모르는 경우는 면접관에게 질문해주시면됩니다. 또한 힌트도 주실겁니다.

이런식으로 쉬운문제부터 손으로 푸는연습, 로직 말하는 연습 준비하시면 깔끔히 보실겁니다.

^^리트코드 기준으로 이지문제 손코딩으로 연습하시면 좋을것같아요.

추가적으로 언어는 크게 상관없었습니다.

요즘 면접때 화면공유로 코딩(ide)을 하는편이며 손코딩에 대해서 익숙해집시자.

취업했다 휴 …

간략한 면접 후기

1차 면접 시작

1차 면접 때 라이브 코딩테스트를 완벽하게는 아니지만,

마지막 후처리가 조금 덜 완성 되었지만, 간단한 이야기를 나누고 긍정적인 표현을 하셨다.

1차 면접으로 코딩테스트 합격 메세지를 받게 되었고,

나는 약간의 들뜬마음과 함께 매우 긴장감을 가지게 되었다.

2차 면접 시작

그리고 시간이 흘러 2차 면접일이 왔고,

2차 면접에 앞서 나는 50분 정도 일찍 도착해서 긴장감을 풀기 위해 기다리고 있었다.

이사님과 대표님이 오셔서 간단하게 면접을 위한 준비를 하게 되었다.

손코딩

2차면접으로는 간단한 손코딩을 준비했다.

손 코딩으로는 이런 비슷한 문제였다.

Given an integer array nums , find the contiguous subarray ( containing at least one number ) which has the largest sum and return its sum . A subarray is a contiguous part of an array . Input : nums = [ – 2 , 1 , – 3 , 4 , – 1 , 2 , 1 , – 5 , 4 ] Output : 6 Explanation : [ 4 , – 1 , 2 , 1 ] has the largest sum = 6.

이 문제의 해석으로는

정수 배열 번호가 주어지면 합계가

가장 큰 연속된 하위 배열(하나 이상의 숫자 포함)을 찾고 합계를 반환합니다.

하위 배열은 배열의 연속된 부분입니다.

이라는 문제였다.

나는 손코딩을 처음해보았고, 문제를 풀려고 했는데

처음에 문제에 대해서는 연속된 숫자값이 있다면 그 합을 계산하고,

length를 계산하라는 의미인줄 알았다.

30분동안 화이트보드 앞에서 손코딩 하고 있는데

코딩할때 이게 틀린지 아닌지를 좀 파악하기가 힘들었다.

그러나, 고차함수 메서드를 사용하면 좀더 쉽게 풀수 있었으나,

이것을 메서드를 사용하지 않고 풀려고 하였기 때문에 더 힘이 들었던거 같았다.

그리고 나서 이제 손코딩에 대한 설명을 하기 시작하는데

문제 의도와 내가 해석한 문제의도가 달라 많이 애먹었다.ㅋㅋㅋ

그리고 나서 설명을 해주시는데, 만약에 말로 의도한 문제에 대한 결과값을 얻기 위해서 어떻게 풀어 해쳐나가야 하는지 설명해달라고 해서 참 다행이였음.

손코딩을 보았고, 아 그냥 형식상으로 진행을 해보았다고 말씀해주셨다.

나도 이런 문제는 처음 보았고, 문제를 해결하려하는 모습과,

문법들을 어떻게 사용하는지를 확인하는게 아니였을까 생각했다.

본격 면접

그리고 나서 본격적인 면접에 도입했다.

면접 보러다니면서 면접에서 보통 어느것을 물어보던가요 ? 라는 말을 하면서

그냥 프로젝트 협업도 없는데 어떻게 잘 해나아갈수 있나요 ? 라던지,

회사가 어느 회사였는지 알수 있을까요 ? 이런것들을 물어보셨다. – si 수주회사

그리고 … 으음 .. 원래 나를 뽑고 싶어하셨는지 처음부터 콕 집어놓으셨다고

1차 면접때 보고 나서 마음에 들어하셨던 모양이다.

“저희랑 같이하시죠!!” 라는 멘트와 함께 내 입가에 입꼬리가 나이키가 되버렸다.

내가 회사에 궁금한걸 많이 물어보았다.

Web3에 대한것을 중점으로 내가 많이 물어보았고,

이것저것 핑퐁 대화를 많이 하고, 좋은 분위기로 흘러갔음.

처음에 긴장을 한 탓에 말을 많이 못할줄 알았는데,

손코딩하면서 긴장감이 좀 많이 풀려서 더 원활하게 면접에 임했던거 같았다.

대표님이 말씀하시길, 여태 50~60명 면접 보았는데 이렇게 성장이 빠르고

회사와 잘 맞는것 같아 보였기에 같이 하자고 하셨다고 했다.

구직활동을 언제부터 진행을 했는지 ?

회사에 대한 궁금한 사항은 없는지 ?

여러가지 내가 코딩을 하게된 이유라던지,

이 코딩을 어떻게 접했는지,

추후에 어떤 개발자가 되고 싶어했는지 ?

나는 솔직히 JavaScript, React, CS 이런 질문을 하실줄 알았는데,

기본적인 질문보단 인성위주의 질문을 하셨기에 더욱더 회사가 좋은 회사라는것을 알게 되었다.

내가 코딩하면서 이렇게 열정있게하는 개발자는 처음보고,

국비학원듣고 이렇게 빨리 성장하는 분을 뵙게 되어서 좋다고 긍정적으로 남겨주셨다.

연봉도 내가 원했던 부분이라서 참 좋았고,

회사의 비전과 내가 필요로 하는 기술스택이 맞아서 나 또한 긍정적으로 생각하고 좋게 생각했다.

나 또한 면접을 보면서 같이하시자고 말을 하셨기에 이걸 거절하기에는 너무 어리석은 생각이기에 신입으로써 배운다는 점과 신입이기에 가능하다는 점을 생각하고 같이 하자는 의견을 표현했다.

당일 면접 합격 여부를 밝혀주셨고 나는 합격을 했다.

신입 프론트엔드 개발자의 면접 후기 – 3

이전 게시글에서 다룬 P사의 면접 후기에 이어 L사의 면접 후기가 너무나도 길어진 관계로, 별도의 게시글로 분리하여 작성한다.

L사

L사는 의료 인공지능 기술을 바탕으로 하는 스타트업이다.

채용 프로세스

서류 제출 → 1차 실무자 면접 → 1차 라이브 코딩 테스트 → 2차 기술 과제 → 3차 임원 면접 → 최종 합격

L사에 근무하고 있는 지인의 추천으로 채용 프로세스가 진행되었다. 지인에게 이력서를 전달한 것이 6월 말이었는데, 이런 저런 사정으로 실무자 면접이 7월 말에 진행되었다.

1차 실무자 면접

실무자 면접은 세 명의 면접관이 참석하는 다대일 면접으로 진행되었으며, zoom을 사용하여 비대면으로 진행되었다. 두 명의 면접관은 외국인인 관계상 영어로 면접이 진행되었다.

면접은 기본적으로 résumé walkthrough 방식으로 진행되었으며, 약간의 인성 면접 질문이 추가된 형태였다. 생각나는 면접 질문들은 다음과 같다: 영어로 자기소개해주세요. 왜 프론트엔드 개발을 하려고 하나요? 석사과정에서 진행한 연구에 대한 소개해주세요. 사이드 프로젝트에 대해 소개해주세요. 왜 Redux를 사용하였나요? Redux-saga를 사용하며 느낀 점은 무엇이었나요? (사이드 프로젝트 링크에 접속한 면접관의 질문) 작동하지 않는다고 뜨는데 왜 그런가요?

사내 추천으로 진행되었기 때문에, 추천인과 관련된 질문도 받았다: (추천인)이 당신에 대해 극찬하는 추천서를 작성했는데요, (추천인)과는 어떻게 알게 되었나요? (추천인)과 어떤 프로젝트를 진행하였나요? (추천인)에 대해서 어떻게 생각하나요?

1차 라이브 코딩 테스트

면접이 약 30분 가량 진행된 시점에, 라이브 코딩 테스트를 진행하겠다는 안내를 받았다. 사전에 코딩 테스트를 안내받은 적이 없었던 관계로 당황스러웠지만, 어차피 P사의 합격 통보를 받은 상태였기 때문에 “이것도 경험이다”는 생각으로 테스트에 임했다.

코딩 테스트의 문제는 아래와 같은 베이스 문제가 있고, 여기에 조금씩 제약사항이 추가되는 소위 “구글 스타일”의 라이브 코딩 테스트였다. 임의의 양의 정수 n 이 주어집니다. (단, n < 150) 다음 조건을 만족하는 배열을 생성하는 함수 generateRandomArray() 를 작성하세요: 배열의 길이는 2n + 1 입니다. 배열의 원소들은 랜덤한 정수입니다, Math.random() 을 사용하세요. 배열의 원소들은 [-100, 100] 구간 내에 존재합니다. 추가 제약사항 (위 조건을 만족한 함수를 작성한 뒤에 하나씩 공개됨) 배열의 원소들이 단 한 번씩만 등장하게 만들어주세요. 이번에는, 단 하나의 원소를 제외하고 나머지 원소들이 두 번씩 등장하도록 수정해주세요. 배열의 원소들이 랜덤한 위치를 가지도록 수정해주세요, 이 때 위치를 변경하는 알고리즘은 in-place로 작성해주세요. 위 라이브 코딩 테스트가 끝난 다음에는, 추가적인 알고리즘 관련 사고력을 확인하는 질의응답을 진행하였다: generateRandomArray() 로부터 생성된 임의의 배열에서 단 한 번 등장한 원소를 찾는 방법은 무엇일까요? 나는 hash map을 사용해서 단 한 번 등장한 원소를 찾아낼 수 있을 것이라고 답변하였다. 답변하신 방법의 시간 복잡도와 공간 복잡도는 어떻게 될까요? 기본적으로 배열을 최소 한 번은 iterate해야 하므로 시간 복잡도는 O(n) , 공간 복잡도는 최악의 상황에서 O(n) 이 될 것이라고 답변하였다. 그렇다면 공간 복잡도가 O(1) 이 되는 알고리즘은 어떻게 될까요? 나는 한 번에 정답이 떠오르지 않았고, 면접관이 "bit operation"이 힌트라고 귀띰해주었다. 면접관의 힌트를 듣고 나서, XOR을 사용하면 된다고 답변하였다. 라이브 코딩 테스트는 CodeInterview라는 플랫폼을 사용하여 진행되었다. 알고리즘 문제의 난이도는 높은 편이 아니었지만, 내가 자바스크립트를 써서 알고리즘을 풀어본 적이 많지 않아 어려움이 있었다. 다행스럽게도, 면접관 분들께서 문제 해결 능력 자체가 더 중요하다는 입장이셨다. 문제 풀이 과정에서 내가 잘못된 문법을 사용하는 경우 면접관께서 즉석에서 수정해주셨다. 전반적으로 화기애애한 분위기에서 면접이 진행되었다. 우선 사내 추천으로 채용 프로세스가 진행되었다는 점도 영향을 미쳤을 것 같고, P사의 합격 통보를 받은 상태에서 실무자 면접에 임해서 그런지 개인적인 부담이 덜했다. 2차 기술 과제 1차 합격 통보를 받은 뒤, 3일 동안 수행하여야 하는 기술 과제를 안내받았다. 기술 과제는 GitHub을 사용하여 진행 상황이 공유되었으며, 과제 진행 과정에서의 질의응답은 GitHub issues를 통해 진행되었다. 이 때 쯤이 8월 초순이었는데, 나는 8월 16일부터 P사에 출근하여야 하는 상태에 있었다. 따라서 채용 담당자에게 현재 사정을 설명하고, 가능한 빠르게 채용 프로세스를 진행할 수 있는지를 문의하였다. 다행스럽게도 채용 담당자 분께서 사정을 잘 이해해주셔서 속전속결로 채용 프로세스가 진행되었다. 기술 과제는 외부에 공개하지 말아달라는 안내를 받아, 자세하게 설명하기는 어렵다. 가급적 추상적인 형태에서 과제의 내용을 정리하자면 다음과 같다: HTML Canvas에 마우스의 클릭 및 드래그를 하여 임의의 도형을 그릴 수 있어야 한다. 이 때, 사용자가 그린 도형들의 정보가 프론트엔드 시스템에 의해 관리될 수 있어야 한다. 사용자가 그린 도형 중 몇 개를 선택해서 임의의 파일 형태로 저장 혹은 불러오기할 수 있어야 한다. 사용자가 그린 도형 중 몇 개를 선택해서 합치기를 지원하여야 한다. 이때 도형 합치기 알고리즘은 외부 라이브러리를 사용할 수 있다. HTML Canvas는 처음이었기 때문에 처음 요구사항을 읽었을 때는 당황스러웠다. 하지만 구글링을 하면 나오는 수많은 소스들의 덕분으로 큰 어려움 없이 과제를 진행할 수 있었다. 도형 합치기에 대한 부분은 약간 까다로웠다. 관련 내용을 찾아보기 위해 "merging two polygons" 혹은 "polygon union" 등으로 검색했는데 원하는 라이브러리가 등장하지 않았다. 이 부분은 issue를 개설하여 면접관에게 도움을 요청하였고, 면접관께서 특정한 키워드로 검색해보면 좋겠다고 답변해주셔서 원하는 라이브러리를 찾을 수 있었다. 나는 수요일 오후 6시에 기술 과제를 시작했기 때문에, 토요일 오후 6시까지 기술 과제를 다듬을 수 있었다. 하지만 금요일 오후 2시에 과제를 제출하고 검토를 요청하였다. 개인적으로, 그 어떤 면접관도 주말 오후 6시에 과제 제출을 처리하고 싶지 않을 것이라고 생각했다. 따라서 면접관들이 주중 일과 시간에 기술 과제를 처리할 수 있도록 가능한 서둘렀다. 처음 제출했을 때 면접관께서 "README.md가 아직 미완성인 것 같습니다"라고 코멘트를 주셨고, 다행히 시간이 많이 남아있어 README 파일을 작성하여 재제출할 수 있었다. 그 다음 주 월요일, 그리고 화요일에 post-assignment interview를 GitHub issues로 진행하였다. 질문에 대해서는 다음과 같다: 월요일에는, 과제에 optional로 지정된 요구사항이 두 개 있었는데, 해당 요구사항 두 개를 실제로 구현하기 위해서 어떠한 접근법을 사용할 것인가에 대한 질문을 받았다. 화요일에는, 내가 실제로 작성한 코드에 대한 질문을 두 개 받았다. 첫 번째는 배열로 관리되고 있는 도형 정보들에 consistent identifier를 추가하기 위해 어떻게 할 것인지에 대한 질문이었고, 두 번째는 일부 useEffect 훅을 별개의 파일로 분리하여 선언한 것에 대한 design rationale 질문이었다. 모든 질의응답이 끝난 뒤, 면접관으로부터 "질의응답을 종료하고, 다음 단계에 대한 안내를 주겠다"는 답변을 받았고, 몇 시간 뒤에 인사팀으로부터 최종 면접 일정을 조정하는 메일을 받았다. 3차 임원 면접 임원 면접은 그 주 목요일에 빠르게 진행되었다. 면접은 현 대표님, 전 대표님, 그리고 최고 연구 담당자(Chief of Research)께서 참석한 다대일 면접이었다. 이미 P사의 오퍼 레터를 가지고 있었던 만큼 긴장할 이유는 없었지만, 엄청나게 긴장했다. 너무 긴장한 관계로 어떤 질문을 받았는지 잘 기억나진 않지만, 대강 추려보면 다음과 같다: 자기 소개 L사에서 어떤 기술적인 성장을 기대하나요? 10년 뒤에 어떤 사람이 되어있을 것 같나요? 왜 박사과정을 하지 않았나요? 어떠한 장기적인 목표를 세우고 L사에서 근무할 계획인가요? HCI 연구자의 관점에서, 우리 프로덕트의 사용성을 개선해볼 만한 것은 무엇이 있나요? 연구실 구성원들과 비교했을 때, 내가 이것만큼은 남들보다 뛰어나다고 생각하는 게 있나요? 공부를 하는 스타일은 어떤가요? 배움에 있어 롤 모델이 있었나요? 전문연구요원으로 지원했는데, 전문연구요원이 끝나면 다시 학계로 돌아갈 생각이 있나요? 프론트엔드 개발자로 지원했는데, 백엔드 기술에는 관심이 없나요? 회사에 궁금한 점이 무엇인가요? 나는 회사의 모토인 "끊임없이 성장하는 사람들의 모임"이라는 점을 들며 "끊임없이 성장하기 위해서는 무엇이 필요한가요?"를 여쭤보았다. (추천인)과 어떤 관계에 있나요? 놀랍게도 임원들에게 내가 P사에서 오퍼 레터를 받은 사실과, 16일부터 출근해야 한다는 점이 공유되어 있었다. 한 임원 분께서는 내게 "최대한 빨리 결정해서 결과를 알려드리겠다"고 말씀해주셨고, 면접이 끝난 뒤 엘리베이터를 기다리는 나에게 "합격했으니 다른 회사 오퍼를 알려달라"고 말씀하셨다. 지금까지 받아본 합격 통보 중에서 초고속이었다. 느낀 점 사실 나는 L사에서 채용될 것이라고 기대하고 있지 않았다. 내가 추천인에게 이력서를 건네주었던 것이 6월 말인데, 거의 한 달 동안 아무런 소식도 없었기 때문이다. 심지어 서류 합격 연락을 받았을 때 나는 이미 P사에서 오퍼 레터를 받은 이후였다. 따라서 처음에는 L사의 채용 프로세스를 취소하려고 했으나, 추천인의 강력한 권고와 "면접은 진행했으면 좋겠다"는 요청으로 채용 프로세스를 계속 진행하였다. 실무자 면접이 "내가 들어갈 팀의 첫 인상을 확인하는 과정"과 같은 느낌이었다면, 기술 과제를 진행하는 과정은 마치 "내가 들어갈 팀과의 케미가 맞는지 확인하는 과정"과도 같았다. 면접관들이 내 질의응답에 따봉 이모티콘(👍)을 눌러주었을 때의 기분은 정말 환상적이었다. 또한 인사팀, 실무자, 그리고 임원진이 전부 나서서 나의 채용 프로세스가 가능한 빠른 시일 내에 끝날 수 있도록 관심과 배려를 받는다는 점이 인상적이었다. 따라서, 추천인의 강력한 회사 추천 기술 과제를 진행하며 느낀 "팀과의 케미" 많은 배려를 받은 채용 프로세스 ...와 같은 이유로 오퍼 레터를 받지도 않은 시점에서 L사를 최종적으로 선택하게 되었다. 결론 내 커리어에 있어서 첫 회사를 찾아가는 과정은 다소 험난했다. 합격할 것이라고 기대했던 T사에서는 병역 관련 이슈로 채용이 취소되었고, 연달아 V사에서의 불합격 통보를 받았다. 그럼에도 불구하고, P사에서의 합격 통보는 나로 하여금 자신감을 충전할 수 있는 전환점이 되었고, 이후 L사에서 합격 통보를 받으며 나의 취업 계획이 마무리되었다. 이 글을 읽는 독자들도, 누군가는 쓰라린 아픔을 안고 있을 것이고, 다른 누군가는 합류할 회사를 선택하는 기쁨과 함께 이 글을 읽고 있을 것이다. 나의 면접 후기가 "나름 해피 엔딩"으로 끝맺은 것처럼, 모두가 해피 엔딩의 결실을 얻을 수 있기를 바란다.

라이브 코딩 테스트를 위한 조언

주니어 서버 엔지니어 포지션을 오픈한 이후에 요즘 일주일에 최소 3번의 기술면접을 들어가고 있는데 예전에 비해서 다양한 분들이 면접을 보셔서 세상이 변했다는것을 많이 느끼고 있다. 1차 면접에서 30분 정도 라이브코딩 테스트를 진행하고 있는데 몇몇 안타까운 경우들이 많아서 몇가지 팁을 적는다.

1) 사용하는 프로그래밍 언어 자체에 익숙하기

너무 당연한 부분이다. 아무리 신입/주니어라고 해도 코딩테스트가 있다고 하면 기본적인 본인이 제일 잘 사용하는 프로그래밍 언어에 대해서 잘 다뤄야 한다. 여기서 잘 다룬다는게 syntax sugar를 잘 쓰거나 그 언어를 깊게 이해한다는 게 아니고(그런걸 기대하는건 아니다.) 최소한의 기본적인 반복문과 분기문, 함수 작성과 호출 정도는 잘 사용해야한다는 것이다.

어떤 분들은 반복문의 문법 조차도 완성하지 못하는 경우도 있고, 완성하더라도 실제 실행하지 못하는 분들도 있는데, 코드를 짜고 실행을 시킨다. 는 것은 기본중에 기본이기 때문에 당연히 익숙해야한다.

간혹 우리회사에서 쓰는 언어에 맞춰서 코딩테스트를 보시는 분들이 있는데, 본인이 진짜 평소에 잘 쓰던 언어로 테스트를 봐도 라이브 코딩 테스트라는 압박감에서 제 실력으로 제한시간내 풀기란 쉽지 않다. 본인이 제일 잘 하는 언어를 이용해서 시험을 보길 추천한다.

2) 매일쓰는 코드 편집기 사용 할 것!!

이것도 1번과 비슷한 맥락인데 특정 편집기를 강제하지 않는 상황에서 본인이 매일 사용하는 코드 편집기(IDE)를 사용하는 것을 추천한다. 생각보다 도구는 중요하다. 어떤 분들은 거의 본인의 노트북이 맞나 싶을정도로 처음에 헤매는 분들이 있는데, 대부분 결과가 좋지 않았다. 예를 들어 Intellij를 사용하시는 분이 갑자기 본인 개인 노트북으로 eclipse로 테스트를 진행하는 경우도 있었고, 익숙하지 않은 vim으로 보는 분들도 있었다.

코딩테스트는 제한시간이 있고, 본인의 손에 익숙하지 않은 툴에서 헤매게 되면 심리적으로 위축이 되어 아는 문제도 잘 풀지 못하고, 긴장하게 되어 전체적으로 엉망이 되는 경우가 많았다.

1번과 2번에 대해서 하고 싶은 애기는 하나다. 신입이든 주니어든 제대로 준비하라는 것이다. 물론 코딩 실력 자체가 중요하지만, 코딩 테스트라는 측면에서 보면, 사용하는 프로그래밍 언어, 코드 편집기 이런것들이 모두 스스로에게 최적화되어서 편안하게 느껴지도록 준비가 되어야 한다. 그래야 제 실력이 나온다.

3) 질문을 많이 할 것 🧐

요구사항을 명확히 하기 위해서 질문을 많이 하면 좋다. 거의 95%의 지원자는 문제를 보자 마자 바로 코딩을 시작한다. 물론 내재된 의도를 파악하고 한번에 푸는것이 가장 이상적이지만 거의 그런 경우는 없다. 질문을 많이 해서 문제에 대한 요구사항을 명확히 하고 코딩에 들어가는 것을 추천한다. 이건 우리회사에 국한되는 것은 아니고 라이브 코딩 테스트를 보는 대부분의 회사들이 평가하는 항목이기도 하다.

간단하게 3개만 적어봤는데 코딩테스트를 내는 입장에서는 제발 풀어주길 바란다. 왜냐하면 코딩테스트는 모든 지원자에게 공통적으로 적용되는 최소한의 허들이기 때문이다. 아무리 좋은 경력을 가진 지원자라고 해도 코딩테스트를 넘지 못하면 뽑을 수가 없기 때문이다.

페이히어에서는 좋은 서버 엔지니어를 기다리고 있습니다. 👨🏻‍💻

키워드에 대한 정보 라이브 코딩 테스트

다음은 Bing에서 라이브 코딩 테스트 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 [기술면접 라이브코딩] 리트코드 최초의 문제! LC #1 Two Sum

  • 해쉬맵
  • 기술면접
  • 리트코드
  • 자료구조
  • 알고리즘
  • 시간복잡도
  • 공간복잡도
  • 코딩테스트
[기술면접 #라이브코딩] #리트코드 #최초의 #문제! #LC ##1 #Two #Sum


YouTube에서 라이브 코딩 테스트 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 [기술면접 라이브코딩] 리트코드 최초의 문제! LC #1 Two Sum | 라이브 코딩 테스트, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment