티스토리 뷰

반응형

 

 

Author: 니용

 


최근의 트렌드로 IT직군의 개발자를 영입하기 위해 다양한 사이트에서 코딩 테스트를 진행하고 있습니다.

저도 다방면으로 준비하고 또 시대의 흐름에 뒤쳐지지 않기 위해 코딩 테스트가 있을 때면 여러 번 시도를 하면서 계속 제 부족하였던 부분이나 새로운 알고리즘을 탐색하기 위해 다양한 시도를 하였습니다.

 

코딩 테스트를 준비하는 것은 어렵지 않습니다. 기초 지식과 컴퓨터만 있으면 됩니다.

그 기초 지식을 어떻게 도입하느냐에 따라 결과가 달라지게 됩니다.

그리고 내가 자신 있는 언어가 자바스크립트이다 하면 기본적으로 WAS 설치와 실시간으로 개발 결과가 출력되는 콘솔창은 기본적으로 준비하고 있어야 합니다.

 

코딩 테스트에서 주로 체크하는 것은 3가지입니다.

 

1. 정확성

입력값을 받아 문제에서 요구하는 사항에 맞춰 올바른 결과값이 나왔는지 체크하는 부분입니다. 이 때 시간 복잡도나 결과가 나오기까지의 시간은 포함되지 않고, 순 결과로 나온 부분을 출제자의 정답과 비교하여 판단합니다. 다른 부분에 비해서 배점이 가장 큽니다. 

제가 생각하였을 때 정확성이 단순 코드 결과물로 이어지기는 하지만 더 유심히 체크해야 하는 부분이 있어서 조금 정리해보았습니다.

 

1-1. 주석

때로는 정확성 부분에 주석 내용까지 포함되는 경우도 있습니다. 감독관이 제출한 결과물을 체크하면서 어떻게 생각하여 코드를 작성하였는지 해설을 필요로 하는 부분도 있을 수 있기 때문입니다. 여기서 이전에 주석을 자주 작성하는 습관을 길렀던 분이라면 내가 생각한 부분을 어떻게 코드로 녹였는지 라인마다 작성 가능할 것입니다.

 

1-2. 변수명

자바스크립트 내에서 var a, b, c, d와 같이 출력하는 것보다 이 변수가 어떤 내용을 담고 있는지 명시적으로 변수명을 선언해주는 것이 좋습니다. 물론 타이핑을 하는데 어렵다면 결과물이 완벽하게 도출된 후 마무리 단계에서 변수명을 일괄적으로 바꿔주는 것이 좋을 것입니다.

예를 들어 캐릭터들을 담고 있는 객체이면 var characterList, 여러 객체를 임시 저장을 해야 하는 객체라면 var tempArray와 같은 방식으로 바꿔주는 것입니다.

 

 

2. 효율성

입력값을 받아 알고리즘을 처리하되 각 문제의 테스트 케이스에서 얼마나 빠르게 연산하느냐를 검증하는 부분입니다. 아무리 정확성면에서 원하는 결과가 도출되었다고 하여도 방대한 양의 데이터라던지 시간 복잡도가 느려지면 문제가 발생하기 때문에 도입된 개념입니다. 

 

이전에는 중요하다고 생각하지 않았었습니다. 그럼 왜 최근들어 효율성이라는 개념이 도입되었을까요?

예를 들어, 많은 사용자를 보유하고 있는 웹 사이트가 존재하는데 사용자가 너무 많고 데이터가 많아져 결과를 도출하는데 오랜 시간이 걸린다면 이는 결국 지연이 발생하게 되고, 사용자들이 기다리지 못하고 탈주할 수 있기 때문입니다. 

 

3. 시간

테스트 마다 정해진 시간이 있습니다. 많은 코딩 테스트는 180분(3시간) 또는 300분(5시간)을 기준으로 시험을 보게 되는데, 이 사이에 모든 코드 메이킹 작업과 채점/결과 제출을 모두 진행하여야 합니다. 현재 웹사이트에서 제공하는 디버깅 툴이나 컴파일러는 이전에 비해서 비약적으로 향상되었지만, 그래도 로컬 서버(내 컴퓨터)에서 테스트하는 것과 라이브러리의 사용에 따라 차이가 많이 납니다.

 

* 자바 언어의 경우 기본적으로 내장되어 있는 java.util.* 패키지를 자동으로 import 해주는 툴이 있지만, 웹 디버거는 일일히 import를 해주어야 합니다. 

 

그래서 테스트를 시작하기 전에 기본적인 세팅을 로컬 서버 혹은 프로젝트를 만들어두고, 이것을 활용하여 더 빠르게 코드를 작성하는 것이 쉽고 더 높은 득점을 하기 위한 팁 중 하나입니다.

반응형
댓글
공지사항