Skip to content

Latest commit

 

History

History
63 lines (41 loc) · 3.06 KB

cs-week03.md

File metadata and controls

63 lines (41 loc) · 3.06 KB

C4-Preflight-CS 3주차

각 문제마다 기준 제한시간이 존재하며, 테스트를 제한 시간안에 통과 해야 합니다.

#1

데이터를 정렬하려고 합니다. 파일은 다음과 같은 형식을 갖고 있습니다.

3728192
4738292
382910231
127382
111

각 줄 하나는 숫자 1개를 의미합니다. 즉, 해당 파일은 총 5개의 숫자를 갖고 있다고 말할 수 있습니다.

  • 정렬해야 하는 파일의 용량은 20GB 이며, 서버의 램의 용량은 8GB 입니다.
  • 모든 값은 양수이며, 최대 1,000,000,000,000,000,000,000,000,000,000,000 입니다.

해당 파일을 정렬하는 코드를 작성해 주세요.

#2

행렬을 곱하는 효율적인 코드를 작성하려고 합니다.

  • 행렬의 크기는 4096 * 4096 이며, 각각 다른 파일 (1.in, 2.in) 으로 주어집니다.
  • 행렬의 모든 원소는 -10 이상 10 이하입니다
  • 참고로, 일반적인 행렬곱의 시간복잡도는 $$O(N^3)$$ 입니다.
  • 사용하는 로직에 따라 CPU의 스펙이 영향을 줄 수 있습니다.

#3

Redis는 RESP (Redis Serialization Protocol) 규약을 통해 클라이언트와 서버가 통신합니다.

이번 문제에서의 저희의 목적은, 이 프로토콜 규약을 지키는 서버를 개발하여 실제 redis-cli 클라이언트와 연결이 가능하도록 만드는 것 입니다. 아래 4개의 명령을 구현해야 합니다.

옵션을 완벽하게 구현할 필요는 없습니다. 매우 기본적인 연산만 구현하도록 해 주세요.

#4

Thread-Safe 한 HashMap을 만들려고 합니다.

  • 이미 Thread-Safe 한 구현체를 사용하지 않고 개발해야 합니다.
  • 기본적인 Map 자료구조를 Wrapping 하는 것은 허용되나, 필요한 경우 Map을 만들지 않아도 좋습니다.
  • 삽입, 삭제, 수정은 최대 100,000 번 발생하며, 읽기는 최대 10,000,000 번 발생합니다.
  • (Java의 경우) Thread-Safe 구현체 중 하나인 HashTable 보다 빠름이 보장되어야 합니다.

#5

우리는 보통 JMeter 등의 도구를 사용하여 코드의 성능을 측정합니다. 다만, 우리는 코드의 성능을 좋게 하는게 목적이 아니라, 코드의 성능을 좋아 보이게 하는 것이 목표입니다.

  • 간단한 3중 반복문 코드를 작성해 주세요. 코드를 수정하지 않고 Jmeter 측정 기준 성능을 가장 높일 수 있는 방법이 있을까요?
  • 간단한 3중 반복문 코드를 작성해 주세요. 코드를 수정하지 않고 Jmeter 측정 기준 성능을 가장 낮출 수 있는 방법이 있을까요?
  • 특정 클래스를 2~30,000개 이상 생성하는 코드를 작성해 주세요. 코드를 수정하지 않고 Jmeter 측정 기준 성능을 가장 높일 수 있는 방법이 있나요?

위 모든 문항은 실제 코드와, 성능을 기반으로 설명해야 합니다.