![]() |
|
Модераторы: Akina |
![]()
|
|
| WaReZMEN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Типовые вопросы на собеседование? Предстоит собеседование на позицию программист Delphi со значением MS SQL 2005 интересует какие обычно вопросы задают на собеседованиях именно по MS SQL, Delphi я знаю достаточно хорошо...
P.S. написал сделать потому как интересует именно про MS SQL. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
В первую очередь - в каких проектах участвовал, какова роль в проектах
Когда я соискался на подобную позицию, меня гоняли в основном на отношения таблиц(реализация связи многие многие ко многим многим), внешние соедниения, изоляции транзакций, блокировки. Скуэльчики пописывать просили. Самый прикольный, как мне показалось вопрос - "В каких случаях запрос select * from table where id = id вернет не все содержимое таблицы." -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| WaReZMEN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Zloxa, и в каких же?
|
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
Думайте, читайте, ищите.(Господа гусары, прошу воздержаться... Хотите проверить версию- отвечу в личку) Вопрос элементарен... Тем не менее найти ответ на него в документации не так просто. Очень хорошо помогает отсеять теоретиков от практиков. ;)) Я подогнал этот вопрос товарищу, когда он собеседовал. На этом вопросе срезалось половина кандидатов. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| WaReZMEN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Zloxa, у меня опыта в MS SQL практически нет а в других бд с такой темой не сталкивался...
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Не требуется - в большинстве СУБД ответ будет таким же... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| WaReZMEN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
ну хз проверил на Базе все нормально все возвращает...
|
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
Наверно даже более.. Если для какой либо СУБД "правильный ответ" не канает, эта СУБД особенная. ;)) WaReZMEN, если сдашься, но интерес не пропадет - отсутчи в личку. Не люблю мучить людей. Тут я все таки ошибся. Припомнил, что на этом вопросе у моего товарища срезались таки ВСЕ кандидаты. Сам он 1Сник, ему нужен был человек со знанием SQL на репортинг. После этого я задал этот же вопрос всем своим коллегам. Все отвечали почти моментально, даже те, кто не считает себя сколь нибудь продвинутым в SQL, однако имеют в нем какую-никакую практику. Но следует заметить, что все отвечали с некоторой неуверенностью(в том числе и я, когда мне был задан этот вопрос), всем казалось что подвох не может быть столь прост. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| WaReZMEN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Zloxa, ну так хватит мутить
|
|||
|
||||
| WaReZMEN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Весь подвох в том что поле id не совсем ID
|
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
В личке мною были получены правильные ответы от: Akina azesmcar Экскалупатор baldina MadCoder Бонифаций Gluttton SharedNoob Это сообщение отредактировал(а) Zloxa - 1.9.2009, 12:05 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 1 Всего: 34 |
Сам не догадался, т.к. никгда с таким не сталкивался, но в документации написано четко и причем в нескольких местах.
|
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
если действительно теоретики, то должны отвечать. наверно даже гораздо увереннее практиков |
|||
|
||||
| MadCoder |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 478 Регистрация: 24.8.2007 Где: Москва Репутация: нет Всего: 2 |
Вот реальный список вопросов, который я написал и задавал кандидатам на должность "Программист Delphi + MS SQL Server 2005" несколько месяцев назад.
Язык программирования SQL. 1 Какие Вы знаете операторы отбора строк по условию? 2 Сколько строчек выгрузит запрос:
Если в table 1 три строчки, а в table2 две строчки. 3 Для чего служит DISTINCT? 4 Какие агрегатные функции Вы знаете? 5 Какие строковые функции Вы знаете? 6 Какие Вы знаете числовые функции? 7 Какие Вы знаете временные функции? 8 Чем группировка отличается от сортировки? 9 Все ли верно в данном запросе?
10 Что такое триггер и для чего он нужен? 11 Что такое view и для чего она нужна? 12 Что такое курсор и для чего он нужен? Напишите пример. 13 Напишите пример кода для создания БД, таблицы. 14 Напишите пример внешнего соединения трех таблиц с помощью оператора JOIN. 15 Напишите код: у вас есть таблица table1 из 100.000 строчек с числовыми полями номер договора (contr_id) и действие (action). Вам нужно обработать данные таким образом: • action = 0, ничего не делать • action = 1, добавить номер договора в таблицу table2 • action = 2, удалить строчку. Microsoft SQL Server 2005: 16 Название основной инструмент управления Microsoft SQL Server 2005: 17 Что такое репликация? 18 Какие виды репликации Вы знаете? Чем они отличаются? 19 Что такое журнал транзакций? 20 Чем строчки отличаются от полей? 21 Для чего нужны индексы? 22 Для чего служат хранимые процедуры? 23 Какой тип репликации предпочтителен, если у нас есть два сервера, на каждом из которых данные могут изменяться и оба сервера должны об этом знать сразу после изменения? 24 Перечислите известные Вам типы данных с кратким описанием. 25 Какие службы Microsoft SQL Server 2005 Вы знаете и для чего они нужны? Delphi 2007: 26 Перечислите основные типы данных в Delphi 2007: 27 Какие компоненты используются для работы с БД SQL Server и для чего они служат? 28 Что такое модальная форма? 29 Опишите понятия: ODBC, BDE, ADO. 30 Опишите Ваши действия по созданию программы для выгрузки данных (MSSQL 2005, таблица clients) в таблицу. 31 Какие генераторы отчетов Вы знаете? Какому отдаете предпочтение? 32 Все ли верно в следующем коде:
33 Напишите функцию, которая записывает в текстовый файл фразу «Hello World». 34 Чем процедура отличается от функции? Попробуйте сами ответить на вопросы, никуда не подглядывая. Это сообщение отредактировал(а) MadCoder - 1.7.2009, 17:15 |
||||||
|
|||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Порадовало... временнЫе? врЕменные? функции работы с датой-временем, наверное? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| MadCoder |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 478 Регистрация: 24.8.2007 Где: Москва Репутация: нет Всего: 2 |
Во, логика тоже работает! И знаешь по-крайней мере один тип функций! +1 |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
У меня братишка этот вопрос задал тренеру на курсе по TSQL. Тренер рассказал какие виды и типы функций бывают, в чем их особенности, но ответить на вопрос одной фарзой не смог -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
"Первая создаётся директивой CREATE PROCEDURE, вторая соответственно CREATE FUNCTION." Одна фраза... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
Всетки это ответ не на вопрос ;) Ты ответил на вопрос "в чем различие конструкций создания процедуры и функции", таки это чуть разные вопросы -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Ну вообще по этому вопросу, если серьёзно, как я понимаю: функцию можно использовать в запросе, т.к. она возвращает результат, ассоциированный с её именем, в отличие от процедуры, которую можно вызвать только саму по себе, принимая затем из неё именованные результаты.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| MadCoder |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 478 Регистрация: 24.8.2007 Где: Москва Репутация: нет Всего: 2 |
На самом деле функция возвращает результат, а процедура нет. Если посмотреть внимательно, вопрос находится в разделе Delphi
Добавлено через 37 секунд Akina, точно |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
MadCoder, можешь ещё в вопросы по SQL добавить (уж коли) вопрос об отличии WHERE от HAVING, а также попросить сравнить объединения типа FROM A JOIN B ON и типа FROM A, B WHERE - когда какое предпочтительнее или, скажем, неприменимо.
С другой стороны, на большинство этих вопросов запросто ответит любой, кто обчитался документации, но не написал ни строчки кода (и в результате тебя ждёт индусский или китайский код, со всеми вытекающими). У меня один знакомый товарищ года три назад искал себе SQL-кодера... он просто нарисовал три связанные таблицы и просил кандидатов написАть максимально эффективный код подсчёта итога, с учётом количества записей в таблицах, а также предложить изменения в структуре таблиц для повышения эффекитивности. Если я правильно помню, только пятый или шестой кандидат сумел наконец без компа на листе бумаги изобразить запрос, который дал бы верные данные. А специально введённый ляпсус со структурой (бредовый индекс) вообще никто не нашёл. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
для процедур и функций в других языках (где присутствует такая терминология) точно так же. вероятно впервые разделение понятий появилось одновременно с созданием языка высокого уровня - Фортрана (FUNCTION и SUBROUTINE), хотя методологическую основу заложил Н.Вирт при создании Pascal. есть понятие чистой функции, т.е. функции, не имеющей побочных эффектов, единственный результат ее деятельности передается через возвращаемое значение. т.е. такая функция наиболее близка к обычной математической функции. обычно в функциональных языках функции чистые. в этом смысле можно считать чистой процедуру (хотя так не говорят), не меняющую значение своих аргументов, т.е. работа которой целиком заключается в создании побочного эффекта. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
А есть разница? AFAIK когда то была, сейчас уже давно нет У меня как то был случай, когда я на листе не смог изобразить запрос типа выбрать последний курс валюты на дату. С учетом того, что я уже и роспись нормально не могу поставить на бумаге, просьба написать запрос на бумаге выглядит как садизм. ;)) а еще и с учетом того, что запросы я пишу не слева на право, а из глубины во вне. Это сообщение отредактировал(а) Zloxa - 1.7.2009, 20:53 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Считается, что есть несколько типов JOIN и куча вариантов WHERE... хотя надо покопаться в доках по новым версиям СУБД - отличия-то начинаешь читать только воткнувшись носом в проблему... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
по идее разницы в результате быть не должно, если нет left/right. а в производительности? план запроса с where составляется сервером. в основе плана с join лежит их последовательность. может ли сервер менять последовательность, указанную в join?
|
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
Бродил какой-то бородатый миф, мол джойн через where сервер выполняет посредством кросс джойна с фильтрацией. Возможно миф тянется из истории... на 2000й, парни говорят это отнюдь не так. Что же касается внешних соединений, то таки да, через пре джойн предикаты (*= и =*, если мне не изменяет память) можно выразить далеко не всякий левый/правй жойн. И, помоему, вообще не возможно сделать full join. Но вопрос то был не о том ;) Это сообщение отредактировал(а) Zloxa - 1.7.2009, 21:16 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Вот навскидку: JOIN ON a.id>b.id даст тот же результат, что и WHERE a.id>b.id ?
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
Akina, разве нет?
У меня нет MS SQL, но результат должен быть одинаков.. планы тоже. Добавлено через 1 минуту и 50 секунд join через where ли, через join ли это join.. просто разная фора записи. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
так что там про последовательность? анализ плана можно получить в любой приличной СУБД, а дальше что - руками оптимизировать? и, опять же, что там с where? (cross join это конечно смело
Akina, набор будет тот же. а вот последовательность строк (планы) наверно может быть другая, если сервер по-разному where и join реализует. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
Кто сказал? На какой платформе? from a,b wehre a.id = b.id - это операция inner join по нотации ANSI 89 from a inner join b on a.id = b.id - это операция inner join по нотации ANSI 92 одна и таже операция, почему планы то разные должны быть? Разве что если кривизна[особенности] оптимизатора. А вот последовательность строк может не только от плана зависеть. Еще от состояния кэшей и мало ли там вообще чего. При одном и том же плане вполне можно получить разную последовательность строк. Это сообщение отредактировал(а) Zloxa - 1.7.2009, 23:34 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
Добавлено через 3 минуты потренировался на кошках. MS Jet 4.0. не знаю что там насчет кривизны и кеша, но независимо от последовательности таблиц в where и join дает одну и ту же последовательность для where и одну и ту же (но иную, чем в where) для join. |
||||
|
|||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Ну тем, у кого вышел из строя карандашный разъём, можно предложить составить запрос в Блокноте по скриншоту структуры -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
Может M$ действительно "особенный". Не мог бы глянуть планы, планы одинаковые или нет? -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| sasha84 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 31.7.2009 Репутация: нет Всего: нет |
Вот здесь есть вопросы на собеседованиях по базам данных.
|
|||
|
||||
| Veroonya |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 10.10.2008 Где: Россия, Омск Репутация: нет Всего: 1 |
*ушла учить sql*
|
|||
|
||||
![]()
|
| Правила форума "MS SQL" | |
|
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS SQL Server | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |