얼마 전에 “사랑하지 않으면 떠나라”의 서평 제목으로는 좀 독특한 “당신은 자바 가상 머신을 죽일 수 있나요?”라는 글을 보고 떠올라서, 혹시 파이썬을 쓰다가 발생하는 문제를 얼마나 잽싸게 해결하고, 문제가 생길만한 코드를 짜지 않는 등 이해정도와 관련된 것을 시험해 볼 수 있는 문제를 한 번 내 봤습니다. -ㅇ-;; 물론 제가 냈기 때문에 제가 아는 한에서만 나온거라 좀 편향돼 있을 수도 있지만.. 그냥 재미로 한 번;;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
1. 다음 파이썬 타입 중에서 "일반적으로" 큰 수를 다룰 수 있는 순서대로 정렬하세요. decimal.Decimal int/long float (inf 제외) str (36진법으로 풀어 쓴다) 2. 다음 파이썬 타입 중에서 해시가 불가능한 타입을 모두 고르세요. unicode float set decimal.Decimal dict 3. 다음 중 최대 메모리 사용량이 가장 많은 코드를 고르세요. (ㄱ) max([i for i in range(1000)]) (ㄴ) max([i for i in xrange(1000)]) (ㄷ) max(i for i in range(1000)) (ㄹ) max(i for i in xrange(1000)) 4. 부모 클래스에서 __x(self) 메쏘드가 있을 때, 자식 클래스에서 부모 클래스가 정의된 소스코드를 수정하지 않고 호출할 수 있는 방법을 가능한 한 다양한 방법으로 쓰세요. 5. pymalloc을 넣고 컴파일했을 때 발생하는 현상이 아닌 것은? (ㄱ) 할당한 메모리보다 더 많이 할당된다. (ㄴ) 같은 루틴을 반복할 경우 메모리가 샐 수도 있다. (ㄷ) 할당된 객체가 쓰는 메모리를 해제해도 남아있을 수도 있다. (ㄹ) 메모리 할당이 더 느려질 수도 있다. 6. 다음 중 메모리 할당 횟수가 가장 많은 코드는? (ㄱ) map(int, range(100)) (ㄴ) map(str, range(100)) (ㄷ) map(long, range(100)) (ㄹ) map(unicode, range(100)) 7. exec "x ** y" 를 실행 할 때 발생할 수 있는 예외가 가장 아닐 "것 같은" 것은? NameError OverflowError MemoryError TypeError RuntimeError TabError ZeroDivisionError 8. 모듈을 들여오는 과정과 관련된 모듈 또는 객체가 아닌 것을 고르세요? (파이썬 2.x 기준) sys.path zipfile imp warnings marshal sys.modules __future__ 9. x += x 했을 때 할당된 메모리 크기가 변하지 않을 수도 있는 초기 x 값을 모두 고르세요? (ㄱ) sys.maxint (ㄴ) [1, 2] (ㄷ) 'guido' * 10 (ㄹ) True (ㅁ) sys.version 10. 다음 중 키보드 입력(ctrl-c)으로 중단할 수 있는 것를 모두 고르세요? (ㄱ) select.select (ㄴ) 9 ** 9999 (ㄷ) os.listdir (ㄹ) Decimal(9) ** 9999 (ㅂ) deque().add 11. CPython VM을 죽일 수 있는 파이썬 코드를 3가지 방법 이상 작성해 보세요. 12. 다음 중 오버라이딩으로 동작을 "바꿀" 수 있는 경우를 모두 고르세요? (ㄱ) not A (ㄴ) A is B (ㄷ) A = B (ㄹ) A != B (ㅁ) A <- B (ㅂ) A and B (ㅅ) A | B (ㅈ) (A, B) 13. 상속 받은 자식 클래스에서 단순하게 메쏘드를 오버라이드 했을 경우에도 베이스 클래스에서 "강제로" 자기 메쏘드를 부르게 하고 싶을 때 쓸 수 있는 방법 몇 가지? 14. gc.collect()가 해결할 수 없는 문제는? (ㄱ) 순환 참조 (ㄴ) C모듈의 전역 변수 (ㄷ) C객체의 멤버 변수 (ㄹ) C객체 간의 순환 참조 15. x += y를 실행했는데 ImportError가 발생했다. 어떤 상황일까? 가설을 5개 이상 생각해 보세요. 16. x = y를 실행했는데 TypeError가 발생했다. 어떤 상황일까? 가설을 2개 세워 보세요. 17. if list(x): raise SystemExit 했더니 프로그램이 종료했다. 어떤 상황일까? 가설을 5개 세워 보세요. 18. def x(a, b):에 대해서 x(1, 2)했는데 TypeError가 난다. 어떤 상황일까? 가설을 5개 세워 보세요. 19. import os; os.listdir('.') 했더니 AttributeError가 난다. 어떤 상황일까? 가설을 3개 세워 보세요. 20. print x하면 0인데 if x: print "Yay!" 하면 Yay!한다. 어떤 상황일까? 가설을 3개 세워 보세요. |