생성 수정
19 / 19문항
Q01Pydantic이 하는 일은 무엇입니까?정답
도구
데이터의 모양을 클래스로 선언해 두면 ① 들어오는 값이 그 모양인지 자동으로 검사하고 ② API 문서(/docs)까지 자동으로 만들어 줍니다.
2.0에서는 네 가지 모델 표기법으로 이 선언 방식이 정리됐습니다.
Q02walter: WalterRoasterUseCase = WalterRoasterInteractor() 한 줄이 왜 DIP와 OCP를 동시에 위반합니까?정답
실전
타입은 추상(UseCase)으로 선언해 놓고 실제 값은 구체 클래스(Interactor)를 직접 생성해 대입했기 때문입니다.
이러면 구현체를 바꿀 때마다 이 줄을 직접 고쳐야 해 OCP(수정에는 닫혀야 함)를 어기고, 상위 모듈이 구체 클래스를 알아버려 DIP도 함께 깨집니다. Depends(...)로 밖에서 주입받게 고치는 것이 해법입니다.
Q03Pydantic 2.0에서 .dict() 는 무엇으로 바뀌었습니까?정답
스스로 확인
.model_dump() 로 바뀌었습니다.
Q04BaseSettings 는 2.0에서 어떻게 됐습니까?정답
스스로 확인
pydantic 본체에서 분리되어 pydantic-settings 패키지로 옮겨졌습니다.
Q05얕은 복사가 위험한 이유는 무엇입니까?정답
스스로 확인
중첩된 내부 객체가 원본과 같은 메모리를 공유해, 복사본을 고치면 원본도 함께 바뀔 수 있기 때문입니다.
Q06walter: WalterRoasterUseCase = WalterRoasterInteractor() 는 무엇을 위반합니까?정답
스스로 확인
DIP와 OCP를 동시에 위반합니다. 우변에서 구체 클래스를 직접 생성해 대입했기 때문입니다.
Q07이 코드를 고친 뒤 라우터에서 사라져야 하는 것은 무엇입니까?정답
스스로 확인
구체 클래스(Interactor)를 직접 생성하는 코드입니다. 대신 Depends(...) 로 주입받아야 합니다.
Q08의존성 조립소의 3원칙은 무엇입니까?정답
스스로 확인
구상 객체 생성은 한 곳(조립소)에만 몰기, 나머지 코드는 추상만 알기, 조립소만 바뀌면 나머지는 안 바뀌게 하기입니다.
Q09타입 힌트를 포트로 썼으니 DIP를 지킨 것이라고 생각하면 왜 틀렸습니까?정답
자주 하는 실수
우변에서 구현체를 생성하면 위반입니다. import 목록을 봐야 합니다.
Q10app/use_cases/ 에서 SQLAlchemy를 import 해도 된다고 생각하면 왜 문제입니까?정답
자주 하는 실수
코어 오염입니다. 이 순간 테스트 용이성·기술 교체 유연성·유지보수성 세 가지 이점이 전부 사라집니다.
Q11SQLAlchemy는 Column(Integer, ...) 로 쓴다고 생각하면 왜 낡은 방식입니까?정답
자주 하는 실수
그건 1.x 방식입니다. 2.0은 Mapped[int] = mapped_column(...) 을 씁니다.
Q12git clone 대신 ZIP을 받아도 똑같다고 생각하면 왜 틀렸습니까?정답
자주 하는 실수
.git 폴더가 없어 push도 히스토리 추적도 불가능합니다.
Q13AI가 만든 DI 코드는 그대로 쓰면 된다고 생각하면 왜 위험합니까?정답
자주 하는 실수
DIP를 절반만 적용하는 경우가 많습니다. 사람이 검수해야 합니다.
Q14BaseModel, RootModel, TypeAdapter, ConfigDict는 각각 무엇입니까?정답
용어
BaseModel은 딕셔너리형 데이터를 검증하는 표준 모델, RootModel은 최상위가 리스트·단일값일 때 감싸는 모델, TypeAdapter는 클래스 없이 즉석 검증하는 도구, ConfigDict는 class Config를 대체하는 설정입니다.
Q15Mapped와 mapped_column은 각각 무엇입니까?정답
용어
Mapped는 컬럼에 타입 힌트를 붙이는 SQLAlchemy 2.0 표기이고, mapped_column은 1.x의 Column(...)을 대체하는 함수입니다.
Q16async_sessionmaker와 pool_pre_ping은 각각 무엇입니까?정답
용어
async_sessionmaker는 비동기 세션 팩토리이고, pool_pre_ping은 커넥션을 쓰기 전에 살아 있는지 확인하는 옵션입니다.
Q17얕은 복사와 깊은 복사는 각각 무엇을 복제합니까?정답
용어
얕은 복사는 껍데기만 새로 만들고 내부는 원본과 공유하며, 깊은 복사는 중첩된 내부까지 전부 새로 복제합니다.
Q18역정규화(Denormalization)란 무엇입니까?정답
용어
나뉜 테이블을 의도적으로 합쳐 조회를 단순화하는 DB 기법입니다.
Q19이 장이 단원는 세 가지 이점은 각각 '무엇이 없기 때문에 가능한가'로 설명하면 무엇입니까?정답
종합
테스트 용이성은 실제 DB가 없어도 되기 때문에, 기술 교체 유연성은 코어가 특정 기술을 모르기 때문에, 유지보수성은 경계가 흐려지지 않기 때문에 가능합니다.
LangTailor