|
|
|
Задача на собеседование
|
|||
|---|---|---|---|
|
#18+
КобанчегSkilledJunior, Если представить, что задача была дана до интервью как тестовая, то возникает вопрос: что для кандидата хуже : не прислать ничего или прислать твой бред. К сожалению, прислать бред все же хуже, т.к. ничего не прислав можно будет попробовать на открывшуюся позицию через некоторый срок. А если кандидат прислал такое, то его вряд ли рассмотрят и через год и через два. Какое громкое заявление, давай свой изящный и эффективный процедурный говнокод код или для тебя код на PL/SQL по умолчанию является говнокодом? Кстати не забывай, что ваше решение недетерминированное, т.е. если есть одинаковые отрезки, то новая заправка будет попадать в них в зависимости от того как фишка ляжет, у меня решение детерминированное, заправка всегда добавляется на самый удаленный отрезок. КобанчегПотому что ясность мышления приобретается заметно сложнее чем знания по продукту. Если у кандидата каша в голове то какая разница, пусть он знает хоть все доки наизусть. Тебе еще работать и работать над приобретением ясности мышления)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2018, 00:13 |
|
||
|
Задача на собеседование
|
|||
|---|---|---|---|
|
#18+
КобанчегВыполняем k итераций, на кадой сортируем набор размером n. Ты считаешь что сортировка n-записей дешевле однократного прямого прохода по n-записям для поиска максимального значения? Ты случаем не из параллельной вселенной? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2018, 00:20 |
|
||
|
Задача на собеседование
|
|||
|---|---|---|---|
|
#18+
SkilledJuniorКстати не забывай, что ваше решение недетерминированноеРешение недетерминироавнное у Valergrad. Детерминированность приобретается, если добвить еще одно поле в order by. Модели обе детерминированнве некуда. Единственное что, последнюю можно чуть упростить и обойтись first_value/last_value вместо трюкачества с keep. SkilledJuniorТы считаешь что сортировка n-записей дешевле однократного прямого прохода по n-записям для поиска максимального значения?Нет, это ты счтаешь, что я считаю. Из параллельной реальности это тот кто сам себе задачу поставил - сам спамит на форум свои шЫдевры и думает что с ним кто-то соревнуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2018, 01:11 |
|
||
|
Задача на собеседование
|
|||
|---|---|---|---|
|
#18+
Понятно, значит эталонного процедурного исполнения от Кабанчега мы не увидим, чего и следовало ожидать ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2018, 01:14 |
|
||
|
Задача на собеседование
|
|||
|---|---|---|---|
|
#18+
SkilledJuniorв зависимости от того как фишка ляжетВ бизнесе это нормальная практика, бросать монетку при прочих равных. Способствует конкуренции. Да и концепция реляционных множеств не накладывает обязательности сортировки яиц в корзине. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2018, 08:29 |
|
||
|
Задача на собеседование
|
|||
|---|---|---|---|
|
#18+
SkilledJuniorно есть большое но, индекс очень быстро теряет свою селективность по максимальному значению и начинает стремиться к полному перебору, т.е. индекс нужно периодически полностью перестраивать Здесь вы ошиблись - для нахождения максимального значения селективность индекса не влияет, оно всегда находится за высоту индекса. Впрочем, решение с индексом все равно плохое т.к. накладные расходы на dml-операции съедят все. Я имел ввиду думать именно в сторону алгоритмических структур данных, реализованных на pl/sql, среди них есть множество структур данных поддерживающих апдейт значения и поиск максимума на отрезке одновременно за o(log n). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2018, 13:00 |
|
||
|
Задача на собеседование
|
|||
|---|---|---|---|
|
#18+
Valergradдля нахождения максимального значения селективность индекса не влияет, оно всегда находится за высоту индекса.В целом это не совсем так: RS с левой открытой границей читает пустые блоки индекса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2018, 13:43 |
|
||
|
Задача на собеседование
|
|||
|---|---|---|---|
|
#18+
ElicValergradдля нахождения максимального значения селективность индекса не влияет, оно всегда находится за высоту индекса.В целом это не совсем так: RS с левой открытой границей читает пустые блоки индекса Это, конечно, интересно, но в нашем случае блоки же не будут пустые? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2018, 18:20 |
|
||
|
Задача на собеседование
|
|||
|---|---|---|---|
|
#18+
ValergradElicпропущено... В целом это не совсем так: RS с левой открытой границей читает пустые блоки индекса Это, конечно, интересно, но в нашем случае блоки же не будут пустые? Хотя если речь о моем утверждении "оно всегда находится за высоту индекса. " - согласен, был неправ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2018, 18:21 |
|
||
|
Задача на собеседование
|
|||
|---|---|---|---|
|
#18+
ValergradЗдесь вы ошиблись - для нахождения максимального значения селективность индекса не влияет, оно всегда находится за высоту индекса. Впрочем, решение с индексом все равно плохое т.к. накладные расходы на dml-операции съедят все. Какие такие dml-операции, дергать dml в функции на каждую итерацию это кирдык производительности сразу, нее только ручками, только хардкор. А ручками мы можем строить либо упрощенный вариант без сортировки внутри листьев, что быстро, но селективности не будет, либо с сортировкой внутри листьев, только подумайте что делать, если значение попадает куда то в начало блока, чтобы сохранить сортировку придется сдвинуть все значения в этом листе, как ни крути очень накладные операции и дадут ли они существенный прирост производительности большой вопрос. Кроме того изменение данных таково, что верхняя граница постоянно уменьшается и данные упаковываются в меньший диапазон, т.е. если мы построили индекс от минимального до максимального значения с равномерной разбивкой на диапазоны значений, через небольшое количество итераций все данные окажутся в одном-двух листьевых блоках. Если листы не имеют внутренней сортировки получаем то от чего хотели уйти, полный перебор, если листы содержат отсортированный набор имеем перестройку сортировки при добавлении нового/удалении старого значения. Можно посмотреть на тестовом примере: Код: plsql 1. NUM_STATIONDIST_TO_PREVALLOCATEDNEW_DIST23033505480852026707760681001091701710160161136036 диапазон 2-36 Код: plsql 1. NUM_STATIONDIST_TO_PREVALLOCATEDNEW_DIST23033512.54822.6666666666666666666666666666666666666752026722.33333333333333333333333333333333333333761381032.591752.83333333333333333333333333333333333333101652.666666666666666666666666666666666666671136113 всего тридцать заправок и диапазон уже 2-3 Код: plsql 1. NUM_STATIONDIST_TO_PREVALLOCATEDNEW_DIST2321354148715211676176518109191716110161511136351 Совпало так совпало))) 100 заправок и диапазон 1-1 ValergradЯ имел ввиду думать именно в сторону алгоритмических структур данных, реализованных на pl/sql, среди них есть множество структур данных поддерживающих апдейт значения и поиск максимума на отрезке одновременно за o(log n). Пример? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2018, 23:04 |
|
||
|
Задача на собеседование
|
|||
|---|---|---|---|
|
#18+
SkilledJuniorА ручками мы можем строить либо упрощенный вариант без сортировки внутри листьев, что быстро, но селективности не будет, либо с сортировкой внутри листьев, только подумайте что делать, если значение попадает куда то в начало блока, чтобы сохранить сортировку придется сдвинуть все значения в этом листе, как ни крути очень накладные операции и дадут ли они существенный прирост производительности большой вопрос. Вы судя по всему не знакомы со стандартными структурами данных, поэтому у вас так мало вариантов. На самом деле их, конечно, больше. SkilledJuniorValergradЯ имел ввиду думать именно в сторону алгоритмических структур данных, реализованных на pl/sql, среди них есть множество структур данных поддерживающих апдейт значения и поиск максимума на отрезке одновременно за o(log n). Пример? Как пример ( я не говорю что это самая подходящая для данной задачи структура ) - https://ru.wikipedia.org/wiki/Красно-чёрное_дерево ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 11:51 |
|
||
|
Задача на собеседование
|
|||
|---|---|---|---|
|
#18+
ValergradВы судя по всему не знакомы со стандартными структурами данных, поэтому у вас так мало вариантов. На самом деле их, конечно, больше. Ты прав, нужно расширять кругозор. ValergradКак пример ( я не говорю что это самая подходящая для данной задачи структура ) - https://ru.wikipedia.org/wiki/Красно-чёрное_дерево Спасибо за ссылку, но хотелось бы: Valergradреализованных на pl/sql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 22:55 |
|
||
|
Задача на собеседование
|
|||
|---|---|---|---|
|
#18+
Как обосновать, что ответ Кобанчег Код: plsql 1. 2. 3. 4. 5. 6. лучше, чем например: Код: plsql 1. 2. 3. 4. 5. 6. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 10:37 |
|
||
|
Задача на собеседование
|
|||
|---|---|---|---|
|
#18+
Est_voprosлучше, чемПо критерию max результат равнозначный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 11:32 |
|
||
|
Задача на собеседование
|
|||
|---|---|---|---|
|
#18+
-2-По критерию max результат равнозначный. А как это реализовать на SQL? Если так: Вычислить расстояния на отрезках. Определить среднее. просуммировать отклонения расстояний от средних, умноженные на кол-во отрезков То решение Кобанчег Код: plsql 1. 2. 3. 4. 5. 6. хуже, чем Код: plsql 1. 2. 3. 4. 5. 6. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. SUM_DELTA_AVG_KOL41.8333333333333 Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. SUM_DELTA_AVG_KOL12.8333333333333 Кобанчег, парируйте! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 12:56 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39721615&tid=1883283]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
166ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 217ms |
| total: | 491ms |

| 0 / 0 |
