CS/기술 면접 대비
[ai-tech-interview] 🐍 파이썬 편
안정민
2024. 8. 14. 17:36
https://github.com/boost-devs/ai-tech-interview
위 링크 중 파이썬 문제의 정답을 달았다
GitHub - boost-devs/ai-tech-interview: 👩💻👨💻 AI 엔지니어 기술 면접 스터디 (⭐️ 1k+)
👩💻👨💻 AI 엔지니어 기술 면접 스터디 (⭐️ 1k+). Contribute to boost-devs/ai-tech-interview development by creating an account on GitHub.
github.com
- Python의 리스트와 튜플의 차이점은 무엇인가요?
변경 가능성: - 리스트(List): 변경 가능, 리스트의 요소를 추가, 삭제, 수정 가능하다 - 튜플(Tuple): 변경 불가능, 한 번 생성된 튜플의 요소를 수정하거나 삭제 불가능 중복 가능성: - 리스트(List): 중복 값을 허용 - 튜플(Tuple): 중복 값을 허용하지 않음 Syntax: - 리스트(List): 대괄호 [] 사용 → 예: [1, 2, 3] -튜플(Tuple): 소괄호 () 사용 → 예: (1, 2, 3) 또한 리스트는 튜플보다 느리다는 단점을 가지고 있다 |
- Python의 주요 특징은 무엇인가요?
|
- Python은 어떤 종류의 언어인가요? 프로그래밍 언어인가요 아니면 스크립팅 언어인가요?
파이썬은 정확하게는, 스크립트 언어이다. 모든 스크립트 언어는 프로그래밍 언어로 볼 수 있으나, 모든 프로그래밍 언어가 스크립트 언어로 분류되는 것은 아니다. 따라서 파이썬은 스크립트 언어이자, 프로그래밍 언어이다. 그러나 사람들은 일반적인 경우에 파이썬을 프로그래밍 언어의 목적으로 분류하고, 프로그래밍 목적으로 많이 사용한다. 💡 스크립팅(scripting/Scripting Language) 스크립트 언어란 컴파일이 필요없이 실행될 수 있는 명령어의 집합이다. 스크립트 언어는 인터프리터를 사용하는데, 인터프리터는 컴파일 과정이 필요하지 않으며, 소스코드로 부터 바로 명령어를 해석할 수 있다. |
- Python이 인터프리터 언어라는 것은 무엇을 의미하나요?
인터프리터는 고급 언어로 작성된 원시코드 명령어들을 한번에 한 줄씩 읽어들여서 실행하는 프로그램이다. 인터프리터 언어는 실행시간(runtime) 전에 기계 레벨 코드(machine-level code)를 만드는 컴파일 언어와 다르게 소스코드를 바로 실행하는 언어이며, 파이썬은 인터프리터 언어에 해당한다. |
- PEP 8이란 무엇인가요?
PEP 8은 파이썬 코드를 작성할 때 지켜야 하는 스타일 가이드 가독성과 일관성을 높이기 위해 권장, 코드의 품질을 높이기 위한 기준으로 사용됨 1. 들여쓰기 : 4개의 공백문자, 탭 대신 공백문자 권장 2. 최대 줄 길이 : 79자로 제한, 읽고 쓰기 쉽게 만들어 주는 중요한 규칙 중 하나 : 파이썬에서는 괄호, 중괄호, 대괄호 등으로 둘러싸인 표현식에서는 줄바꿈이 가능하다 3. 공백 : 코드의 가독성을 높이기 위해 공백을 적절하게 사용하는 것을 권장 4. 주석 : 코드 주석은 한 줄로 작성, # 문자로 시작, 코드와 같은 줄에 작성하는 것이 좋음, : 함수나 메서드의 docstring은 세 개의 따옴표로 둘러싸여 작성되어야 한다. 5. 네이밍 컨벤션 :변수, 함수, 메서드, 모듈 이름은 소문자 작성, 밑줄로 여러 단어일 때 구분 :클래스 이름은 첫 글자를 대문자로 작성, 여러 단어일 떈 카멜 식 작성 :상수의 이름은 모두 대문자 6. 임포트 (import) : 임포트를 적절하게 사용해서 코드의 가독성을 높이는 것을 권장 : 여러 모듈 임포트 시 각 모듈을 새 줄에 작성 , 표준라이브러리 → 서드파티 → 로컬모듈 순으로 임포트 : 충돌 가능성이 이름에 있는 경우 별칭을 붙임 7. 문자열 인용 : 문자열 표현 시 작은 따옴표와 큰따옴표 중 아무거나 사용해도 상관은 없으나 일관성은 가져가야 함 :포맷팅을 적절히 사용 |
- Python에서 네임스페이스란 무엇인가요?
naming conflict, 이름 지정 충돌을 피하기 위해 이름이 고유한 지 확인하는데 사용되는 이름 지정 시스템 namespace란 프로그래밍 언어에서 특정한 객체를 이름에 따라 구분할 수 있는 범위를 의미 파이썬 내부의 모든 것은 객체로 구성되며 이들 각각은 특정 이름과의 매칭 관계를 갖게 되는데, 이 매핑을 포함하고 있는 공간을 네임스페이스 라고 한다. - 딕셔너리 형태로 구현됨 - 모든 이름 자체는 문자열로 되어 있고 각각은 네임 스페이스의 범위에서 실제 객체를 가리킨다. - 이름과 실제 객체 사이의 매핑은 가변적이므로 런타임동안 새로운 이름이 추가될 수 있다 - 빌트인 네임 스페이스는 함부로 추가하거나 삭제할 수 없다 |
- PYTHONPATH란 무엇인가요?
모듈 import 기 사용되는 환경변수, 모듈을 import 할 때마다 PYTHONPATH를 조회하여 가져온 모듈이 디렉토리에 있는지 확인 pythonpath 환경변수에 경로 추가 시 파이썬은 이 경로들은 sys.path에 추가한다 |
- Python 모듈이란 무엇인가요? 자주 사용되는 내장 모듈 몇 가지를 말해보세요.
모듈이란 python 코드를 포함하는 파일로, 함수나 변수 또는 클래스를 모아놓은 파일이다 모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있게끔 만든 파이썬 파일이라고도 할 수 있다 실행 가능한 코드를 포함하는, 파이썬 확장자 (.py)로 만든 파이썬 파일은 모두 모듈이다 모듈을 사용하면 다른 코드에 적용하기가 쉬워지기 때문에 이식성이 좋아진다. ex) sys, math, random,... |
- Python에서 지역 변수와 전역 변수란 무엇인가요?
전역변수 (Global Variable)은 함수 외부 또는 전역 공간에 선언된 변수, 프로그램의 모든 부분에서 접근 가능 로컬 변수 (Local Variable)은 함수 내부에 선언된 변수, 전역 공간이 아니라 로컬 공간에 존재한다. |
- Python은 대소문자를 구분하나요? (case sensitivity)
YES 파이썬은 대소문자를 구분하는 언어이다. a 와 A는 다른 변수이다. |
- Python에서 형 변환이란 무엇인가요?
type conversion은 type casting과 동일한 의미를 가지며, 이는 어떤 데이터 타입을 다른 데이터 타입으로 변환하는 것을 의미한다.
|
- Python에서 들여쓰기는 필수인가요?
REQUIRED 파이썬은 {} 을 사용하여 영역을 지정하지 않고, 들여쓰기를 사용하여 코드 블록을 지정하기 때문에 파이썬에서의 들여쓰기는 문법적인 강제사항이다. 일반적으로 파이썬은 네 개의 공백 문자를 사용하여 들여쓰기를 수행하며 if, for, class, def 등의 모든 코드는 들여쓰기 블록 내에서 지정된다. 정확히 코드를 들여쓰지 않으면 실행도 안 되고 오류도 발생한다. 중요한 것은 같은 블록 내에서는 들여쓰기 칸 수가 같아야 함 들여쓰기 규칙 위반 시에는 IndentationError: unexpected indent 에러 출력 |
- Python 배열과 리스트의 차이점은 무엇인가요?
Python에서는 array과 list가 동일한 방식으로 데이터를 저장한다. 차이점은, 배열은 단일 데이터 타입 요소만 포함할 수 있는 반면, 리스트에는 다양한 타입의 요소들이 들어갈 수 있다는 것이다. array의 선언 방법은 arrayName = array(type, [Values])처럼 자료형을 정하고, 지정한/동일한 자료형만을 넣을 수 있도록 되어있다. list은 변수에 []로 여러 타입의 변수를 묶어서 선언할 수 있다. ex) import array as arr |
- Python에서 함수란 무엇인가요?
함수는 호출이 될 때만 실행이 되는 코드 블록이다 Python 함수를 정의하기 위해 def 키워드가 사용된다 반복되는 부분을 함수로 만들어서 사용하면, 똑같은 코드를 여러 번 반복하여 쓰지 않아도 되고, 프로그램의 흐름을 쉽게 파악할 수 있다는 장점이 있다. |
- __init__이란 무엇인가요?
__init__은 파이썬에서 특별히 약속된 메서드 중 하나로, 초기화 메서드 혹은 생성자 메서드라고도 한다 이 메서드는 클래스의 새 개체/인스턴스 가 생성될 때 메모리를 할당하기 위해 자동으로 호출, 그 객체가 가지게 될 여러 가지 성질을 정해 준다. 모든 클래스에는 __init__메서드가 존재한다. ex) class Employee: def __init__(self, name, age,salary): self.name = name self.age = age self.salary = 20000 E1 = Employee("XYZ", 23, 20000) # E1은 Employee 클래스의 객체 # __init__ 는 E1에 메모리를 할당함 print(E1.name) print(E1.age) print(E1.salary) ## python 3.3 이하 버전에서, package import하기 위해서 사용되는 규칙이다. 3.3 이후의 버전에서는 이 제약사항이 해제되었다. __init__.py는 python 프로그램이 디렉토리를 처음 가져올 때 자동으로 실행되는 패키지 초기화 파일 역할을 하고, 모듈의 네임스페이스 초기화 역할을 한다. |
- 람다 함수란 무엇인가요?
- Python에서 self란 무엇인가요?
- break, continue, pass는 어떻게 작동하나요?
- [:: -1]은 무엇을 하나요?
- Python에서 리스트의 항목을 제자리에서 무작위로 섞는 방법은 무엇인가요?
- 이터레이터와 이터러블의 차이점은 무엇인가요?
- Python에서 난수를 생성하는 방법은 무엇인가요?
- range와 xrange의 차이점은 무엇인가요?
- Python에서 주석을 작성하는 방법은 무엇인가요?
- 피클링(pickling)과 언피클링(unpickling)이란 무엇인가요?
- Python에서 제너레이터란 무엇인가요?
- 문자열의 첫 글자를 대문자로 만드는 방법은 무엇인가요?
- 문자열을 모두 소문자로 변환하는 방법은 무엇인가요?
- Python에서 여러 줄 주석을 작성하는 방법은 무엇인가요?
- Python에서 도크스트링(docstrings)이란 무엇인가요?
- is, not, in 연산자의 목적은 무엇인가요?
- Python에서 help() 및 dir() 함수의 용도는 무엇인가요?
- Python이 종료될 때 모든 메모리가 해제되지 않는 이유는 무엇인가요?
- Python에서 딕셔너리(dictionary)란 무엇인가요?
- Python에서 삼항 연산자는 어떻게 사용할 수 있나요?
- *args, **kwargs는 무엇을 의미하나요? 그리고 왜 사용하나요?
- len()은 무엇을 하나요?
- Python의 re 모듈에서 split(), sub(), subn() 메서드를 설명하세요.
- 음수 인덱스란 무엇이며, 왜 사용되나요?
- Python 패키지란 무엇인가요?
- Python에서 파일을 삭제하는 방법은 무엇인가요?
- Python의 내장 자료형에는 어떤 것들이 있나요?
- NumPy 배열이 (중첩된) Python 리스트보다 제공하는 장점은 무엇인가요?
- Python 배열에 값을 추가하는 방법은 무엇인가요?
- Python 배열에서 값을 제거하는 방법은 무엇인가요?
- Python은 객체 지향 프로그래밍(OOP) 개념을 가지고 있나요?
- 깊은 복사(deep copy)와 얕은 복사(shallow copy)의 차이점은 무엇인가요?
- Python에서 멀티스레딩은 어떻게 구현되나요?
- Python에서 컴파일 및 링크 과정은 어떻게 이루어지나요?
- Python 라이브러리란 무엇인가요? 몇 가지 예를 들어보세요.
- split()은 무엇에 사용되나요?
- Python에서 모듈을 가져오는 방법은 무엇인가요?
- Python에서 상속을 예시와 함께 설명하세요.
- Python에서 클래스는 어떻게 생성하나요?
- Python에서 몽키 패칭(monkey patching)이란 무엇인가요?
- Python은 다중 상속을 지원하나요?
- Python에서 다형성(polymorphism)이란 무엇인가요?
- Python에서 캡슐화(encapsulation)를 정의하세요.
- Python에서 데이터 추상화(data abstraction)를 어떻게 구현하나요?
- Python은 접근 지정자(access specifiers)를 사용하나요?
- Python에서 빈 클래스를 생성하는 방법은 무엇인가요?
- object()는 무엇을 하나요?
- Python에서 map 함수란 무엇인가요?
- Python의 NumPy가 리스트보다 나은 점은 무엇인가요?
- Python 언어에서 GIL이란 무엇인가요?
- CPython이 Python과 다른 점은 무엇인가요?
- Python에서 데코레이터(decorators)란 무엇인가요?
- 객체 인턴(object interning)이란 무엇인가요?
- @classmethod, @staticmethod, @property란 무엇인가요?