F-lab 백엔드 멘토링 주요 질문 모음
참조링크[zerozone]
파이썬 컴파일 과정
python 실행 .py => 바이트 코드 컴파일 .pyc => PVM(파이썬 실행 엔진)에서 바이트 코드 순차적 interpreting
- 바이트 코드로 컴파일된 파일은 환경 독립적 혹은 운영체제 환경에 종속x
- 중간 컴파일을 통한 스크립트 코드에 비해 빠름
- list comprehension을 통해 메모리 동적 재할당 방지
- collections와 같은 범용 내장 컨테이너 활용
- numpy, pandas와 c로 구현하여 GIL제약에서 일부 자유로움, 벡터 연산 지원, 메모리 연속성, SIMD(single instruction, multiple data)로 한번의 cpu명령으로 여러 데이터 연산 가능
프레임워크 vs 라이브러리
가장 큰 차이로 제어의 주체로, 프레임워크가 제어를 가지고, 라이브러리는 개발자가 가집니다.
- 프레임워크: 전체 개발의 구조를 제공하는 도구로, IoC(제어의 역전)으로 개발자가 작성한 코드가 프레임워크에 의해 실행 됩니다.
- 라이브러리: 특정 기능을 수행하는 모듈을, 개발자가 직접 수행합니다.
SOLID
객체 지향 설계를 위한 다섯가지 기본 원칙입니다.
단일 책임 원칙 - SRP(single responsibility principle)
클래스가 하나의 기능 혹은 역할을 가지고, 그 기능을 캡슐화해야하는 원칙입니다.
- 클래스 별 기능을 단일화 함으로써, 명확한 객체의 역할과 책임을 정하여, 변경 사항 시, 수정의 범위가 제한되어 유지보수성이 높은 설계 개발이 가능
개방-패쇄 원칙 - OCP(open closed principle)
클래스, 모듈, 함수 등이 확장에 개방적이고 수정에는 패쇄적이어야하는 원칙입니다.
- 기존 코드 변경 없이, 새로운 기능 확장에 용이한 장점이 있습니다.
- 다형성을 활용하여 구체적인 구현과 타입을 별도 클래스에서 제공이 가능합니다.
리스코프 치환 원칙 - LSP(liskov substitution principle)
하위 타입은 그것의 기반 타입으로 대체될 수 있어야하는 원칙입니다.
- 다형성의 원리를 활용해, 상위 혹은 하위 클래스의 매소드 활용해, 동일한 의도된 동작을 수행합니다.
- 부모 매소드의 선행 조건을 고려해 작업을 진행이 필요합니다.
인터페이스 분리 원칙 - ISP(interface segregation principle)
사용하지 않는 인터페이스는 클라이언트에게 강제해서는 안되다는 원칙입니다.
- 각 인터페이스 별로 명확한 목적을 가지며, 불필요한 의존성을 방지합니다.
의존성 역전 원칙 - DIP(dependency inversion principle)
고수준 모듈은 저수준 모듈에 의존해서는 안되며, 둘 다 추상화에 의존해야하는 원칙입니다.
- 구현 클래스가 아닌 인터페이스에 의존함으로써, 클래스 간의 결합도를 낮춥니다.
참조링크[f-lab블로그]
참조링크[inpa-tistory]