Pull to refresh
4
0.2
Виталий Злобин @Vitaliy_Zlobin

Архитектор данных

Send message

Рекомендательные алгоритмы ВК до сих пор удивляют: включишь мультики ребёнку, отойдёшь, а потом слышишь как шутит какой-то "стендапер" с нецензурным сортирным юмором. Он(улучшенный рекомендательный алгоритм) словно не понимает, что если тут кто-то только что мультик смотрел, то значит быдлостендаперы явно не к месту, тупо во возрастным ограничениям. Причём это необучаемо: переключишь на следующую серию мультика, а после неё снова этот же(!) "стендапер".

А есть преимущества вашей книги над "Грокаем алгоритмы"? Как-то анализировали нишу и ближайших конкурентов?
При беглом сравнении содержания обеих книг, как-то даже не сильно заметна разница.

К отечественному высшему образованию много вопросов, но всё же:
1) Программа ВУЗа даёт ориентир и если вы выполняете задачи, то какая-то предполагаемая база вам обеспечена. Другое дело, если вы обманули препода, подставив где-то хитрый print.
2) Математику вы не будете учить сами. Ну не будете. Давайте честно. А без неё закрыт доступ к серьёзным книгам по алгоритмам(того же Кнута не прочитаете и даже не начнёте). И не стоит писать, что алгоритмы и структуры данных не нужны. Программист - это тот кто пишет программы, а программы - это алгоритмы и структуры данных, и больше ничего.
3) За полгода изучить программирование до трудоустройства? Смешно. Даже комментировать не буду.
4) У вас есть диплом о высшем профессиональном образовании. Как вы можете рассуждать, что было бы без него? Для меня, вы, теперь, главный пропагандист высшего айтишного образования, ведь работа в Apple и ЗП $21К в месяц - это впечатляет.
5) Сейчас вы рассуждаете с высоты 25+ лет, а не головой 17-летнего парня, который вчера сдал ЕГЭ.
6) Даже в Гарворде(надеюсь вы уважаете его диплом) принципиально не преподают современный стэк, ибо он молниеносно меняется, чего не скажешь про базу. База - это всё на чём стоят ваши вчерашние, сегодняшние и завтрашние фреймворки.
7) Не нужно путать кодера после курса, который занимается формошлёпством и программиста, который занимается действительно серьёзными вещами(финтех, телеком, медицина, космос и т.д.).
8) Кругозорные дисциплины тоже нужны, они пытаются расширять вашу личностную область видимости. Не нужно зацикливаться только на программировании, есть ещё жизнь за пределами IDE.
---
Кстати, у меня нет айтишного образования и я разраб с курсов, но хотелось бы это исправить. Причём образование - это не равно диплом. Не знаю, буду ли куда-то ещё поступать в ВУЗ, но базу ИВТ, по книгам и курсам, подтягиваю. Хоть этого и не требуется в работе напрямую, но даёт свои плоды в мышлении и понимании того, что происходит под капотом.

Сейчас там Самородов про SQL Server рассказывает. Его лекции есть на ютубе и это пожалуй лучшее, что было со мной на пути изучения MS SQL, очень рекомендую.

Вы не поняли главного: не маркетплейсы, а мы будем платить ПР.

чисто юридически, автор не обращался в ООО ДИГМА с официальным запросом, а переписку в чатике всегда можно свести к: ой, извините, сотрудник 2й день работал. Я даже не уверен, что за "некорректный" ответ ТП можно выписать небольшой штраф. Когда автор отправит запрос на юрлицо, а ему ответят с печатью и подписью, тогда можно будет что-либо утверждать. Пока что "ничего" не было, если мы говорим о законодательстве РФ или международном.

Условие в последнем JOIN "потеряет" данные на максимальных значениях price для каждой категории, например товар с ценой 10000 будет попросту отсечён, т.к. он больше либо равен 0 и НЕ меньше 10000(к слову, о качестве курсов в Яндекс Практикум).

JOIN category c ON p.price >= c.limit_1 AND p.price < c.limit_2

Исправить можно переписав на, подходящий сюда, BETWEEN:

JOIN category c ON p.price BETWEEN c.limit_1 AND c.limit_2

Так же "потеряются" данные о товарах с ценой выше чем 200000, а тут уже нужен LEFT JOIN и обработка таких случаев в SELECT:

CASE WHEN c.category IS NULL THEN 'дорогущий' ELSE c.category END AS category

Про правильное именование хотелось бы добавить:
limit_1 и limit_2 необходимо переименовать в min_price и max_price - вы учите, а нам потом с таким кодом приходится сталкиваться повсеместно. Помимо денег, нужно брать ответственность за качество обучение.

Собеседование пройдено — вас НЕ взяли на работу!

Как мы устали от "это только для демо, в жизни так не бывает".
А в чём собственно проблема у эксперта SQL разобрать реальную ситуацию и показать новичкам правильное применение JOIN, IN, CASE..?
Непредставимо, чтобы трудовик забивал шурупы молотком со словами: это я просто показываю возможности молотка, вообще по гвоздям бить надо, но они чуть дальше лежали, поэтому показываю на шурупах.

Всё верно, похоже так и было, он 11 из 15 лет в больнице какое-то архивное CRUD приложение поддерживал и видимо ничем айтишным не интересовался вне работы.

После этого конечно изменили подход:
1) Стали более внимательно смотреть резюме, особенно бюджетников
2) Вернули скрининг, он реально помогает просеять уж совсем никаких
Стало поинтереснее, но всё же.
А что плохого в простом лайфкодинге, если у человека нет репо? Поделитесь опытом, пожалуйста.
Не нужно просить написать быстрые сортировки, но всё же посмотреть как человек решает простую задачку и оформляет код - очень любопытно до трудоустройства.
Лично я никогда не воспринимал это в штыки, а наоборот с интересом подходил.
Мы на одном собесе давали простенькую задачку с полным пониманием и 90% скидкой за результат:
1) решил - очень круто!
2) не решил, но пытался - ок, ничего страшного, правда)
3) не решил и не пытался - такой не нужен от слова "совсем"(

Отклик - это просто нажатая кнопка.
Интересно вот что: стали ли вы быстрее закрывать вакансии?
Мы из 10 собесов только одному дали оффер и он отказался - скорее всего просто ЗП на текущем месте апнул и работает дальше. Остальные 9 кандидатов были абсолютно никакие, хотя у одного было 15 лет опыта, но по знаниям слабый джун

Да, но вы завели дополнительное 8ми байтовое поле на строку, а это увеличение кол-во страниц, чтений и возможно увеличение промежуточных уровней дерева.
Я имею в виду создать таблицу:

CREATE TABLE dbo.metadata
(
id bigint NOT NULL,
sha256_part1 binary(8) NOT NULL,
sha256_part2 binary(24) NOT NULL,
CONSTRAINT pk_metadata PRIMARY KEY CLUSTERED (id)
)
CREATE NONCLUSTERED INDEX IX_sha256_part1_include_sha256_part2 ON dbo.metadata (sha256_part1) INCLUDE(sha256_part2)

Так дешевле хранить и дешевле искать - экономится 8 байт на строку. Так же поле фиксированной длины экономить по 2 байта на строку, поэтому рекомендую binary вместо varbinary

Что если вместо поля sha256 создать 2 поля: sha256_part_1 и sha256_part_2?
В поле sha256_part1 хранить первые 10 символов(например) и построить некластеризованный индекс по первой части включая вторую?

CREATE NONCLUSTERED INDEX IX_sha256_part_1_include_sha256_part_2 ON dbo.metadata (sha256_part_1) INCLUDE(sha256_part_2)

Он и место дополнительное не займёт и в случае коллизии перебирать не много. Нужно вычислить оптимальную длину первой части - чтобы и дерево индекса не раздувать и максимально избежать коллизий.

Information

Rating
2,747-th
Location
Бердск, Новосибирская обл., Россия
Registered
Activity

Specialization

Database Developer, Database Architect
Lead
From 350,000 ₽
SQL
C#
Python