SQL에 대한 프로그래머 지식을 테스트하기위한 질문은 무엇입니까? [닫은]


14

SQL에 대한 프로그래머 지식을 테스트하기위한 질문은 무엇입니까? 질문에 대한 답은 무엇입니까? 정답이 부족하다는 것은 질문과 관련된 개념을 이해하는 데있어 시간적 측면에서 무엇을 의미합니까?

GOOGLED : SQL 도전


2
나는 실제로 실제 예제를 제공하고 복잡한 쿼리를 작성하도록 요청합니다. 예를 들어, 구매 테이블이있는 경우 지난 10 년 동안 가장 수익성 높은 월을 선택하도록 요청하십시오. 그러나 질문과 답변에 대해서도 질문하기 때문에 전문가가 아니며 판단 할 수 없습니다. 이 경우 인터뷰 전에 최소한 초기 필터로 타사 테스트 서비스를 사용해 볼 수 있습니다. tests4geeks.com 을 제안 합니다 . 그들은 SQL 테스트를했습니다.
Dhaval Patel

답변:


20

얼마나 어려운지에 달려 있습니다. 또한 대부분의 SQL 문제에는 허용되는 여러 가지 방법이 있으며 SQL 문제를 조잡한 방식으로 해결하여 다른 문제를 일으킬 수 있기 때문에 답변을 제공하는 것에 약간의주의를 기울입니다. 답을 "등급"하는 사람은 스스로 스스로 해결할 수 있어야합니다.

즉, 여기 내 머리 꼭대기에서 나온 몇 가지가 있습니다.

매우 쉬운 수준 :
열이 EmpID, FirstName, Lastname, HireDate 및 TerminationDate 인 직원 테이블이 주어짐 :
이름이 "Smith"로 시작하여 성으로 정렬 된 회사에서 아직 근무중인 모든 직원을 반환하려면 쿼리를 작성하십시오.

쉬운 수준
위의 Employee 테이블과 EmpID 열 및 ReviewDate 열이 포함 된 새 테이블 "AnnualReviews"가 주어지면 HireDate
별로 정렬 된 리뷰가없는 모든 직원을 반환하는 쿼리를 작성하십시오.

중간 수준 위의 직원 테이블을 고려할 때 여전히 회사에서 근무하는 가장 많거나 가장 적은 직원의 차이를 계산하는 쿼리를 작성 하시겠습니까?

Hard Level
위의 직원 테이블을 감안할 때, 회사를 고용하거나 해고하지 않고 회사가 가장 긴 기간 (일)을 계산하는 쿼리를 작성하십시오.

더 어려운 수준
다시 같은 테이블을 사용하여 각 직원을 반환하고 각 행 / 직원에 대해 쿼리를 작성하여 재직 기간 중 언제라도 회사에서 근무한 최대 직원 수와 최대 도달 날짜를 포함합니다. 커서를 사용하지 않는 추가 포인트.


좋은 대답-실제로 질문의 진화와 같습니다. 질문을하는 사람이 왜 대답 할 수 있어야합니까? 출력과 런타임을 기반으로 단위 테스트를 작성하는 것이 어떻습니까? 또한, 일반적인 프로그래머가 SQL 개념을 익히는 데 몇 주가 걸립니까 평균 프로그래머가 가장 어려운 수준에 도달하려면 어떻게해야할까요? 또한 가장 어려운 질문에 대답 할 수있는 프로그래머가 SQL 관련 작업의 대부분을 효과적으로 처리 할 수 ​​있다고 생각하십니까?
blunders

3
내가 asker (또는 적어도 "grader")가 그들에게 대답 할 수 있기를 원하는 이유는 그 접근법이 결과만큼 당신에게 말할 수 있기 때문입니다. 또한 비 테크 면접관이 미리 작성된 답변을 가지고 있고 잠재적으로 다른 정답을 받아들이지 않는 것에 대해 걱정합니다 (카드에 "Moop"이라고 표시됨).
JohnFx

이러한 질문이 SQL 관련 작업의 대부분을 처리 할 수있는 능력을 보여 주는지 여부와 관련하여. 그들의 임무가 쿼리를 작성하는 것이라면 아마도 그렇습니다. 그들이 DB 서버를 관리하기를 기대한다면, 그에 관한 특정 질문을해야 할 것입니다.
JohnFx

설명에 감사드립니다.이 경우 비 기술 면접관은 사람이 아니라 시스템이므로 단위 테스트 및 런타임입니다. 분명히 시스템은 코드를 쓰거나 읽지 않고, 인간은 있지만, 세상에는 너무 많은 프로그래머가 있으며, 제 생각에는 시스템을 현장에 배치해야 할 필요성이 제한되어 있습니다. 사람이 테스트에 실패했는지 추측하지만 그들이 옳다고 생각하면 항상 올바른 것으로 플래그를 지정할 수 있습니다.
blunders

그리고 예, 질문의 대상은 데이터베이스 관리자가 아닌 프로그래머가 될 것입니다.
blunders

4

저는 일반적으로 데이터 전문가를위한 인터뷰에만 참여하므로 질문이 어려운 경향이 있습니다. 그러나 SQL을 작성할 사람에게 필요한 것은 조인에 대한 지식과 왼쪽 조인을 사용하는 시점과 내부 조인을 사용하는 시점입니다. 이해하지 못하는 사람은 어떤 형태 나 형태로든 데이터베이스를 쿼리하는 비즈니스가 없습니다.

내가 할 또 다른 일은 그들이 GROUP BY를 수행하고 집계 함수를 사용하는 방법을 이해하도록하는 것입니다.

그리고 UNION과 UNION ALL의 차이점은 저의 직장에서 많은 가난한 후보자를 제거했습니다.


2

내가 물어 보곤 "왜 그리고 어떻게 당신은 SQL 쿼리에 사용되는 사용자로부터 주어진 입력 값을 소독해야합니까?"

이것은 SQL 주입을 방지하기 위해 필요하고, 대답 할 수있는이 SQL 구문과 명령 (예에 대한 좋은 지식을 필요로한다 SELECT, UPDATE, DROP, DELETE사람들은 쿼리를 깰 SQL 주석을 사용하여 우회 할 수있는 방법뿐만 아니라, 등) 및 악성 사용자가 원하는 것을 주입하십시오.


1
답이 아닌가? 입력을 절대로 소독하지 말고 준비된 문장을 사용 하는가?
kevin cline

@Emmad Kareem, 대답 할 수없는 사람은 SQL을 작성해서는 안됩니다.
HLGEM

@ gablin, 나는 그것이 왜 그렇게되는지 정말로 모르겠습니다. 조금 설명해 주시겠습니까? 이 주제에 대해 몇 권의 SQL 책이 있습니까?
NoChance

2

데이터베이스 프로그래머를위한 기술 테스트를 개발했습니다. 질문은 내가 아주 기본적인 것으로 생각한 것입니다. 주어진 테이블 구조에 대해 CREATE TABLE 문을 작성하십시오. 간단한 쿼리를 수행하십시오. 기타

SQL에서 전문가라고 불렀던 대부분의 구직자는 테스트를 시작했습니다. 한 사람은 비록 그가 수년간 SQL 개발자 였지만 GUI가 그를 위해 CREATE TABLE 문을 작성했기 때문에 결코 작성하지 않았다고 말했다.

다른 기술 테스트에서도 비슷한 경험을했습니다. Windows 지원 직원의 경우 작업은 "도메인 사용자 만들기", "프린터 추가", "파일에 대한 권한 변경"과 유사합니다. 대부분의 사람들은 특히 압력을 받고 그러한 작업을 수행 할 수 없습니다. 우리는 당신이 간단한 일을 할 수 있다면 아마도 당신은 아마 유능하다고 생각합니다.


1
GUI를 사용하는 개발자의 입장에 있습니다. CREATE TABLE 스크립트를 정기적으로 쓰지 않고도 전체 경력을 쌓을 수 있습니다. 많은 사람들이 CASE 도구에서 자동으로 DDL을 생성하는 데이터 모델을 개발합니다. 일반적으로, 나는 시험 문제의 폭 넓은 이해가 관련된 것들에 찬성, 멀리 주로 구문을 암기에 의존하는 테스트 부끄러워
cjmUK

+1 @Barry Brown : 동의합니다. 흥미로운 점입니다.
blunders

0

더 많은 공개 질문을하려면 DATE, DATETIME ... 데이터 형식에 대한 일반적인 질문을하십시오. 다른 공급 업체 구현 / 제품 간의 차이점에 대해 문의하십시오. 커맨드 라인 도구, 벌크 로더, 예쁜 프린터에 대해 이야기하십시오. 인터뷰 중에 새로운 트릭을 배울 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.