OZ코딩스쿨 초격차캠프 백엔드 1일차: 파이썬 CS 기초

임로빈·2023년 12월 7일
post-thumbnail

1일차

Chpater 01. 선택과제

기술 면접에 자주 나오는 질문 3가지와 기본적으로 알아야 할 내용

1. [ 인터프리터 방식이란? ]

기계어로 목적 코드를 컴퓨터로 바로 실행하는 컴파일 방식(C언어 혹은 자바 등)과 달리
인터프리터 방식은 코드를 번역한 후 바로 실행한다.

주요 장점으로는 아래 2가지가 있다.
1. 코드를 한 줄씩 실행하면서 결과를 즉시 확인할 수 있다. 이는 디버깅하는 데 매우 용이하여 수정사항을 빠르게 확인할 수 있다.
2. 코드를 더 쉽게 이해하고 수정할 수 있는 대화형 기능. 코드를 완전히 작성하지 않아도 작성한 부분까지만 테스트할 수 있다.

2. [ 동적 타입 & 정적 타입 ]

  • 정적 타입(Static type checking): 자료형을 컴파일 타임에 결정
  • 동적 타입(Dynamic type checking): 자료형을 런타임(실행 시점)에 결정
    *파이썬은 동적 타입이면서, 강타입
    (자료형이 맞지 않을 시에 에러 발생, 암묵적 변환 지원X) 언어

런타임 동안 진행되는 동적 타입은 자료형 정보를 처음에 정해주지 않아도
단순하게 바로 변수를 선언할 수 있어 편리하다.

하지만, 규모가 커질수록 런타임 도중
예상치 못한 오류 발생 확률이 높은 게 단점이다.

그리고 한 줄 씩 차례대로 기계어로 번역하므로
속도가 느린 단점이 있다.

이러한 파이썬으로 정적 타입 방식의 코드를 작성하려면,
파이썬 3.0+에서 Type Annotation(힌트) 기능을 활용할 수 있다.

인터프리터로 실행시키기 전에 Typing 모듈로
미연에 타입 힌트들을 체크하는 방법이다.

3. [ 프레스와 스레드 ]

프로세스(Process)와 스레드(Thread)는
동시에 실행되는 "코드의 단위"를 가리킨다.

Process는 실행 중인 프로그램을 나타내는 개념이다.
Thread는 프로세스 내에서 실행되는 독립적인 흐름이다.

프로세스는 독립적인 메모리 공간을 가지며,
각각 별도의 주소 공간을 사용한다.
따라서 한 프로세스의 변수나 자료 구조는
다른 프로세스에 직접 접근할 수 없다.

그에 반해, 스레드는 같은 프로세스 내에서 동작하며,
해당 프로세스의 메모리 공간을 공유한다.
따라서 스레드 간 변수나 자료 구조에 직접 접근할 수 있다.

프로세스가 독립된 방에서 각자 일을 한다면,
스레드는 한 방 안에서 함께 일을 한다고 볼 수 있다.

[선택]

4. [ 파이썬 2버전 VS 3버전 ]

파이썬 3버전은 2버전보다 문법을 간소화하고 이해하기 쉽게 만들었으며,
특히 문자열과 예외 처리 부분에서 향상된 기능을 제공한다.

파이썬 3 구문은 더 간단하고 이해하기 쉬운 반면,
파이썬 2 구문은 비교적 이해하기 어렵다.

3버전의 기본 문자열 저장은 유니코드인 반면,
2버전에서는 문자열을 ASCII로 처리하여 유니코드 문자열 값을 정의해야 한다.

3버전에서는 print가 함수로 변경되었으며, xrange 함수가 제거된 대신 range() 함수가 파이썬 2와 동일한 역할을 한다.

Python 3: 문자열은 기본적으로 유니코드. "u"를 사용하지 않아도 됨.
Python 2: 유니코드 문자열은 "u"로 정의해야 함.
변수 변경:

Python 3: 변수 값은 변경되지 않음.
Python 2: 전역 변수 값이 for 루프 내에서 변경될 수 있음.
예외 처리:

Python 3: 예외는 괄호로 묶어야 함.
Python 2: 예외는 표기법으로 묶어야 함.
순서 비교 규칙:

Python 3: 단순화된 순서 비교 규칙.
Python 2: 더 복잡한 순서 비교 규칙.
반복 함수:

Python 3: 반복을 위해 range() 함수 사용.
Python 2: 반복에 xrange() 사용.```

5. [ 파이썬 메모리 관리 ]

파이썬은 데이터를 저장할 때
메모리를 효율적으로 관리하기 위해 '비공개 힙'이라는 공간을 사용한다.

이 힙 안에 숫자, 문자열, 리스트 등
모든 파이썬 객체와 데이터 구조를 저장한다.

이는 모두 파이썬 메모리 관리자에 의해 내부적으로 관리된다.

파이썬은 자동으로 메모리를 관리하며
사용자는 메모리 블록에 직접 접근하거나
C 할당자를 사용하지 않아야 한다.

그러나 이 방식은 순환 참조(Circular reference)와 같은
특정한 상황에서는 메모리 누수(memory leak)를 발생시킬 수 있다.

파이썬은 이를 방지하기 위해
순환 참조 발생 시에만 동작하여 메모리 누수를 방지하는
가비지 컬렉션(Garbage Collection) 기능을 제공한다.

profile
https://readyoun.tistory.com/

0개의 댓글