제퍼넷 로고

데이터 과학 코딩 인터뷰 질문에 답하는 방법

시간

데이터 과학 코딩 인터뷰 질문에 답하는 방법


 

데이터 과학 코딩 인터뷰 질문에 어떻게 대답해야 하는지에 대한 레시피는 없습니다. 항상 작동하는 접근 방식은 없습니다. 그러나 대부분의 경우 코딩 질문에 더 잘 답하는 데 도움이 되는 몇 가지 기본 원칙이 있습니다.

이 가이드라인은 면접을 보고 코딩 질문에 답한 경험을 토대로 작성되었습니다. 우리는 이 지침을 네 부분으로 나누었습니다. 특히 경험이 없는 경우 이 지침을 체크리스트로 사용할 수 있습니다. 데이터 과학 코딩 면접 질문. 물론 나중에는 자신만의 접근 방식을 찾을 수도 있고, 일부 요점을 무시하거나 더 잘 맞는 것을 포함할 수도 있습니다.

그러나 경험에 관계없이 이 체크리스트를 따르면 코딩 질문에 대한 훌륭한 답변을 제공할 가능성이 높아집니다.

네 부분으로 된 체크리스트

 
이 체크리스트의 네 부분은 다음과 같습니다.

  1. 질문 분석
  2. 솔루션에 대한 접근
  3. 코드 작성
  4. 코드 검토

이제 체크리스트 개요가 생겼으므로 모든 섹션을 살펴보고 여기에 포함된 체크리스트 요점을 설명하겠습니다.

1. 질문 분석

 
체크리스트의 질문 분석 부분은 몇 분 정도 시간을 내어 방금 받은 질문에 대해 철저하게 생각하는 방법을 다룹니다. 실제 비즈니스 문제를 다룰 때 알 수 있듯이 항상 문제에 대해 먼저 생각하고 모든 관점에서 문제를 볼 시간을 "잃는" 것이 좋습니다. 생각하는 것은 결코 시간 낭비가 아님을 기억하십시오!

이 몇 분은 나중에 갚을 것입니다. 즉시 솔루션 작성으로 넘어가면 접근 방식이 원하는 솔루션으로 이어지지 않는다는 것을 깨달았을 때 처음부터 다시 시작해야 할 가능성이 높습니다. 또는 지속적으로 코드를 변경하고 다시 작성해야 합니다.

문제에 대해 생각하는 연습을 하는 데 도움이 되는 요점은 다음과 같습니다.

  1. 질문 이해하기
  2. 작업 중인 테이블 및 데이터 분석
  3. 코드 결과에 대해 생각하기

나. 질문 이해

질문을 확실히 이해하려면 질문을 매우 주의 깊게 읽어야 합니다. 천천히 읽어보세요. 그리고 놓치는 부분이 없는지 2~3번 정도 읽어보세요. 이것은 모두에게 적용됩니다 데이터 과학 면접 질문, 그들이 아무리 쉽고 어렵더라도. 요점은 당신이 받은 질문이 어려운지 쉬운지 알 수 없다는 것입니다. 일부 질문은 믿을 수 없을 정도로 단순해 보일 수 있지만 충분히 철저하지 않고 피상적인 경향이 있는 후보자를 제거하기 위해 정확히 거기에 있는 몇 가지 캐치가 있습니다.

질문이 작성되지 않은 경우, 파악하지 못한 내용이 있으면 면접관에게 다시 질문해 달라고 자유롭게 요청하십시오. 이 경우 질문을 이해하고 나면 면접관에게 다시 반복하는 것이 좋습니다. 그렇게 하면 모든 것이 제대로 되었는지 확인하고 면접관이 필요한 모든 정보를 제공하지 않은 경우 면접관이 스스로 수정하도록 할 수 있습니다.

ii. 작업 중인 테이블 및 데이터 분석

질문을 이해했다면 다음 논리적 단계는 주어진 테이블을 분석하는 것입니다. 즉, 얼마나 많은 테이블이 있고 어떻게 서로 연결되어 있는지(외래 키와 기본 키) 분석해야 합니다.

또한 이 테이블에 어떤 데이터가 있는지 확인하고 싶을 것입니다. 각 테이블에 어떤 열이 있는지 의미합니다. 모든 열에 있는 데이터 유형. 이는 코드가 문자열 데이터, 정수, 돈 또는 기타 데이터 유형을 처리하는지 여부에 따라 달라지기 때문에 중요합니다. 원하는 결과를 얻으려면 한 데이터 유형을 다른 데이터 유형으로 변환해야 할 수도 있습니다.

데이터 유형 외에도 데이터가 구성, 정렬 및 세분화되는 방식을 이해하는 것도 중요합니다. 의미, 테이블에 중복 값이 ​​있습니까? 데이터가 고객 수준, 거래 수준 등으로 표시됩니까?

iii. 코드 결과에 대해 생각하기

코딩을 시작하기 전에 결과가 어떻게 생겼는지 알아야 합니다. 물론 이것은 답변하려는 질문에 따라 다릅니다.

그러나 결과 문학적 의미에 대해 생각하면 한 줄에 하나의 값만 또는 여러 열이 있는 표가 될 것입니다. 테이블인 경우 데이터를 집계하고 정렬하는 방법, 표시해야 하는 열 수 등에 대해 다시 생각해야 합니다.

 
질문 분석 – 예

이 체크리스트의 첫 번째 섹션을 어떻게 적용해야 하는지 보여주기 위해 Dropbox 코딩 질문을 사용하겠습니다. 질문은 다음과 같습니다.

데이터 과학 코딩 인터뷰 질문에 답하는 방법


 

“마케팅 부서와 엔지니어링 부서에서 볼 수 있는 가장 높은 급여의 차이를 계산하는 쿼리를 작성하십시오. 급여 차액만 출력하세요.”

질문 링크: https://platform.stratascratch.com/coding/10308-salaries-differences

질문을 주의 깊게 읽으면 가장 높은 급여를 찾아야 한다는 것을 알게 될 것입니다. 좋습니다. 하지만 모든 부서에서 가장 높은 급여는 아니지만 마케팅과 엔지니어링의 두 부서에서만. 이 두 부서에서 가장 높은 급여를 찾으면 두 부서의 차이를 계산해야 합니다.

이제 질문을 이해했으므로 테이블과 그 안의 데이터를 분석할 수 있습니다. 작업할 테이블은 db_employee 및 db_dept입니다. db_employee 테이블에는 회사 직원에 대한 데이터가 포함되어 있습니다. XNUMX개의 열이 있습니다.

id INT
이름 varchar
LAST_NAME varchar
봉급 INT
부서 아이디 INT

이름 열은 varchar 데이터 유형이고 급여는 정수입니다. 급여 값에 소수점이 없다는 것을 아는 것이 중요할 수 있습니다. 여기에서 사용할 수 있는 미리 보기 옵션을 사용하면 이 데이터가 고유하다는 것을 알 수 있습니다. 모든 직원에게는 할당된 급여 값이 하나만 있습니다. 또한 알아야 할 중요한 사항; 또한 모든 직원의 수년 동안 이전 급여가 모두 표시되는 과거 데이터가 될 수도 있습니다. 이 테이블을 db_dept 테이블과 연결하는 외래 키인 Department_id 열이 있습니다.

id INT
varchar

이 테이블에는 두 개의 열만 있습니다. 중복되지 않은 부서의 목록일 뿐이며 테이블에 XNUMX개의 부서가 표시됩니다.

좋습니다, 당신은 데이터를 분석했습니다. 이제 질문으로 돌아가서 두 번째 문장을 읽으십시오. 예, 이것은 솔루션에 필요한 지침입니다. 한 열에 한 부서의 최고 급여를 표시하고 두 번째 열에 다른 부서의 최고 급여를 표시한 다음 세 번째 열에 두 부서 간의 차이를 표시할 필요는 없습니다. 아니요, 출력은 다음과 같은 차이일 뿐입니다.

데이터 과학 코딩 인터뷰 질문에 답하는 방법


 

이 출력 열의 이름을 지정해야 하는지에 대한 지침이 없습니다. 따라서 이름을 지정하거나 이름을 전혀 지정하지 않아도 오류가 발생하지 않습니다. 중요한 것은 이 결과만 얻을 수 있다는 것입니다.

이를 통해 양질의 코드를 작성할 수 있는 기반을 갖게 됩니다. 이제 전략에 대해 알아볼 때입니다. 코드를 어떻게 작성할 것입니까?
 

2. 해결 방법

 
코드 작성을 시작하기 전에 코드가 어떻게 생겼는지 명확하게 파악하는 것도 중요합니다. 코딩은 솔루션에 대한 (명확한!) 아이디어를 프로그래밍 언어로 번역하는 것뿐입니다.

솔루션에 접근하는 방법(또는 코드 작성 방법)에 대해 생각할 때 다음을 고려하세요.

데이터 과학 코딩 인터뷰 질문에 답하는 방법


 

  1. 코드를 작성하는 방법에는 여러 가지가 있습니까?
  2. 당신의 가정을 진술하십시오
  3. 솔루션을 단계로 나누기
  4. 코딩 시작

나. 코드를 작성하는 방법에는 여러 가지가 있습니까?

솔루션에 대해 생각할 때 가장 먼저 떠오르는 것이 때로는 최상의 솔루션입니다. 그리고 때로는 그렇지 않습니다. 어떻게 알 수 있었습니까? 첫 번째 아이디어를 얻었으면 문제를 해결할 다른 방법이 있는지 생각하는 것이 요령입니다. 에 프로그래밍 언어, 여러 번 가능한 솔루션이 있습니다.

이것을 염두에 두십시오. 이것이 중요한 몇 가지 이유가 있습니다. 첫째, 긴 코드로 해결할 수 있다고 생각하는 것을 쉽게 해결할 수 있는 간단한 트릭이나 기능이 있을 수 있습니다. 창 기능 또는 끝없는 하위 쿼리로 코드를 작성하는 대신 CTE를 사용합니다.

항상 가능한 한 적은 수의 코드로 작성하기 쉬운 것을 사용하십시오. 인터뷰를 할 때도 시간을 마음대로 관리해야 합니다. 이것은 방법 중 하나입니다.
물론, 동등하게 복잡한 솔루션이 여러 개 있는 경우 코드가 어떻게 수행될지 생각하십시오. 많은 양의 데이터에서 다른 코드는 다른 코드보다 수행하는 데 훨씬 더 많은 시간과 메모리를 차지할 수 있습니다.

간단히 말해서 코드 효율성에 대해 두 가지 방식으로 생각해야 합니다. 하나는 개인의 효율성, 즉 얼마나 빨리 코드를 작성할 수 있는지입니다. 두 번째는 코드 효율성 또는 코드가 원하는 것을 수행하는 속도입니다.

ii. 귀하의 가정을 진술하십시오

가정을 진술하는 것은 여러 가지 이유로 중요합니다. 첫 번째는 큰 소리로 말하고 쓰는 것입니다. 그러면 접근 방식에 잠재적인 문제가 있는지 확인하는 데 도움이 됩니다.

두 번째 중요한 이유는 면접관이 귀하와 의사 소통하고 도움을 제공하도록 초대하기 때문입니다. 그들이 당신이 무엇을 하고 싶은지, 왜 하는지 모른다면 그들은 당신을 도울 수 없습니다. 이미 언급했듯이 일반적으로 동일한 결과를 반환하는 여러 솔루션이 있습니다. 가정을 전달하면 면접관이 선택한 접근 방식에 따라 올바른 방향으로 안내할 수 있습니다. 또는 솔루션을 엉망으로 만들 완전히 잘못된 가정에서 벗어나도록 유도할 수도 있습니다.

세 번째 이유는 때때로 질문이 의도적으로 모호하게 설정될 수 있기 때문입니다. 이러한 질문은 올바른 해결책이 아니라 당신이 생각하는 방식에 관한 것입니다. 따라서 가정을 진술하면 면접관이 일반적으로 매우 관심을 갖는 귀하의 생각을 보여줄 것입니다.

가정을 진술하는 네 번째이자 마지막 이유는 답이 완전히 틀렸지만 진술한 가정 내에서 정확하더라도 여전히 그에 대한 점수를 얻을 가능성이 있기 때문입니다. 이 경우 생각은 다음과 같습니다. 좋습니다. 후보자가 질문한 내용을 완전히 잘못 이해했을 수도 있지만 솔루션은 실제로 이해한 내용의 맥락에서 정확합니다.

이 모든 것이 면접 질문에 대한 정답을 확실히 하기.

iii. 솔루션을 단계로 나누기

이것은 또한 명확한 솔루션 아이디어를 갖고 나중에 깨끗한 코드를 작성하는 데 도움이 되는 유용한 포인트입니다.

이 경우 부수는 것은 기록하는 것을 의미합니다. 예, 솔루션의 모든 주요 단계와 기능을 기록해 두십시오. 테이블을 조인해야 하는지 여부, 테이블 수, 사용할 조인에 대해 생각해 보십시오. 하위 쿼리 또는 CTE를 작성해야 합니까? 당신의 선택을 기록하십시오. 어떤 집계 함수를 사용해야 하는지, 데이터 유형을 변환해야 하는지, 데이터를 특정 방식으로 정렬해야 하는지, 필터링 및 그룹화해야 하는지 등을 생각해 보십시오.

이 모든 단계는 별개의 단계이므로 모든 단계에서 사용할 주요 키워드와 함께 기록해 둡니다.

iv. 코딩 시작

이것은 어떻게 보면 비상 지점입니다. 솔루션에 대한 접근 방식에 대해 생각했지만 눈앞에 완전한 솔루션이 보이지 않는다면 간단히 코드 작성을 시작해야 합니다.

이에 대한 생각은 불완전한 솔루션을 제공하더라도 한 줄의 코드를 작성하지 않는 것보다 확실히 가치가 있다는 것입니다. 또한 일부 질문은 매우 어려울 수 있으며 가장 경험이 풍부한 사람이라도 전체 솔루션을 즉시 보기 어렵습니다. 코딩을 시작하면 그 과정에서 아이디어가 떠오를 수 있습니다. 그리고 그렇지 않다면, 다시, 당신은 적어도 보여줄 것이 있습니다.

염두에 두어야 할 추가 이유 중 하나는 일부 질문에 대한 답변이 제공되지 않는다는 것입니다. 그들 중 일부는 인터뷰에서 주어진 시간 내에 해결하기에는 너무 어렵습니다(그리고 의도적으로!). 아무도 그것들을 완전히 해결하지 못합니다. 부분적인 해결책은 누구나 얻을 수 있는 최선의 것입니다. 따라서 다른 불완전한 솔루션과 비교하여 얼마나 멀리 도달했는지 표시됩니다.

 
솔루션에 대한 접근 - 예

이제 솔루션 접근 방식에 대해 어떻게 생각해야 하는지 알았으므로 인터뷰 질문 하나를 사용하여 실제로 어떻게 작동하는지 보여드리겠습니다. Amazon 코딩 인터뷰 질문을 사용하겠습니다.

데이터 과학 코딩 인터뷰 질문에 답하는 방법


 

“각 고객의 주문에 대한 총 비용을 찾으십시오. 고객의 ID, 이름 및 총 주문 비용을 출력합니다. 고객의 이름으로 레코드를 알파벳순으로 주문하십시오.”

질문 링크: https://platform.stratascratch.com/coding/10183-total-cost-of-orders

이 질문에는 두 테이블, 테이블 고객 및 테이블 주문의 데이터를 사용해야 합니다. 이 문제를 극복하기 위해 하위 쿼리가 있는 코드를 작성할 수 있습니다. 그러나 쿼리와 하위 쿼리가 여러 테이블의 데이터를 사용하는 경우 JOIN을 사용하여 솔루션을 작성할 수도 있다는 것을 알고 있을 것입니다. 가능한 한 적은 수의 코드를 작성하라는 조언을 염두에 두고 JOIN을 사용하는 것이 좋습니다.

이 솔루션에 대한 가정은 무엇입니까? 한 가지 가정은 주문이 XNUMX인 고객이 있을 수 있다는 것입니다. 이것은 테이블 주문에 표시되지 않는 테이블 고객이 테이블에 있을 수 있음을 의미합니다. 두 번째 가정은 질문에 명시적으로 말하지 않았기 때문에 주문이 XNUMX인 고객을 표시하지 않는다는 것입니다.

이제 이것은 이미 솔루션 고장으로 이어집니다. 이미 존재하는 두 개의 열을 출력해야 하므로 확실히 SELECT를 사용할 것입니다. 각 고객의 주문 합계를 찾아야 합니다. SUM() 집계 함수를 사용하여 합계를 구해야 합니다. 알겠습니다. 테이블을 조인해야 합니다. JOIN 키워드를 사용하여 이를 수행합니다. 다른 사람이 가입하지 않는 이유는 무엇입니까? 우리의 가정에 따르면 최소한 하나의 주문이 있는 고객만 원합니다. JOIN을 사용하면 정확히 알 수 있습니다. 두 테이블을 결합하고 두 테이블에 있는 값(고객)만 찾습니다. 다음은? 집계 함수를 사용했으므로 GROUP BY를 사용해야 합니다. 그리고 결과는 알파벳순으로 정렬되어야 하므로 ORDER BY와 ASC를 사용하겠습니다.

결과 솔루션 분석은 다음과 같을 수 있습니다.

  • SELECT
  • SUM(총 주문 비용)
  • JOIN
  • GROUP BY
  • ASC로 주문

귀하의 경우 모든 것을 이해했기 때문에 이것은 긴급 상황이 아니므로 다음 체크리스트 섹션으로 넘어갈 수 있습니다. 또는 가장 일반적인 것을 찾을 수도 있습니다. SQL JOIN 인터뷰 질문은 여기.

3. 코드 작성

 
질문을 평가하고 코드에 대한 전략을 배치한 후에는 작성을 시작할 때입니다.

데이터 과학 코딩 인터뷰 질문에 답하는 방법


 

  1. 선택한 방언을 고수하다
  2. 코딩할 때 한 줄씩 이동
  3. 코딩하면서 말하기
  4. 읽을 수 있도록
  5. 선택한 규칙과 일관성을 유지하십시오.

나. 선택된 사투리를 고수하라

이것은 SQL 코딩 인터뷰에 있는 경우 특히 중요합니다. 이미 알고 있듯이 ANSI/ISO SQL 표준이 있으며 많은 SQL 언어가 있습니다. 거의 모든 RDBMS는 자체 SQL 언어를 사용합니다. 물론 모두 알 수는 없습니다. 그리고 당신이 인터뷰하고 있는 회사는 아마도 그 방언 중 하나를 사용하고 있을 것입니다.

면접관이 당신이 어떤 방언을 사용하는지 상관하지 않는다면 가장 편안한 방언을 선택하십시오. 면접관이 사용하는 SQL 언어를 선택하여 면접관에게 어필하려고 하지 마십시오. 해당 언어로 코딩하는 데 능숙하지 않다면 말입니다. 확신이 서지 않는 다른 방언을 사용하는 것보다 자신이 가장 잘 아는 방언을 선택하고 문제를 해결하는 것이 좋습니다. 후자를 선택하면 필요 이상으로 긴장하게 될 것입니다. 또한 특정 SQL 언어에 익숙하지 않으면 솔루션이 엉망이 될 수 있습니다.

일단 SQL 언어를 선택하면 그것을 고수하십시오. 예를 들어 PostgreSQL로 작성하기로 선택한 경우 T-SQL과 혼동하지 마십시오.

ii. 한 줄씩 이동

명확한 솔루션 분석이 있으면 거의 눈에 띄지 않게 이 점을 확인하는 데 도움이 됩니다. 코드의 기능과 섹션이 이미 요약되어 있으므로 침착함을 유지하고 솔루션 개요에 따라 체계적으로 코드를 작성하기만 하면 됩니다. 코드는 생각의 프로그래밍 언어 버전에 불과합니다. 생각과 솔루션 개요가 명확하다면 코드도 마찬가지일 것입니다.

한 줄에서 다른 줄로 건너뛰기 시작하면 자신과 면접관이 혼란스러워집니다. 이는 아마도 올바른 코드를 작성하지 못하게 할 것입니다.

iii. 당신이 코딩하는 것처럼 이야기하십시오

코드를 한 줄씩 작성할 때 수행 중인 작업에 대해서도 이야기해야 합니다. 이것은 당신이 하고 있는 일을 큰 소리로 말할 때 당신이 뭔가 잘못하고 있는지 알기 쉽기 때문에 중요합니다. 모든 것이 당신의 머리에서 멋지게 들릴 수 있습니다. 그러나 목소리를 내고 나면 그다지 좋지 않은 아이디어가 실제로 튀어 나옵니다! 이것은 진행하면서 코드를 수정할 수 있는 기회를 제공합니다. 그렇지 않으면 자신이 뭔가 잘못했다는 사실조차 깨닫지 못한 채 코드를 완성할 수 있습니다.

작성하면서 모든 라인을 설명하는 것이 중요한 이유 중 하나는 면접관이 솔루션에 참여하도록 다시 초대하기 때문입니다. 그것은 그들이 당신이 하는 일을 이해하고 힌트를 줄 수 있도록 합니다. 코드를 작성하고 하고 있는 일을 혼자만 생각한다면 면접관도 문을 닫고 코드를 완료하여 어떻게 했는지 알려줄 때까지 기다리게 될 것입니다.

iv. 읽을 수 있도록 만들기

코드가 잘 짜여져 있다는 것은 단순히 미학적인 관점에서 보는 것만으로도 즐겁습니다. 뿐만 아니라 귀하와 면접관이 귀하의 코드를 더 쉽게 읽을 수 있습니다.

코드를 읽을 수 있게 하는 주요 사항은 위의 요점 중 하나에 언급되어 있습니다. 가능한 한 간단하게 작성하십시오. 그러나 일부 솔루션은 간단하지 않습니다. 그리고 몇 줄의 코드라도 읽을 수 있도록 노력하지 않으면 읽기 힘든 악몽이 될 수 있습니다.

명심해야 할 팁 중 하나는 스페이스바, 탭, 엔터를 사용하는 것입니다. 그리고 많이 활용하세요! 이러한 키는 코드를 섹션으로 분리하여 코드가 하는 일을 더 쉽게 이해할 수 있도록 합니다. 당신이 말하거나 쓰는 것과 같이 생각하십시오. 공백, 탭 및 Enter 키를 사용하면 코드에 쉼표, 문장 및 단락이 포함됩니다.

가능하면 테이블에 별칭을 사용합니다. 그러나 그것들을 자명하게 만들려고 노력하십시오. 단일 문자 별칭을 사용하지 말고 별칭을 너무 장황하고 설명적으로 만들지 마십시오. 변수 이름도 마찬가지입니다.

SQL은 대소문자를 구분하지 않지만 SQL 키워드는 항상 대문자로 작성하는 것이 좋습니다. 이것은 또한 특히 모든 열과 테이블 이름이 소문자로 작성된 경우 코드에서 눈에 띄게 만듭니다.

우리의 게시물을 확인하십시오 "SQL 쿼리 작성 모범 사례: 코드 구조화 방법" 특히 성능 및 가독성과 관련하여 SQL 쿼리를 개선할 수 있는 방법에 중점을 둡니다.

v. 선택된 규약을 준수하십시오

대문자 또는 소문자로 작성하도록 하는 규칙은 없습니다. 규정된 명명 규칙이 없으므로 원하는 대로 지정하면 됩니다. 그러나 무엇을 하든지 일관성을 유지하십시오.

모든 새 열 이름을 소문자로 작성하고 밑줄로 단어를 구분하려면 그렇게 하고 그대로 유지하십시오. 열 이름을 급여_per_employee로 지정하는 것은 꽤 좋아 보입니다. 그러나 하나의 열 이름은 이름:salary_per_employee, 다른 하나는 SalaryPerDepartment, 세 번째는 'Total Salary', 네 번째는 MAX_sALAryPerdeparment로 지정하지 마십시오. 특히 마지막 코드에서 코드를 읽으려고 할 때 자신을 다치게 할 것입니다.

테이블 이름을 작성하거나 별칭을 사용할 때도 마찬가지입니다. 일관성을 유지하면 코드 가독성도 높아집니다.

일관성에 대해 말하자면 이 체크리스트 섹션이 실제로 어떻게 작동하는지 보여드리겠습니다.

 
코드 작성 – 예

다음은 Facebook의 코딩 질문입니다.

데이터 과학 코딩 인터뷰 질문에 답하는 방법


 

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

4년 2020월 XNUMX일에 확인된 SMS 문자 비율을 계산하십시오."

질문 링크: https://platform.stratascratch.com/coding/10291-sms-confirmations-from-users

다음과 같은 코드를 작성하면 이 체크리스트 섹션에서 언급한 모든 내용이 포함됩니다.

SELECT cust_id, SUM(total_order_cost) AS revenue
FROM orders
WHERE EXTRACT('MONTH' FROM order_date :: TIMESTAMP) = 3 AND EXTRACT('YEAR' FROM order_date :: TIMESTAMP) = 2019
GROUP BY cust_id
ORDER BY revenue DESC

Facebook에서 SQL Server를 사용하지만 코드를 작성할 SQL 언어는 사용자에게 달려 있다고 가정해 보겠습니다. T-SQL에 익숙하지 않으므로 PostgreSQL로 작성하기로 결정했습니다.

예를 들어 EXTRACT() 및 이중 콜론(::)은 PostgreSQL의 일반적인 함수입니다. 첫 번째 것은 datetime 데이터 유형에서 날짜의 일부를 추출합니다. T-SQL에는 존재하지 않습니다! 따라서 면접관에게 T-SQL로 작성하고 있다고 말한 다음 이 기능을 사용하면 실수를 하게 됩니다. T-SQL에서는 DATEPART() 함수를 사용해야 합니다. 그리고 PostgreSQL에서 이 함수를 DATE_PART()라고 하는 것을 알아야 합니다. 밑줄 하나는 코드가 작동하는 것과 작동하지 않는 것의 차이를 의미할 수 있습니다.

마찬가지로 PostgreSQL의 이중 콜론(::)은 데이터 유형 변환에 사용됩니다. T-SQL에서는 작동하지 않습니다. CAST() 또는 CONVERT()를 사용해야 합니다.

이 코드에 대한 솔루션 분석이 있으면 한 줄씩 쉽게 작성할 수 있습니다. 사실 쉽습니다. 먼저 테이블에서 일부 데이터를 선택하고 필터링하고 그룹화하고 마지막으로 정렬해야 합니다. 먼저 WHERE 절을 작성한 다음 SELECT 문으로 이동한 다음 데이터 유형 변환 또는 코드에 접근하는 다른 기이한 방법으로 이동하지 마십시오.

코딩하면서 면접관에게 다음과 같이 이야기할 수 있습니다. 저는 테이블 주문의 수익을 계산하기 위해 SUM() 함수를 사용하여 cust_id 열을 선택하고 있습니다. 그런 다음 WHERE 절을 사용하여 order_date 열의 월과 연도를 기준으로 데이터를 필터링합니다. 그런 다음 고객 수준에서 데이터를 그룹화하고 결과를 내림차순으로 정렬합니다.

이 코드에 들여쓰기가 있고 코드의 모든 주요 부분에 대해 새 줄이 있으며 명명 규칙이 일관적임을 알 수 있습니다. 이것을 따르지 않으면 코드가 어떻게 생겼는지 보고 싶습니까? 여기있어:

SELECT cust_id,SUM(total_order_cost) AS REVENUE FROM ORDERS WHERE EXTRACT('MONTH' FROM order_date :: TIMESTAMP) = 3 AND EXTRACT('YEAR' FROM order_date :: TIMESTAMP) = 2019 GROUP BY cust_id order BY 수익 DESC

잘 읽어보세요!

4. 코드 검토

 
코드를 작성한 후에는 최종 답변이 되기 전에 검토해야 합니다. 지금까지 체크리스트의 모든 항목을 따랐다면 쉽게 검토할 수 있습니다.

코드를 검토하는 것은 어떤 면에서는 체크리스트의 일부 항목과 비교하여 확인하는 것입니다.

  1. 남은 시간 확인
  2. 필요한 출력에 대해 확인
  3. 명시된 가정에 대해 확인
  4. 가독성 확인
  5. 면접관에게 솔루션 안내
  6. 코드 최적화

나. 남은 시간 확인

체크리스트의 이 부분에 있는 다른 모든 사항은 이 항목에 따라 다릅니다. 시간이 없으면 아무것도 할 수 없습니다. 당신은 당신이 한 일을했고 당신의 코드는 좋든 싫든 당신이 얻은 답입니다.

시간 관리가 중요하므로 의도적으로 코드를 검토할 시간을 남겨두는 것이 좋습니다. 이상적으로는 다음 세 가지 검사를 수행할 시간이 있습니다.

ii. 필수 출력에 대해 코드 확인

질문으로 돌아가서 코드가 실제로 필요한 것을 반환하는지 확인해야 합니다. 일부 필수 열을 포함하는 것을 잊으셨습니까? 정말 요청한 대로 결과를 주문했습니까? 이러한 질문 및 기타 유사한 질문은 스스로에게 물어봐야 합니다.

시간이 있으면 실수를 수정하십시오. 시간이 없으면 코드를 그대로 두되, 무엇을 잘못했는지 적어 두십시오.

iii. 명시된 가정에 대한 코드 확인

몇 가지 가정을 기반으로 코드를 작성했습니다. 가정 목록으로 돌아가서 이를 따랐는지 확인하십시오.

하면 완벽할 것입니다. 그러나 더 복잡한 코드를 작성할 때 일부 가정을 버리거나 새로운 가정을 도입할 수 있습니다. 그것도 적어두세요. 모든 가정을 따르지 않았지만 해야 한다고 생각하고 코드를 변경할 시간이 있다면 그렇게 하십시오. 그렇지 않은 경우 그대로 두십시오.

iv. 코드 가독성 확인

여기서 방금 작성한 내용을 이해했는지 확인해야 합니다. 코드로 돌아가서 구문과 논리에 대해 모든 줄을 다시 한 번 확인하십시오. 한 줄씩 코드 가독성을 향상시킬 수 있는지 평가하십시오. 명명 규칙이 일관되었습니까? 별칭이 이해하기 쉽게 명확합니까? 모호함이 있습니까? 코드가 논리적인 방식으로 논리적인 부분으로 구성되어 있습니까?

다시 말하지만, 시간이 있다면 코드 가독성을 향상시키십시오. 시간이 없다면 기록하거나 단순히 당신이 더 잘할 수 있었던 것을 기억해 보십시오.

v. 솔루션을 통해 면접관 안내

위의 모든 단계를 수행했다면 이 단계가 자연스럽게 나타납니다. 가장 중요한 것은 코드를 설명할 때 정직해야 한다는 것입니다.

코드를 검토할 때 코드에서 발견한 실수가 무엇이든 명시적으로 언급하십시오. 면접관이 눈치채지 못한다고 생각하지 마십시오. 그들을 숨기려고 하지 마십시오. 자신의 실수를 인정하고 자신이 무엇을 잘못했는지 알고 있음을 보여주십시오. 누구나 실수를 하지만 누구나 실수를 인지하고 인정할 수는 없습니다. 그것은 당신이 실수를 했음에도 불구하고 당신이 무엇을 하고 있는지 알고 있음을 보여줍니다. 실수에 대해 말하자면, 다음은 사람들이 데이터 과학 인터뷰에서 하는 가장 일반적인 것입니다..

출력에 불필요한 열을 포함했다면 그렇게 말하고 출력을 계속 설명하십시오. 초기 가정에서 벗어나거나 새로운 가정을 포함했습니까? 그렇게 말하고 이유를 설명하십시오. 실수로 수행한 경우 의도하지 않은 작업이라고 말하지만 솔루션에 몇 가지 추가 가정이 포함되어야 합니다. 코드가 작동하려면 무엇이 되어야 하는지 명시하십시오. 가독성도 마찬가지입니다. 코드를 개선할 수 있다고 생각되면 방법을 설명하세요.

이 모든 작업을 수행하면 코딩 능력을 보여줄 뿐만 아니라 얼마나 빨리 책임감 있고 정직하다고 생각하는지 알 수 있습니다. 이들은 모두 모든 회사에서 매우 높이 평가하는 특성입니다.

vi. 코드 최적화

코딩 인터뷰의 마지막 질문은 일반적으로 코드 최적화를 묻는 질문입니다. 그렇게 하면 면접관이 SQL 이론 지식을 테스트할 것입니다. 예를 들어, JOIN이 계산적으로 시간 소모적일 수 있다는 것을 알고 있다면? JOIN 또는 하위 쿼리를 제거하는 방법이 있는지 확인하라는 메시지가 표시됩니다. 예를 들어, 최대값을 찾으려면 일반적으로 순위 기능과 같은 일부 기능을 사용하여 WHERE 절에서 하위 쿼리를 제거할 수 있습니다.

또는 특정 데이터 유형에 대해 작업이 수행되는 속도를 알고 있는 경우. 예를 들어 문자열 비교는 정수 비교보다 느리므로 문자열 데이터에서 수행할 수 있는 방법이 있습니까?

결론

 
이 모든 것이 요약됩니다. 접근 방식을 잘 구성한다면 코드 작성은 거의 기술적인 작업이 되어야 합니다. 억양은 생각하는 데 더 많이 있고 코딩에는 덜 있습니다. 그리고 코드 작성은 매우 조직적인 방식으로 이루어져야 합니다.

질문, 앞에 있는 데이터, 가능한 솔루션, 가정 및 필요한 기능을 통해 생각해야 합니다. 그 후에야 코딩을 시작해야 합니다. 코딩을 시작하면 진행 중인 작업에 면접관을 포함시키고 수행하는 모든 단계를 알릴 수 있어야 합니다. 실생활과 마찬가지로 프로덕션 환경에서 코드를 사용하기 전에 코드를 확인하고 최적화해야 합니다. 이 인터뷰는 당신의 작품입니다. 솔루션을 검토할 수 있도록 시간을 관리하십시오.

이것들은 당신이 해야 할 일들입니다. 게시물에 더 많은 준비 팁이 있습니다. 데이터 과학 인터뷰를 준비하기 위한 5가지 팁.

이 모든 것이 쉽지 않습니다. 경험과 연습이 필요합니다. 아무도 이것을 속일 수 없습니다. 그러나 이 체크리스트를 따르면 경험에 관계없이 사고와 면접 성과에 확실한 구조를 추가할 것입니다. 그것은 당신이 더 나은 수행을 할 수 있습니다.

 
 
네이트 로시디 데이터 과학자이자 제품 전략 분야의 전문가입니다. 그는 분석을 가르치는 겸임 교수이기도 하며, 스트라타스크래치, 데이터 사이언티스트가 상위 기업의 실제 인터뷰 질문을 통해 인터뷰를 준비하는 데 도움이 되는 플랫폼입니다. 그와 연결 트위터: StrataScratch or 링크드인.

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

출처: https://www.kdnuggets.com/2022/01/answer-data-science-coding-interview-questions.html

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

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