brunch

You can make anything
by writing

C.S.Lewis

by 이승현 Jun 08. 2016

안드로이드 개발자 이직 면접 #02

온라인 코딩 면접

2. 이직 면접

  - 온라인 코딩 면접


온라인 코딩 면접


이력서만 봐서는 개발자의 실력을 가늠할 수 없기 때문에 구글, 페이스북 등 해외 IT 기업에서는 개발자 채용 시 코딩 테스트를 필수로 진행하고 있습니다.


손 코딩은 개발 툴에 익숙한 개발자나 짧은 면접 시간을 최대한 활용해야 하는 면접관, 모두에게 효율적인 방법은 아니지요.

그래서 요새는 대면 면접 이전에 온라인 코딩 면접을 많이 보는 거 같아요.

채용 회사 입장에선 편리하게 지원자들의 수준을 파악할 수 있기 때문에 온라인 코딩 면접을 점점 늘려가지 않을까 싶네요.




보통 온라인 코딩 면접은 아래와 같은 절차로 진행합니다.


1. 서류 통과


2. 이메일을 통한 온라인 코딩 면접 URL 받기

메일 확인 후 3~7일 사이에 해당 URL에 접속 해, 문제를 풀어야 합니다.

사전에 문제를 확인 할 수 없어서 평소에 공부를 해야해요.


3. URL을 통해 온라인 코딩 면접 진행

2시간 동안 3문제 풀기, 4시간 동안 5문제 풀기.. 등 다양했어요.

프로그래밍 언어나 플랫폼에 구애받지 않는 문제들이기에 알고리즘 문제들이 출제됩니다.


4. 제출 후 결과 통보


온라인 코딩 면접 문제들도 유출할 수 없기에..

미리 연습해 볼 수 있는 사이트들을 소개할게요.




Oncoder


오랜만에 접속해 보니 챌린지 기능이 사라졌네요ㅠ

https://www.oncoder.com/challenge


"국내 최초 온라인 코딩 테스트를 통한 개발자 프로그래밍 능력 검증 및 채용 서비스"


채용공고 메뉴를 클릭해보면 아시겠지만 Oncoder를 통한 온라인 코딩 면접은 아직 많진 않은 거 같아요.

저도 이곳을 통해 온라인 코딩 면접을 본 적은 없네요.


일반 이용자를 위한 알고리즘 문제들이 있네요.

안드로이드 개발자답게 프로그래밍 언어를 Java로 선택한 후,

문제를 읽어봅시다.


두 수의 합을 리턴해주는 간단한 문제네요.

여기서 주의할 점은 제한, 제약 및 참고사항입니다.


단순히 원하는 결괏값을 리턴해주는데 그치지 않고 고득점을 얻기 위해서는 이 점들을 주의해야 해요.

시간 복잡도, 공간 복잡도를 모두 고려해야 하고,

예외처리를 위해 제약 및 참고 사항도 고려해야 합니다.



코드 작성 후 제출을 하면 결과가 나오네요.

Oncoder는 단순히 합격, 불합격만 나오나 봐요.

회원 가입을 하면 두 수의 합부터 피보나치, 수열 등 기본적인 10문제를 풀 수 있으니 온라인 코딩 면접 이전에 전부 풀어봅시다.




Codility


https://codility.com/programmers/lessons/


Hiring programmers made easy

Programmer testing solution that matches your job descriptions


거의 대부분의 온라인 코딩 면접이 codility를 통해 이뤄지는 거 같아요.

저도 여기서 많이 봤네요.

Iterations부터 Sorting, Dynamic programming 까지 다양한 문제들이 있으니 풀어봅시다.



프로그래밍 언어 : Java

Java, C++ 만 가능했던 Oncoder와 달리 16가지 프로그래밍 언어를 제공해 주네요.


문제 설명 : 영어, 중국어

한글이 없어서 영어로 봤어요.

알고리즘 문제이기 때문에 단번에 이해가 가지 않더라고요.

실제 온라인 코딩 면접도 영어로 나오니 이해될 때까지 읽어봅시다.


제한 시간

실제 면접에서는 각 문제별 제한 시간이 아닌, 모든 문제를 푸는데 제한 시간이 있어요.

문제별로 시간 분배를 잘해서 다 풉시다.


Complexity

expected worst-case time complexity is O(log(N));
expected worst-case space complexity is O(1).

codility는 시간, 공간 복잡도를 모두 체크해 점수로 반환해 줍니다.

최악의 복잡도는 항상 저 조건에 맞춰서 작성합시다.


Assume

N is an integer within the range [1.. 2,147,483,647].

예외상황 처리를 위해 꼭 살펴봅시다.





문제를 풀고 제출하면 아래와 같이 결과가 나옵니다.

100점 만점에 80점이네요.


회사에서는 이 점수들을 기반으로 해서 합격, 불합격을 정하는 거 같아요.

하지만 실제 온라인 코딩 면접에서는 면접자에게 점수도 안보여주고 바로 제출되는 경우가 많아요.

한 번은 문제를 잘 풀었는데 불합격이라길래 점수를 알려달라 이메일을 보냈었는데,

그냥 읽고 답이 없으시더라고요...




점수를 내는 기준은 2가지입니다.


Correctness : 모든 상황에서 원하는 결과물을 얻는지를 판단

Performance : 최상의 시간, 공간 복잡도를 가지는 코드로 작성했는지 판단


잘 풉시다....


그리고 또 주의할 점이 있습니다.


Task timeline

단순히 결과물뿐만 아니라 직접 코드 작성을 했는지,

아니면 인터넷에서 찾아 복사 붙여 넣기 했는지 다 확인할 수 있어요.


재생 버튼을 누르면 처음부터 끝까지 어떻게 코드를 작성했는지 과정이 다 나오기 때문에,

다른 툴에서 미리 작성하거나 인터넷을 참고했더라도 복사 붙여 넣기 하지 말고 직접 타이핑해서 넣으세요.


100점짜리 해답은 아래 사이트에서 참고하세요.


http://www.martinkysel.com/codility-solutions/



사실 구글링으로 온라인 코딩 면접 문제의 해답을 찾을 수도 있어요.

하지만 이렇게 면접에서 통과 한들 기술 면접에서 다 들통이 날 수 있기 때문에 추천하지는 않네요.


http://www.zdnet.co.kr/column/column_view.asp?artice_id=20140811090423




브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari