본문 바로가기

Computer Science/기타

파이썬 기술 면접

728x90
반응형

출처 : https://dev-jacob.tistory.com/entry/파이썬-면접-질문-리스트-2

 

1. 파이썬이 뭘까요?

파이썬은 범용 고급 프로그래밍 언어다. 귀도 반 로섬이 제작, 웹 개발, 게임 개발, SW 개발, 데이터 분석, AI 등에 사용.

 

2. 파이썬의 장점?

- 객체지향

- 고급 언어

- 동적 언어

- 방대한 라이브러리

- 써드파티 모듈

- 오픈소스

- 대부분의 상용 OS에서 사용 가능

 

3. 파이썬의 Sort 알고리즘?

Tim Sort 알고리즘을 활용, 병합 정렬과 삽입 정렬로부터 파생, 각각의 덩어리를 삽입 정렬로 정렬하고 병합 정렬로 병합.

참고로 Sort는 리스트에만 쓸 수 있고, Sorted는 이터러블 객체(리스트, 문자열, 딕셔너리, Set)라면 모두 사용 가능하다.

 

4. 리스트와 튜플의 차이점은?

리스트 - 가변 객체, 더 많은 메모리, 삽입과 삭제에 용이, 이터레이션 사용이 비교적 느림

튜플 - 불변 객체, 더 적은 메모리, 데이터 요소 접근에 적절, 이터레이션이 더 빠르다.

 

이터레이션이란? 반복 가능한 객체(리스트, 문자열, 딕셔너리, 셋 등) -> for, range, iter() 및 next(), enumerate()는 요소와 인덱스 함께, zip() 은 병렬로 묶어서 적용 가능, 요소를 한 개씩 순회할 수 있는 것을 iterable 객체 라고 한다.

 

5. 파이썬의 메모리 관리는?

파이썬은 객체와 클래스(static) 변수를 힙 공간에 저장한다. 이는 인터프리터에 의해서 관리 되는데 가바지 콜렉터에 의해서 관리된다.

 

7. 파이썬은 컴파일 or 인터프리터 언어?

부분적 컴파일, 인터프리터 언어 이다. 작성된 파이썬 파일은 바이트코드로 컴파일되고, 바이트 코드는 인터프리터를 통해서 실행된다. 

 

8. 파이썬 파일 삭제 방법?

os.remove()

os.unlink

 

9. 데코레이터란?

함수의 메소드를 수정하거나 확장하는 데 사용되는 도구, 코드의 재사용성과 모듈성을 높인다. 런타임 중에 동적으로 기능을 추가하거나 변경할 수 있다. 문법적 편의성을 제공한다.

 

10. 가변 객체와 불변 객체의 차이점은?

가변 객체는 수정 가능하며 런타임 내에 변화가 가능하다. 리스트와 딕셔너리가 있다.

불변 객체는 수정이 불가능 하며 런타임 내에 변화가 불가능하다. 튜플이 있다.

 

11. 세트와 딕셔너리의 차이점?

세트는 순서가 정의되지 않음, 중복 요소 제거, 반복 가능한 가변 객체

딕셔너리는 순서가 정의되지 않음, 키는 중복 요소를 가질 수 없고, 값은 중복 요소 가능, 반복 가능한 가변 객체

 

12. 파이썬 프로그램에서 디버깅은?

python -m pdb python-script.py => 내장 디버거를 통해서 코드의 오류를 찾는 디버깅을 수행한다.

 

13. 피클링과 언피클링은?

파이썬 피클 모듈은 모든 파이썬 객체를 바이트스트림 문자열로 직렬화하여 파일로 저장한다. 피클로 만들어진 파일을 다시 파이썬 원본 객체로 돌리는 과정을 언피클이라고 한다.

 

14. 파이썬에서 함수의 인자는 값이나 참조로부터 어떻게 전달되는가?

파이썬에서 모든 것들은 객체이며, 모든 변수들은 객체를 참조한다. 일반적으로 참조 값들은 함수에 관한 것이므로 변경이 불가능하다. 그러나 객체가 가변 객체라면 객체를 변경할 수 있다. 변화 가능한 mutable 객체면 call by 레퍼런스, immutable 한 객체는 call by value로 동작한다.

 

15, 16. 리스트 or 딕셔너리 컴프리헨션은?

이 트러블 객체 기반으로 리스트 or 딕셔너리를 쉽게 생성하는 문법구조

 

18. 파이썬의 네임 스페이스란?

변수 이름과 해당 변수가 가리키는 객체 간의 매핑 관리 시스템, 지역 네임 스페이스(함수나 메서드 내에서 정의된 변수들이 속함, 함수 종료 시 제거), 전역 네임 스페이스(스크립트파일, 모듈 수준 정의 변수, 프로그램 종료시 제거), 내장 네임 스페이스(기본 제공 내장 함수, 예약어, 인터프리터 종료시 제거), 네임스페이스는 딕셔너리 형태로 구현되며 독립적으로 존재한다.

 

19. 람다 함수란?

익명 함수를 만들기 위한 간단한 방법, 주로 간단한 표현식이나, 작은 연산을 수행할 때 활용

 

20. range와 xrange의 차이?

xrange는 숫자를 표시하는 제너레이터 객체를 반환, 값을 필요로 할때 마다 생성 해서 메모리 효율 강화

 

21. 파이썬의 //는 몫, / 는 소수점 계산

 

22. 파이썬의 zip은?

두 개 이상의 이터러블 한 객체를 묶어주는 내장 함수이다. 이터러블 객체의 길이가 다를 경우 가장 짧은 것을 기준으로 묶는다.

 

23. 파이썬의 map은?

주어진 함수를 한번에 여러개의 이터러블한 객체에 적용하여 각 이터러블 요소들을 순회 하면서 새로운 이터러블을 생성

 

24. swapcase 함수는 대문자를 소문자로, 소문자를 대문자로 바꿔준다.

 

25. 파이썬의 이터레이터란?

이터레이터는 요소들이나 리스트와 같은 컨테이너 그룹들을 반복하기 위해 사용된다. 아이템들의 집합이며, 리스트, 튜플 혹은 딕셔너리가 될 수 있다. 

 

26. 파이썬의 제너레이터란?

이터레이터를 생성해주는 함수, yield 키워드를 사용

 

27. 파이썬의 몽키 패칭이란?

클래스나 모듈의 동적 수정

 

28. 파이썬은 다중 상속이 지원 된다.

 

29. 파이썬의 다형성이란?

다수의 폼을 취할 수 있는 능력이다. 각 클래스는 다른 클래스에 존재하는 함수명과 동일한 함수명을 가질 수 있다.

 

#연산자 다형성

a = 5
b = 10
c = "Hello"
d = "World"

result1 = a + b  # 숫자 더하기
result2 = c + d  # 문자열 연결

print(result1)  # 15
print(result2)  # HelloWorld


# 메서드 다형성

class Animal:
    def speak(self):
        print("Animal speaks")

class Dog(Animal):
    def speak(self):
        print("Dog barks")

class Cat(Animal):
    def speak(self):
        print("Cat meows")

# 다형성을 통한 메서드 호출
animals = [Dog(), Cat()]

for animal in animals:
    animal.speak()

 

30. 파이썬의 덕타이핑?

클래스 A의 함수와 클래스 B의 함수가 같다면 두 클래스를 동일한 타입으로 본다.

 

31. 파이썬의 캡슐화란?

코드와 데이터를 함께 묶는 것, 파이썬 클래스가 캡슐화 예제다. _ protected(상속 받는 클래스까지 접근 가능), -- private(오직 해당 클래스만)

 

32. 파이썬은 데이터 추상화를 통해서 클래스 내부의 세부 구현을 숨기고, 사용자의 직접 접근을 제한한다.

 

33. 파이썬의 예외 처리는?

try는 에러 모니터링, except는 예외 발생시 실행할 내용, finally는 블록 여부와 상관없이 실행 주로 리소스 정리.

 

34. 얕은 복사는 새로운 객체를 생성하지만 원본 객체의 요소를 참조로 복사, 깊은 복사는 완전히 독립적인 새로운 객체를 생성하면서 원본 내의 객체를 모두 복사.

 

35. PIP는?

Python Installer Package의 줄임말. 여러 종류의 파이썬 모듈 설치를 위한 매끄러운 인터페이스 제공, 인터넷에서 패키지 검색 후 설치

 

36. 파이썬의 __init__ 은?

특수한 메소드로 이미 예약되어 있으며, 클래스의 인스턴스를 초기화 하는데 사용, 클래스의 인스턴스가 생성될 때 자동으로 호출.

클래스는 틀, 인스턴스는 틀로 찍어낸 객체.

728x90
반응형