+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
class Values<T> {
T data;
Values() {}
Values(T data) {this.setData(data);}
public void setData(T data) {this.data = data;}
public T getData() {return this.data;}
}
public class Main {
public static void main(String[] args) {
Values[][] item = new Values[3][2];
item[0][0] = new Values("grapes");
item[0][1] = new Values(1);
item[1][0] = new Values("apples");
item[1][1] = new Values(1);
item[2][0] = new Values("peaches");
item[2][1] = new Values(1);
}
}
>>> кто меня интервьюировал на позицию Staff Engineer? Junior?
>>>
1. Если покупатель купит больше одного яблока,
то он получит скидку 20% на все яблоки в корзине;
2. Если покупатель купит пакет винограда, то второй пакет
он получит бесплатно.
Итог: посчитать стоимость корзины покупателя при выходе из магазина,
при то, что данные даны в следующем виде:
[["grapes", 1],["apples", 0],["peaches", 1]] => 12
[["grapes", 1],["apples", 1],["peaches", 1]] => 15 ...
https://habr.com/post/504638
Бля-я-я-я, это просто феерия! 1024--, зацени статью, ты оценишь!
Запостил: gost,
31 Мая 2020
gost 31.05.2020 12:46 # +1
Бля, как прекратить орать?
guest8 31.05.2020 16:40 # −999
bormand 31.05.2020 17:38 # +1
3.14159265 31.05.2020 18:16 # +4
Какой-то нудный джавашок.
Высрал зазубренное «мама мыла Раму, Рама держит маму, вышла замуж мама за индуса Раму»
Геттеры, сеттеры, оопитухи. Как до дела дошло — слился в мелочах, животное.
guest8 31.05.2020 18:19 # −999
bormand 31.05.2020 18:25 # +1
jojaxon 31.05.2020 18:27 # +3
3.14159265 31.05.2020 18:28 # +2
Отличный маркёр анскильного бездаря.
Его попросили алгоритм написать, а дрессированная абизьяна привычно надристала геттерами.
guest8 31.05.2020 18:32 # −999
bormand 31.05.2020 18:34 # +1
jojaxon 31.05.2020 18:37 # 0
И конфигов на XML поболее.
bormand 31.05.2020 18:45 # 0
bormand 31.05.2020 13:15 # 0
guest8 31.05.2020 16:41 # −999
Fike 31.05.2020 18:21 # 0
guest8 31.05.2020 18:24 # −999
Fike 31.05.2020 18:29 # 0
guest8 31.05.2020 18:31 # −999
Fike 31.05.2020 18:52 # 0
guest8 31.05.2020 19:02 # −999
Fike 31.05.2020 21:02 # 0
[["grapes", 1],["apples", 0],["peaches", 1]] => 12
строка и число валяются в __одном__ массиве
guest8 31.05.2020 21:17 # −999
Fike 01.06.2020 02:22 # 0
guest8 01.06.2020 02:55 # −999
Fike 01.06.2020 04:26 # 0
> данные даны в следующем виде:
дальше ему даже прямо говорят:
> Мой первый вопрос звучал невинно:
> Какую структуру данных мне ожидать в качестве входа?
> Ответ был еще более простым:
> Arrays (массивы). Создай дополнительный метод и опиши там данные вручную.
guest8 01.06.2020 04:32 # −999
Fike 01.06.2020 07:44 # 0
guest8 01.06.2020 10:37 # −999
Fike 01.06.2020 10:42 # 0
> На самом деле в этой задаче это НЕ нужно. Зачем в лист класть И число И стоку?
потому что именно это и будет на входе
bormand 01.06.2020 10:45 # +2
Думаешь индуса такое не устроило бы?)
guest8 01.06.2020 10:50 # −999
Fike 01.06.2020 21:20 # 0
просто на входе у тебя будет боксед обжект
на обсуждение чего наш рассматриваемый синиор потратил четверть интервью
bormand 01.06.2020 09:16 # +2
Ты на сеньора собеседуешься, блджад, почему ты такие вопросы задаёшь? Выбери сам и объясни почему выбрал.
Я бы взял удобную мне структуру (массив из нормальных структур с полями). Если бы мне на это сказали "чувак, а у нас на входе всё-таки JSON а не твоя структура", то добавил бы преобразование JSONObject'ов в неё. Но я думаю, что не сказали бы.
jojaxon 01.06.2020 09:49 # 0
Это что пример поколения Z? Годик там, годик сям поработал, ачивок насобирал, готов в сеньоры.
Desktop 01.06.2020 10:09 # 0
bormand 01.06.2020 10:31 # +1
Задачка со свободным выбором языка. Т.е. это просто логику и адекватность кандидата посмотреть, не более того. Какие нафиг абстрактные внешние системы?
Desktop 01.06.2020 10:46 # 0
jojaxon 01.06.2020 11:09 # 0
Desktop 01.06.2020 11:19 # +1
Было бы смешно, если бы чувак зафигачил решение на блок-схемах, посмотреть на лицо его собеседника.
1024-- 01.06.2020 17:47 # +1
"Язык на выбор" в понимании нормального человека - "выбрать какой-нибудь адекватный язык, который реально используется".
Если человек выбрал питушню вроде J, его надо гнать поганой метлой, т.к. он тролль, который только ищет слабые места в формулировках. Но его нанимали не для того, чтобы он каждое требование выполнял максимально черезжопно при формальной корректности, а наоборот, чтобы он мог работать с нечётко сформулированной задачей, вовремя выяснять про подводные камни и из мутных заданий делать прозрачные задания для своих подчинённых.
3.14159265 01.06.2020 17:51 # 0
Или какой-нибудь wvxvw.
Впрочем одно другому не противоречиит.
3.14159265 01.06.2020 17:56 # 0
А с другой стороны если задача требует расчёта какой-то матричной или статистической питушни.
И человек элегантно решил её именно при помощи J, напечатав при этом ответ в красиво отформатированных табличках — какой же он тролль?
Это свидетельствует о кругозоре конь-дедадта.
Как и в Сишке можно писать эзотерику. IOOCC тому пруф.
Так и в J можно писать более-менее понятно.
HIV 01.06.2020 18:42 # +3
Ещё для не похожих на мейнстримные языки не работает питушня как, например, с сиподобными языками, когда зная один язык можно прочитать код на другом с минимумом вопросов. И анскиллябры, которым лень читнуть туториалца кукаречут: "кококо! нифига ни панятна!". Точно так же совершенно не зная ни одного сиподобного языка код на сиподобных языках будет не понятен, точно так же не зная ни одного из ML-подобных языков, не понятен код на хаскеле и т.п.
В добавок для J есть либа 'primitives' которая именует все закоряки, но она не отменяет того, что нужно знать синтакс и что делают эти примитивы.
xyi 01.06.2020 18:55 # 0
3.14159265 01.06.2020 19:12 # 0
Плюсую.
Даже не сиподобными, но вообще алголоподобными.
Бейсики, Руби, Питоны, Ады, Паскали, Фортраны и VHDLи читаются на ура.
Desktop 01.06.2020 18:02 # 0
Desktop 01.06.2020 18:04 # 0
- его ещё не наняли. Речь про собеседование. Он не работает и по сути никому ничего не должен. Если интервьюер говорит: "Выбирай любой язык", а человек берёт пусть даже J, то значит интервьюеру надо в следующий раз включать голову, чтобы не тратить хотя бы собственное время.
Ну а поиск слабых мест в формулировках это вообще-то именно то, чем обе стороны и занимаются на собеседованиях.
TEH3OPHblu_nemyx 01.06.2020 18:14 # +2
—– У вас там неоднозначность в формулировке.
–— Выберите любой язык программирования.
—– J подойдёт?
–— Почему в шапке?
guest8 01.06.2020 19:55 # −999
1024-- 01.06.2020 20:23 # 0
То есть J/APL человек вообще случайно выучил - пошёл по улице, там пацаны кодили - вот и надуло. И вообще не знал, что эту питушню не везде понимают.
MAKAKA 01.06.2020 20:24 # 0
Если ты знаешь, на каких языках там пишут, то почему не писать задание на этом языке?
Бывает так, что ты не знаешь.
Я реально видел такое объявление, типа "нам пофиг, какие языки вы знаете, потому что вы всё равно не знаете Fantom , а мы на нем пишем"
1024-- 01.06.2020 20:36 # 0
Если не нужна работа, можно писать хоть на древнегреческом с синтаксисом 1C. Если нужна, то стоит либо выбрать что-то по теме, либо переспросить.
У нас даже в Европе есть такая глушь, где английский не все знают. Что уж говорить про языки программирования. Может, придёшь в контору, а там неучи C++ не понимают. А C++ знать надо. Это классика. А ты им ещё за r-value pituxes поясняешь, за концепты...
1024-- 01.06.2020 20:17 # 0
А он уже начал вы..бываться. Можно задать для приличия пару вопросов и пообещать перезвонить когда-нибудь потом.
Ведь если он троллит на собеседовании, то что будет, когда на нём будет несколько важных проектов и много питушни, которую кроме него больше никто не знает, и уволить его будет сложнее?
> значит интервьюеру надо в следующий раз включать голову
Зачем тогда собеседование? Так хоть можно как-то проверить, адекватный человек или нет, умеет он голову включать или нет.
А если всё по полочкам разложить и формулы написать, любой дурак на все вопросы ответит.
Desktop 01.06.2020 21:19 # 0
> Так хоть можно как-то проверить, адекватный человек или нет, умеет он голову включать или нет.
- на адекватность в принципе проверяется во время HR-интервью. А тут вообще щас наймут чуваков, которые умеют красиво фантазировать на основе кривого ТЗ, а вот по точным спецификациям работать не могут. Это будет индийский блокбастер с песнями и слонами.
guest8 01.06.2020 21:27 # −999
Desktop 01.06.2020 21:33 # 0
В целом, будем откровенны, в большинстве языков дженерики нужны в основном для коллекций.
guest8 01.06.2020 21:51 # −999
guest8 01.06.2020 19:44 # −999
1024-- 01.06.2020 20:26 # 0
Зачем поддаваться троллям и подбирать формулировки, когда можно набрать адекватных людей, которые выяснят подводные камни, а не подставят потом контору выполнив что-то формально по принципу "и так сойдёт"?
MAKAKA 01.06.2020 20:32 # 0
Другой вопрос, что он сам выбрал язык, и сам же в нем запутался, и стал доказывать интервьюеру, что невозможно решить его задачу на этом языке, потому что там массивы статические.
Почему ревьюера это должно ебать? Он разве его заставлял джаву выбирать?
Ревуер сказал "массивы", потому что в JS массивы динамические. Питуз мог бы это понять
1024-- 01.06.2020 20:43 # 0
> он спросил
Это да. Хотя бы поначалу не стал троллить.
> Питуз мог бы это понять
Да там массив в массиве и разнотипье. Либо абстрактная математическая запись для целей проектирования, либо скриптушатня, либо легаси питушня.
Ну ладно, может в скриптушатне автор не был. Но он же проектировал питушню, он же мог хотя бы подумать, что это абстрактушня!
MAKAKA 01.06.2020 20:47 # 0
Вообще немного странно, что там массивы.
JSеру православнее тоже было бы сделать массив объектов:
А вот питонист как раз мог бы использовать список туплов, там издревле картежи используют для этого
1024-- 01.06.2020 20:52 # 0
Писать такое долго. Там же по легенде индус нафигачил этой питушни для тестов. А зачем для тестов длинно писать? И ещё три таких объекта на строчку влезают, но уже как-то плохо.
И в коде возить эти pitux.item, pitux.quantity.
Fike 01.06.2020 21:25 # 0
> JSеру православнее тоже было бы сделать массив объектов
с одной стороны да, с другой в реальных задачах с этими его массивами данных из даталейка будет прилетать вообще любая дичь с недетерминированной схемой. ну и долбоебов, как мы видим, такое простое ограничение отсекает на ура.
guest8 01.06.2020 21:28 # −999
Fike 01.06.2020 21:39 # 0
jojaxon 01.06.2020 11:49 # 0
Из той же песни: сделать как у конкурента по скриншоту из проги, додумав бизнес-логику. Хорошо это не часто бывает.
bormand 01.06.2020 11:53 # +2
Да, ты работаешь не в вакууме прикрывшись джирой. Ты работаешь с коллегами. Зачем устраивать итальянскую забастовку и хуярить гетерогенное говно на дженериках? Ну спроси ты коллег, предложи им альтернативу. Может быть они и не против поменять этот ссаный формат данных.
Ну и опять же странно, что чел JSON во входных данных не увидел. Я думал, что у веб-разрабов это на рефлексах.
Имхо, эта "глупая" задачка всё что надо показала.
Desktop 01.06.2020 11:59 # 0
Её стопудов задают очень многим. Если так, то "недоспецифицированной" она может быть только специально, но тут возникает вопрос: зачем? Интервьюеру ехать или шашечки?
Если всё же он придумал задачу за 10 минут до звонка, то нахуй такой процесс интервью.
Чувака, который собеседовался, я не защищаю, хотя, на мой взгляд, они с этой конторой в плане пафоса друг друга нашли. Но его основной проёб это не дженерики и прочая лабуда, а то, что он просрал по тем или иным причинам собеседование и решил поплакаться на пол-рунета об этом. Это реально не L6.
> Ну спроси ты коллег, предложи им альтернативу.
- прямо на собесе? :-) А может они эти интервью как раз и проводят с той целью, чтобы найти альтернативу лол
Ты просто кмк судишь только с позиции конторы.
bootcamp_dropout 01.06.2020 12:12 # 0
А еще может быть что за 123456 интервью, имея на руках описание типа:
>>Итог: посчитать стоимость корзины покупателя при выходе из магазина, при то, что данные даны в следующем виде:
ТС первый догадался спросить, в каком виде ему ожидать данные
Desktop 01.06.2020 12:28 # 0
bootcamp_dropout 01.06.2020 12:31 # 0
валидный json
HIV 01.06.2020 12:37 # 0
А это шо?
bootcamp_dropout 01.06.2020 12:39 # 0
Desktop 01.06.2020 12:42 # +1
Думаю, ты где-то L2-L3. Мы перезвоним.
bootcamp_dropout 01.06.2020 12:44 # +1
bormand 01.06.2020 12:56 # +1
Desktop 01.06.2020 12:59 # +1
Бля, когда они уже начнут делать live streams с собесов. Так, шоб с кровищей, finish him и прочими няшностями
bormand 01.06.2020 13:19 # 0
Можно баттлы устраивать где-нибудь на твиче, собеседуя друг друга по очереди.
jojaxon 01.06.2020 13:26 # +1
guest8 01.06.2020 13:28 # −999
bormand 01.06.2020 13:43 # 0
guest8 01.06.2020 13:44 # −999
jojaxon 01.06.2020 13:44 # 0
guest8 01.06.2020 13:51 # −999
jojaxon 01.06.2020 13:55 # 0
Desktop 01.06.2020 14:14 # +1
guest8 01.06.2020 14:20 # −999
Fike 01.06.2020 21:27 # 0
HIV 01.06.2020 14:03 # +6
Олд-жабоёб собеседует молодого нерешительного скриптушка
Молодая пара питонистов устроила собеседование на публике
Два камерунских PHP разработчика собеседуют хрупкого трапа фронтедера
C++ разработчики устроили на конференции групповое собеседование
HIV 01.06.2020 13:43 # +3
https://interviewers-msk.xyz/
guest8 01.06.2020 13:44 # −999
1024-- 01.06.2020 17:51 # 0
HIV 01.06.2020 12:55 # +1
bootcamp_dropout 01.06.2020 12:59 # +1
Desktop 01.06.2020 12:39 # 0
Спробуй ще.
bootcamp_dropout 01.06.2020 12:40 # 0
bormand 01.06.2020 12:30 # +2
Эм, лол, ну да. "Я тут вижу JSON, но мне не хочется тратить наше с вами время на бойлерплейт, давайте запишем данные вот так и представим, что мы их уже распарсили?". Это ж минута буквально.
> с позиции конторы
Х.з., меня просто задачки не напрягают вообще. В чём вообще проблема написать что-то простенькое на привычном тебе языке? Я не понимаю, почему многих людей это так бесит :)
Desktop 01.06.2020 12:36 # 0
Эта задачка особо и не бесит. Просто зачем давать на неё час? Откройте какой-то сайт для рисования или печатания онлайн, там кандидат за 5 минут накидает решение на псевдокоде.
Но тут я уже больше склоняюсь к варианту, что у чуваков был какой-то дикий miscommunication. Один не мог, второй не хотел.
bormand 01.06.2020 12:42 # +2
Чтобы собеседуемому комфортно было. Иначе это пиздец стресс для большинства будет, только олимпиадники пройдут.
Я думаю никто не мешает решить её за 5 минут и уйти или о чём-то другом поболтать?
> решать какие входные данные
Эм, а тебе их всегда сверху присылают что ли, даже обсудить не предлагают? Какая скукота )))
Desktop 01.06.2020 12:46 # 0
> Эм, а тебе их всегда сверху присылают что ли, даже обсудить не предлагают? Какая скукота )))
- ты, я смотрю, в прикладухе мало работал. Приходишь на проект с бэкендом, который писался много лет и возвращает любую хуйню, о которой только можно "мечтать". И никто его ради тебя красивого менять конечно же не будет.
bormand 01.06.2020 12:51 # +1
Да мне этого и в системщине хватает, если честно...
Но новые то интерфейсы всё-таки можно по-человечески делать, с обсуждением с обоих сторон.
> вызывает стресс
Да не задача вызывает стресс, а тикающий таймер. Попробуй решить задачку за час и за 10 минут и сравни. Ну вот час - это достаточный запас для большинства, я думаю. А олимпиадники просто привыкли под давлением таймера работать.
Desktop 01.06.2020 12:55 # 0
Опять-таки, это тоже может быть целью интервью. Но как бы нафиг оно нужно. Искать надо то, где комфортно, а превозмогатели вон пусть в гейдев идут.
gost 01.06.2020 15:02 # 0
Полностью подтверждаю. Когда таймер тикает и нельзя даже на минутку отвлечься — это жопа.
HIV 01.06.2020 12:42 # 0
Я делал лабы людям, которые уже работали в ваб-параше, но сами были не в состоянии даже написать подпрограммку для поиска подстроки на асме или даже сях.
Desktop 01.06.2020 12:46 # 0
HIV 01.06.2020 12:51 # +2
Desktop 01.06.2020 12:53 # 0
guest8 01.06.2020 19:45 # −999
TEH3OPHblu_nemyx 01.06.2020 19:54 # +3
guest8 01.06.2020 19:56 # −999
TEH3OPHblu_nemyx 01.06.2020 19:57 # 0
https://govnokod.ru/21312#comment354390
MAKAKA 31.05.2020 22:29 # 0
Что мешает перевести на нормальное
?
1024-- 31.05.2020 22:45 # +1
> enum Product
Азазазаза, это хозяин магазина печенья вырос до трёх категорий.
> перевести на нормальное
guest8 31.05.2020 22:47 # −999
1024-- 31.05.2020 23:00 # 0
MAKAKA 01.06.2020 02:34 # 0
Конечно, в хаскелле она лучше
guest8 01.06.2020 03:13 # −999
bootcamp_dropout 31.05.2020 13:20 # +3
bormand 31.05.2020 13:26 # +4
HIV 31.05.2020 21:51 # 0
guest8 31.05.2020 21:54 # −999
HIV 31.05.2020 22:08 # 0
guest8 31.05.2020 22:10 # −999
Fike 31.05.2020 13:30 # +1
bormand 31.05.2020 13:34 # +1
Или как там в джавке...
З.Ы. Всё-таки тупые задачки неплохо отсеивают долбоёбов :)
bootcamp_dropout 31.05.2020 13:47 # +3
bormand 31.05.2020 13:58 # +1
bootcamp_dropout 31.05.2020 14:15 # +1
Просто понравилась такая форма представления данных
guest8 31.05.2020 16:48 # −999
bormand 31.05.2020 17:45 # 0
Сищники эту фишку юзали ещё когда эти ваши дата сатанисты под стол ходили.
guest8 31.05.2020 17:48 # −999
Fike 31.05.2020 18:01 # 0
впрочем, он нужен для аналитики, а не вытягивания целиковых записей
guest8 31.05.2020 16:47 # −999
guest8 31.05.2020 14:27 # −999
jojaxon 31.05.2020 14:38 # +1
guest8 31.05.2020 14:50 # −999
guest8 31.05.2020 14:52 # −999
gost 31.05.2020 15:19 # 0
1024-- 31.05.2020 15:24 # 0
Давайте, сохраняйте https://itnan.ru/post.php?c=1&p=504638, и чтоб такая питушня в последний раз была!
guest8 31.05.2020 16:45 # −999
TEH3OPHblu_nemyx 31.05.2020 17:40 # +3
http://web.archive.org/web/20200531094122/habr.com/ru/post/504638/
http://archive.li/PRR7A
Когда искал эту статью в кэшах поисковиков, наткнулся на заголовок «Программист с помойки»:
https://habr.com/ru/post/503458/
3.14159265 31.05.2020 18:07 # 0
А то кеш гугла уже всё.
TEH3OPHblu_nemyx 01.06.2020 01:42 # +1
http://archive.li/JjaY4
А в кэше «Бинга» — сама статья без комментариев:
http://archive.li/NtO1Q
TEH3OPHblu_nemyx 01.06.2020 01:50 # +2
Сюда попадают страницы с «Хабра»:
http://archive.li/habr.com
Сюда — из кэша «Бинга»:
http://archive.li/cc.bingj.com
Сюда — из кэша «Яндекса»:
http://archive.li/yandexwebcache.net
Сюда — из вебархива (двойная архивация, ага):
http://archive.li/web.archive.org
gost 01.06.2020 10:17 # +1
Добавлю в коллекцию: https://gcode.space/c7349e7d.mhtml. Сумел схоронить из кэша мобильного браузера.
1024-- 31.05.2020 15:46 # +2
Вообще, какая-то питушня. Человеку предложили выбрать язык для разговора, он сам выбрал джаву, выяснял какие-то джавапроблемы, ещё и динамический массив не нашёл. Зачем? Зачем?
Или в джаве динамический массив называется "вектор", и за любое сравнение с массивом карают боги?
У конторы вообще примеры похожи на какой-то PHP по синтаксису и стрелкам. Скриптухи писали.
Автору стоило бы спросить, нахрена они сделали этот массив массивов. И могут ли дублироваться тайтлы в этих массивах длиной больше трёх - это сырой выхлоп кассы или уже сгруппировано-просуммировано (кстати, не знаю, может где-то в магазинах из-за такого акция не посчитается, если посередине двух акционных товаров затесалась питушня).
А вышел какой-то джавапердолинг.
bormand 31.05.2020 15:59 # 0
Кстати может поэтому на продавцов и ругаются, что "скидка не прошла"?
3.14159265 31.05.2020 18:13 # 0
Потому что анскилябры пишут хуёвую логику на массивах?
guest8 31.05.2020 16:37 # −999
1024-- 31.05.2020 17:14 # 0
guest8 31.05.2020 17:21 # −999
bormand 31.05.2020 17:58 # 0
Кстати, а нафиг они в те годы во все объекты лочек насовали? Чтобы старый код не сдох от реальных тредов?
guest8 31.05.2020 18:04 # −999
bormand 31.05.2020 18:06 # 0
guest8 31.05.2020 18:08 # −999
3.14159265 31.05.2020 18:14 # 0
synchronized, wait, notify, notifyAll
bormand 31.05.2020 18:16 # 0
Просто на переходе с файберов на треды добавление лочек внутрь старых коллекций выглядит очень логично... Типа вернули старое поведение и добавили новых не тредсейф коллекций.
Fike 31.05.2020 18:22 # 0
> In Java 1.1, green threads were the only threading model used by the Java virtual machine (JVM),[8] at least on Solaris. As green threads have some limitations compared to native threads, subsequent Java versions dropped them in favor of native threads.
3.14159265 31.05.2020 18:23 # 0
Кто на ком стоял?
Вайберы в жабе?
jojaxon 31.05.2020 18:24 # +1
guest8 31.05.2020 18:30 # −999
3.14159265 31.05.2020 18:34 # 0
До 1.5 нужно было всё с нуля писать: пулы, очереди.
Кстати StringBuilder vs StringBuffer.
guest8 31.05.2020 18:37 # −999
3.14159265 31.05.2020 18:40 # 0
spurious wakeup называется
https://govnokod.ru/24867#comment435148
https://govnokod.ru/11978#comment157571
3.14159265 31.05.2020 18:36 # +1
А чтобы обезьяны не проёбывали, они все коллекции, StringBufferы сделали синхронными.
Вот SimpleDateFormat не сделали синхронным и сколько багров произошло от "оптимизаций"
guest8 31.05.2020 18:41 # −999
3.14159265 31.05.2020 18:25 # 0
Блять, неужели я один котирую Iterable? Самая простая в мире вещь, ленивый список.
Человеку нужно просто проитерироваться, и начинается какое-то дрочево.
guest8 31.05.2020 18:28 # −999
3.14159265 31.05.2020 18:31 # 0
Если мне нужно N элементов, чтобы обойти их for~each я возьму Iterable и всё.
На этом жавашок и погорел, начал рассказывать про мапы, глисты.
А индус слил его как лалку.
guest8 31.05.2020 18:35 # −999
3.14159265 31.05.2020 18:41 # +1
Именно.
Принимай как можно более обобщённый тип, возвращай как можно более конкретный.
Не помню как по-научному этот принцип назвать.
guest8 31.05.2020 19:01 # −999
bormand 31.05.2020 19:23 # +2
> консервативен
Звучит как какая-то политота на порнхабе.
TEH3OPHblu_nemyx 31.05.2020 19:28 # +3
Если ты не пишешь на сильно типизированных языках в зрелости, у тебя нет мозгов.
3.14159265 31.05.2020 21:50 # +1
А сильнотипизированные наоборот пытаются мимикрировать под нетипизированную скриптуху двадцатилетней гавности.
Desktop 31.05.2020 17:07 # +1
- а L8 это чтение пожеланий бизнеса ещё до того, как тот родился? :-)
guest8 31.05.2020 17:12 # −999
guest8 31.05.2020 17:15 # −999
guest8 31.05.2020 17:22 # −999
bootcamp_dropout 31.05.2020 17:45 # +1
Например, гугл
L3 SWE II
L4 SWE III
L5 Senior SWE
L6 Staff SWE
L7 Senior Staff SWE
L8 Principal Engineer
L9 Distinguished Engineer
L10 Google Fellow
С иерархией компании куда хотел пойти автор похоже, но не полностью: тут Staff SWE - L6 а не 7
bormand 31.05.2020 17:50 # 0
bootcamp_dropout 31.05.2020 17:51 # +1
Fike 31.05.2020 18:04 # +1
TEH3OPHblu_nemyx 31.05.2020 18:07 # 0
guest8 31.05.2020 18:09 # −999
1024-- 31.05.2020 21:41 # 0
> L4 SWE III
Вышло как-то через жопу - как с календарём.
10. Восьмябрь
11. Девябрь
12. Десябрь
3.14159265 31.05.2020 18:02 # +1
Я понимаю заветы Царя и всё такое.
Но это же ЙАЖА.
PS Access to this post is restricted
You're trying to open the post, written by capjdcoder, but unfortunately it was marked as a draft (by the user himself or the UFO)
jojaxon 31.05.2020 18:22 # 0
bormand 31.05.2020 18:27 # +1
jojaxon 31.05.2020 18:32 # 0
gost 01.06.2020 10:23 # 0
Ничего не понял.
UPD: понял, это «Cloudflare DNS» хуйню сделал. Ответ правильно доверия не заслужил.
guest8 31.05.2020 18:29 # −999
bormand 31.05.2020 18:31 # +2
> сколько пачек винограда я получу если куплю две
Две, лол. Сколько принес на кассу, столько и получишь. Не побежит тебе кассир третью искать.
guest8 31.05.2020 18:33 # −999
bormand 31.05.2020 18:38 # 0
А если ты купишь 3, то тоже оплатишь две.
guest8 31.05.2020 18:41 # −999
bormand 31.05.2020 18:44 # 0
guest8 31.05.2020 18:45 # −999
Fike 31.05.2020 18:54 # 0
guest8 31.05.2020 19:00 # −999
Fike 31.05.2020 21:04 # 0
MAuCKuu_nemyx 31.05.2020 21:27 # 0
guest8 31.05.2020 21:38 # −999
MAuCKuu_nemyx 31.05.2020 21:41 # +1
guest8 31.05.2020 18:59 # −999
1024-- 31.05.2020 21:48 # 0
guest8 31.05.2020 21:52 # −999
3.14159265 31.05.2020 21:56 # +1
Сам попадал в неё несколько раз.
Один раз купил мороженное, до меня продавщица доебалась что акция — пойди возьми второе.
Пришлось пойти взять. Хотел оставить ей на кассе, она сказала что правила запрещают брать у покупателей.
Так же несколько раз мне хотели всучить какие-то игрушки, свистоперделки за покупку на значительную сумму. Я обычно отказываюсь.
Один раз подошёл дядечка-охранник, говорит, оставь мне, я дочке отдам.
guest8 31.05.2020 21:58 # −999
HIV 31.05.2020 22:01 # 0
Мне кажца т.о. сбывают залежалый товар за счёт наивности копукателей.
guest8 31.05.2020 22:02 # −999
3.14159265 31.05.2020 22:20 # +1
Но он автоматом на карте срабатывает.
> за бесплатно тебе на самом деле никто ничего не даст.
Конечно. Банк просто делится профитом за эквайринг.
>Зря не берёшь, за бесплатно тебе на самом деле никто ничего не даст
Зачем мне ненужный мусор? Какие-то игрушечные фигурки гаррипоттеров или мстителей.
Я возьму, а потом кому-то не хватит.
Desktop 31.05.2020 22:57 # 0
- а ты хотел бы настоящую?
1024-- 31.05.2020 22:18 # 0
gost 01.06.2020 10:26 # 0
©https://bash.im/quote/410452
Desktop 31.05.2020 19:17 # +2
В этом интернет-магазинчике все акции руками вбиваются программистом, а бухгалтерию они наверное потом на абаке подсчитывают, да?
Кстати, встречал такое: цена за акционный товар считается полностью, а потом из окончательной суммы в самом конце вычитается скидка. Один раз подобное вызвало немало лулзов при попытке выяснить у польской продавщицы, не знавшей английского, чо за хрень.
bormand 31.05.2020 19:33 # 0
Desktop 31.05.2020 19:39 # +1
Но у нас-то обычно скидки прямо после позиций указывают.
Desktop 31.05.2020 19:13 # 0
guest8 31.05.2020 19:15 # −999
Fike 01.06.2020 22:12 # 0
guest8 31.05.2020 18:59 # −999
bormand 31.05.2020 19:17 # 0
guest8 31.05.2020 19:21 # −999
Desktop 31.05.2020 19:18 # 0
- а в какую сторону тут будет в пистоне округление?
bormand 31.05.2020 19:20 # +1
А тьфу, int не заметил. К нулю.
MAuCKuu_nemyx 31.05.2020 21:31 # +1
Мы вам перезвоним.
guest8 31.05.2020 21:35 # −999
1024-- 31.05.2020 21:59 # 0
1024-- 31.05.2020 22:22 # 0
Перевёл на J экмапитуз 16+.
3.14159265 31.05.2020 22:39 # 0
>экмапитуз 16+.
Говно ёбанное. Даже сишка лучше и компактнее.
* Код я не компилил
1024-- 31.05.2020 22:56 # 0
Но экматушня при тех же условиях тоже компактна, ещё можно форычнуться по исходным данным:
3.14159265 31.05.2020 23:08 # 0
>экматушня при тех же условиях тоже компактна
В любом случае тужились-тужились, завезли в язык тонны син. сахара а древнюю сишку уделать не могут.
guest8 31.05.2020 23:20 # −999
1024-- 31.05.2020 23:21 # 0
> i<2
Какая-то питушня. Может вспомним, что теперь надо товары сортировать в правильном порядке, четвёртый товар взять никак нельзя, отладить или распечатать чек тоже нельзя, т.к. имена товаров просраны?
А теперь давайте то же самое, только чтобы имена товаров остались живы.
3.14159265 31.05.2020 23:24 # 0
Знаю.
Длину нужно брать из енума. См. ниже.
Так же енум снимает проблему имён.
Плюс
Вот эта питушня не выкинет ошибки если написали "grapse"
А Сишка ошибку отловит:
1024-- 31.05.2020 23:28 # 0
Код скриптушков как-то отработает; для пущей адекватности туда можно добавить функцию группировки на три строки. А сиштушня будет слишком жёсткой, перед ней надо будет поставить слой дополнительной логики, чтобы сконвертировать исходные данные в царский формат.
3.14159265 31.05.2020 23:29 # 0
Не понял как?
1024-- 31.05.2020 23:40 # 0
Скриптушня не даст скидку на яблоки (помним, 3 строки - и даст), а сиштушня сломается
bormand 31.05.2020 23:43 # +3
3.14159265 31.05.2020 23:50 # 0
А это не так работает.
Оно 4 раза запишет единицу.
> { {APPLES,1}, {APPLES,1}, {APPLES,1}, {APPLES,1} }
3.14159265 31.05.2020 23:57 # +1
Группировка в сишке тоже тривиальна.
Это простые инкременты результирующего массива по переданному енуму.
1024-- 01.06.2020 00:06 # 0
Потому, что можно инициализировать массив нулями и безопасно суммировать без хаков вроде defaultdict или .get в пистоне или |0 в жс.
3.14159265 31.05.2020 23:34 # +1
3.14159265 31.05.2020 23:18 # +1
Это не принципиально. Хотел сам подход показать.
>Сишка оказалась компактнее только из-за отхода от индексушни
Экму с питоном сгубила ассоциативочка. Если бы её не было (как в Сишке), вы бы мыслили массивной индексушнёй, то написали бы программу компактнее.
>int normal(int n) { return n; }
Это кстати не нужно. Достаточно тернарником проверить функцию на nullptr и вернуть n.
1024-- 31.05.2020 23:24 # 0
Я хотел сначала написать (rules[item] || n => n)(count) без всяких тернарников.
Но с default/normal все правила находятся в одном месте.
Desktop 31.05.2020 23:43 # 0
- понимаю, что однострочность, но div_t так и просится.
3.14159265 31.05.2020 22:49 # 0
Ревьювер дураку уже прямо подсказывал: используй массивы.
Не хочу массивы — хочу жрать говножавашиться.
1024-- 31.05.2020 23:08 # 0
Во-первых, это было правило для яблок.
Но не так важно. Если кто-то возьмёт три пакета винограда, то заплатит за 2, а не за 2.4.
> int apples(int n) { return (n / 2 | 0) + n % 2; }
А вот тут можно было бы сделать n - n / 2 как у восьмишка. Это в анскильном JS нет целочисленного деления, а в сишке есть.
Итого,
Desktop 31.05.2020 23:46 # 0
- а ведь и вправду заебца! Можно троллить коллег на ревью.
bootcamp_dropout 31.05.2020 23:04 # +2
1024-- 31.05.2020 23:34 # +2
> .reduce((res, curr) => res + rules[curr[0]](curr[1]) * prices[curr[0]], 0)
Тоже хотел смешать map и reduce. Но смешанный вариант попахивает больше.
Кстати, в curr
> Маловато модерновой хуйни
ибо curr - это [item, count].
> get: (target, prop) => ({}).hasOwnProperty.call(target, prop) ? target[prop] : n => n
Кстати, о такой питушне думал, когда писал, но отказался в силу её громоздкости. При надобности изолировать выбор правила подойдёт банальная функция
guest8 31.05.2020 19:54 # −999
guest8 31.05.2020 19:58 # −999
TEH3OPHblu_nemyx 31.05.2020 21:03 # 0
guest8 31.05.2020 21:05 # −999
TEH3OPHblu_nemyx 31.05.2020 21:17 # 0
Возможно, имя класса нужно вытаскивать как explode('::', unserialize($key)[1])[2]. Но это будет некрасиво. Лучше в константах Item::APPLES хранить экземпляры класса, но тогда их нельзя объявить константой, придётся их объявлять переменными и где-то инициализировать.
Ещё можно у класса Item сделать статический метод, который будет выполнять (new Item(unserialize($key))).
А ещё у корзины можно сделать метод __toString, чтобы писать echo $basket вместо echo $basket->getPrice();
Ещё можно сделать, чтобы корзина реализовала интерфейс ArrayAccess, тогда метод add не будет нужен, достаточно будет $basket[] = Item::APPLES;
guest8 31.05.2020 21:18 # −999
3.14159265 31.05.2020 22:01 # 0
Я плюсанул за енумы. Но это есть нюанс, который сильно раздражает.
В енумах можно писать маловербозно и без функцианальной питушни:
guest8 31.05.2020 22:04 # −999
3.14159265 31.05.2020 22:05 # 0
3.14159265 31.05.2020 22:10 # 0
MAKAKA 31.05.2020 22:21 # +1
век живи -- век учись
спасибо
впрочем, в коко я бы взял sealed classes, а на чистой джаве я уже почти не пишу, кроме старого кода
guest8 31.05.2020 19:57 # −999
HIV 31.05.2020 21:35 # +2
MAuCKuu_nemyx 31.05.2020 21:37 # +1
HIV 31.05.2020 22:11 # +4
впрочем, хлопециально сразу изменить какие-то игруппированная перформансу из-за такогда в копается. Согласть И число класса нужен, да эти вашок и потому могу изменить его окончательно и добираешься.
3.14159265 31.05.2020 22:15 # 0
Ура! Рабоскрипт жив.
>хлопециально
Высокосинтаксически.
Проверил. Все словосочетанусы взязты из треда.
1024-- 31.05.2020 22:21 # 0
TEH3OPHblu_nemyx 01.06.2020 01:35 # 0
guest8 01.06.2020 04:21 # −999
guest8 31.05.2020 23:28 # −999
TEH3OPHblu_nemyx 01.06.2020 01:33 # +3
Desktop 01.06.2020 00:30 # +2
MAKAKA 01.06.2020 04:01 # 0
Хуй, как сюда метатаблы прикрутить?
KO6EHHbIu_nemyx 01.06.2020 13:06 # +1
Очевидно, от кандидата требовалось написать функцию (не ебу как это на джаве):
Это проверка не на знание языка программирования (т.к. это мало кого ебёт), а на адекватность. А автор, очевидно, хотел выебнуться и обосрался.
gost 01.06.2020 17:59 # +2
>>> Интервьюер, хотя и не сразу (не стал я выяснять причины, честно сказать — времени оставалось около 25 минут), согласился и сказал — давай на Map. Я потратил минут 10, чтобы накидать скелет кода, проверил граничные условия и сказал что закончил.
>>> Оказалось не тут-то было и все самое интересное было впереди. Помните скидки? Процитирую условие еще раз:
>>> If customer buys one grapes he gets another one for free. (Если покупатель купит один пакет винограда, то второй он получит бесплатно).
>>> В данном случае можно предположить, что имея данные в формате:
>>>["grapes", 2]
>>> в количестве данного продукта могут быть учтены и бесплатные пакеты винограда. Тогда картина должна быть следующей:
>>> ...
>>> Заметили паттерн? В корзине винограда должно быть всегда только четное количество. Однако исходя из начальных данных, в корзине также бывает и нечетное количество виограда
>>> В таком случае давайте будем исходить от противного — раз может быть нечетное количество винограда, тогда в корзине учитывается только тот виноград, который покупатель оплатил. Логично? Вроде да. Варианты когда покупатель просто не взял бесплатный виноград — не рассматриваются.
>>> А теперь внимание — правильный ответ!
>>> 1 оплаченный пакет + 1 бесплатный + 1 оплаченный
>>> Это феерично! Как? Ну как же так может быть?
Т.е. он мало того, что неправильно решил задачу (о чём ему в комментах всё же сумели донести), так ещё и проигнорировал тот факт, что на тестовых данных его решение работает неправильно, выдавая 15 + 3 + 7 = 25 вместо положенных 20. Синьор, блядь, программист, L80-датасаентист.
bootcamp_dropout 01.06.2020 18:04 # +3
Жри виноград сука
1024-- 01.06.2020 20:30 # 0
bormand 01.06.2020 21:46 # +1
Но блин, есть же здравый смысл. Чек - это отчётность, в нём нельзя взять и выкинуть "бесплатные" позиции. И кассир никогда не побежит за "бесплатными" пакетами винограда специально для тебя. Т.е. обе версии, предложенные автором статьи, сразу можно отбросить.