코딩일기

[Python] AI 면접 예상 질문 정리(ver. 2, 2021.06.08 updated) 본문

Code/기타

[Python] AI 면접 예상 질문 정리(ver. 2, 2021.06.08 updated)

daje 2021. 5. 6. 19:56
728x90
반응형

 

 

 

 

 

안녕하십니까 다제입니다. 

 

벌써 빅데이터 관련하여 학습을 진행한지 5개월이 되어갑니다. 

 

2021년 07월 교육이 수료됨에 따라 이제 슬슬 코딩테스트와 면접에 대해서 준비를 해야할 거 같습니다. 

 

특히 이 두 가지는 꾸준히 하는게 중요하다는 생각이 들어서 이렇게 포스팅하며 학습할까 합니다. 

 

 

 

오늘은 파이썬 기초 개념에 대한 면접 질문들로 준비를 해보았습니다. 

 

여러분께서도 직접 말로 설명을 해보시고, 아래 답을 확인하시면서 부족한 개념을 체크하는 식으로 공부하시면 좋을 것 같습니다. 

 

제가 설명한 것보다 더 깔끔하게 설명될 수 있는 부분은 댓글 달아주시면 저도 수정하며 성장할 수 있을듯 합니다. 

 

여러분과 함께 면접 예상 질문을 완성해보고자 합니다. 함께 하시죠!

 

 

 


 

 

 

1. 함수에 대해서 설명하세요, 함수를 왜 사용할까요?

 

2. 반복문에 대해서 설명하세요

 

3. 조건문에 대해서 설명하세요

 

4. collection 자료형에 대해서 설명하세요

 

5. 정규표현식에 대해서 설명하세요

 

6. 얕은 복사와 깊은 복사에 대해서 설명하세요

 

7. 지역변수와 전역변수에 대해서 설명해주세요 

 

8. a ==c, a is c의 차이에 대해서 설명하세요

 

9. 아래 코드를 실행하면 [11, 43, 6]이 출력됩니다. 왜 6이 출력되는지 설명하세요 

list1 = [11, 12, 43, 4, 6]
for i in list1: 
    print(list1.index)
    if not i % 2:
        list1.remove(i)
print(list1)

 

 

10. 트리복잡도를 줄이기 위해 사용되는 파라미터들에 대해 설명해주세요

 

11. 결정트리가 선형모델과 다른 점에 대해서 설명해주세요 

 

12. Ordinal Encoding과 OneHotEncoding는 언제 사용해야할까요? 어떠한 특징들이 있나요?

 

13. Decision Tree와 Random Forests에 대해서 설명해주세요

 

14. 배깅에 대해서 설명해주세요

 

15. OOB(Out-of-Bag) Sample은 무엇이고, 무슨 역할을 하는지 설명해주세요

 

16. HOLD-OUT의 문제점과 CROSS VALIDATION에 대해서 설명해주세요

 

17. 시계열 데이터를 CROSS VALIDATION을 통해 분석을 진행하였습니다. 어떠한 문제가 발생될 수 있나요?

 

 


 

 

 

1. 함수에 대해서 설명하세요, 함수를 왜 사용할까요?

 -. 하나의 특별한 목적의 작업을 숭해하기 위해 독립적으로 설계된 코드의 집합 

 -. 이렇게 간단한 예시를 들면 더 좋겠죠?

def plus_func(a,b):
	c = a + b
    return c

 

 

2. 반복문에 대해서 설명하세요

 -. 반복문은 실행할 범위와 실행해야하는 명령어를 함께 전달하여 실행할 범위만큼 명령어를 반복적으로 실행하는 명령문입니다. 

 -. 반목문에는 크게 for문과 while로 구분될 수 있습니다. 

 -. while은 특정한 조건이 만족할 때까지 반복적으로 실행이되며, for문은 정해진 범위만큼 실행이 됩니다. 

 -. while은 특정한 조건이 만족될 때까지 실행이 되기 때문에 무한 루프에 빠지게 쉽다는 단점도 있습니다. 

 

 

3. 조건문에 대해서 설명하세요

 -. 조건문은 특정한 조건을 만족하였을 경우에만 코드가 실행되는 명령어 있다. 

 -. 대표적인 명령어로는 if, elif, else가 있다. 

 -. 조건에는 논리연산자와 == 등이 함께 사용되어 여러 조건을 구성할 수 있다. 

 -. 여기서 논리연산자의 우선순위는 not > and > or 순으로 작동하게 된다. 

 -. 또한, None, 공백('', ""), 0, []/{}/()는 False로 파이썬에서 인식하니 조건을 작성할 때 주의하여야 한다. 

 

 

4. collection 자료형에 대해서 설명하세요

 -. 출처 : 링크참조

 -. 어느 블로거님께서 잘 정리해주신 내용이 있어서 표로 가져왔습니다. 

 -. 이에, 상세한 내용은 위 링크를 참조하시어 정리하시면 좋을 것 같습니다. 

Collection Mutable Ordered  Duplication  Notation  Description Empty Collection
string no yes yes [ ] "simple string" s = '' or s = ""
list yes yes yes [ ] [ ["item0_0", 12 ], ["item1_0", 22 ] ] l = []
tuple no yes yes ( ) ( ["item0_0", 12 ], ["item1_0", 22 ] ) t = ()
set yes no no { } { 1, 2, 3, 4, 5 } S = set()
dictionary yes no no { } { 'one' : 1, 'two' : 2, 'three' : 3 } d = {}

 

 

5. 정규표현식에 대해서 설명하세요

 -. 우리가 받아온 데이터에서 특정한 패턴을 지정하여 우리가 원하는 데이터를 일괄적으로 찾을 수 있도록 도와주는 라이브러리 입니다. 

 

 

6. 얕은 복사(copy())와 깊은 복사(deep.copy())에 대해서 설명하세요

 -. 얕은 복사는 동일한 메모리에 값이 저장되나, 깊은 복사는 다른 메모리에 값이 저장이 됩니다.

 -. 이에, 얕은 복사의 경우, 복사한 데이터의 값을 바꾼다면 원본 데이터도 변경이 됩니다. 

a = [1,2,3,4,5]
b = a.copy()
print(b) 
# 출력값 : [1,2,3,4,5]


b.append(6)
print(b)
# 출력값 : [1,2,3,4,5,6]
print(a)
# 출력값 : [1,2,3,4,5,6]

 -. 그러나, 깊은 복사의 경우 복사한 데이터의 값을 바꾸더라도 원본 데이터의 값은 변경되지 않습니다. 

a = [1,2,3,4,5]
b = a.deepcopy()
print(b) 
# 출력값 : [1,2,3,4,5]


b.append(6)
print(b)
# 출력값 : [1,2,3,4,5,6]
print(a)
# 출력값 : [1,2,3,4,5]

 

 

7. 지역변수와 전역변수에 대해서 설명해주세요 

 -. 지역변수는 함수내에서 실행되는 변수이고 전역변수는 파일 전체에서 사용될 수 있는 변수입니다. 

 -. 전역변수는 지역변수로 받아올 수 있으나, 지역변수는 함수 밖에서 사용할 수 없다는 특징이 있습니다. 

 

 

8. a ==c, a is c의 차이에 대해서 설명하세요

 -. == 는 a와 c에 데이터의 값이 같은지를 확인합니다. 

 -. is는 a와 c의 메모리 값이 같은지를 확인합니다. 

 

 

9. 아래 코드를 실행하면 [11, 43, 6]이 출력됩니다. 왜 6이 출력되는지 설명하세요

list1 = [11, 12, 43, 4, 6]
for i in list1: 
    print(list1.index)
    if not i % 2:
        list1.remove(i)
print(list1)

 -. remove가 되면서 인덱스의 값이 줄어들게 됩니다. 

 -. 이에, 인덱스가 5에서 4로 줄어들게 되고, 6까지 for문이 돌지 않게 됩니다. 

 -. 그래서 [11, 43, 6]이 출력이 됩니다. 

 

10. 트리복잡도를 줄이기 위해 사용되는 파라미터들에 대해 설명해주세요

 -. min_Sample_split, min_Sample_leaf, max_depth에 대해서 설명하셨으면 됩니다. 

 

11. 결정트리가 선형모델과 다른 점에 대해서 설명해주세요 

 

12. Ordinal Encoding과 OneHotEncoding는 언제 사용해야할까요? 어떠한 특징들이 있나요?

순서형 인코딩은 범주에 숫자를 맵핑합니다. ['a', 'b', 'c'] 세 범주가 있다면 이것을 -> [1, 2, 3] 이렇게 숫자로 인코딩 합니다. 트리구조 학습에서는 원핫인코딩을 사용하면 문제가 있습니다.

트리구조에서는 중요한 특성이 상위노드에서 먼저 분할이 일어납니다. 그래서 범주 종류가 많은(high cardinality) 특성은 원핫인코딩으로 인해 상위노드에서 선택될 기회가 적어집니다.

그래서 원핫인코딩 영향을 안 받는 수치형 특성이 상위노드를 차지할 기회가 높아지고 전체적인 성능 저하가 생길 수 있습니다.

 

13. Decision Tree와 Random Forests에 대해서 설명해주세요

 -. Decision Tree 데이터에 대해 맞추서 분류를 진행하기 때문에 과적합이 자주 일어나게 된다. 

 -. 이를 개선하기 위해 2001년 앙상블 기법이 고안되었고, 그 중 Random Forest라는 방법이 나오게 되었다. 

 -. Random Forest는 다수의 결정 트리를 랜덤하게 학습시켜 분류, 회귀 문제를 풀 수 있으며, 각각의 결정 트리는 독립적으로 학습하기 때문에 학습과정이 병렬적으로 진행이 된다. 

 

  • 결정트리에서 분할을 위한 특성을 선택할 때, 모든 특성(n개)을 고려하여 최적의 특성을 고르고 분할하였습니다.
  • 하지만 랜덤포레스트에서는 특성 n개 중 일부분 k개의 특성을 선택(sampling) 하고 이 k개에서 최적의 특성을 찾아내어 분할합니다. 이때 k개는 일반적으로 log2n 를 사용합니다.

 

14. 배깅에 대해서 설명해주세요

 

15. OOB(Out-of-Bag) Sample은 무엇이고, 무슨 역할을 하는지 설명해주세요

 


 

 

 

위와 같이 기초 개념에 대해서 알아보았습니다. 

 

앞으로도 좋은 질문이 있다면 해당 블로그에 업데이트하여 정리할 예정이오니 많은 관심 부탁드립니다. 

 

감사합니다. 오늘도 빡공!

728x90
반응형
Comments