[PYTHON] Python 면접 예제 2편


1편에 이어서 2번째 편을 진행하겠습니다. 

사실 Junior 개발자들과  Intermediate 개발자들은 전부 알고는 있을수 있습니다. 코드로 물어보고 코드로 답하라고 하면 더 편하게 하시겠지만, 중급 개발자 분들은 아무것도 모르는 Junior들에게 말로도 잘 설명할 줄 아는 커뮤니케이션 스킬도 필요합니다. 알고 있는 것과 말로 다시 풀어서 할 수 있는 것은 다릅니다.


제가 예전에 한국계 일본 메신저 기업에 면접을 볼때 면접관이 저에게 한 말이 있습니다. 

"저는 리드 개발자입니다. 하지만 이 면접에서 만큼은  아무 것도 모른다고 가정하겠습니다. 저를 디자이너 출신 기획자라고 생각하고 답변해주세요. 당신은 수많은 개발자들과 협업을 할텐데, 그렇게 되면 당신의 커뮤니케이션 능력 역시 우리게엔 중요합니다."





질문 #11. 컴파일 언어와 인터프리터 언어의 차이점에 대해 설명하세요.

컴파일된 언어는 컴파일러를 통해 구현되며 소스 코드를 기계어로 바꾸는 과정을 사전에 처리 하여 빠르게 컴퓨터에서 구동될 수 있도록 한 방법 이며, 인터프리터 언어는 대부분 소스코드를 기계어로 컴파일하지 않고 인터프리터를 통해 소스코드 실행시 각 스테이트먼트(소스코드 구문)를 하나 이상의 서브루틴 순서로 변환한 후, 기계어나 바이트코드등 다른 언어로 변환되어 구현됩니다.

딩그르르의 다른 포스트 : Compiled VS Interpreted 언어 차이 자세히 읽기



질문 #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를 구현할 수 있으며, 더 좋은 가독성을 확보합니다.

딩그르르의 다른 포스트: 왜 파이썬에는 Switch-case가 없는가 를 설명한 글 읽기


  • [[a.original_name]] ([[a.file_size | fileSizer]])
'파이썬 면접문제 모음' 시리즈 포스트
[PYTHON] Python 면접 예제 1편
2020-03-11
[PYTHON] Python 면접 예제 2편
2020-03-14
좋아요[[ postLike | likePlus ]]
공유
라이언

“Lead Python Engineer”

댓글 [[totalCommentCount]]
[[ comment.author__nick_name ]] [[ comment.datetime_updated | formatDate]] (수정됨)

[블라인드 처리된 글 입니다.]

답장
[[ sub.author__nick_name ]] [[ sub.datetime_created | formatDate ]] (수정됨)

취소
댓글을 남겨주세요.
'파이썬' 관련 최신 포스트
[[ post.title ]]
[[ post.datetime_published_from | DateOnly ]]