Здравствуйте, Pzz, Вы писали:
Тё>>Очевидно, когда промежуточные результаты выборки не влезают в память, используется merge join. Когда невозможно использовать ключик (его нет или условие с wildcard не позволяет использовать ключ)- решается перебором. Я совсем не разбираюсь в кишках БД, а Вы?
Pzz>Очевидно, что если нужны данные в диапазоне, то вытащить их из дерева поиска гораздо удобнее, чем из хэш-таблицы, или из данных, вытащенных из дерева на предыдущем шаге.
Откуда взялось дерево поиска?
Pzz> Поэтому умная БД проанализирует условие на предмет, как его выгоднее исполнять. Так же очевидно, что сам по себе этот анализ чего-то стоит, поэтому умная БД, однажды проанализировав, запомнит результаты анализа на будущее.
Вы напоминаете мне евангелистов C#. Которые в начале 2000х в религиозном экстазе утверждали, что умный .net сделает из p-кода исполняемый код, который заточенный под проц, на любой архитектуре, и исполнит его быстрей чем скомпилированный из C++ код. Нет серебрянной пули.
Pzz>Способ хранения данных на внешнем носителе добавляет свои нюансы, потому что со внешнего носителя сильно быстрее читать данные большой струей последовательно, чем собирать по раскинутым туда-сюда кусочкам. К SSD это тоже относится, хотя и в меньшей степени.
Сударь, вы слово "структуры данных" слышали? Так вот, от того, какая структура использована для ключей- такой будет поиск. Какая структура лучше подойдет- зависит от запроса и того, что в данных.
Pzz>В БД я понимаю чуть более, чем ничего.
ок.
S>>Придумал способ мести -- https://yandex.ru/promo/jobs/blitz/2018 K>Лучший способ мести Я это не пользоваться продуктами Я и агитировать дургих не делать этого, либо разработать конкурента продукту Я.
И запретить Яндексу писать в свой горшок. Санкции должны быть суровыми
Здравствуйте, Тёмчик, Вы писали:
Pzz>>Очевидно, что если нужны данные в диапазоне, то вытащить их из дерева поиска гораздо удобнее, чем из хэш-таблицы, или из данных, вытащенных из дерева на предыдущем шаге. Тё>Откуда взялось дерево поиска?
Потому что индекс в базе данных — это либо хеш-таблица, либо дерево поиска.
Pzz>> Поэтому умная БД проанализирует условие на предмет, как его выгоднее исполнять. Так же очевидно, что сам по себе этот анализ чего-то стоит, поэтому умная БД, однажды проанализировав, запомнит результаты анализа на будущее. Тё>Вы напоминаете мне евангелистов C#. Которые в начале 2000х в религиозном экстазе утверждали, что умный .net сделает из p-кода исполняемый код, который заточенный под проц, на любой архитектуре, и исполнит его быстрей чем скомпилированный из C++ код. Нет серебрянной пули.
В отличии от C# vs C++, база данных не предоставляет способа программировать ее на низком уровне.
Pzz>>Способ хранения данных на внешнем носителе добавляет свои нюансы, потому что со внешнего носителя сильно быстрее читать данные большой струей последовательно, чем собирать по раскинутым туда-сюда кусочкам. К SSD это тоже относится, хотя и в меньшей степени. Тё>Сударь, вы слово "структуры данных" слышали? Так вот, от того, какая структура использована для ключей- такой будет поиск. Какая структура лучше подойдет- зависит от запроса и того, что в данных.
Фраза не о чем, а термин "структура данных" обозначает не то, что вы думаете.
Здравствуйте, Pzz, Вы писали:
Pzz>В отличии от C# vs C++, база данных не предоставляет способа программировать ее на низком уровне.
Ну почему же, можно по разному составлять запрос или хинты(?) какие-нибудь. Т.е. запрос будет выполняться по-разному, в зависимости от. Будут использованы другие структру+алгоритмы поиска и т.д.
Вполне себе низкоуровнево.
Здравствуйте, Sharov, Вы писали:
Pzz>>В отличии от C# vs C++, база данных не предоставляет способа программировать ее на низком уровне.
S>Ну почему же, можно по разному составлять запрос или хинты(?) какие-нибудь. Т.е. запрос будет выполняться по-разному, в зависимости от. Будут использованы другие структру+алгоритмы поиска и т.д. S>Вполне себе низкоуровнево.
S>>>Придумал способ мести -- https://yandex.ru/promo/jobs/blitz/2018 K>>Лучший способ мести Я это не пользоваться продуктами Я и агитировать дургих не делать этого, либо разработать конкурента продукту Я.
H>И запретить Яндексу писать в свой горшок. Санкции должны быть суровыми
А у вас есть горшок свой?
Здравствуйте, Pzz, Вы писали:
Pzz>>>Очевидно, что если нужны данные в диапазоне, то вытащить их из дерева поиска гораздо удобнее, чем из хэш-таблицы, или из данных, вытащенных из дерева на предыдущем шаге. Тё>>Откуда взялось дерево поиска?
Pzz>Потому что индекс в базе данных — это либо хеш-таблица, либо дерево поиска.
Это всё, о чем вы осведомлены? Ну ладно, представим что либо хэш, либо дерево с сравнением. Вы понимаете, что в зависимости от выбранной структуры для ключа, запросы будут исполняться по-разному?
Pzz>>> Поэтому умная БД проанализирует условие на предмет, как его выгоднее исполнять. Так же очевидно, что сам по себе этот анализ чего-то стоит, поэтому умная БД, однажды проанализировав, запомнит результаты анализа на будущее. Тё>>Вы напоминаете мне евангелистов C#. Которые в начале 2000х в религиозном экстазе утверждали, что умный .net сделает из p-кода исполняемый код, который заточенный под проц, на любой архитектуре, и исполнит его быстрей чем скомпилированный из C++ код. Нет серебрянной пули.
Pzz>В отличии от C# vs C++, база данных не предоставляет способа программировать ее на низком уровне.
Pzz>>>Способ хранения данных на внешнем носителе добавляет свои нюансы, потому что со внешнего носителя сильно быстрее читать данные большой струей последовательно, чем собирать по раскинутым туда-сюда кусочкам. К SSD это тоже относится, хотя и в меньшей степени.
Тё>>Сударь, вы слово "структуры данных" слышали? Так вот, от того, какая структура использована для ключей- такой будет поиск. Какая структура лучше подойдет- зависит от запроса и того, что в данных.
Pzz>Фраза не о чем, а термин "структура данных" обозначает не то, что вы думаете.
Сударь, эта ваша фраза намекает на степень знакомства с структурами данных и алгоритмами сортировки, типичную для C# программиста. А к примеру, java программисты, в среднем по больнице, имеют какое-то практическое представление об алгоритмах.
Здравствуйте, Тёмчик, Вы писали:
Тё>Это всё, о чем вы осведомлены?
Нет, это не все, о чем я осведомлен.
Тё>Ну ладно, представим что либо хэш, либо дерево с сравнением. Вы понимаете, что в зависимости от выбранной структуры для ключа, запросы будут исполняться по-разному?
Понимаю. И?
Pzz>>Фраза не о чем, а термин "структура данных" обозначает не то, что вы думаете. Тё>Сударь, эта ваша фраза намекает на степень знакомства с структурами данных и алгоритмами сортировки, типичную для C# программиста. А к примеру, java программисты, в среднем по больнице, имеют какое-то практическое представление об алгоритмах.
Очередная фраза ни о чем.
Я не очень понимаю, с чего бы у программистов на C# и на Яве представление об алгоритмах и структурах данных так уж существенно различалось, языки-то весьма похожие. Разве что дело в ментальности, присущей соответствующей субкультуре, мне об этом трудно судить, поскольку я не принадлежу ни к тем ни к другим.
Мои представление об этом вопросе базируются в основном на чтении трудов основоположников, собственно и создавших современные представления на эту тему, а не на изучении языка программирования, придуманного какой-либо большой корпорацией.
G>Это почему это. Алгоритм N квадрат на 10 строчек, на N 20 строчек. Я предпочитаю 10 строчек кода.
Это распространненый подход со стороны програмистов C#. Про эффективность алгоритма реализации там никто не думает. (суммарное наблюдение по многим интерьвью програмистов)
G>Ведь требование производительности обозначены не были.
Почему то я уверен, что требования там были. Возможно потому что сам когда-то пару раз проходил собеседование в яндексе. (И даже работал там после второй попытки).
G>Плюс решение за N в сравнении с N квадрат не устойчиво к reset на компьютере — караптит изначальные данные.
Изначальные данные в ОЗУ и так портятся после reset.
Здравствуйте, eskimo82, Вы писали:
G>>Ведь требование производительности обозначены не были. E>Почему то я уверен, что требования там были. Возможно потому что сам когда-то пару раз проходил собеседование в яндексе. (И даже работал там после второй попытки).
Вспомнил про одно из своих собеседований в Яндекс.
Тоже задача на алгоритмы. Про требования пока ничего.
Я — какие требования к алгоритмической сложности и памяти? (в надежде, что сейчас он мне подскажет, за сколько это можно наиболее эффективно сделать)
Он (хитро улыбаясь) — максимально возможные.
Так что даже если явно про требования сказано не было — они всё равно были.
Как тот суслик, которого никто не видел — а он был.
_>Так что даже если явно про требования сказано не было — они всё равно были.
Тем не менее вам ответили предельно ясно.
_>Как тот суслик, которого никто не видел — а он был.
Понять ТЗ заказчика тоже дано лишь не всем.
Здравствуйте, Pzz, Вы писали:
Pzz>Я не очень понимаю, с чего бы у программистов на C# и на Яве представление об алгоритмах и структурах данных так уж существенно различалось, языки-то весьма похожие.
Из моих наблюдений. Довелось на C# попилить некоторое время. Может, потому, что задачи, решаемые на этих языках, существенно отличаются. Да взять хотя бы коллекции в жаве и коллекции в сишарпе. В жаве понятно, что люди, кто это проектировали, в теме структур и алгоритмов, там стройная система интерфейсов и контрактов. Плюс опенсорсных либ есть с разными модными структурами. В шарпе — какой-то винегрет как будто из перла позаимствовали.
А ещё у каждого буткемпера есть ментор, к которому можно ходить с вопросами, когда совсем ничего не понятно. Он же помогает с выбором задач на время стажировки и принимает финальное решение в конце, прошёл человек испытательный срок или нет. Но при этом он не тратит всё своё время на помощь буткемперу, основные точки пересечения по задачам у буткемпера всё-таки с владельцами задач.
Тё>А ещё у каждого буткемпера есть ментор, к которому можно ходить с вопросами, когда совсем ничего не понятно. Он же помогает с выбором задач на время стажировки и принимает финальное решение в конце, прошёл человек испытательный срок или нет. Но при этом он не тратит всё своё время на помощь буткемперу, основные точки пересечения по задачам у буткемпера всё-таки с владельцами задач.
Тё>Хрюши в яндексе совсем чебурахнулись головой?
Можешь своими словами пересказать? Столько текста не охота читать.
Здравствуйте, Gattaka, Вы писали:
G>Можешь своими словами пересказать? Столько текста не охота читать.
Я прочел поперёк. Как я понял из кучи непонятных модных словечек- человека, прошедшего собеседование, не причисляют к какой то команде и не зачисляют в штат. Вместо этого он продолжает "проходить собеседование" фуллтайм, 3 месяца, с зарплатой, делая учебные задания по всему спектру их команд. А потом выносят окончательный вердикт "прошёл/не прошёл". Даже не так- захотела его какая то команда к себе, или нет.
Imho еслм чел не совсем в отчаянном положении- пошлет их лесом и трудоустпомтся в менее шизанутую организацию.
Здравствуйте, eskimo82,
E> Понять ТЗ заказчика тоже дано лишь не всем.
Да-да-да. Даже когда Заказчик формулирует требование в виде "наивысочайшее качество"? А когда начинаешь его спрашивать: "А сколько вешать в граммах это в цифрах? Как мне измерить и понять — достигнуто это наивысочайшее качество или оно все еще второй свежести?" — он только хитро улыбается.....
Здравствуйте, Vlad_SP, Вы писали:
E>> Понять ТЗ заказчика тоже дано лишь не всем. V_S>Да-да-да. Даже когда Заказчик формулирует требование в виде "наивысочайшее качество"? А когда начинаешь его спрашивать: "А сколько вешать в граммах это в цифрах? Как мне измерить и понять — достигнуто это наивысочайшее качество или оно все еще второй свежести?" — он только хитро улыбается.....
Трудно понять из описания что там у вас конкретно было, но в принципе дело могло обстоять так.
Например, для алгоритма сортировки (если исключить частные случаи типа поразрядной) — "наивысочайшее качество" будет n·log(n). Имеется доказательство. В рамках интервью, конечно, вряд ли от тебя ждут формальных теорем, но хотя бы "нутром чую" должно быть, что говорит о наличии опыта. Т.е. на кодера ты тянешь (дайте точное ТЗ — запилю), но на инженера, который сам принимает решения (понимать чего же наивысочайшего можно достичь в данных условиях) — не тянешь.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, Gattaka, Вы писали:
G>Почему в нем первым пунктом идет не SOLID, например. А какая-то мутная задачка.
Потому что знание баззвордов ничего не значит в реальной работе, а вот умение писать эффективные алгоритмы — значит очень многое. Соответственно им нужны люди, которые реально умеют работать, а не "проходимцы собеседований", заучившие 100500 баззвордов и почему-то считающие, что они кому-то интересны.