출처: Python Interview Questions for Experienced with PDF
면접을 준비하며, 파이썬에 대한 질문이 많은데 기초적인 거라도 대답하기에 어려움을 느껴서 위 링크를 바탕으로 기출 질문을 정리하였습니다. 번역하고 제가 잘 모르는 것은 추가 개념을 보충해두었습니다.
What are Python’s built-in data types?
주요 데이터 타입에는 int
, float
, str
, list
, tuple
, set
, dict
가 있습니다. 각각은 특정 종류의 정보를 저장하는 데 사용된다.
Explain the difference between lists and tuples.
리스트와 튜플 모두 항목의 모음을 저장하지만, 리스트는 변경 가능(mutable)하며, 튜플은 변경 불가능(immutable)하다. 튜플은 리스트보다 더 빠르고 메모리 효율적이다.
What is list comprehension in Python?
리스트 컴프리헨션은 대괄호 안에 로직을 작성하여 리스트를 빠르게 생성하는 방법이다. 반복문보다 간단하고 빠르다.
How are list comprehensions used?
리스트 컴프리헨션은 리스트를 간결하게 생성할 수 있는 방법을 제공하는데, 예를 들어 squares =[x**2 for x in range(10)]
은 0부터 9까지의 제곱수를 포함한 리스트를 생성한다.
What are Python decorators?
데코레이터는 다른 함수의 동작을 수정하는 함수이다. 원래 함수의 코드를 변경하지 않고 추가적인 기능을 부여한다.
How does Python handle memory management?
파이썬은 자동 가비지 컬렉터를 사용하여 메모리 할당과 해제를 관리한다. 참조 카운팅(reference counting)과 순환 검출(cycle detection)을 결합하여 작동한다.
a. Reference counting
어떤 객체가 참조되고 있는지 횟수를 카운팅하고 0이 될 경우에 메모리에서 해체한다.
b. Generational garbage collection
메모리 관리를 최적화하기 위해 객체를 세대(generation)로 나누어 관리하는 기술이다. 자주 참조되지 않은 객체를 효율적으로 정리하고, 장기간 유지되는 객체에 대한 가비지 컬렉션에 대한 부담을 줄이는 방식으로 작동한다.
What is the difference between __init__
and __new__
?
__init__
은 새로 생성된 객체를 초기화하고, __new__
는 객체 자체를 생성한다.
Explain multiple inheritance in Python.
다중 상속은 하나의 클래스가 여러 부모 클래스를 상속받는 것을 의미한다. CS 선형화 알고리즘(MRO)를 사용하여 문제를 해결한다.
What are static methods and class methods?
정적 메서드는 self
나 cls
매개변수를 사용하지 않으며, 일반 함수처럼 동작한다. 클래스 메서드는 cls
를 사용하여 클래스 상태를 변경할 수 있다.
What is inheritance in Python?
상속은 한 클래스가 다른 클래스의 속성과 메서드를 사용할 수 있게 하는 기능이다. 이를 통해 코드를 재사용하고 체계적으로 유지할 수 있다.
What is method overriding in Python?
메서드 오버라이딩은 하위 클래스가 부모 클래스와 동일한 이름의 메서드를 정의하여 자신의 버전을 제공하는 것이다.
부모 클래스의 메서드를 덮어쓰지만, super()
를 사용해 부모 클래스의 메서드도 호출 가능.
What are dunder (double underscore) methods?
더블 언더스코어 메서드는 __init__
이나 __str__
를 가진 메서드로, 객체의 동작을 정의하거나 사용자 지정하는 데 사용되는 특별한 메서드이다.
__init__
: 객체 생성 시 호출되는 생성자 메서드__str__
: 객체를 문자열로 표현할 때 호출되는 메서드__repr__
: 객체의 공식적인 문자열 표현을 반환(주로 디버깅 용도)__add__
: +
연산자를 오버로딩할 때 사용예를 들어, len()
호출 시 __len__
메서드가 동작하는 것
with
구문으로 구현된다.yield
키워드를 사용한다.async
와 await
)async
와 작업 완료를 기다리는 await
키워드를 사용해 동시성 코드를 작성한다.try-except
블록을 사용해 에러를 처리하며, 필요 시 finally
블록을 사용해 정리 작업을 수행한다.How are decorators used in Python programs?
데코레이터는 함수 또는 메서드의 동작을 수정하는 함수입니다. 주로 로깅, 인증, 함수 출력 수정 등에 사용됩니다.
def my_decorator(func):
def wrapper():
print("함수 실행 전 동작.")
func()
print("함수 실행 후 동작.")
return wrapper
@my_decorator
def say_hello():
print("안녕하세요!")
say_hello()
출력
함수 실행 전 동작.
안녕하세요!
함수 실행 후 동작.
데코레이터는 @
문법을 사용하여 기존 함수 위에 레이어처럼 적용된다. 이를 통해 코드의 재사용성과 가독성을 높일 수 있다.
How do Python generators work?
제너레이터는 한 번에 하나의 값을 반환하는 함수로, 메모리 효율성이 뛰어나다. return
대신 yield
키워드를 사용한다.
제너레이터는 값을 생성할 때만 실행되며, 대규모 데이터 처리가 필요한 작업에서 메모리를 효율적으로 사용할 수 있다. for
루프를 통해 자동으로 값을 소비할 수도 있다.
What are context managers?
컨텍스트 매니저는 파일 스트림이나 데이터베이스 연결 같은 자원을 적절히 관리하기 위해 사용된다. with
문을 통해 구현하며, 자원이 자동으로 닫히거나 해제된다.
with
문을 사용하면 파일이 자동으로 닫히기 때문에, close()
메서드를 직접 호출할 필요가 없다. __enter__
와 __exit__
메서드로 커스텀 컨텍스트 매니저를 만들 수 있다.
How does Python manage memory?
파이썬은 참조 카운팅과 가비지 컬렉션을 결합한 방식을 사용해 메모리를 자동으로 관리한다.
How does Python handle errors?
파이썬은 try-except
블록을 사용하여 에러를 처리한다.
else
: 예외가 발생하지 않은 경우 실행되는 블록.finally
: 예외 발생 여부와 관계없이 항상 실행되는 블록.What are closures in Python?
클로저는 내부 함수가 외부 함수의 변수를 참조하면서, 외부 함수 실행이 종료된 이후에도 해당 변수를 기억하는 기능이다.
클로저는 상태를 유지해야 하는 상황에서 유용하며, 함수형 프로그래밍 패턴에서 자주 사용된다.
What is Django used for in Python?
Django는 빠르고 안전하게 웹사이트를 개발할 수 있도록 도와주는 웹 프레임워크이다.
How does Flask differ from Django?
What is Pandas used for?
Pandas는 데이터를 분석하고 조작하기 위한 라이브러리이다.
What is NumPy?
How do you work with external libraries in Python?
외부 라이브러리는 pip
를 통해 설치하고, 가상 환경을 사용하여 의존성을 관리할 수 있다.
try-except
and try-finally
?try-except
:try
블록에서 예외가 발생했을 때 이를 처리한다.
특정 예외를 명시적으로 처리하거나, 모든 예외를 포괄적으로 처리할 수 있다.
try:
result = 10 / 0
except ZeroDivisionError:
print("0으로 나눌 수 없습니다!")
0으로 나눌 수 없습니다!
try-finally
:예외가 발생하든 발생하지 않든, finally
블록이 항상 실행된다.
주로 리소스 정리(예: 파일 닫기, 연결 해제 등)에 사용된다.
python
코드 복사
try:
file = open('example.txt', 'r')
content = file.read()
finally:
file.close() # 항상 실행
IndexError
: 리스트, 튜플의 범위를 벗어난 인덱스를 참조할 때.KeyError
: 딕셔너리에서 존재하지 않는 키를 참조할 때.ValueError
: 부적절한 값을 함수에 전달할 때.TypeError
: 잘못된 타입의 값을 연산하거나 함수에 전달할 때.AttributeError
: 객체에 없는 속성이나 메서드를 참조할 때.pdb
(Python Debugger):파이썬의 내장 디버거로, 실행 중 코드 상태를 분석하고 한 줄씩 실행해볼 수 있다.
import pdb
def buggy_function():
x = 10
pdb.set_trace() # 디버깅 시작
y = x / 0 # 에러 발생
print(y)
buggy_function()
디버거 명령어:
n
: 다음 줄로 이동.c
: 계속 실행.q
: 디버깅 종료.How do you open a file in Python?
open()
함수를 사용하여 파일을 열고 작업을 수행한다.
with open('example.txt', 'r') as file:
content = file.read()
print(content)
with
사용의 장점: 파일 작업이 끝난 후 자동으로 파일을 닫아준다.How do you work with CSV files in Python?
import csv
with open('example.csv', mode='r') as file:
reader = csv.reader(file)
for row in reader:
print(row)
pandas
라이브러리:
import pandas as pd
# CSV 파일 읽기
df = pd.read_csv('example.csv')
print(df.head()) # 데이터의 상위 5개 행 출력
What is the Global Interpreter Lock (GIL) in Python?
What is multithreading in Python?
What is the difference between multithreading and multiprocessing?
특징 | 멀티스레딩 | 멀티프로세싱 |
---|---|---|
실행 단위 | 여러 스레드 | 여러 프로세스 |
메모리 | 스레드가 메모리를 공유 | 각 프로세스가 독립적인 메모리 사용 |
적합한 작업 유형 | I/O 바운드 작업 | CPU 바운드 작업 |
GIL 영향 여부 | 영향을 받음 | 영향을 받지 않음 |
How do you achieve concurrency in Python?
threading
:multiprocessing
:asyncio
:What is asyncio
, and how is it used?
asyncio
는 비동기 I/O 작업을 처리하는 라이브러리이다.How do async
and await
work in Python?
async
: 비동기 함수를 정의할 때 사용.await
: 비동기 작업이 완료될 때까지 기다릴 때 사용.async def
로 선언하며, 반환 값은 코루틴(coroutine)이다.import sqlite3
# SQLite 데이터베이스 연결
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# 테이블 생성 및 데이터 삽입
cursor.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER, name TEXT)")
cursor.execute("INSERT INTO users (id, name) VALUES (?, ?)", (1, 'Alice'))
conn.commit()
conn.close()
What is SQLAlchemy?
How would you use a database with Django?
unittest
in Python?unittest
는 파이썬 표준 라이브러리로 포함된 테스트 프레임워크이다.parameterized
나 pytest.mark.parametrize
를 사용할 수 있다.pytest-cov
를 사용한 코드 커버리지 측정).How do you use Python for web scraping?
BeautifulSoup, Scrapy와 같은 라이브러리를 사용해 웹에서 데이터를 추출한다.
How is Python used in machine learning?
TensorFlow, Keras, Scikit-learn과 같은 라이브러리를 사용해 머신러닝 모델을 생성하고 학습시킨다.
How does Python integrate with cloud platforms?
AWS, Google Cloud, Azure와 같은 플랫폼의 SDK를 사용하여 클라우드 자원을 관리하거나 자동화 작업을 수행한다.
How do you secure a web application in Python?
Django의 내장 보안 기능을 사용하여 CSRF 방지, SQL 인젝션 방지, HTTPS 지원 등을 설정할 수 있다.
What is input validation in Python?
잘못된 데이터나 악의적인 입력을 방지하기 위해 데이터 타입, 형식, 범위를 검증한다.
memory_profiler
라이브러리로 메모리 사용량 분석.