제퍼넷 로고

주요 Python 데이터 과학 인터뷰 질문

시간

주요 Python 데이터 과학 인터뷰 질문

반드시 알아야 할 XNUMX가지 기술 개념과 이를 테스트하기 위한 XNUMX가지 유형의 질문.


By 네이트 로시디, 데이터 과학자 및 제품 관리자

그림
님이 촬영 한 사진 JESHOOTS.COM on Unsplash

 

데이터 과학 분야에서 경력을 쌓고 싶다면 Python을 아는 것이 필수입니다. Python은 특히 기계 학습 및 인공 지능과 관련하여 데이터 과학에서 가장 널리 사용되는 프로그래밍 언어입니다.

데이터 과학 경력에 도움이 되도록 데이터 과학 인터뷰에서 테스트한 주요 Python 개념을 준비했습니다. 나중에 데이터 과학자로서 알아야 하는 개념을 다루는 두 가지 주요 면접 질문 유형에 대해 설명하겠습니다. 또한 몇 가지 예시 질문을 보여주고 올바른 방향으로 나아갈 수 있는 솔루션을 제공합니다.

Python 인터뷰 질문의 기술적 개념

 
이 가이드는 회사에 한정되지 않습니다. 따라서 데이터 과학 인터뷰가 준비되어 있는 경우 이 가이드를 인터뷰에서 나올 수 있는 시작점으로 사용하는 것이 좋습니다. 또한 회사 고유의 질문을 찾아서 해결하려고 노력해야 합니다. 일반적인 개념을 알고 실생활 질문에 대해 연습하는 것은 성공적인 조합입니다.

나는 이론적인 질문으로 당신을 괴롭히지 않을 것입니다. 그들은 인터뷰에서 나올 수 있지만 코딩 질문에서 발견된 기술적 개념도 다루고 있습니다. 결국 내가 이야기할 개념을 사용하는 방법을 알고 있다면 설명하는 방법도 알고 있을 것입니다.

데이터 과학 면접에서 테스트한 기술 Python 개념은 다음과 같습니다.

  1. 자료형
  2. 내장 데이터 구조
  3. 사용자 정의 데이터 구조
  4. 내장 기능
  5. 루프 및 조건
  6. 외부 라이브러리(Pandas)

1. 데이터 유형

 
데이터 유형은 친숙해야 하는 개념입니다. 즉, Python에서 가장 일반적으로 사용되는 데이터 유형, 이들 간의 차이점, 사용 시기 및 방법을 알아야 합니다. 정수(int), 부동 소수점(float), 복합(complex), 문자열(str), 부울(bool), null 값(없음)과 같은 데이터 유형입니다.

2. 내장 데이터 구조

 
이들은 목록, 사전, 튜플 및 집합입니다. 이 네 가지 기본 제공 데이터 구조를 알면 더 쉽게 액세스하고 수정할 수 있는 방식으로 데이터를 구성하고 저장하는 데 도움이 됩니다.

3. 사용자 정의 데이터 구조

 
기본 제공 데이터 구조를 사용하는 것 외에도 일부 사용자 정의 데이터 구조를 정의하고 사용할 수 있어야 합니다. 배열, 스택, 대기열, 트리, 연결 목록, 그래프, HashMaps입니다.

4. 내장 기능

 
파이썬에는 60개 이상의 내장 함수가 있습니다. 물론 전부 알 필요는 없지만 가능한 한 많이 아는 것이 좋습니다. 피할 수 없는 내장 함수는 abs(), isinstance(), len(), list(), min(), max(), pow(), range(), round(), split()입니다. , 정렬(), 유형().

5. 루프와 조건부

 
루프는 한 코드 조각을 반복해서 수행하는 반복 작업에 사용됩니다. 그들은 조건부(참/거짓 테스트)가 중지하라고 말할 때까지 그렇게 합니다.

6. 외부 라이브러리(Pandas)

 
여러 외부 라이브러리가 사용되지만 Pandas가 가장 많이 사용됩니다. 재무, 사회 과학, 통계 및 공학 분야의 실용적인 데이터 분석을 위해 설계되었습니다.

Python 인터뷰 질문 유형

 
이 여섯 가지 기술 개념은 모두 주로 두 가지 유형의 인터뷰 질문으로만 테스트됩니다. 사람들은:

  1. 데이터 조작 및 분석
  2. 알고리즘

각각을 자세히 살펴 보겠습니다.

1. 데이터 조작 및 분석

 
이러한 질문은 ETL(데이터 추출, 변환 및 로드) 문제를 해결하고 일부 데이터 분석을 수행하여 위의 기술 개념을 테스트하도록 설계되었습니다.

여기에 그러한 것이 있습니다. 페이스북의 예:

문제: Facebook은 사용자가 로그인을 위해 플랫폼에 2FA(2단계 인증)를 시도할 때 SMS 문자를 보냅니다. 성공적으로 2FA를 수행하려면 SMS 문자 메시지를 받았는지 확인해야 합니다. 확인 문자는 보낸 날짜에만 유효합니다. 안타깝게도 'fb_sms_sends' 테이블에 저장되는 로그에 친구 요청 및 잘못된 확인 레코드가 삽입되는 데이터베이스에 ETL 문제가 있었습니다. 이러한 메시지 유형은 테이블에 있으면 안 됩니다. 다행히 'fb_confirmers' 테이블에는 유효한 확인 레코드가 포함되어 있으므로 이 테이블을 사용하여 사용자가 확인한 SMS 문자 메시지를 식별할 수 있습니다.

4년 2020월 XNUMX일에 확인된 SMS 텍스트의 비율을 계산합니다.

대답: 

pd로 pandas 가져오기 np로 numpy 가져오기 df = fb_sms_sends[["ds","type","phone_number"]] df1 = df[df["type"].isin(['confirmation','friend_request']) = = False] df1_grouped = df1.groupby('ds')['phone_number'].count().reset_index(name='count') df1_grouped_0804 = df1_grouped[df1_grouped['ds']=='08-04-2020' ] df2 = fb_confirmers[["date","phone_number"]] df3 = pd.merge(df1,df2, how ='left',left_on =["phone_number","ds"], right_on = ["phone_number", "date"]) df3_grouped = df3.groupby('date')['phone_number'].count().reset_index(name='confirmed_count') df3_grouped_0804 = df3_grouped[df3_grouped['date']=='08-04- 2020'] 결과 = (float(df3_grouped_0804['confirmed_count'])/df1_grouped_0804['count'])*100


데이터 분석 기술을 테스트하기 위해 묻는 질문 중 하나는 Dropbox에서 가져온 것입니다.:

문제: 마케팅 부서와 엔지니어링 부서에서 찾은 최고 급여 간의 차이를 계산하는 쿼리를 작성하십시오. 급여의 차액만 출력합니다.

대답: 

pd로 import pandas import numpy as np df = pd.merge(db_employee, db_dept, how = 'left',left_on = ['department_id'], right_on=['id']) df1=df[df["department"] =='엔지니어링'] df_eng = df1.groupby('부서')['급여'].max().reset_index(name='eng_salary') df2=df[df["부서"]=='마케팅'] df_mkt = df2.groupby('부서')['급여'].max().reset_index(name='mkt_salary') 결과 = pd.DataFrame(df_mkt['mkt_salary'] - df_eng['eng_salary']) 결과. 열 = ['salary_difference'] 결과


2. 알고리즘

 
Python 알고리즘 인터뷰 질문에 관해서는 알고리즘을 사용하여 문제 해결을 테스트합니다. 알고리즘은 단 하나의 프로그래밍 언어로 제한되지 않기 때문에 이러한 질문은 Python으로 코딩하는 것뿐만 아니라 논리와 사고를 테스트합니다.

예를 들어 다음을 얻을 수 있습니다. 이 질문:

문제: 2-9까지의 숫자를 포함하는 문자열이 주어지면 숫자가 나타낼 수 있는 모든 가능한 문자 조합을 반환합니다. 순서에 관계없이 답변을 반환합니다.

숫자와 문자의 매핑(전화 버튼과 동일)이 아래에 나와 있습니다. 1은 어떤 문자에도 매핑되지 않습니다.

대답:

class Solution: def letterCombinations(self, digits: str) -> List[str]: # 입력이 비어 있으면 즉시 빈 응답 배열을 반환 if len(digits) == 0: return [] # 모든 숫자를 다음에 매핑 해당 문자 = {"2": "abc", "3": "def", "4": "ghi", "5": "jkl", "6": "mno", "7": "pqrs", "8": "tuv", "9": "wxyz"} def backtrack(index, path): # 경로가 숫자와 같은 길이이면 완전한 조합이 됩니다 if len(path) = = len(digits): combination.append("".join(path)) return # Backtrack # 현재 숫자가 매핑되는 문자를 가져오고 루프를 통해 possible_letters = letters[digits[index]] for letter in possible_letters: # 현재 경로에 문자를 추가합니다. path.append(letter) # 다음 숫자로 이동합니다. backtrack(index + 1, path) # 다음 경로로 이동하기 전에 문자를 제거하여 역추적합니다.pop() # 빈 경로 및 0 조합의 시작 인덱스 = [] backtrack(0, []) 반환 조합


또는 더 어려워질 수 있습니다. 다음 질문:

문제: “빈 셀을 채워서 스도쿠 퍼즐을 푸는 프로그램을 작성하세요. 스도쿠 솔루션은 다음 규칙을 모두 충족해야 합니다.

  1. 각 숫자 1-9는 각 행에서 정확히 한 번만 나타나야 합니다.
  2. 각 숫자 1-9는 각 열에서 정확히 한 번만 나타나야 합니다.
  3. 각 숫자 1-9는 그리드의 9개의 3×3 하위 상자 각각에서 정확히 한 번씩 나타나야 합니다.

'.' 문자는 빈 셀을 나타냅니다.”

대답:

from collections import defaultdict class Solution: def solveSudoku(self, board): """ :type board: List[List[str]] :rtype: void 아무 것도 반환하지 말고 대신 보드를 제자리에서 수정하십시오. """ def could_place (d, row, col): """ (row, col) 셀에 숫자 d를 넣을 수 있는지 확인합니다. """ return not (d in rows[row] 또는 d in columns[col] 또는 d in boxes[ box_index(row, col)]) def place_number(d, row, col): """ (row, col) 셀에 숫자 d 배치 """ rows[row][d] += 1 columns[col][ d] += 1 boxes[box_index(row, col)][d] += 1 board[row][col] = str(d) def remove_number(d, row, col): """ 제거하지 않은 숫자 솔루션 """ del rows[row][d] del columns[col][d] del boxes[box_index(row, col)][d] board[row][col] = '.' def place_next_numbers(row, col): """ 해를 찾을 때까지 숫자를 계속 배치하기 위해 재귀에서 역추적 함수를 호출합니다. """ # if we're in the last cell # that means we have the solution if col = = N - 1 and row == N - 1: nonlocal sudoku_solved sudoku_solved = True #if not yet else: # 행의 끝에 있는 경우 # 다음 행으로 이동 if col == N - 1: backtrack( row + 1, 0) # 다음 열로 이동 else: backtrack(row, col + 1) def backtrack(row = 0, col = 0): """ Backtracking """ # 셀이 비어 있는 경우 if board[ row][col] == '.': # 범위(1, 9)의 d에 대해 1에서 10까지의 모든 숫자를 반복합니다: if could_place(d, row, col): place_number(d, row, col) place_next_numbers( row, col) # 스도쿠가 해결되면 역추적할 필요가 없습니다. # 단일 고유 솔루션이 약속되기 때문입니다. # 행 크기 N = n * n # 상자 인덱스를 계산하는 람다 함수 box_index = 람다 행, col: (row // n ) * n + col // n # 행, 열 및 상자 초기화 rows = [defaultdict(int) for i in range(N)] columns = [defaultdict(int) for i in range(N)] boxes = [defaultdict(int) for i in range(N)] for i in range(N): for j in range( N): if board[i][j] != '.': d = int(board[i][j]) place_number(d, i, j) sudoku_solved = False backtrack()


이것은 상당히 복잡한 알고리즘이 될 것이며 해결 방법을 안다면 도움이 될 것입니다!

결론

 
데이터 사이언스 인터뷰의 경우, 제가 언급한 XNUMX가지 기술 개념은 필수입니다. 물론 Python에 더 깊이 들어가 지식을 넓히는 것이 좋습니다. 이론적으로 뿐만 아니라 데이터 조작 및 분석과 알고리즘 문제를 모두 최대한 많이 풀면서 실습합니다.

첫 번째로 많은 예제가 있습니다. 스트라타스크래치. 지원한 회사에서 질문을 찾을 수 있을 것입니다. 그리고 리트코드 인터뷰 전에 Python 알고리즘 작성을 연습하기로 결정한 경우 좋은 선택입니다.

데이터 과학에 관한 다른 기사 읽기 SQL 면접 질문 및 답변가장 일반적인 데이터 과학 인터뷰 질문!

 
바이오 : 네이트 로시디 데이터 과학자 및 제품 관리자입니다.

실물. 허가를 받아 다시 게시했습니다.

관련 :


PlatoAi. Web3 재창조. 데이터 인텔리전스 증폭.
액세스하려면 여기를 클릭하십시오.

출처: https://www.kdnuggets.com/2021/07/top-python-data-science-interview-questions.html

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?