Russian Qt Forum
Ноябрь 22, 2024, 10:18
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Общий
>
Быстрая вставка
Страниц:
1
2
[
3
]
4
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Быстрая вставка (Прочитано 20360 раз)
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Быстрая вставка
«
Ответ #30 :
Сентябрь 10, 2020, 16:01 »
Цитата: Авварон от Сентябрь 10, 2020, 15:52
Ну смотрите, вы даете задачку реализовать баннерокрутилку. У вас есть несортированный набор рекламных объявлений с приоритетом. Вам надо показать топ-10 по высшему приоритету. Прикладная задача? Вполне.
Вполне прикладная. Только не на 40 минут.
1. Какую технологию используем для показа баннеров?
2. В каком формате хранятся объявления?
3. С помощью каких средств осуществляется доступ к объявлениям?
4. Показать за какой период времени? Все 10 сразу или по очереди? С какой задержкой?
5. Куда деплоить?
Ну и еще десяток попутных задач.
В общем, новичку на неделю работы (моя грубая оценка, т.к. я по вебу не спец).
PS. Ну и кстати я бы за полную сортировку голосовал.
Пускай все объявления всегда по приоритетам лежат отсортированными.
Так и искать проще, и вставлять, и удалять.
«
Последнее редактирование: Сентябрь 10, 2020, 16:23 от Racheengel
»
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Быстрая вставка
«
Ответ #31 :
Сентябрь 10, 2020, 16:34 »
Цитата: Racheengel от Сентябрь 10, 2020, 15:56
Ну а по теме, действительно, условие по сохранению "порядка" - оно новое. Поэтому и решение меняется.
Код лень писать, но я бы сначала сделал кэш по первичному ключу в виде <имя:<номер:позиция>> ( QMap<QString, QMap<int, int> >)
Цитировать
Мудрость приходит со старостью, но старость чаще приходит одна
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Быстрая вставка
«
Ответ #32 :
Сентябрь 10, 2020, 16:38 »
Цитата: Racheengel от Сентябрь 10, 2020, 16:01
Вполне прикладная. Только не на 40 минут.
Ну эти все вопросы вам допустим расскажут, все что вам надо это написать алгоритм.
Условно у вас есть с++ сервер который уже до вас написан и вам надо отдать по РЕСТу массив айдишников в жисоне. А точнее просто вектор интов, сериализация в жисон тоже уже написана - все что от кандидата требуется - это сделать это максимально быстро.
Массив не сортирован потому что так "исторически сложилось" (ну или скажем он сортирован по таймстемпу добавления баннера). Но это все детали не нужные в задаче.
Просто именно эта задачка выросла из прикладной - надо было сделать ровно это по тикету и делающий решил ее на собесах спрашивать потому что отлично ложиться на редкий но стандартный алгоритм.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Быстрая вставка
«
Ответ #33 :
Сентябрь 10, 2020, 16:42 »
Цитата: Racheengel от Сентябрь 10, 2020, 16:01
Вполне прикладная. Только не на 40 минут.
1. Какую технологию ...
Кстати да. Дело совсем не в том знает ли человек std::partial_sort, а насколько хорошо он владеет используемыми технологиями. Ну или насколько быстро и охотно он их освоит (бессмертное "быстро учуся"). Столь общие/абстрактные задачки как эта бывают, но редко, макс 5%, остальное завязано на специфику
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Быстрая вставка
«
Ответ #34 :
Сентябрь 10, 2020, 16:53 »
Цитата: Igors от Сентябрь 10, 2020, 16:42
Кстати да. Дело совсем не в том знает ли человек std::partial_sort, а насколько хорошо он владеет используемыми технологиями. Ну или насколько быстро и охотно он их освоит (бессмертное "быстро учуся"). Столь общие/абстрактные задачки как эта бывают, но редко, макс 5%, остальное завязано на специфику
Если человек, идущий на сеньора до сих пор не выучил алгоритмы stl, то может он их никогда не выучит=)
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Быстрая вставка
«
Ответ #35 :
Сентябрь 10, 2020, 17:47 »
Цитата: Авварон от Сентябрь 10, 2020, 16:53
Цитата: Igors от Сентябрь 10, 2020, 16:42
Кстати да. Дело совсем не в том знает ли человек std::partial_sort, а насколько хорошо он владеет используемыми технологиями. Ну или насколько быстро и охотно он их освоит (бессмертное "быстро учуся"). Столь общие/абстрактные задачки как эта бывают, но редко, макс 5%, остальное завязано на специфику
Если человек, идущий на сеньора до сих пор не выучил алгоритмы stl, то может он их никогда не выучит=)
Ибо это нафиг не нужно
Я сеньор-помидор и я не знаю алгоритмов stl. Знаю только про sort, юзал его когда-то.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Быстрая вставка
«
Ответ #36 :
Сентябрь 10, 2020, 17:56 »
Цитата: Авварон от Сентябрь 10, 2020, 16:53
Если человек, идущий на сеньора до сих пор не выучил алгоритмы stl, то может он их никогда не выучит=)
Ничего страшного. Действительно хороших алгоритмов там очень немного, в основном упорное навязывание ФП
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Быстрая вставка
«
Ответ #37 :
Сентябрь 10, 2020, 18:10 »
Цитата: Пантер от Сентябрь 10, 2020, 17:47
Ибо это нафиг не нужно
Я сеньор-помидор и я не знаю алгоритмов stl. Знаю только про sort, юзал его когда-то.
Если ваша работа - перекладывать джисоны то, возможно, не стоит эти гордиться
Но если серьезно, то вон всякие set_intersection и unique весьма полезны. Как удалить дубликаты / из пути? Ну можно написать регэксп о который будет спотыкаться каждый читающий, а можно просто unique сделать - это будет в 100500 раз быстрее.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Быстрая вставка
«
Ответ #38 :
Сентябрь 10, 2020, 19:11 »
Я редко когда встречал проблему, где узким местом было использование неправильного алгоритма сортировки. Обычно проблемы (и и решения) находятся на более высоких уровнях абстракции.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Быстрая вставка
«
Ответ #39 :
Сентябрь 10, 2020, 19:13 »
"не барское это дело, синьйорам в stl-ях копаться"
Ну а если серьёзно, многие забивают на производительность, к сожалению. И дело тут даже не в регэкспах (хотя они write only как правило). Электрон и иже с ним развращают. Можно ж больше памяти запихнуть и проц побыстрей, и всё, типа.
PS. Имхо: алгоритмические штуки - это всё-таки middle-level. Синьйор как раз тем и отличается, что может делегировать подобные задачи нужным людям, а не заниматься микроменеджментом и копипастингом.
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Быстрая вставка
«
Ответ #40 :
Сентябрь 10, 2020, 19:27 »
Цитата: Пантер от Сентябрь 10, 2020, 19:11
Я редко когда встречал проблему, где узким местом было использование неправильного алгоритма сортировки. Обычно проблемы (и и решения) находятся на более высоких уровнях абстракции.
Значит ты не работал с данными где миллионы строк. Банальное знание алгоритмов и О-нотации позволило мне в яндексе ускорить джобу с 12 часов до 3. Джоба молотила всего какие-то жалкие 30-40 терабайт данных.
Банерокрутилка - хороший пример, у тебя миллионы банеров, а надо только 10. 10^6*log(10^6) это сильно больше чем 10^6*log(10)
«
Последнее редактирование: Сентябрь 10, 2020, 19:30 от Авварон
»
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Быстрая вставка
«
Ответ #41 :
Сентябрь 10, 2020, 19:41 »
ХЗ, я всего лишь в IoT работаю. Баннеров тут нет...
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Быстрая вставка
«
Ответ #42 :
Сентябрь 10, 2020, 22:32 »
Цитата: Авварон от Сентябрь 10, 2020, 19:27
Банерокрутилка - хороший пример, у тебя миллионы банеров, а надо только 10. 10^6*log(10^6) это сильно больше чем 10^6*log(10)
Имхо, сейчас это хороший пример плохого дизайна...
Миллион баннеров, не отсортированных по темам/приоритету, из которого надо каждый раз вынимать по N штук "лучших"? ну
Почему бы их не сортировать по мере поступления?
Или, если невозможно, хотя бы там раз в час в бэкграунде?
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Быстрая вставка
«
Ответ #43 :
Сентябрь 10, 2020, 22:46 »
Ну вы же не будете сортировать гигабайтный файл по каждому возможному ключу? Потом такое решение экономит время разработки - вам не надо создавать один еще один файл, тестировать, аплоадить его на кластера... 3 строки кода или два дня работы?
Как я уже говорил - так могло исторически сложиться, может там вообще заммапленный в память файл на каком-нибудь богомерзком
MMS
и вам еще надо сериализацию написать для сортированной версии.
Записан
RedDog
Частый гость
Offline
Сообщений: 221
Re: Быстрая вставка
«
Ответ #44 :
Сентябрь 11, 2020, 11:10 »
Алгоритмами можно оптимизировать, ну процентов на 10% по производительности, самая главная оптимизация в бизнес логике идет, там можно в десятки тысяч раз оптимизировать.
Была задача сначала написана "в лоб" бегала по графу 30-40 млн раз, после оптимизации (предварительной фильтрации) по этому же графу стала бегать 3-5 тыс. раз. Но для этого надо было сначала распарсить бизнес-логику.
Записан
Страниц:
1
2
[
3
]
4
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...