|
Вариант тестовой задачи при приеме на работу | ☑ | ||
---|---|---|---|---|
0
Азазелло
15.08.12
✎
13:52
|
Есть справочник ГруппыКонтрагентов. У него одна ТЧ "Контрагенты" с реквизитом "Контрагент", тип СправочникСсылка.Контрагенты
Написать запрос, который по переданному массиву Контрагентов вернет либо ссылку на ГруппуКонтрагентов, идентичную по составу, либо ничего не вернет. Подойдет ли такая задача в качестве теста на уровень владения языком запросов? |
|||
83
Азазелло
15.08.12
✎
15:50
|
(76) резюме скинуть ? )
|
|||
84
Alex S D
15.08.12
✎
15:55
|
(83) кидай, передам насяльнику)
|
|||
85
ptiz
15.08.12
✎
15:56
|
(82) А что не так?
Пойду тогда к (76), сертификат специалиста по платформе есть, возьмут без конкурса, и денег больше :) |
|||
86
Азазелло
15.08.12
✎
16:00
|
(85) вернет тебе все ссылки на группы, в которых хотя бы один элемент принадлежит переданному массиву.
|
|||
87
ptiz
15.08.12
✎
16:03
|
(86) Нда... И эти люди прнимают задачи.
Проверь на реальных данных - увидишь. |
|||
88
Ksandr
15.08.12
✎
16:04
|
(0) не понимаю в чем сложность посчитать недостающие и излишествующие элементы и выбрать где и тех и тех 0
|
|||
89
Fragster
гуру
15.08.12
✎
16:05
|
(87) а ничего, что элементов справочников групп может быть больше одного?
|
|||
90
ptiz
15.08.12
✎
16:06
|
(89) Я не против.
|
|||
91
shamashs
15.08.12
✎
16:07
|
Если на собеседовании тестовое задание больше 15 минут, уже не хочу в эту контору и не пойду, не уважают меня в этой конторе, вам лень поговорить с человеком или его уровень из беседы не можете получить?
|
|||
92
Fragster
гуру
15.08.12
✎
16:07
|
(90) а ведь и правда :)
|
|||
93
Азазелло
15.08.12
✎
16:08
|
(87) проверил. читай (86)
|
|||
94
mikecool
15.08.12
✎
16:09
|
ощущение, что ТС решил похвастать своими 22 см? или показалось?
|
|||
95
Азазелло
15.08.12
✎
16:09
|
+(93) немного не так. в которых Состав принадлежит подмножеству элементов, переданных в массиве. а нужна идентичность
|
|||
96
Азазелло
15.08.12
✎
16:10
|
(94) нет. хотел бы похвастаться, выложил бы решение и сказал бы: вау, смотрите, как я крут! я не скрываю, что потратил довольно много времени, и, может быть, решил не оптимально.
|
|||
97
mikecool
15.08.12
✎
16:12
|
(96) не хочу, у меня был вариант проверки попадания отгрузки под условия рекламной акции - сравнение по 3м множествам, единственно не было потоварного сравнения количества, только в "массе"
|
|||
98
Азазелло
15.08.12
✎
16:14
|
(98) мне просто было интересно мнение миста-сообщества, насколько данная задача может быть интересна и актуальна при приеме на собеседование. не более того. тем более, как оказалось, не все способны ее сходу решить.
|
|||
99
ptiz
15.08.12
✎
16:15
|
(95) Да, я ступил, признаю :(
|
|||
100
Азазелло
15.08.12
✎
16:17
|
традиционно, сотко
(99) поэтому мне данная задача и понравилась. она не настолько тривиальна, как кажется с первого взгляда |
|||
101
Ksandr
15.08.12
✎
16:18
|
Примерно так я вижу решение:
Выбрать спр.ссылка Поместить ВТ_Множество из Контрагенты ГДЕ Спр.Ссылка В (&Массив) ; ВЫБРАТЬ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_Множество.Ссылка) КАК ОбщееКоличество ПОМЕСТИТЬ ВТ_ОбщееКоличество ИЗ ВТ_Множество ; Выбрать Состав.Ссылка, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Состав.Элемент) КАК Количество ИЗ ГруппыКонтрагентов.Состав КАК Состав ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Множество ПО ВТ_Множество.Ссылка = Состав.Элемент ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОбщееКоличество ПО Истина СГРУППИРОВАТЬ ПО Состав.Ссылка ИМЕЮЩИЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Состав.Элемент) = ВТ_ОбщееКоличество.ОбщееКоличество не тестил |
|||
102
Азазелло
15.08.12
✎
16:25
|
(101) да, оно и есть.
|
|||
103
Ksandr
15.08.12
✎
16:31
|
(102) Но, на собеседовании я бы потратил больше 14 минут (время между 88 и 101) из-за стресса коим собеседование является.
З.Ы. Давай еще головоломки :) |
|||
104
ssh2006
15.08.12
✎
16:32
|
(101) вроде как если в ТЧ справочника будут все элементы из массива, но кроме них будут и еще элементы то условие на количество за счет внутреннего соединения выполнится, но идентичности не будет
|
|||
105
Лоботряс
15.08.12
✎
16:33
|
(101) один в один мое:))
|
|||
106
Азазелло
15.08.12
✎
16:34
|
(104) вот это отбросит такие ссылки
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Состав.Элемент) = ВТ_ОбщееКоличество.ОбщееКоличество |
|||
107
ssh2006
15.08.12
✎
16:36
|
(106) там же внутреннее соединение и этих записей с лишними элементами вообще не будет
|
|||
108
Азазелло
15.08.12
✎
16:37
|
(107) ВТ_ОбщееКоличество.ОбщееКоличество посчитано ранее, по полному набору элементов в массиве.
|
|||
109
ssh2006
15.08.12
✎
16:38
|
(108) лишние элементы за счет внутреннего соединения с правильной таблицей не попадут в подсчет КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Состав.Элемент)
|
|||
110
Азазелло
15.08.12
✎
16:39
|
(109) правильно. поэтому условие и не сработает, Группа в запрос не войдет )
|
|||
111
Fragster
гуру
15.08.12
✎
16:39
|
(108) если в группе есть все из массива и еще чуть-чуть, то (101) не сработает
|
|||
112
ptiz
15.08.12
✎
16:40
|
Тогда и моё, без временных таблиц:
ВЫБРАТЬ РАЗЛИЧНЫЕ ГруппыКонтрагентовКонтрагенты.Ссылка ИЗ Справочник.ГруппыКонтрагентов.Контрагенты КАК ГруппыКонтрагентовКонтрагенты ГДЕ (НЕ ГруппыКонтрагентовКонтрагенты.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ ГруппыКонтрагентовКонтрагенты.Ссылка ИЗ Справочник.ГруппыКонтрагентов.Контрагенты КАК ГруппыКонтрагентовКонтрагенты ГДЕ (НЕ ГруппыКонтрагентовКонтрагенты.Контрагент В (&МассивКонтрагентов)))) СГРУППИРОВАТЬ ПО ГруппыКонтрагентовКонтрагенты.Ссылка ИМЕЮЩИЕ КОЛИЧЕСТВО(*) В (ВЫБРАТЬ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контрагенты.Ссылка) ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.Ссылка В (&МассивКонтрагентов)) |
|||
113
ssh2006
15.08.12
✎
16:40
|
(111) про это я ему и говорю в (104)
|
|||
114
Ksandr
15.08.12
✎
16:42
|
(107) согласен, нужно так:
Выбрать спр.ссылка Поместить ВТ_Множество из Контрагенты ГДЕ Спр.Ссылка В (&Массив) ; ВЫБРАТЬ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_Множество.Ссылка) КАК ОбщееКоличество ПОМЕСТИТЬ ВТ_ОбщееКоличество ИЗ ВТ_Множество ; Выбрать Состав.Ссылка, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Состав.Элемент) КАК ОбщееКоличество, СУММА(ВЫБОР КОГДА ВТ_Множество.Ссылка IS NULL ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК Избыточные ИЗ ГруппыКонтрагентов.Состав КАК Состав ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Множество ПО ВТ_Множество.Ссылка = Состав.Элемент ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОбщееКоличество ПО Истина СГРУППИРОВАТЬ ПО Состав.Ссылка ИМЕЮЩИЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Состав.Элемент) = ВТ_ОбщееКоличество.ОбщееКоличество И СУММА(ВЫБОР КОГДА ВТ_Множество.Ссылка IS NULL ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) = 0 |
|||
115
Азазелло
15.08.12
✎
16:42
|
(113), (111), да, сорри. затупил
|
|||
116
Лоботряс
15.08.12
✎
16:43
|
(113) но это уже противоречие условию задачи
|
|||
117
Азазелло
15.08.12
✎
16:44
|
(116) не, норм. нужна идентичность
|
|||
118
Лоботряс
15.08.12
✎
16:44
|
написано "идентичные по составу", не больше, не меньше...
|
|||
119
ptiz
15.08.12
✎
16:47
|
В (112) небольшой косяк может быть, если вдруг одного контрагента ввели несколькими строками в одной группе. Но это не существенно, просто группировку одну добавить.
|
|||
120
Гретта
15.08.12
✎
17:12
|
так кто к кому на собеседование едет?
про вакансию забыли? ))) |
|||
121
Ksandr
15.08.12
✎
17:12
|
(120) Вакансия? не, не слышал
|
|||
122
rphosts
15.08.12
✎
17:15
|
(0)ну так что уже решили?
Есть моменты: как насчёт дублей и насчёт нескольких вхождений одного и того-же контаргегента в "группу"? |
|||
123
rphosts
15.08.12
✎
17:16
|
+(122) и ещё: порядок имеет значенние?
|
|||
124
5 Элемент
15.08.12
✎
17:20
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
|
|||
125
Азазелло
15.08.12
✎
17:26
|
(120) Вакансия на hh должна болтаться, ГК ПиР. Собственно, я же здесь не соискателей ищу )
|
|||
126
Ksandr
15.08.12
✎
17:29
|
(124)
почему не внутреннее вместо: ГДЕ ГруппыКонтрагентовКонтрагенты.Ссылка В (ВЫБРАТЬ Группы.Ссылка ИЗ Группы КАК Группы) |
|||
127
acsent
15.08.12
✎
17:31
|
так почему полноето не подойдет с проверкой на то что нет нуллей?
|
|||
128
Азазелло
15.08.12
✎
17:32
|
(124) o_0
ВЫБРАТЬ РАЗЛИЧНЫЕ КОЛИЧЕСТВО(1) КАК КоличествоКонтрагентов ПОМЕСТИТЬ КоличествоКонтрагентовВСписке ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.Ссылка В(&Ссылка) |
|||
129
Азазелло
15.08.12
✎
17:32
|
(127) полное с группировкой по какому полю?
|
|||
130
acsent
15.08.12
✎
17:33
|
ЕСТЬNULL(Спр1.Ссылка, Спр2.Ссылка)
|
|||
131
5 Элемент
15.08.12
✎
17:35
|
(128) это после нескольких правок так получилось :)
Но суть задачи понятна и не сложно найти решение. Такая задача проверяет не знание запросов, а логическое мышление. |
|||
132
acsent
15.08.12
✎
17:36
|
Если подробно
СГРУППИРОВАТЬ ПО ЕСТЬNULL(СпрК.Родитель, СпрГ.Ссылка) ИМЕЮЩИЕ МИНИМУМ(СпрК.Ссылка) НЕ ЕСТЬ NULL И МИНИМУМ(СпрГ.Контрагент) НЕ ЕСТЬ NULL |
|||
133
Азазелло
15.08.12
✎
17:36
|
(13) при полном соединении дергаются составы из разных групп.
|
|||
134
Азазелло
15.08.12
✎
17:36
|
(133) к (130)
|
|||
135
Азазелло
15.08.12
✎
17:37
|
(132) СпрК.Родитель - не,не,не...
|
|||
136
acsent
15.08.12
✎
17:37
|
(133) а при левом не дергаются?
|
|||
137
acsent
15.08.12
✎
17:38
|
(134) если бы ты демобазу сделал, я бы тебе показал
|
|||
138
5 Элемент
15.08.12
✎
17:38
|
Чтобы определить владение языком запросов нужно задавать вопросы по синтаксису и алгоритму работы конструкций.
Например, знает ли кандидат что нужно использовать отборы в вирт таблицах, что желательно использовать все поля индекса и т.п. |
|||
139
acsent
15.08.12
✎
17:39
|
(138) про поля индекса тут большинство отстатыщников не понимает
|
|||
140
Азазелло
15.08.12
✎
17:40
|
(138) +1. Спасибо за идею. Эти вещи воспринимаются уже как само собой разумеющиеся... Ни разу не пришло в голову задать такой вопрос
|
|||
141
acsent
15.08.12
✎
17:43
|
||||
142
acsent
15.08.12
✎
17:44
|
(135) не хотел бы я такого начальника иметь. Ты ему простой способ решения, а он - не,не,не. Как же он умный не догадался
|
|||
143
rphosts
15.08.12
✎
17:45
|
Азазелло, ответь на (122)-(123)
|
|||
144
Азазелло
15.08.12
✎
17:45
|
(142) сорри. просто в (0) Группа <> Родитель )
|
|||
145
Азазелло
15.08.12
✎
17:47
|
(143) да, уже решили. даже несколько вариантов ) дубли не рассматриваются (предполагается, что их нет). порядок значения не имеет.
|
|||
146
acsent
15.08.12
✎
17:50
|
извинясь. меня заглючило и я почему то решал задачу - найти папки контрагентов, для корорый есть группы нашего справочника
|
|||
147
Ksandr
15.08.12
✎
17:50
|
+ к (138)
ну и такие вещи если требования жестче - срез последних на каждую дату в запросе. - нарастающий итог, - остаток на каждую дату периода |
|||
148
rphosts
15.08.12
✎
17:50
|
(145) мне интереснее когда появится время самому решить а потом можно и с вашим сравнить, но нужны точные условия задачи
|
|||
149
acsent
15.08.12
✎
17:52
|
в изначальной задаче: найти группу по массиву вообще никаких соединений не нужно
|
|||
150
Ksandr
15.08.12
✎
17:53
|
(149) Пример в студию
|
|||
151
Азазелло
15.08.12
✎
17:53
|
(149) ага, мне тоже интересно )
|
|||
152
Азазелло
15.08.12
✎
17:55
|
(147) мне еще вот задача нравится: запросом получить сотрудников, у которых ДР будет в ближайшие 14 дней от переданной даты.
|
|||
153
Азазелло
15.08.12
✎
17:55
|
+(152) сама по себе не сложная, но хочется видеть изящное решение. ЗЫ. сам пока не решал )
|
|||
154
acsent
15.08.12
✎
17:56
|
|
|||
155
acsent
15.08.12
✎
17:57
|
последнее условие можно в где перенести
|
|||
156
Ksandr
15.08.12
✎
17:58
|
(152) Рабочих или календарных?
|
|||
157
acsent
15.08.12
✎
17:58
|
|
|||
158
Ksandr
15.08.12
✎
18:00
|
(152) Если календарных то:
ГДЕ Сотрудник.ДР МЕЖДУ &ТекущаяДата И ДОБАВИТЬКДАТЕ(&ТекущаяДата, День, 14) |
|||
159
Fragster
гуру
15.08.12
✎
18:00
|
(152) это легкотня...
|
|||
160
Fragster
гуру
15.08.12
✎
18:01
|
(158) если что, др обычно не в этом году ;)
|
|||
161
acsent
15.08.12
✎
18:01
|
ДР обычно 20 - 50 лет назад от текущей даты
|
|||
162
Fragster
гуру
15.08.12
✎
18:02
|
правда ДатаВремя(Год(&ТекущаяДата),Месяц(ДР), День(Др)) поможет, да
|
|||
163
Ksandr
15.08.12
✎
18:05
|
(160) не учел.
В (162) правильный ответ |
|||
164
Лоботряс
15.08.12
✎
18:07
|
(154) Не оптимальный запрос. Подзапрос в группировке. И почему Минимум а не Сумма?
|
|||
165
acsent
15.08.12
✎
18:10
|
(164) зачем там сумма?
|
|||
166
acsent
15.08.12
✎
18:10
|
а (157) не правильный
|
|||
167
Злопчинский
15.08.12
✎
18:13
|
скажем так: если бы мну на собеседовании в качестве критерия использовались такие/аналогичные задания (не имею ничего против) и если в результате я работаю в этой организации - то на любые вопросы не касающиеся кодинга, знания языка и платформы - вопрошающие посылались бы в далекое путешествие.
|
|||
168
Лоботряс
15.08.12
✎
18:13
|
вот за это
ВЫБОР КОГДА ГруппыКонтрагентовКонтрагенты.Контрагент В (&Массив) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ зачет. Я бы не догадался (164)а посчитать сумму поля1 и сравнить имеющие с количеством контров в массиве и будет самый наверное лучший запрос |
|||
169
Лоботряс
15.08.12
✎
18:14
|
(168) самый простейший
|
|||
170
Азазелло
15.08.12
✎
18:15
|
(167) ну так и ищется человек на сильно нетиповое решение.
|
|||
171
PR
15.08.12
✎
18:20
|
(0) С количеством различных элементов в принципе не жестоко, если ищете не новичка.
Если со сравнением на не NULL без использования количества, то жестко конечно :)) |
|||
172
Лоботряс
15.08.12
✎
18:21
|
А проверить на знание СКД хотите? Могу подбросить пару вариантов
|
|||
173
Азазелло
15.08.12
✎
18:22
|
(172) пока лишь если только себя самого проверить )) с скд начал работать не так давно
|
|||
174
rphosts
15.08.12
✎
18:24
|
(172) давай - будет чем заняться на выхах
|
|||
175
Лоботряс
15.08.12
✎
18:36
|
Ну простейший пример построения иерархии по произвольному полю с помощью СКД который в книжке описан. 146% этого никто не сделает быстро.
Или вывод в одной строке конечный остаток товара и его продажи по периодам(было недавно на mista). |
|||
176
Ksandr
15.08.12
✎
18:44
|
(175) У Гилева и Насипова есть видеоурок на эту тему
|
|||
177
Лоботряс
15.08.12
✎
18:47
|
(176)Ну вот будешь хотя бы знать что соискатель смотрел Гилева и Насипова/читал книжку Хрусталевой.
|
|||
178
rphosts
15.08.12
✎
18:52
|
группировка по периоду?
|
|||
179
Лоботряс
15.08.12
✎
18:54
|
(178)да, но так чтобы конечный остаток был в одной, первой колонке, но не был в колонках с продажами.
|
|||
180
rphosts
16.08.12
✎
03:50
|
(179) могу предложить задачу чуть слжнее: в каждом периоды выводить нескольк показателей (например сумма и кол-во), разность по каждому показателю и % по сравнению с предыдущим периодом, также в последних столбцах разность и % относительно самого первго периода(по каждому из показателей).
|
|||
181
Homer
16.08.12
✎
08:14
|
ВЫБРАТЬ РАЗРЕШЕННЫЕ
СписаниеТоваровТовары.Номенклатура, СписаниеТоваровТовары.Ссылка ПОМЕСТИТЬ мСП ИЗ Документ.СписаниеТоваров.Товары КАК СписаниеТоваровТовары ГДЕ СписаниеТоваровТовары.Ссылка.Дата >= &Дата И СписаниеТоваровТовары.Номенклатура В(&Массив) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ мСП.Номенклатура) КАК Кол ПОМЕСТИТЬ мКолИсходное ИЗ мСП КАК мСП ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ мСП.Номенклатура) КАК Кол, мСП.Ссылка ПОМЕСТИТЬ мКол ИЗ мСП КАК мСП СГРУППИРОВАТЬ ПО мСП.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ мКол.Ссылка КАК Ссылка ИЗ мКол КАК мКол ВНУТРЕННЕЕ СОЕДИНЕНИЕ мКолИсходное КАК мКолИсходное ПО мКол.Кол >= мКолИсходное.Кол |
|||
182
Homer
16.08.12
✎
08:27
|
ВЫБРАТЬ
СписаниеТоваровТовары.Номенклатура, СписаниеТоваровТовары.Ссылка ПОМЕСТИТЬ мСП ИЗ Документ.СписаниеТоваров.Товары КАК СписаниеТоваровТовары ГДЕ СписаниеТоваровТовары.Ссылка.Дата >= &Дата И СписаниеТоваровТовары.Номенклатура В(&Массив) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК Кол ПОМЕСТИТЬ мКолИсходное ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка В(&Массив) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ мСП.Номенклатура) КАК Кол, мСП.Ссылка ПОМЕСТИТЬ мКол ИЗ мСП КАК мСП СГРУППИРОВАТЬ ПО мСП.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ мКол.Ссылка КАК Ссылка ИЗ мКол КАК мКол ВНУТРЕННЕЕ СОЕДИНЕНИЕ мКолИсходное КАК мКолИсходное ПО мКол.Кол >= мКолИсходное.Кол |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |