Skip to content
Home » 라이브 코딩 테스트 | 코딩테스트에서 꼭 나오는 실수! 잘 해도 이것 때문에 탈락합니다 상위 217개 베스트 답변

라이브 코딩 테스트 | 코딩테스트에서 꼭 나오는 실수! 잘 해도 이것 때문에 탈락합니다 상위 217개 베스트 답변

당신은 주제를 찾고 있습니까 “라이브 코딩 테스트 – 코딩테스트에서 꼭 나오는 실수! 잘 해도 이것 때문에 탈락합니다“? 다음 카테고리의 웹사이트 https://kk.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: https://kk.taphoamini.com/wiki/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 AND (ft.인싸담당자) 이(가) 작성한 기사에는 조회수 19,727회 및 좋아요 128개 개의 좋아요가 있습니다.

Table of Contents

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

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

d여기에서 코딩테스트에서 꼭 나오는 실수! 잘 해도 이것 때문에 탈락합니다 – 라이브 코딩 테스트 주제에 대한 세부정보를 참조하세요

이베이코리아 신입 개발자 모집 (2021.12.20 – 28)
더 자세히 알아보기 👉 http://gmkauctioncareer.com/w/index.html
————————————————————————
취준 정보를 가장 빠르게 공유받는 취준생 공식 커뮤니티 ✨HIINT✨
실시간 직무별 정보 공유\u0026취업 정보를 오픈카톡방에서 만나보세요.
HIINT 커뮤니티 입장하기 👉 https://bit.ly/3J7ULtc
HIINT 커뮤니티 참여 코드 👉 hiint
————————————————————————
🎥 제휴/협업 문의 👉 https://bit.ly/39EU11y
📞 문의 메일 👉 [email protected]
😎 제이콥 인스타 👉 @inssajacob
————————————————————————
‘취업에는 정답이 없습니다’
인싸담당자에 나오는 다양한 선배들의 방법과 이야기를 듣고
자신에게 꼭 맞는, 취업의 길을 찾으시길 바랍니다.
나를 만들어가는 과정, 어쩌면 고단하고 외로울 수 있는 그 길에
저희 인싸담당자가 함께 하겠습니다.
취업준비 기본 중의 기본
직무선택, 현직자인터뷰 아직이라면🤔
현직자 200명 오디오로 바로 만나는 곳 OZIC
👉 https://bit.ly/3t0lNfE
📝 강점찾기/직무분석/역량사전 무료배포
👉 https://bit.ly/3t1npWA
😎 Jacob과 함께 ‘내 직무’ 찾자!
🏆 OZIC 부동의 1위 콘텐츠
👉 https://bit.ly/3I44Yoi
👀 직무분석, 취업꿀팁 더보기
👉 https://bit.ly/34Dz8RW
📚 자소서가 안 써지나요? 읽고 따라하기만 하면 됩니다
‘너는 생각보다 자소서를 잘 쓴다’ 목차 확인하기👉 https://bit.ly/3rExjKU
————————————————————————
# # #

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

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

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

+ 더 읽기

Source: new-blue.tistory.com

Date Published: 9/29/2021

View: 5907

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

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

+ 여기에 더 보기

Source: jeong-pro.tistory.com

Date Published: 3/9/2022

View: 6900

라이브코딩.. : 클리앙

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

+ 여기에 표시

Source: m.clien.net

Date Published: 6/29/2021

View: 5049

라이브 코딩 테스트 | 코딩테스트에서 꼭 나오는 실수! 잘 해도 …

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

+ 여기를 클릭

Source: you.dianhac.com.vn

Date Published: 11/25/2022

View: 8621

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

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

+ 여기를 클릭

Source: garden1500.tistory.com

Date Published: 12/28/2021

View: 6487

라이브코딩 – 나무위키

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

+ 여기에 더 보기

Source: namu.wiki

Date Published: 4/25/2022

View: 9276

양팔 저울 – 라이브 코딩 테스트[java]

몇 주전에 어떤 이름있는 서비스 회사에서 라이브 코딩테스트를 봤는데,,. 내가 제일 약하고 푸는데 시간이 좀 걸리는 재귀 + D/BFS 문제를 라이브 코테에서 질문이 …

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

Source: intrepidgeeks.com

Date Published: 5/3/2021

View: 4224

취업했다 휴 …

간략한 면접 후기. 1차 면접 시작. 1차 면접 때 라이브 코딩테스트를 완벽하게는 아니지만, 마지막 후처리가 조금 덜 완성 되었지만, 간단한 이야기를 …

+ 여기를 클릭

Source: velog.io

Date Published: 8/14/2021

View: 3715

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

주제와 관련된 더 많은 사진을 참조하십시오 코딩테스트에서 꼭 나오는 실수! 잘 해도 이것 때문에 탈락합니다. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

코딩테스트에서 꼭 나오는 실수! 잘 해도 이것 때문에 탈락합니다
코딩테스트에서 꼭 나오는 실수! 잘 해도 이것 때문에 탈락합니다

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

  • Author: AND (ft.인싸담당자)
  • Views: 조회수 19,727회
  • Likes: 좋아요 128개
  • Date Published: 2021. 12. 23.
  • Video Url link: https://www.youtube.com/watch?v=X2i1htonfQY

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

반응형

라이브코딩.. : 클리앙

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

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

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

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

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

라이브 코딩 테스트 | 코딩테스트에서 꼭 나오는 실수! 잘 해도 이것 때문에 탈락합니다 199 개의 정답

당신은 주제를 찾고 있습니까 “라이브 코딩 테스트 – 코딩테스트에서 꼭 나오는 실수! 잘 해도 이것 때문에 탈락합니다“? 다음 카테고리의 웹사이트 https://you.dianhac.com.vn 에서 귀하의 모든 질문에 답변해 드립니다: you.dianhac.com.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 AND (ft.인싸담당자) 이(가) 작성한 기사에는 조회수 19,378회 및 좋아요 126개 개의 좋아요가 있습니다.

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

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

d여기에서 코딩테스트에서 꼭 나오는 실수! 잘 해도 이것 때문에 탈락합니다 – 라이브 코딩 테스트 주제에 대한 세부정보를 참조하세요

이베이코리아 신입 개발자 모집 (2021.12.20 – 28)

더 자세히 알아보기 👉 http://gmkauctioncareer.com/w/index.html

————————————————————————

취준 정보를 가장 빠르게 공유받는 취준생 공식 커뮤니티 ✨HIINT✨

실시간 직무별 정보 공유\u0026취업 정보를 오픈카톡방에서 만나보세요.

HIINT 커뮤니티 입장하기 👉 https://bit.ly/3J7ULtc

HIINT 커뮤니티 참여 코드 👉 hiint

————————————————————————

🎥 제휴/협업 문의 👉 https://bit.ly/39EU11y

📞 문의 메일 👉 [email protected]

😎 제이콥 인스타 👉 @inssajacob

————————————————————————

‘취업에는 정답이 없습니다’

인싸담당자에 나오는 다양한 선배들의 방법과 이야기를 듣고

자신에게 꼭 맞는, 취업의 길을 찾으시길 바랍니다.

나를 만들어가는 과정, 어쩌면 고단하고 외로울 수 있는 그 길에

저희 인싸담당자가 함께 하겠습니다.

취업준비 기본 중의 기본

직무선택, 현직자인터뷰 아직이라면🤔

현직자 200명 오디오로 바로 만나는 곳 OZIC

👉 https://bit.ly/3t0lNfE

📝 강점찾기/직무분석/역량사전 무료배포

👉 https://bit.ly/3t1npWA

😎 Jacob과 함께 ‘내 직무’ 찾자!

🏆 OZIC 부동의 1위 콘텐츠

👉 https://bit.ly/3I44Yoi

👀 직무분석, 취업꿀팁 더보기

👉 https://bit.ly/34Dz8RW

📚 자소서가 안 써지나요? 읽고 따라하기만 하면 됩니다

‘너는 생각보다 자소서를 잘 쓴다’ 목차 확인하기👉 https://bit.ly/3rExjKU

————————————————————————

# # #

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

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

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

+ 여기를 클릭

Source: new-blue.tistory.com

Date Published: 12/20/2021

View: 293

라이브코딩.. : 클리앙

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

+ 여기에 자세히 보기

Source: m.clien.net

Date Published: 7/4/2021

View: 7296

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

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

+ 여기에 더 보기

Source: jeong-pro.tistory.com

Date Published: 11/26/2022

View: 3160

라이브코딩 – 나무위키:대문

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

+ 여기에 표시

Source: namu.wiki

Date Published: 7/14/2021

View: 5945

양팔 저울 – 라이브 코딩 테스트[java]

몇 주전에 어떤 이름있는 서비스 회사에서 라이브 코딩테스트를 봤는데,,. 내가 제일 약하고 푸는데 시간이 좀 걸리는 재귀 + D/BFS 문제를 라이브 코테에서 질문이 …

+ 여기에 보기

Source: intrepidgeeks.com

Date Published: 10/15/2022

View: 2591

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

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

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

Source: garden1500.tistory.com

Date Published: 1/29/2022

View: 3812

라이브 코딩 테스트 | [기술면접 라이브코딩] 리트코드 최초의 …

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

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

Source: you.maxfit.vn

Date Published: 7/2/2021

View: 7336

Top 38 라이브 코딩 테스트 Top 83 Best Answers

5. 뚜뚜뚜 들리세요? 네 그럼 지금부터 말씀하시면서 풀어주세요! 개발자 기술 과제, 라이브 코딩 테스트 후기(자바 스트림 활용 능력 with flatMap); 손 …

+ 여기에 표시

Source: toplist.avitour.vn

Date Published: 2/21/2022

View: 1970

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

주제와 관련된 더 많은 사진을 참조하십시오 코딩테스트에서 꼭 나오는 실수! 잘 해도 이것 때문에 탈락합니다. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

코딩테스트에서 꼭 나오는 실수! 잘 해도 이것 때문에 탈락합니다

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

Author: AND (ft.인싸담당자)

Views: 조회수 19,378회

Likes: 좋아요 126개

Date Published: 2021. 12. 23.

Video Url link: https://www.youtube.com/watch?v=X2i1htonfQY

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 super V, ? super V, ? extends V> 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. 문제를 낸 회사가 어딘지도 밝히지 않았고 나름대로 문제도 변경하였으나, 문제 유출의 위험이 있으면 언제든지 이 포스트는 비공개로 전환될 수 있다는 것을 알려드립니다… 반응형

양팔 저울 – 라이브 코딩 테스트[java]

몇 주전에 어떤 이름있는 서비스 회사에서 라이브 코딩테스트를 봤는데,, 내가 제일 약하고 푸는데 시간이 좀 걸리는 재귀 + D/BFS 문제를 라이브 코테에서 질문이 들어와서 탈탈 털렸다. 솔직히 끝나고 생각해봤는데도 생각보다 어려워서 연습을 많이 한 다음에 다시 풀어보았다. 문제 설명 양팔 저울이있다. 무게 추 배열과, 기준 무게 하나가 주어진다. ex) {1,5,5,10}, 5 기준 무게는 양팔 저울 한쪽에 고정으로 박아놓아져 있는데, 무게 추는 양팔 저울 양쪽에 모두 놓을 수 있다. 양팔 저울의 밸런스를 맞출 수 있는 모든 경우의 수를 구하시오. 이런 문제 였는데 와… 순열, 조합 알고리즘도 가물가물하고, 배열에 중복값에다가 고정 무게에 추가로까지 놓을 수 있다라…. 솔직히 라이브 코테에서 저걸 바로 즉석에서 생각해서 풀 수 있으면 네카라쿠배 코테도 그냥 빠겔거 같다… 일단 답을 모르는 문제이기 때문에 BFS/DFS, backtracking을 좀 많이 풀어서 연습하고 다시 풀어보았다. 문제 풀이 import java . io . * ; import java . util . * ; class Main { static int count ; static List < ArrayList < Integer > > combinations ; static int initial ; static Map < Integer , ArrayList < ArrayList < Integer > > > counted ; public static void main ( String [ ] args ) throws IOException { BufferedReader br = new BufferedReader ( new InputStreamReader ( System . in ) ) ; int [ ] weight = { 1 , 5 , 5 , 10 , 10 , 15 } ; int fixed = 10 ; initial = fixed ; boolean [ ] used = new boolean [ weight . length ] ; combinations = new ArrayList < > ( ) ; for ( int i = 1 ; i <= weight . length ; i ++ ) combination ( i , weight , used , 0 ) ; counted = new HashMap < > ( ) ; count = 0 ; balance ( weight , fixed , 0 , used , – 1 , 0 , new boolean [ weight . length ] ) ; for ( int i = 0 ; i < combinations . size ( ) ; i ++ ) { ArrayList < Integer > temp = combinations . get ( i ) ; boolean [ ] withFixed = new boolean [ weight . length ] ; for ( int elem : temp ) { for ( int j = 0 ; j < weight . length ; j ++ ) { if ( elem == weight [ j ] && ! withFixed [ j ] ) { withFixed [ j ] = true ; break ; } } } balance ( weight , fixed + combinations . get ( i ) . stream ( ) . reduce ( 0 , Integer : : sum ) , 0 , used , i , 0 , withFixed ) ; } System . out . println ( "총 " + count + "개의 케이스로 밸런스가 맞추어 집니다." ) ; br . close ( ) ; } public static void balance ( int [ ] weight , int fixed , int current , boolean [ ] used , int index , int start , boolean [ ] withFixed ) { if ( current == fixed ) { ArrayList < Integer > duplicateCheck = new ArrayList < > ( ) ; int sum = 0 ; for ( int i = 0 ; i < used . length ; i ++ ) { if ( used [ i ] ) { duplicateCheck . add ( weight [ i ] ) ; sum += weight [ i ] ; } } if ( counted . containsKey ( sum ) ) { List < ArrayList < Integer > > value = counted . get ( sum ) ; for ( int i = 0 ; i < value . size ( ) ; i ++ ) { ArrayList < Integer > temp = value . get ( i ) ; if ( temp . size ( ) == duplicateCheck . size ( ) ) { boolean diff = false ; for ( int j = 0 ; j < temp . size ( ) ; j ++ ) { if ( duplicateCheck . get ( j ) != temp . get ( j ) ) { diff = true ; break ; } } if ( ! diff ) return ; } } } if ( counted . containsKey ( sum ) ) counted . get ( sum ) . add ( duplicateCheck ) ; else { ArrayList < ArrayList < Integer > > tt = new ArrayList < ArrayList < Integer > > ( ) ; tt . add ( duplicateCheck ) ; counted . put ( sum , tt ) ; } for ( int i = 0 ; i < used . length ; i ++ ) { if ( used [ i ] && ! withFixed [ i ] ) System . out . print ( weight [ i ] + " " ) ; } System . out . print ( "의 합은 " ) ; if ( index != - 1 ) System . out . print ( combinations . get ( index ) + " + " ) ; System . out . print ( "고정값 " + initial ) ; System . out . println ( "과 같습니다." ) ; count ++ ; } else { for ( int i = start ; i < weight . length ; i ++ ) { if ( ! used [ i ] && ! withFixed [ i ] ) { used [ i ] = true ; balance ( weight , fixed , current + weight [ i ] , used , index , i + 1 , withFixed ) ; used [ i ] = false ; } } } } public static void combination ( int size , int [ ] weight , boolean [ ] used , int start ) { if ( size == 0 ) { ArrayList < Integer > temp = new ArrayList < > ( ) ; for ( int i = 0 ; i < used . length ; i ++ ) { if ( used [ i ] ) { temp . add ( weight [ i ] ) ; } } combinations . add ( temp ) ; } else { for ( int i = start ; i < weight . length ; i ++ ) { if ( ! used [ i ] ) { used [ i ] = true ; combination ( size - 1 , weight , used , i + 1 ) ; used [ i ] = false ; } } } } } 좀 복잡하게 푼거 같아서 분명 더 간결하고 효율적으로 푸는 방법이 있을텐데, 일단 답이 없는 문제라 나중에 실력이 좀 더 늘면 다시 한번 생각해봐야 겠다. 풀이 방법 ex) 무게추: {1,5,5,10,10,15}, 고정 무게: 10 1. 고정 무게 쪽에 올릴 수 있는 무게 추의 조합을 찾는다. 무게 추에 중복 값이 있기 때문에 일단 내가 푼 풀이법에서는 중복을 일단 그대로 받아드렸다. 모든 조합: [[1], [5], [5], [10], [10], [15], [1, 5], [1, 5], [1, 10], [1, 10], [1, 15], [5, 5], [5, 10], [5, 10], [5, 15], [5, 10], [5, 10], [5, 15], [10, 10], [10, 15], [10, 15], [1, 5, 5], [1, 5, 10], [1, 5, 10], [1, 5, 15], [1, 5, 10], [1, 5, 10], [1, 5, 15], [1, 10, 10], [1, 10, 15], [1, 10, 15], [5, 5, 10], [5, 5, 10], [5, 5, 15], [5, 10, 10], [5, 10, 15], [5, 10, 15], [5, 10, 10], [5, 10, 15], [5, 10, 15], [10, 10, 15], [1, 5, 5, 10], [1, 5, 5, 10], [1, 5, 5, 15], [1, 5, 10, 10], [1, 5, 10, 15], [1, 5, 10, 15], [1, 5, 10, 10], [1, 5, 10, 15], [1, 5, 10, 15], [1, 10, 10, 15], [5, 5, 10, 10], [5, 5, 10, 15], [5, 5, 10, 15], [5, 10, 10, 15], [5, 10, 10, 15], [1, 5, 5, 10, 10], [1, 5, 5, 10, 15], [1, 5, 5, 10, 15], [1, 5, 10, 10, 15], [1, 5, 10, 10, 15], [5, 5, 10, 10, 15], [1, 5, 5, 10, 10, 15]] 존나 많다... 중복 숫자가 있는 숫자배열에서 중복 조합을 제거한 모든 조합의 수를 구하는 방법을 모르겠어서 일단 다 허용해서 구했다. 구현 코드 public static void combination ( int size , int [ ] weight , boolean [ ] used , int start ) { if ( size == 0 ) { ArrayList < Integer > temp = new ArrayList < > ( ) ; for ( int i = 0 ; i < used . length ; i ++ ) { if ( used [ i ] ) { temp . add ( weight [ i ] ) ; } } combinations . add ( temp ) ; } else { for ( int i = 0 ; i < weight . length ; i ++ ) { if ( ! used [ i ] ) { used [ i ] = true ; combination ( size - 1 , weight , used , i + 1 ) ; used [ i ] = false ; } } } } 2. 고정 무게 + 무게 추 조합의 경우의 수만큼 남은 무게 추의 수로 밸런스를 맞출 수 있는지 확인한다. 10 + {10} = 20이 1번째 새로운 고정무게 라면 10무게의 추는 사용했기때문에 총 사용가능한 추는 1,5,5,5,10,15 가된다. 결과적으로 5,5,10 으로 밸런스를 맞출수 있고, 15,5로도 맞출수 있게된다. 고정무게쪽에 사용한 추 카운트는 따로 withFixed라는 boolean배열로 처리 ArrayList < Integer > temp = combinations . get ( i ) ; boolean [ ] withFixed = new boolean [ weight . length ] ; for ( int elem : temp ) { for ( int j = 0 ; j < weight . length ; j ++ ) { if ( elem == weight [ j ] && ! withFixed [ j ] ) { withFixed [ j ] = true ; } } } 1번 과정에서 처리 못한 중복 조합은 해쉬 맵으로 밸런스를 맞출때 따로 처리 HashMap key: 조합의 합 HashMap Value: 조합의 리스트 예를 들면 5,5,10이라는 조합이 2개 있으면 이미 HashMap에 키로 20: {5,5,10}으로 저장되어있다. 겹치면 조합이 생기면 스킵한다. 테스트 결과 5 5 의 합은 고정값 10과 같습니다. 10 의 합은 고정값 10과 같습니다. 5 10 의 합은 [5] + 고정값 10과 같습니다. 15 의 합은 [5] + 고정값 10과 같습니다. 5 5 10 의 합은 [10] + 고정값 10과 같습니다. 5 15 의 합은 [10] + 고정값 10과 같습니다. 5 10 10 의 합은 [15] + 고정값 10과 같습니다. 10 10 의 합은 [5, 5] + 고정값 10과 같습니다. 10 15 의 합은 [5, 10] + 고정값 10과 같습니다. 총 9개의 케이스로 밸런스가 맞추어 집니다. 손코딩, 라이브코딩테스트(라이브코테) 면접 관련 대비 [손코딩, 라이브코테 면접 관련 대비] 질문중에 면접 때 라이브코테, 손코딩은 어떻게 준비하냐고 물어보셔서 답변드립니다. 손코딩, 라이브코테는 예로 자료구조는 퀵정렬, 삽입정렬 등 정렬이 나오는 편입니다. 또한 알고리즘은 스택 두개주고 큐만들기, 소수문제, 길찾기 문제, 숫자중에 0이나, 7의 개수, 팩토리얼 수중에 0인것, 피보나치, 완전탐색 기초적인것(DFS, BFS), 달팽이문제, 배열돌리기, 해쉬맵으로 카운트해서 정렬하기 , 이진검색트리, 타켓숫자을 주고 배열중 두수로 타켓숫자 만들기 등 문제가 나오는편이며,시간복잡도를 높게짜면, 줄이는 방식으로 물어봅니다. 다시짜면됩니다. 로직설명은 알고리즘 스터디때 하는 설명 방식으로 면접관님께 차분히 설명해주시면됩니다. 문제를 모르는 경우는 면접관에게 질문해주시면됩니다. 또한 힌트도 주실겁니다. 이런식으로 쉬운문제부터 손으로 푸는연습, 로직 말하는 연습 준비하시면 깔끔히 보실겁니다. ^^리트코드 기준으로 이지문제 손코딩으로 연습하시면 좋을것같아요. 추가적으로 언어는 크게 상관없었습니다. 요즘 면접때 화면공유로 코딩(ide)을 하는편이며 손코딩에 대해서 익숙해집시자. 라이브 코딩 테스트 | [기술면접 라이브코딩] 리트코드 최초의 문제! Lc #1 Two Sum 3645 좋은 평가 이 답변 We are using cookies to give you the best experience on our website. You can find out more about which cookies we are using or switch them off in settings. Top 38 라이브 코딩 테스트 Top 83 Best Answers [기술면접 라이브코딩] 리트코드 최초의 문제! LC #1 Two Sum [기술면접 라이브코딩] 리트코드 최초의 문제! LC #1 Two Sum 5. 뚜뚜뚜 들리세요? 네 그럼 지금부터 말씀하시면서 풀어주세요! – 라이브 코딩테스트 / 기술 면접 준비하기 Article author: new-blue.tistory.com Reviews from users: 15611 Ratings Ratings Top rated: 4.6 Lowest rated: 1 Summary of article content: Articles about 5. 뚜뚜뚜 들리세요? 네 그럼 지금부터 말씀하시면서 풀어주세요! – 라이브 코딩테스트 / 기술 면접 준비하기 ‘360시간 만에 개발자 되기 프로젝트’의 다섯 번째 글- ‘뚜뚜뚜 들리세요? 네 그럼 지금부터 말씀하시면서 풀어주세요! – 라이브 코딩 테스트 / 기술 … … Most searched keywords: Whether you are looking for 5. 뚜뚜뚜 들리세요? 네 그럼 지금부터 말씀하시면서 풀어주세요! – 라이브 코딩테스트 / 기술 면접 준비하기 ‘360시간 만에 개발자 되기 프로젝트’의 다섯 번째 글- ‘뚜뚜뚜 들리세요? 네 그럼 지금부터 말씀하시면서 풀어주세요! – 라이브 코딩 테스트 / 기술 … ‘360시간 만에 개발자 되기 프로젝트’의 다섯 번째 글- ‘뚜뚜뚜 들리세요? 네 그럼 지금부터 말씀하시면서 풀어주세요! – 라이브 코딩 테스트 / 기술 면접 준비하기입니다. ‘개발자 구직 과정’에 익숙하지 않은 분.. Table of Contents: NEWBLUE’s 5 뚜뚜뚜 들리세요 네 그럼 지금부터 말씀하시면서 풀어주세요! – 라이브 코딩테스트 기술 면접 준비하기 본문 전화코딩 지옥이 시작되다 1라운드 총평 티스토리툴바 5. 뚜뚜뚜 들리세요? 네 그럼 지금부터 말씀하시면서 풀어주세요! – 라이브 코딩테스트 / 기술 면접 준비하기 Read More 라이브코딩.. : 클리앙 Article author: m.clien.net Reviews from users: 46828 Ratings Ratings Top rated: 4.8 Lowest rated: 1 Summary of article content: Articles about 라이브코딩.. : 클리앙 얼마전 이직의 큰 꿈을 안고.. 이직 서류접수를 했는데,, 운 좋게 서류통과하고 온라인 코딩 테스트 까지 통과해서,, 한시름 놓을 찰나에. … Most searched keywords: Whether you are looking for 라이브코딩.. : 클리앙 얼마전 이직의 큰 꿈을 안고.. 이직 서류접수를 했는데,, 운 좋게 서류통과하고 온라인 코딩 테스트 까지 통과해서,, 한시름 놓을 찰나에. 얼마전 이직의 큰 꿈을 안고.. 이직 서류접수를 했는데,, 운 좋게 서류통과하고 온라인 코딩 테스트 까지 통과해서,, 한시름 놓을 찰나에.. 기술면접에서 라이브 코딩을 한다는 소리를 들었네요..;; 라이브 코딩 주제가 몬지,, 하나도 모르고,, 인터넷 찾아봐도 잘 정보가 없는데… 라이브 코딩은 대체 어떻게 준비해야 할까요?? 온라인 코딩테스트야… 프로그래머스,백산 등등 여러 사이트 들에서 준비할 수 있었는데.. 라이브코딩은 처음이라.. 몰 어떻게 준비해야 할지 모르겠네요 ㅠ Table of Contents: 라이브코딩.. : 클리앙 Read More 개발자 기술 과제, 라이브 코딩 테스트 후기(자바 스트림 활용 능력 with flatMap) Article author: jeong-pro.tistory.com Reviews from users: 49740 Ratings Ratings Top rated: 3.6 Lowest rated: 1 Summary of article content: Articles about 개발자 기술 과제, 라이브 코딩 테스트 후기(자바 스트림 활용 능력 with flatMap) 과제 겸 라이브 코딩. 1. 후기. 제가 생각하는 일반적인 개발자 채용 프로세스는 아래와 같습니다. 서류전형 → 코딩테스트(온라인) → 기술면접 … … Most searched keywords: Whether you are looking for 개발자 기술 과제, 라이브 코딩 테스트 후기(자바 스트림 활용 능력 with flatMap) 과제 겸 라이브 코딩. 1. 후기. 제가 생각하는 일반적인 개발자 채용 프로세스는 아래와 같습니다. 서류전형 → 코딩테스트(온라인) → 기술면접 … 과제 겸 라이브 코딩 1. 후기 제가 생각하는 일반적인 개발자 채용 프로세스는 아래와 같습니다. 서류전형 → 코딩테스트(온라인) → 기술면접 → 임원면접 → 최종합격 여기에 조금 추가되면 코딩테스트를 여러번.. Table of Contents: 1 후기 2 1시간 짜리 라이브 코딩에서 보여줄 수 있는 것 3 일부 문제 공유 겸 코드 연습 4 정리 ‘신입 개발자 면접 기초’ Related Articles 태그 티스토리툴바 개발자 기술 과제, 라이브 코딩 테스트 후기(자바 스트림 활용 능력 with flatMap) Read More 손코딩, 라이브코딩테스트(라이브코테) 면접 관련 대비 Article author: garden1500.tistory.com Reviews from users: 6747 Ratings Ratings Top rated: 3.2 Lowest rated: 1 Summary of article content: Articles about 손코딩, 라이브코딩테스트(라이브코테) 면접 관련 대비 손코딩, 라이브코테는 예로 자료구조는 퀵정렬, 삽입정렬 등 정렬이 나오는 편입니다. 또한 알고리즘은. 스택 두개주고 큐만들기, 소수문제, 길찾기 문제, … … Most searched keywords: Whether you are looking for 손코딩, 라이브코딩테스트(라이브코테) 면접 관련 대비 손코딩, 라이브코테는 예로 자료구조는 퀵정렬, 삽입정렬 등 정렬이 나오는 편입니다. 또한 알고리즘은. 스택 두개주고 큐만들기, 소수문제, 길찾기 문제, … [손코딩, 라이브코테 면접 관련 대비] 질문중에 면접 때 라이브코테, 손코딩은 어떻게 준비하냐고 물어보셔서 답변드립니다. 손코딩, 라이브코테는 예로 자료구조는 퀵정렬, 삽입정렬 등 정렬이 나오는 편입.. Table of Contents: 댓글0 공지사항 최근글 인기글 최근댓글 태그 전체 방문자 티스토리툴바 손코딩, 라이브코딩테스트(라이브코테) 면접 관련 대비 Read More 취업했다 휴 … Article author: velog.io Reviews from users: 17782 Ratings Ratings Top rated: 3.2 Lowest rated: 1 Summary of article content: Articles about 취업했다 휴 … 1차 면접 때 라이브 코딩테스트를 완벽하게는 아니지만, 마지막 후처리가 조금 덜 완성 되었지만, 간단한 이야기를 나누고 긍정적인 표현을 하셨다.1 … … Most searched keywords: Whether you are looking for 취업했다 휴 … 1차 면접 때 라이브 코딩테스트를 완벽하게는 아니지만, 마지막 후처리가 조금 덜 완성 되었지만, 간단한 이야기를 나누고 긍정적인 표현을 하셨다.1 … 1차 면접 때 라이브 코딩테스트를 완벽하게는 아니지만, 마지막 후처리가 조금 덜 완성 되었지만, 간단한 이야기를 나누고 긍정적인 표현을 하셨다.1차 면접으로 코딩테스트 합격 메세지를 받게 되었고, 나는 약간의 들뜬마음과 함께 매우 긴장감을 가지게 되었다.그리고 시간이 Table of Contents: 1차 면접 시작 2차 면접 시작 취업했다 휴 … Read More 신입 프론트엔드 개발자의 면접 후기 – 3 Article author: blog.seiker.kr Reviews from users: 5104 Ratings Ratings Top rated: 3.1 Lowest rated: 1 Summary of article content: Articles about 신입 프론트엔드 개발자의 면접 후기 – 3 L사는 의료 인공지능 기술을 바탕으로 하는 스타트업이다. 채용 프로세스. 서류 제출 → 1차 실무자 면접 → 1차 라이브 코딩 테스트 → 2차 기술 과제 → … … Most searched keywords: Whether you are looking for 신입 프론트엔드 개발자의 면접 후기 – 3 L사는 의료 인공지능 기술을 바탕으로 하는 스타트업이다. 채용 프로세스. 서류 제출 → 1차 실무자 면접 → 1차 라이브 코딩 테스트 → 2차 기술 과제 → … Table of Contents: L사 결론 Sign up for more like this create-react-app 기본 번들러에서 Vite로 마이그레이션하기 회사 홍보영상에 (5초 정도) 내가 나왔다 React 컴포넌트 리렌더링 줄이기 신입 프론트엔드 개발자의 면접 후기 – 3 Read More ASH84 Article author: ash84.io Reviews from users: 25433 Ratings Ratings Top rated: 4.4 Lowest rated: 1 Summary of article content: Articles about ASH84 2021-08-10 / coding test coding interview. 라이브 코딩 테스트를 위한 조언. 주니어 서버 엔지니어 포지션을 오픈한 이후에 요즘 일주일에 최소 3 … … Most searched keywords: Whether you are looking for ASH84 2021-08-10 / coding test coding interview. 라이브 코딩 테스트를 위한 조언. 주니어 서버 엔지니어 포지션을 오픈한 이후에 요즘 일주일에 최소 3 … Table of Contents: 1) 사용하는 프로그래밍 언어 자체에 익숙하기 2) 매일쓰는 코드 편집기 사용 할 것!! 3) 질문을 많이 할 것 🧐 2021 회고 CTO로서 1년 RIP Guardian ASH84 Read More See more articles in the same category here: https://toplist.avitour.vn/blog/. 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 super V, ? super V, ? extends V> 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)을 하는편이며 손코딩에 대해서 익숙해집시자. So you have finished reading the 라이브 코딩 테스트 topic article, if you find this article useful, please share it. Thank you very much. See more: 라이브 코딩테스트 후기, 프론트엔드 라이브 코딩 테스트, 라이브 코딩테스트 란, 쿠팡 라이브 코딩 후기, 네이버 라이브코딩, 페이 히어 코딩 테스트, 라이브 코딩 사이트, 카카오 라이브 코딩테스트

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

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

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

사람들이 주제에 대해 자주 검색하는 키워드 코딩테스트에서 꼭 나오는 실수! 잘 해도 이것 때문에 탈락합니다

취업

면접

자소서

취준생

취업준비

채용

회사

임원면접

최종면접

취준

꿀팁

경험

문항

인싸담당자

지원동기

1분자기소개

공기업

대기업

연봉

제이콥

코딩테스트에서 #꼭 #나오는 #실수! #잘 #해도 #이것 #때문에 #탈락합니다

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

주제에 대한 기사를 시청해 주셔서 감사합니다 코딩테스트에서 꼭 나오는 실수! 잘 해도 이것 때문에 탈락합니다 | 라이브 코딩 테스트, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

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

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

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

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

또한 알고리즘은

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

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

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

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

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

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

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

양팔 저울 – 라이브 코딩 테스트[java]

몇 주전에 어떤 이름있는 서비스 회사에서 라이브 코딩테스트를 봤는데,,

내가 제일 약하고 푸는데 시간이 좀 걸리는 재귀 + D/BFS 문제를 라이브 코테에서 질문이 들어와서 탈탈 털렸다.

솔직히 끝나고 생각해봤는데도 생각보다 어려워서 연습을 많이 한 다음에 다시 풀어보았다.

문제 설명

양팔 저울이있다.

무게 추 배열과, 기준 무게 하나가 주어진다.

ex) {1,5,5,10}, 5

기준 무게는 양팔 저울 한쪽에 고정으로 박아놓아져 있는데, 무게 추는 양팔 저울 양쪽에 모두 놓을 수 있다.

양팔 저울의 밸런스를 맞출 수 있는 모든 경우의 수를 구하시오.

이런 문제 였는데 와… 순열, 조합 알고리즘도 가물가물하고, 배열에 중복값에다가 고정 무게에 추가로까지 놓을 수 있다라….

솔직히 라이브 코테에서 저걸 바로 즉석에서 생각해서 풀 수 있으면 네카라쿠배 코테도 그냥 빠겔거 같다…

일단 답을 모르는 문제이기 때문에 BFS/DFS, backtracking을 좀 많이 풀어서 연습하고 다시 풀어보았다.

문제 풀이

import java . io . * ; import java . util . * ; class Main { static int count ; static List < ArrayList < Integer > > combinations ; static int initial ; static Map < Integer , ArrayList < ArrayList < Integer > > > counted ; public static void main ( String [ ] args ) throws IOException { BufferedReader br = new BufferedReader ( new InputStreamReader ( System . in ) ) ; int [ ] weight = { 1 , 5 , 5 , 10 , 10 , 15 } ; int fixed = 10 ; initial = fixed ; boolean [ ] used = new boolean [ weight . length ] ; combinations = new ArrayList < > ( ) ; for ( int i = 1 ; i <= weight . length ; i ++ ) combination ( i , weight , used , 0 ) ; counted = new HashMap < > ( ) ; count = 0 ; balance ( weight , fixed , 0 , used , – 1 , 0 , new boolean [ weight . length ] ) ; for ( int i = 0 ; i < combinations . size ( ) ; i ++ ) { ArrayList < Integer > temp = combinations . get ( i ) ; boolean [ ] withFixed = new boolean [ weight . length ] ; for ( int elem : temp ) { for ( int j = 0 ; j < weight . length ; j ++ ) { if ( elem == weight [ j ] && ! withFixed [ j ] ) { withFixed [ j ] = true ; break ; } } } balance ( weight , fixed + combinations . get ( i ) . stream ( ) . reduce ( 0 , Integer : : sum ) , 0 , used , i , 0 , withFixed ) ; } System . out . println ( "총 " + count + "개의 케이스로 밸런스가 맞추어 집니다." ) ; br . close ( ) ; } public static void balance ( int [ ] weight , int fixed , int current , boolean [ ] used , int index , int start , boolean [ ] withFixed ) { if ( current == fixed ) { ArrayList < Integer > duplicateCheck = new ArrayList < > ( ) ; int sum = 0 ; for ( int i = 0 ; i < used . length ; i ++ ) { if ( used [ i ] ) { duplicateCheck . add ( weight [ i ] ) ; sum += weight [ i ] ; } } if ( counted . containsKey ( sum ) ) { List < ArrayList < Integer > > value = counted . get ( sum ) ; for ( int i = 0 ; i < value . size ( ) ; i ++ ) { ArrayList < Integer > temp = value . get ( i ) ; if ( temp . size ( ) == duplicateCheck . size ( ) ) { boolean diff = false ; for ( int j = 0 ; j < temp . size ( ) ; j ++ ) { if ( duplicateCheck . get ( j ) != temp . get ( j ) ) { diff = true ; break ; } } if ( ! diff ) return ; } } } if ( counted . containsKey ( sum ) ) counted . get ( sum ) . add ( duplicateCheck ) ; else { ArrayList < ArrayList < Integer > > tt = new ArrayList < ArrayList < Integer > > ( ) ; tt . add ( duplicateCheck ) ; counted . put ( sum , tt ) ; } for ( int i = 0 ; i < used . length ; i ++ ) { if ( used [ i ] && ! withFixed [ i ] ) System . out . print ( weight [ i ] + " " ) ; } System . out . print ( "의 합은 " ) ; if ( index != - 1 ) System . out . print ( combinations . get ( index ) + " + " ) ; System . out . print ( "고정값 " + initial ) ; System . out . println ( "과 같습니다." ) ; count ++ ; } else { for ( int i = start ; i < weight . length ; i ++ ) { if ( ! used [ i ] && ! withFixed [ i ] ) { used [ i ] = true ; balance ( weight , fixed , current + weight [ i ] , used , index , i + 1 , withFixed ) ; used [ i ] = false ; } } } } public static void combination ( int size , int [ ] weight , boolean [ ] used , int start ) { if ( size == 0 ) { ArrayList < Integer > temp = new ArrayList < > ( ) ; for ( int i = 0 ; i < used . length ; i ++ ) { if ( used [ i ] ) { temp . add ( weight [ i ] ) ; } } combinations . add ( temp ) ; } else { for ( int i = start ; i < weight . length ; i ++ ) { if ( ! used [ i ] ) { used [ i ] = true ; combination ( size - 1 , weight , used , i + 1 ) ; used [ i ] = false ; } } } } } 좀 복잡하게 푼거 같아서 분명 더 간결하고 효율적으로 푸는 방법이 있을텐데, 일단 답이 없는 문제라 나중에 실력이 좀 더 늘면 다시 한번 생각해봐야 겠다. 풀이 방법 ex) 무게추: {1,5,5,10,10,15}, 고정 무게: 10 1. 고정 무게 쪽에 올릴 수 있는 무게 추의 조합을 찾는다. 무게 추에 중복 값이 있기 때문에 일단 내가 푼 풀이법에서는 중복을 일단 그대로 받아드렸다. 모든 조합: [[1], [5], [5], [10], [10], [15], [1, 5], [1, 5], [1, 10], [1, 10], [1, 15], [5, 5], [5, 10], [5, 10], [5, 15], [5, 10], [5, 10], [5, 15], [10, 10], [10, 15], [10, 15], [1, 5, 5], [1, 5, 10], [1, 5, 10], [1, 5, 15], [1, 5, 10], [1, 5, 10], [1, 5, 15], [1, 10, 10], [1, 10, 15], [1, 10, 15], [5, 5, 10], [5, 5, 10], [5, 5, 15], [5, 10, 10], [5, 10, 15], [5, 10, 15], [5, 10, 10], [5, 10, 15], [5, 10, 15], [10, 10, 15], [1, 5, 5, 10], [1, 5, 5, 10], [1, 5, 5, 15], [1, 5, 10, 10], [1, 5, 10, 15], [1, 5, 10, 15], [1, 5, 10, 10], [1, 5, 10, 15], [1, 5, 10, 15], [1, 10, 10, 15], [5, 5, 10, 10], [5, 5, 10, 15], [5, 5, 10, 15], [5, 10, 10, 15], [5, 10, 10, 15], [1, 5, 5, 10, 10], [1, 5, 5, 10, 15], [1, 5, 5, 10, 15], [1, 5, 10, 10, 15], [1, 5, 10, 10, 15], [5, 5, 10, 10, 15], [1, 5, 5, 10, 10, 15]] 존나 많다... 중복 숫자가 있는 숫자배열에서 중복 조합을 제거한 모든 조합의 수를 구하는 방법을 모르겠어서 일단 다 허용해서 구했다. 구현 코드 public static void combination ( int size , int [ ] weight , boolean [ ] used , int start ) { if ( size == 0 ) { ArrayList < Integer > temp = new ArrayList < > ( ) ; for ( int i = 0 ; i < used . length ; i ++ ) { if ( used [ i ] ) { temp . add ( weight [ i ] ) ; } } combinations . add ( temp ) ; } else { for ( int i = 0 ; i < weight . length ; i ++ ) { if ( ! used [ i ] ) { used [ i ] = true ; combination ( size - 1 , weight , used , i + 1 ) ; used [ i ] = false ; } } } } 2. 고정 무게 + 무게 추 조합의 경우의 수만큼 남은 무게 추의 수로 밸런스를 맞출 수 있는지 확인한다. 10 + {10} = 20이 1번째 새로운 고정무게 라면 10무게의 추는 사용했기때문에 총 사용가능한 추는 1,5,5,5,10,15 가된다. 결과적으로 5,5,10 으로 밸런스를 맞출수 있고, 15,5로도 맞출수 있게된다. 고정무게쪽에 사용한 추 카운트는 따로 withFixed라는 boolean배열로 처리 ArrayList < Integer > temp = combinations . get ( i ) ; boolean [ ] withFixed = new boolean [ weight . length ] ; for ( int elem : temp ) { for ( int j = 0 ; j < weight . length ; j ++ ) { if ( elem == weight [ j ] && ! withFixed [ j ] ) { withFixed [ j ] = true ; } } } 1번 과정에서 처리 못한 중복 조합은 해쉬 맵으로 밸런스를 맞출때 따로 처리 HashMap key: 조합의 합 HashMap Value: 조합의 리스트 예를 들면 5,5,10이라는 조합이 2개 있으면 이미 HashMap에 키로 20: {5,5,10}으로 저장되어있다. 겹치면 조합이 생기면 스킵한다. 테스트 결과 5 5 의 합은 고정값 10과 같습니다. 10 의 합은 고정값 10과 같습니다. 5 10 의 합은 [5] + 고정값 10과 같습니다. 15 의 합은 [5] + 고정값 10과 같습니다. 5 5 10 의 합은 [10] + 고정값 10과 같습니다. 5 15 의 합은 [10] + 고정값 10과 같습니다. 5 10 10 의 합은 [15] + 고정값 10과 같습니다. 10 10 의 합은 [5, 5] + 고정값 10과 같습니다. 10 15 의 합은 [5, 10] + 고정값 10과 같습니다. 총 9개의 케이스로 밸런스가 맞추어 집니다.

취업했다 휴 …

간략한 면접 후기

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 이런 질문을 하실줄 알았는데,

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

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

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

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

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

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

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

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

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

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

사람들이 주제에 대해 자주 검색하는 키워드 코딩테스트에서 꼭 나오는 실수! 잘 해도 이것 때문에 탈락합니다

  • 취업
  • 면접
  • 자소서
  • 취준생
  • 취업준비
  • 채용
  • 회사
  • 임원면접
  • 최종면접
  • 취준
  • 꿀팁
  • 경험
  • 문항
  • 인싸담당자
  • 지원동기
  • 1분자기소개
  • 공기업
  • 대기업
  • 연봉
  • 제이콥

코딩테스트에서 #꼭 #나오는 #실수! #잘 #해도 #이것 #때문에 #탈락합니다


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

주제에 대한 기사를 시청해 주셔서 감사합니다 코딩테스트에서 꼭 나오는 실수! 잘 해도 이것 때문에 탈락합니다 | 라이브 코딩 테스트, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  부자 티비 다시 보기 | 유럽전역으로 확산되는 전쟁위협. 더 큰 전쟁은 피해야 합니다 빠른 답변

Leave a Reply

Your email address will not be published. Required fields are marked *