티스토리 뷰
질문 #1. 파이썬의 주요 특징에 대해 이야기 해보세요.
- 파이썬은 인터프리터 언어 이며, 동적타이핑 언어 입니다. 파이썬은 객체지향언어 이고, 간결하고 단순하며 엄청난 크기의 커뮤니티의 지원을 받고 있습니다.
질문 #2. 파이썬에서 list와 tuple의 차이점에 대해 말해보세요.
- list는 데이터를 변경할 수 있고, tuple은 변경이 할 수 없습니다.
확인코드:
l = [1, 2 ,3]
t = (1, 2, 3)
print(l[0], t[0])
l[0] = 10
print(l)
t[0] = 10
print(t)
>>> 1 1
>>> [10, 2, 3]
Traceback (most recent call last):
File "test.py", line 10, in <module>
t[0] = 10
TypeError: 'tuple' object does not support item assignment
질문 #3. 파이썬의 삼향연산자(ternary operator)에 대해 설명하세요.
예상 정답(한국어):
- 자바스크립트나 C++과 달리 파이썬에는 삼향연산자가 없습니다. 하지만 파이썬에게는 비슷한 역할을 하는 다른 기능이 있습니다.
[Returning Value on True] if [Conditional Statement] else [Returning Value on False]
확인코드:
test_score = 100
passed = True if test_score == 100 else False
print(passed)
test_score = 50
passed = True if test_score == 100 else False
print(passed)
>>> True
>>> False
질문 #4. 리스트에서 음수 인덱스를 사용하면 어떻게 되나요?
- 음수 인덱스를 사용하면 가장 오른쪽 데이터를 기준으로 -1이 첫 번째 데이터 이며, 오른쪽부터 검색을 시작합니다.
질문 #5. 변수나 함수 같은 식별자 길이의 제한이 있나요?
- 공식 파이썬 문서에서는 제한이 없다고 나와 있습니다. 하지만 PEP-8 가이드라인은 한줄 최대 79자를, PEP-20은 가독성이 중요하다고 표현하고 있습니다. 그래서 너무 긴 식별자는 PEP-8과 PEP-20을 위반합니다.
질문 #6. pass와 continue의 차이는 무엇인가요?
- 파이썬은 함수등을 작성할때 반드시 무언가를 써야 문법적으로 올바르기 때문에, pass를 사용하여 문법 오류를 막을 수 있습니다. continue는 반복문에서 해당 반복문을 해당 위치에서 더이상 진행하지 말고 다음 이터레이션으로 넘어가게 하는 것 입니다.
질문 #7. 파이썬에게 어떤 약점이 있나요?
- 파이썬은 인터프리터 언어로 속도의 약점이 있습니다.
- 파이썬은 많은 것을 할 수 있지만, 모바일 컴퓨팅에 약점이 있고 브라우저안에서 JavaScript 처럼 객체를 다룰 수 없습니다.
- 동적타이핑 언어이기 때문에 덕타이핑(Duck-typing)을 사용합니다. 여기서 런타임 에러가 발생할 수 있습니다.
질문 #7. 파이썬에서 현재 작업중인 디렉토리를 확인하는 방법이 무엇인가요?
- os 모듈안에 getcwd(get current working directory) 메소드를 사용하면 됩니다.
확인코드:
import os
print(os.getcwd())
>>> C:\Users\abc\PycharmProjects\abc
질문 #8. 파이썬 빌트인 함수에 대해 아는대로 말해보세요.
- complex()
- eval()
- filter()
- format()
- hash()
- hex()
- len()
- open()
- min()
- max()
- abs()
- sum()
...
확인코드:
print('complex() :', complex(10.5, 20)) # 복소수를 만들어 냅니다
eval("print('eval() :', 'abc')") # string으로 된 파이썬 코드를 실행 시킵니다.
print("filter() :", list(filter(lambda x : x % 2 == 0, [1, 2, 0, 4]))) # 조건문에 부합하면 제외
print("format() : ", 'Hello {}'.format('딩그르르!')) # {} 안에 문자열 삽입
print("hash() : ", hash('abc')) # 해시 함수 안 객체를 해시 합니다.
print("hex() :", hex(14)) # 16진수로 변경
print("len() : ", len("ABC")) # 문자열, 컨테이너 객체 길이(갯수)
txt = open('txt.txt') # 파일을 엽니다.
l = [1, 34, 7, 4, 3, 5, 2]
print('min() : ', min(l)) # 최소값 찾기
print('max() : ', max(l)) # 최대값 찾기
print('abs() : ', abs(-13)) # 절대값 찾기
print('sum() : ', sum(l)) # 리스트 데이터 모두의 합
complex() : (10.5+20j)
eval() : abc
filter() : [2, 0, 4]
format() : Hello 딩그르르!
hash() : -3303280273215439683
hex() : 0xe
len() : 3
min() : 1
max() : 34
abs() : 13
sum() : 56
질문 #9. 리스트에서 중복값을 제외 하려면 어떻게 해야 하나요.
- 리스트를 set으로 변경하면 됩니다.
확인코드:
l = [ 12, 343, 65, 87, 123, 1, 1, 12, 87]
print(l)
print(set(l))
>>> [12, 343, 65, 87, 123, 1, 1, 12, 87]
>>> {65, 1, 12, 87, 123, 343}
질문 #10. 오퍼레이터중 //, % , ** 에 대해 설명하세요.
- // 는 나눗셈 후 내림한 정수를 반환합니다.
- %는 나눗셈 후 나머지를 반환합니다.
- **는 제곱값을 반환합니다. 2**3은 2의 3승(세제곱) 입니다.
확인코드:
print(11//2)
print(11%2)
print(2**4)
>>> 5
>>> 1
>>> 16
질문 #11. 컴파일 언어와 인터프리터 언어의 차이점에 대해 설명하세요.
컴파일된 언어는 컴파일러를 통해 구현되며 소스 코드를 기계어로 바꾸는 과정을 사전에 처리 하여 빠르게 컴퓨터에서 구동될 수 있도록 한 방법 이며, 인터프리터 언어는 대부분 소스코드를 기계어로 컴파일하지 않고 인터프리터를 통해 소스코드 실행시 각 스테이트먼트(소스코드 구문)를 하나 이상의 서브루틴 순서로 변환한 후, 기계어나 바이트코드등 다른 언어로 변환되어 구현됩니다.
질문 #12. 파이썬에는 .pyc 파일이 있습니다. .py 파일과의 차이점을 설명하세요.
두 파일 모두 바이트코드를 가지고 있지만 .pyc는 .py 파일의 컴파일된 버전입니다. 플랫폼에 독립적인 바이트코드를 가지고 있습니다. 따라서, 우리는 .pyc 형식을 지원하는 어떤 플랫폼에서도 그것을 실행할 수 있으며, Python은 성능을 향상시키기 위해 자동으로 .pyc 파일을 생성합니다. .pyc 파일은 PVM(Python Virtual Machine)에 의해 실행되고, 지워도 되지만, 성능 저하가 생길 수 있습니다.
질문#13. 파이썬은 객체지향 입니까? 왜 그렇습니까?
파이썬은 객체 지향 프로그래밍 패러다임을 따르고 있습니다. 객체 지향 패러다임은 클래스와 인스턴스를 중심으로 돌아갑니다.
객체지향 프로그래밍 패러타임의 기능
- 캡슐화(Encapsulation)
- 추상화(Abstraction)
- 상속(Inheritance)
- 다형성(Polymorphism)
- 데이터 숨기기(Data Hiding)
데이터 숨기기와 관련된 추가 질문이 있을 수 있습니다.
데이터 숨기기는 클래스 구현의 자세한 사항을 숨기여 합니다. 클래스를 사용함에 있어 명확한 표준 인터페이스 제공을 위함입니다.
하지만, 다른 언어 처럼 접근 권한을 나눌 수 없는 파이썬은( Java의 private변수, public변수 처럼) 클래스 데이터의 접근하는데 제한을 두지 않습니다. 언더스코어를 사용하는 방법이 있지만, 클래스안에 메소드를 포함한 모든 데이터를 완벽하게 외부접근으로 부터 차단하는 것이 어렵습니다.
완벽하게 막을 수 없을 뿐 기본적인 감추기가 불가능 한건 아닙니다. 언더스코어를 사용하여 감추는 방법이 있습니다.
질문 #14. try... except... else 구문에서 else는 언제 실행되나요?
if..else 블록에서는 if 조건문이 False 일때 else 구문이 실행되지만, try... except... else 구문에서는 try 구문에서 exception이 생기지 않는 경우에만 else 구문이 실행 됩니다.
질문 #15. list append 와 list extend 의 차이점을 설명하세요.
list append는 객체를 해당 리스트 제일 뒤에 붙이고, list extend는 다른 리스트의 요소를 다른 리스트의 요소로 추가하여 붙이는데 사용합니다.
예제코드:
list1,list2=[1,2,3],[5,6,7,8]
list1.append(list2)
print(list1)
list1,list2=[1,2,3],[5,6,7,8]
list1.extend(list2)
print(list1)
>>> [1, 2, 3, [5, 6, 7, 8] ]
>>> [1, 2, 3, 5, 6, 7, 8]
질문 #16. Python은 open()을 통해 파일을 열 때, 파일 처리 모드를 설정합니다. 어떤 모드가 있나요?
파이썬에 파일 처리 모드 종류는 다음과 같습니다.
- 읽기 전용 – 'r'
- 쓰기 전용 – 'w'
- 읽기-쓰기 – 'rw'
- 덧붙이기 – 'a'
또한, 't' 옵션으로 텍스트 파일을 열 수 있는데요. 그래서 읽기위해 텍스트 파일을 열려면 'rt' 모드를 사용할 수 있습니다. 그리고 이진(바이너리) 파일의 경우 'b'를 사용합니다.
질문 #17. Python 에서 map() 함수는 어떤 역할을 하나요?
파이썬에서 map() 함수는 2개의 인수를 받습니다. 첫 인수는 함수이고, 두번째 인수는 이터러블(iterable - 개별 원소를 반복적으로 셀수 있는 데이터 타입 - 리스트, 튜플)을 받습니다.
이 이터러블에서 순서대로 각 요소를 해당 함수에 넣어 함수를 실행한 값을 리턴합니다.
예제 코드:
map_ = map(lambda x:x*2, (1,2,4))
for i in map_:
print(i)
print(list(map(lambda x:x*2, (1,2,4))))
>>> 2
>>> 4
>>> 8
>>> [2, 4, 8]
질문 #18. try...raise...finally 구문이 어떻게 작동하는지 설명해 주세요.
이 구문은 우리가 예외 처리를 할 때 사용하는 키워드들 입니다. 우리는 try 블록 안에 오류가 발생할 가능성이 있는 코드를 넣고, raise 구문으로 오류를 명시적으로 제기하며, 어쨌든 마지막으로 실행하고자 하는 코드를 finally 블록에 씁니다.
예제 코드:
try:
raise KeyboardInterrupt
finally:
print('Goodbye, world!')
>>> Goodbye, world!
Traceback (most recent call last):
File "python.py", line 5, in <module>
raise KeyboardInterrupt
KeyboardInterrupt
질문 #19. 파이썬에서 언더스코어(_) 는 언제 사용하나요?
파이썬에게 언더스코어는 조금 특별합니다. 인터프리터가 사용하고, 값을 무시하고 싶을때나, 변수 앞뒤에 붙여 다른 의미로 사용하기도 합니다. PEP 15에서는 숫자 리터럴의 자릿수 구분자 역할이 추가되었습니다.
질문 #20. 파이썬에서 switch... case 구문을 구현해 보았나요? 어떻게 하셨나요?
파이썬에는 사실 Switch-case 구문이 없습니다. 파이썬에서는 딕셔너리 맵핑으로 Switch-Case를 구현할 수 있으며, 더 좋은 가독성을 확보합니다.
'ETC' 카테고리의 다른 글
FRONTEND - CSS 면접 질문 (0) | 2022.02.10 |
---|---|
프론트엔드 개발자 면접 질문 (0) | 2022.02.10 |
신입 웹개발자(백엔드) 면접 질문 - DB (0) | 2022.02.10 |
개발자 면접 시나리오 (0) | 2022.02.10 |
신입 웹개발자(백엔드) 면접 질문 (0) | 2022.02.10 |