Які питання для перевірки знань програмістів SQL? Яка відповідь на запитання? І що буде означати відсутність правильної відповіді з точки зору часу, який, можливо, зрозуміє концепцію, що стосується питання?
GOOGLED: sql завдання
Які питання для перевірки знань програмістів SQL? Яка відповідь на запитання? І що буде означати відсутність правильної відповіді з точки зору часу, який, можливо, зрозуміє концепцію, що стосується питання?
GOOGLED: sql завдання
Відповіді:
Це залежить від того, наскільки важко вам це хочеться. Крім того, я трохи насторожено даю вам відповідь, оскільки в більшості проблем SQL є кілька прийнятних способів робити речі, а також існують способи вирішення проблем SQL неохайними способами, що спричинить інші проблеми. Людині, яка "оцінює" відповідь, безумовно, потрібно вміти її вирішити самостійно.
Це сказало, ось декілька я придумав з верхньої частини голови.
Надзвичайно простий рівень:
Дано таблицю працівників зі стовпцями EmpID, FirstName, прізвище, HireDate та TerминаDate:
Напишіть запит, щоб повернути всіх співробітників, які все ще працюють у компанії з прізвищами, починаючи з "Smith", відсортованого за прізвищем, а потім прізвищем.
Легкий рівень
З огляду на таблицю працівника вище, а також нову таблицю "Щорічні огляди" зі стовпцями EmpID та ReviewDate:
Напишіть запит, щоб повернути всіх працівників, які ніколи не мали огляду, відсортованого за HireDate.
Середній рівень Враховуючи вищевказану таблицю працівника, напишіть запит, щоб обчислити різницю (у днях) між самим і найменш штатним працівником, який все ще працює в компанії?
Тяжкий рівень
З огляду на таблицю працівників вище, напишіть запит, щоб обчислити найдовший період (у днях), який компанія пройшла без найму чи звільнення когось.
Більш важкий рівень.
Знову використовуючи ті самі таблиці, напишіть запит, який повертає кожного працівника, і для кожного рядка / працівника включається найбільша кількість працівників, які працювали в компанії в будь-який час їх перебування на посаді та першої дати досягнення максимальної кількості. Додаткові бали за невикористання курсорів.
Я, як правило, сиджу на інтерв'ю для спеціалістів з даних, тому мої запитання, як правило, важкі. Але одне, що я б зажадав від усіх, хто буде писати SQL, - це знання про приєднання та коли використовувати лівий з’єднання проти внутрішнього з'єднання. Той, хто не розуміє, що не має жодного ділового запиту до бази даних в будь-якій формі.
Інша річ, яку я хотів би зробити, це переконатися, що вони розуміють, як робити GROUP BY і використовувати функції агрегування.
І різниця між UNION та UNION ALL усунула багато бідних кандидатів на моїй роботі.
Я б запитав "Чому і як слід санітувати вхідні значення, надані користувачем, які будуть використовуватися в SQL-запиті?"
Це необхідно , щоб запобігти ін'єкції SQL, і бути в змозі відповісти на цей питання потребує хорошого знання про синтаксисі і команд (таких як SQL SELECT
, UPDATE
, DROP
, DELETE
і т.д.), а також , як ті , можна обійти за допомогою коментарів SQL , щоб розбити запит і ввести те, що може зробити бажаний злоякісний користувач.
Я доклав руку до розробки технічного тесту для програмістів баз даних. Питання були такими, які я вважаю цілком елементарними: запишіть заяви CREATE TABLE для заданої структури таблиці; зробити кілька простих запитів; тощо.
Більшість претендентів на роботу, які називали себе експертами SQL, отримали тест. Один сказав, що, хоча він був розробником SQL протягом багатьох років, він ніколи не писав заяву CREATE TABLE, оскільки GUI зробив це за нього.
У нас був подібний досвід з іншими технічними тестами. Для співробітників служби підтримки Windows задачі схожі на "створити користувача домену", "додати принтер", "змінити дозволи на файл". Більшість людей не може виконувати ці завдання, особливо під тиском. Ми вважаємо, що якщо ви можете зробити навіть прості речі, ви, ймовірно, досить компетентні.
Якщо ви хочете задавати більш відкриті запитання: Задайте загальні запитання щодо типів даних ДАТА, ДАТЕТИНА .... Запитайте про відмінності між різними впровадженнями / продуктами постачальника. Поговоріть про інструменти командного рядка, масові навантажувачі, гарні принтери ... можливо, ви зможете навчитися нового фокусу під час співбесіди.