Тож недавно перед собеседованием | |
---|---|
alex; Автор Сообщений: 2856 Откуда: Москва Дата регистрации: 23.11.2004 |
Тож недавно перед собеседованием попросили решить пользуясь любыми источниками
Часть текста скрыта
1. Математический смысл функции:
Функция Ф (А) Рез = 1; Для Инд = 2 По А Цикл Рез = Рез * Инд; КонецЦикла; Возврат Рез; КонецФункции 2. Дано два массива А[а] и В[b] (а и b – количества элементов массивов), упорядоченных по возрастанию. Написать алгоритм, выдающий значения обоих массивов в порядке убывания за один цикл 3. Объявлены две числовые переменные A и B. Необходимо сделать так, чтобы без объявления других переменных в результате работы алгоритма переменная A приняла минимальное значение из A и B, а переменная B – максимальное. Применять можно только операции присваивания, арифметические операции и любые стандартные математические функции (использование операторов запрещено). 4. (SQL) Имеем таблицу TBL ( Date DateTime, --Дата Amount Money --Сумма продаж ) Необходимо вывести нарастающий итог для продаж по дням (реализовать с наименьшим кол-вом запросов) 5. Убрать условный оператор «Если» из следующего блока (А может принимать значения 0 или -1): Если (А = 0) Тогда В = -1; Иначе В = 10; КонецЕсли; Не допускается использование ЛЮБЫХ других условных операторов. 6. Определить число k, которое отсутствует в неупорядоченном массиве чисел (0, 1,...k-1,k+1,...n) за один цикл 7. (SQL) Имеем таблицы NUM--таблица целых чисел, в которой ID имеет значения, допустим, от 1 до 1000 с инкрементом +1 ( ID Int ), TBL ( StockID Int, --идентификатор выпуска ценной бумаги Quantity Int --количество ценных бумаг в выпуске (предполагаем, что не может быть больше 230 штук) ) Необходимо "размножить" данные (сделать обратную операцию группировке), т.е. в ожидаемой выборке вместо одной записи по каждой позиции должно появиться количество записей равное количеству ценных бумаг в выпуске (реализовать с наименьшим кол-вом запросов) 8. За один цикл вычислить значение функции F(n)=1!*2!*…*n! , где n! – факториал (1*2*…*n) 9. (MSSQL) Имеем название таблицы @TableName. Необходимо выяснить в каких хранимых процедурах, возможно, используется данная таблица. 10. (SQL) Имеем таблицу TBL ( ID Int, String VarChar(200) ) и произвольную строку @STR. Необходимо вывести следующую информацию в виде: [ID] [String] [Quantity] [Percent], где [ID] [String] - поля таблицы TBL, в которых присутствуют совпадения со строкой @STR [Quantity] количество встречающихся совпадений по каждой записи для строки @STR [Percent] процент количества совпадений для каждой записи от общего количества совпадений по всей таблице (реализовать с наименьшим кол-вом запросов) в инете эти задачи висят уже давно ЗЫ Поправил 2,3,6,8 [i]Исправлено 2 раз(а). Последнее : alex;, 19.07.16 13:21 |
Re: Тож недавно перед собеседованием | |
---|---|
sphinx Сообщений: 31184 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
1) Где висят эти задачи? 2) Так взяли или нет? Или надо было все без ошибок решить? ------------------ "Veni, vidi, vici!"(с) |
Re: Тож недавно перед собеседованием | |
---|---|
alex; Автор Сообщений: 2856 Откуда: Москва Дата регистрации: 23.11.2004 |
в курилке местной видел и на sql.ru, но я сам хотел порешать нет, попросили поправить + на c# вот тока отправил |
Re: Тож недавно перед собеседованием | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
В 4 задаче - если будет дубликат дня (в условии не оговорено что даты уникальны) то на этот день будет ошибка.
Кроме того такой запрос весьма неоптимален - по крайней мере для оракла Очень много CPU тратится на сортировки. Альтернативы:
Тоже не фонтан по производительности, хотя и быстрее раза в 2 и не даёт указанной ошибки. Ну и с аналитикой вот так будет:
В 10 задаче, ты считаешь не процент попаданий по ВСЕЙ таблице, а лишь процент в рамках каждого id - если id уникальны, то для любой записи получишь 100% В оракле есть весёлая аналитическая функция RATIO_TO_REPORT как раз позволяющая считать подобные проценты (как по всей таблице, так и по указанному partition-у, т.е. разделу, группе записей) с её использованием запрос можно написать вот так (пустой over - значит считаем процент ко ВСЕМ записям):
Без этой функции таки придётся делать почти как у тебя - и лучше с CTE, чтобы 2 раза не писать одинаковый подзапрос.
В принципе можно переписать такой запрос и без CTE/подзапросов - использовать как в 4 примере аналитическую функцию, но с заданием окна ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING (т.е. по сути сказать "считай для всей таблицы") - что даёт в итоге вычисление "за 1 проход". Правда писанина получается корявая - наш самодельный occurs придётся повторять 3 раза
По 9-му вопросу увы, не Копенгаген ------------------ WBR, Igor |
Re: Тож недавно перед собеседованием | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
По C#
1) .ToString() не нужен для единственного аргумента Console.WriteLine(arg1) - там куча перегрузок под базовые типы, плюс он сам для object вызовет ToString(). Это если не подойдёт ни одна из "простых" перегрузок и будет выбран вариант Console.WriteLine(object arg1) 2) Console.WriteLine("A=" + A.ToString() + ", B=" + B.ToString()); Коряво, лучше Console.WriteLine("A={0}, B={1}", A, B); можно и нужный формат отображения задать тут же. 3) a -= 1; это a--; при том можно даже "совместить" эти декременты во 2 примере написав A[a--] и B[b--] в коде вывода, ну и соответственно в начале int sum1 = a-- + b--; 4) хардкодинг i < 5 в условии цикла 6-го примера (надо тот же A.Length пользовать) Ну и некоторые имена локальных переменных, скажем так, коротки и не мнемоничны sum1, a, b в коде 2 примера... P.S. Заодно посмотрел как называется функция из 8 примера - это "суперфакториал" ------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 19.07.16 15:17 |
Re: Тож недавно перед собеседованием | |
---|---|
alex; Автор Сообщений: 2856 Откуда: Москва Дата регистрации: 23.11.2004 |
Игорь, спасибо - все четко расписал
а если для 10 задачи так
Исправлено 1 раз(а). Последнее : alex;, 19.07.16 15:41 |
Re: Тож недавно перед собеседованием | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ну так это практически то же самое что и я писал в предпоследнем примере-запросе - просто с выделением суммирующего подзапроса в CTE
------------------ WBR, Igor |
Re: Тож недавно перед собеседованием | |
---|---|
Гулин Федор Сообщений: 4640 Откуда: Минск Дата регистрации: 24.10.2002 |
мс-скл мой осн. тул щас
exec sp_MSdependencies 'Stg.INF_Transaction', null, 0x140010 stackoverflow.com однако недокум. фича похоже однако не знал - полез бы в инфо таблицы с метаданными - там есть начсет остальных задач - за компом с гоглм все порешал бы а вот на бумаге - не факт полезная гимнатсика для ума - правда на собесдовании где стресс бывает даже что знаешь не ответишь. |
© 2000-2024 Fox Club  |