TIL_240105_면접 예상 질문

Sol Lee·2024년 1월 5일
0

면접예상질문

python

  • PEP8에 대해 읽어보신 내용 또는 아는 내용에 대해 설명해주세요. 아울러 팀프로젝트 코드 작성시 컨벤션을 맞추기 위한 어떤 노력을 하셨는지 말해주세요.

PEP8은 파이썬 코드 작성시 지켜야 할 코드컨벤션 가이드라인으로 가독성과 일관성을 위해 장려됩니다. 공백과 간격, class나 함수명의 naming, 표현식 등의 기준이 있습니다. 팀 프로젝트의 경우 사전에 app명, class, 함수명의 기준을 정해놓았고 공백등의 간격은 같은 코드포메터를 사용하도록 했습니다.

  • Python의 GIL(Global Interpreter Lock)이란 무엇이고, 어떤 문제를 발생시키나요?

한 시점에 하나의 스레드에만 자원을 할당하고 나머지는 lock을 걸어 멀티스레드가 싱글스레드처럼 동작하는 것을 말하며 병목현상이 일어날 수 있습니다.

  • mutable 자료형과 immutable 자료형에는 어떤 것들이 있고 각각 어떤 특징을 가지고 있나요?

mutable 자료형은 변경가능하다는 의미이며 쓰기가 가능합니다. 예시로는 리스트, 딕셔너리 등이 있습니다.
immutable 자료형은 변경불가능 하다는 의미로 읽기만 가능하며 예시로는 숫자, 문자열, 튜플 등이 있습니다.

  • *args와 **kwargs의 용도와 사용 예제를 설명해주세요.

args: arguments 개수가 정해지지 않는 인자를 여러개 받을 때 사용됨
인자를 받아 전부 더하는 함수가 있다고 할 때 def plus(a,b,c) 라고 인자를 정의하면 인자를 3개까지 밖에 받지 못하지만 def plus(*args) 라고 할 경우 개수에 상관없이 인자를 받을 수 있음
**kwargs: keywords arguments 개수가 정해져 있지 않은 인자를 key-value 형태로 받을 때 사용할 수 있음

  • 멀티스레딩과 멀티프로세싱의 차이점과 각각의 장단점을 설명해주세요.

가장 큰 차이는 메모리를 공유하는가를 볼 수 있습니다. 비유하자면 10개의 주방에서 10명의 요리사가 10개의 일을 하는 것은 멀티프로세싱, 1개의 주방에서 10명의 요리사가 10개의 일을 하는 것이 멀티 스레딩이라고 할 수 있습니다. 메모리 공유가 필요한 간단한 작업의 경우 멀티스레딩, 독립적으로 메모리를 사용하고 안정적인 운영이 필요한 경우 멀티프로레싱을 활용할 수 있습니다.

공통

  • 동기와 비동기의 차이.

동기는 요청시 응답이 돌아올 때까지 다른 작업을 진행하지 않고 비동기의 경우 응답을 기다리지 않고 다른 활동이나 다른 요청을 진행합니다.

  • 프레임워크와 라이브러리의 차이.

: 비유해보자면 프레임워크는 집, 라이브러리는 조립형 가구라고 할 수 있습니다. 프레임워크는 골조, 뼈대로서 집을 지탱하는 기둥이나 벽의 개수, 방의 위치, 주방위치 등을 쉽게 바꿀수 없는 것처럼 주어진 틀에 따라 코드를 작성해야 합니다. 반면 라이브러리의 경우 조립형 가구처럼 원하는 기능, 형태, 크기 등을 조절하여 배치가 가능합니다.

백엔드

  • 대용량 트래픽 발생 시 어떻게 대응해야 하나요?
    1. 스케일을 조절, 기존 서버의 사양을 업그레이드 하거나 서버의 개수를 늘림
    2. 동일한 데이터의 접근이 많은 경우 캐싱을 활용
    3. 비동기 처리를 총해 오래 걸리는 작업과 즉시 처리할 작업을 분리하여 병렬 작업
    4. 재해복구시스템활용
  • ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는게 좋을까요?
    1. native quary를 활용
    2. 캐싱
    3. 쿼리분리
    4. 쿼리최적화
    5. QuaryDSL
    6. 프로파일링과 모니터링

→ 이 부분은 잘 모르겠다... 좀더 공부 필요

참고

immutable mutable
GIL
PEP8
arg kwargs
프레임워크와 라이브러리
멀티스레드와 멀티프로세스
대용량트래픽
ORM

profile
직업: 개발자가 되고 싶은 오레오 집사

0개의 댓글