각 문제마다 기준 제한시간이 존재하며, 테스트를 제한 시간안에 통과 해야 합니다.
데이터를 정렬하려고 합니다. 파일은 다음과 같은 형식을 갖고 있습니다.
3728192
4738292
382910231
127382
111
각 줄 하나는 숫자 1개를 의미합니다. 즉, 해당 파일은 총 5개의 숫자를 갖고 있다고 말할 수 있습니다.
- 정렬해야 하는 파일의 용량은 20GB 이며, 서버의 램의 용량은 8GB 입니다.
- 모든 값은 양수이며, 최대 1,000,000,000,000,000,000,000,000,000,000,000 입니다.
해당 파일을 정렬하는 코드를 작성해 주세요.
행렬을 곱하는 효율적인 코드를 작성하려고 합니다.
- 행렬의 크기는 4096 * 4096 이며, 각각 다른 파일 (1.in, 2.in) 으로 주어집니다.
- 행렬의 모든 원소는 -10 이상 10 이하입니다
- 참고로, 일반적인 행렬곱의 시간복잡도는
$$O(N^3)$$ 입니다. - 사용하는 로직에 따라 CPU의 스펙이 영향을 줄 수 있습니다.
Redis는 RESP (Redis Serialization Protocol) 규약을 통해 클라이언트와 서버가 통신합니다.
이번 문제에서의 저희의 목적은, 이 프로토콜 규약을 지키는 서버를 개발하여 실제 redis-cli 클라이언트와 연결이 가능하도록 만드는 것 입니다. 아래 4개의 명령을 구현해야 합니다.
- PING (https://redis.io/docs/latest/commands/ping/)
- ECHO (https://redis.io/docs/latest/commands/echo/)
- GET (https://redis.io/docs/latest/commands/get/)
- SET (https://redis.io/docs/latest/commands/set/)
옵션을 완벽하게 구현할 필요는 없습니다. 매우 기본적인 연산만 구현하도록 해 주세요.
Thread-Safe 한 HashMap을 만들려고 합니다.
- 이미 Thread-Safe 한 구현체를 사용하지 않고 개발해야 합니다.
- 기본적인 Map 자료구조를 Wrapping 하는 것은 허용되나, 필요한 경우 Map을 만들지 않아도 좋습니다.
- 삽입, 삭제, 수정은 최대 100,000 번 발생하며, 읽기는 최대 10,000,000 번 발생합니다.
- (Java의 경우) Thread-Safe 구현체 중 하나인
HashTable
보다 빠름이 보장되어야 합니다.
우리는 보통 JMeter 등의 도구를 사용하여 코드의 성능을 측정합니다. 다만, 우리는 코드의 성능을 좋게 하는게 목적이 아니라, 코드의 성능을 좋아 보이게 하는 것이 목표입니다.
- 간단한 3중 반복문 코드를 작성해 주세요. 코드를 수정하지 않고 Jmeter 측정 기준 성능을 가장 높일 수 있는 방법이 있을까요?
- 간단한 3중 반복문 코드를 작성해 주세요. 코드를 수정하지 않고 Jmeter 측정 기준 성능을 가장 낮출 수 있는 방법이 있을까요?
- 특정 클래스를 2~30,000개 이상 생성하는 코드를 작성해 주세요. 코드를 수정하지 않고 Jmeter 측정 기준 성능을 가장 높일 수 있는 방법이 있나요?
위 모든 문항은 실제 코드와, 성능을 기반으로 설명해야 합니다.