Архитектор из дома

Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Архитектор из дома

Post by Сабина »

Позицию в смысле job title ;), но за детали тоже спасибо
https://www.youtube.com/watch?v=wOwblaKmyVw
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Архитектор из дома

Post by Сабина »

olis wrote: Да примерно того что АццкоМото написал - код в одну строчку.
Я ведь не из вредности ее спросил, а так - чиста разговор поддержать. Потому что на вопросы коллеги она тоже толком не ответила.
От дамы мы никакаго кода не дождались. После туалета она повторила "злые вы, уйду я от вас", только нам обоим и на английском.
С дамой я не берусь судить, бог знает что за там у вас ситуация вышла :). Мне чисто хотелось понять какого ответа ждали. Ну вот в моем случае он явно не подошел как я и описала выше.
https://www.youtube.com/watch?v=wOwblaKmyVw
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Архитектор из дома

Post by АццкоМото »

Сабина wrote:Ну вот в моем случае он явно не подошел как я и описала выше.
Не знаю, от вас просили использовать буфер в один символ/байт - так там используется ровно столько же
можно ВООБЩЕ не использовать буфер, принципиально, и свопать два символа через XOR, например. http://en.wikipedia.org/wiki/XOR_swap_algorithm Но это, КМК, паранойа, все равно мы тратим стек на всякие индексы и вызовы как минимум strlen().

Т.е. вот это извращение не использует буфер вообще:

Code: Select all

void reverse(char *str) {
        if (str) for (int i=0, j=strlen(str)-1; i<j; i++, j--) {str[i]^=str[j]; str[j]^=str[i]; str[i]^=str[j];  }
}
Или чуть красивее так:

Code: Select all

void reverse(char *str) {
        if (str) for (char *end=str+strlen(str)-1; str<end; str++, end--) { *str^=*end; *end^=*str; *str^=*end;  }
}
Мат на форуме запрещен, блдж!
Alexandr
Уже с Приветом
Posts: 3647
Joined: 23 May 2010 15:10

Re: Архитектор из дома

Post by Alexandr »

Леонид Ильич Брежнев wrote:Я вот не знаю, кого можно нанять вот такой тухлятиной? Причем и написанием/разворачиванием linked lists и atoi() они имхо все одинаково тухло пахнут. Видел массу нардоу, которые просто в указателях, всяких вторых/третих волкерах и темпах тонули. Причем стоит чуть притопить себя, как дальче тебя начинает просто захлестывать волной.
Я даже не знаю, может оно спрашивать про третий параметер функции CreateWindowEx() это и не самая плохая идея идея сама по себе? Отвечать можно даже не вставая с места.
Я давеча беседовал с Gayle Laakmann, которая автор книжки про интевью "Cracking the Coding Interview", она новую книгу пишет теперь про PM-омов, так вот она упорно считает, что спрашивать такие вот вопросы это правильно. И книга у нее сoстоит из них же.
почему? интересно
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Архитектор из дома

Post by АццкоМото »

Alexandr wrote:почему? интересно
посмотрите на код ЛИБ по унизительному переворачиванию строки и все станет на свои места :)
Мат на форуме запрещен, блдж!
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Архитектор из дома

Post by Сабина »

АццкоМото wrote:
Сабина wrote:Ну вот в моем случае он явно не подошел как я и описала выше.
Не знаю, от вас просили использовать буфер в один символ/байт - так там используется ровно столько же
можно ВООБЩЕ не использовать буфер, принципиально, и свопать два символа через XOR, например. http://en.wikipedia.org/wiki/XOR_swap_algorithm Но это, КМК, паранойа, все равно мы тратим стек на всякие индексы и вызовы как минимум strlen().

Т.е. вот это извращение не использует буфер вообще:

Code: Select all

void reverse(char *str) {
        if (str) for (int i=0, j=strlen(str)-1; i<j; i++, j--) {str[i]^=str[j]; str[j]^=str[i]; str[i]^=str[j];  }
}
Или чуть красивее так:

Code: Select all

void reverse(char *str) {
        if (str) for (char *end=str+strlen(str)-1; str<end; str++, end--) { *str^=*end; *end^=*str; *str^=*end;  }
}
Спасибо за С код, но я не С программист. Я так и не поняла чем мой код не устроил того товарища. Ни рекурсивный, ни с loop как ты там изначально написал. Он все напирал на то что буфер я использую не так как в поставленной им задаче. В какой то момент меня это все просто достало и я решила что мне эта работа все равно нафиг не нужна и мозг полностью отключился. Истерики я конечно устраивать никому не стала, но после того как он продолжал настойчиво копать эту задачу я просто перебила его и сказала "I am sorry but it is already an hour pass the time we agreed about with your HR and I really have to go.". Что в общем то было не совсем невежливо ибо сам он опоздал на час
https://www.youtube.com/watch?v=wOwblaKmyVw
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Архитектор из дома

Post by АццкоМото »

Сабина wrote:Я так и не поняла чем мой код не устроил того товарища.
Я тоже не понимаю. Единственная версия - все-таки строки в жабе immutable и как ни крути, нужно создавать новую строку/какие-то другие новые объекты
Но если сильно припекло, то и immutable объект все-таки можно изменить. Может, он этого хотел?
Мат на форуме запрещен, блдж!
User avatar
Flash-04
Уже с Приветом
Posts: 63377
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: Архитектор из дома

Post by Flash-04 »

Тогда это надо явно указывать.
Not everyone believes what I believe but my beliefs do not require them to.
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Архитектор из дома

Post by Сабина »

АццкоМото wrote:
Сабина wrote:Я так и не поняла чем мой код не устроил того товарища.
Я тоже не понимаю. Единственная версия - все-таки строки в жабе immutable и как ни крути, нужно создавать новую строку/какие-то другие новые объекты
Но если сильно припекло, то и immutable объект все-таки можно изменить. Может, он этого хотел?
Нет он вообще по моему в Джаве не бум бум, все какие то головоломки спрашивал и немного из Оракла. Причем если давала ответ правильный, но не из тех что в его заготовках, он продолжал гнуть в свою сторону пока я не догадывалась что он "вот такой ответ хочет". Менеджерам это присуще, особенно из наших.
Короче хватит с нас обсуждать этот странный случАЙ :), я собственно приводила пример как можно напрочь отпугнуть всех кандидатов не имея элементарной культуры ведения интервью. Че потом удивляться что они полгода девелоперов ищут с таким раскладом? Кто к ним пойдет если во многих других местах и люди вменяемые и вопросы задают по делу. Я понимаю когда после колледжа это все еще можно купить, но когда ты на языке на который тебя интервьюируют решал эту задачу и не раз, а тебе пытаются доказать что ты все не так делаешь, причем люди не знающие этого языка - это мягко говоря annoying .
https://www.youtube.com/watch?v=wOwblaKmyVw
User avatar
stenking
Уже с Приветом
Posts: 14407
Joined: 26 May 2006 02:39

Re: Архитектор из дома

Post by stenking »

АццкоМото wrote: А что там объяснять-то? Я же вроде как объяснил. Ну вот давайте представим, что исходная строка "123", s=s+s ВНЕЗАПНО сделает строку 123123. length=s.length/2 даст 3
Понятное дело, что i>length есть ложь, поэтому вообще ничего не выполнится. но мы не звери, мы читаем как i<length
тогда на первом шаге
s[0]=s[3]
s[3]=null
результат: 123null23
на втором шаге
s[1]=s[2]
s[2]=null
13nullnull23
на третьем шаге
s[2]=s[1]
s[1]=null
1null3null23

Хотя НА САМОМ деле stenking имел в виду
s = s[length-i-1]
s[length-i-1] = null;
т.е. классическая ошибка: в строке с из N символов длина строки равна N, но индекс последнего элемента - N-1. но и тогда на выходе получилось бы nullnullnull123 - в чем легко убедиться


Стенкинг писал псевдокод если чё, в 3 часа ночи с бутылкой вина. Посыпаю голову пеплом и торжественно клянусь в будущем думать что пишу :)
Бога нет.
User avatar
John Smith
Уже с Приветом
Posts: 1679
Joined: 04 Oct 2006 23:30
Location: Las Vegas

Re: Архитектор из дома

Post by John Smith »

Сабина wrote:...ибо сам он опоздал на час...
Интересно, сколько необходимо прождать интервьюера, чтобы озвереть?
Я как то собеседовался в sun представительстве в Москве, там там чувак не парясь трындел (я его видел сквозь стеклянные стены) +45 минут с другим кандидатом после назначенного мне времени. А потом как ни в чем не бывало вылез, типа извини...
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Архитектор из дома

Post by АццкоМото »

Сабина wrote: Короче хватит с нас обсуждать этот странный случАЙ :), я собственно приводила пример как можно напрочь отпугнуть всех кандидатов не имея элементарной культуры ведения интервью. Че потом удивляться что они полгода девелоперов ищут с таким раскладом? Кто к ним пойдет если во многих других местах и люди вменяемые и вопросы задают по делу.
И верно, ну их, этих упырей. С другой стороны, кто-то выше совершенно верно написал про вин-вин ситуацию: лучше неприятно себя чувствовать час-другой на интервью, чем потом с этим упырем каждый день работать или тем паче в начальниках иметь
Мат на форуме запрещен, блдж!
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Архитектор из дома

Post by АццкоМото »

stenking wrote:Стенкинг писал псевдокод если чё, в 3 часа ночи с бутылкой вина. Посыпаю голову пеплом и торжественно клянусь в будущем думать что пишу :)
Не, идея-то понятна, там подправить, здесь подправить и перевернутая строка получится. Но я никак не могу понять идею выделить под нее в 2 раза больше памяти, чем нужно. Ведь когда мы ставшую ненужной половину строки забиваем нулями память не освобождается волшебным образом
Мат на форуме запрещен, блдж!
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Архитектор из дома

Post by Сабина »

John Smith wrote:
Сабина wrote:...ибо сам он опоздал на час...
Интересно, сколько необходимо прождать интервьюера, чтобы озвереть?
Я как то собеседовался в sun представительстве в Москве, там там чувак не парясь трындел (я его видел сквозь стеклянные стены) +45 минут с другим кандидатом после назначенного мне времени. А потом как ни в чем не бывало вылез, типа извини...
Ну он типа в трафике застрял, хотя время было хорошо за 11, не знаю как там можно было на 101-й так хорошо застрять в это время. Но меня бы это сильно не напрягло, как минимум гораздо меньше чем какое то непонятное интервью с которого выходишь с чувством полностью потерянного времени. В прошлый раз вышло 50/50 в плане которые прошла и которые нет, но даже из непройденных многие запомнились. Где-то просто была возможность поговорить интересно, где-то научилась новому. А это был просто полный waste.
https://www.youtube.com/watch?v=wOwblaKmyVw
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Архитектор из дома

Post by Мальчик-Одуванчик »

АццкоМото wrote:
Сабина wrote: Короче хватит с нас обсуждать этот странный случАЙ :), я собственно приводила пример как можно напрочь отпугнуть всех кандидатов не имея элементарной культуры ведения интервью. Че потом удивляться что они полгода девелоперов ищут с таким раскладом? Кто к ним пойдет если во многих других местах и люди вменяемые и вопросы задают по делу.
И верно, ну их, этих упырей. С другой стороны, кто-то выше совершенно верно написал про вин-вин ситуацию: лучше неприятно себя чувствовать час-другой на интервью, чем потом с этим упырем каждый день работать или тем паче в начальниках иметь
C другой стороны - а где их взять, вменяемых?
Тот же Интеррапт, к примеру, задрочит юнит-тестами, документацией и исходниками в открытом репозитории.
До алгоритмов, думаю, даже не дойдет и утухнет на третьем параметре какой-нибудь широко известеой в узких кругах библиотечной функции.
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Архитектор из дома

Post by АццкоМото »

Мальчик-Одуванчик wrote: C другой стороны - а где их взять, вменяемых?
Не знаю, у меня случайно получилось. Желающих могу к себе забрать, у нас referral bonus 5k (2 мне, 2 желающему, 1 - привету) и всем известное имя впридачу :) И вот еще - в мой код за полтора года начальник смотрел раза 3, когда я его спрашивал "не знаешь, что за хрень?" и проще было показать в дебагере, чем объяснять. Но у нас же пустыня, кактусы, 120F круглый год и ковбойцы на лошадях погоняют дикие стада мексиканцев. Так что никуда не деться с подводной лодки
Мат на форуме запрещен, блдж!
User avatar
stenking
Уже с Приветом
Posts: 14407
Joined: 26 May 2006 02:39

Re: Архитектор из дома

Post by stenking »

А шо за имя?)
Бога нет.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Архитектор из дома

Post by crypto5 »

Интеррапт wrote:
Berlaga wrote: Ну, возможно так и есть. Только тут другая проблема, я лично не готов потратить свое время на то, чтобы сходу оценить, не написана ли у него тут полная фигня. Пусть и красиво написанная, с комментариями и по гайдлайну, без видимых косяков. Я его лучше просто попрошу рассказать, ДЛЯ ЧЕГО он это написал и почему ИМЕННО ТАК написал. В код при этом смотреть вообще не обязательно. Но тут мне скажут, что это уже "заваливать". :)
А я посмотрю. Посмотрю на структуру кода. Посмотрю на наличие юнит тестов, да много чего можно сразу же увидеть. И зачем мне его на доске заставлять писать и задавать вопросы "а теперь напишите юнит-тесты для этого решения", если человек мне просто покажет уже готовый код и расскажет, что именно он тут тестировал. Посмотрю на его wiki/readme в гитхабе к данному проекту, вот уже сразу можно увидеть, умеет ли человек писать тех. документацию к своему коду. Если кандидат уже прошел телефонный пре-скриннинг и дошел до тех. интервью, то соответственно и отнестись нужно к нему соответствующе, он тоже тратит день своего времени на интервью, почему бы не уделить внимание его работам и проектам? Если останутся какие-то сомнения то можно и задачку на доске решить. Просто у многих подход к интервью, типа за день до интервью узнал о нем, резюме прочел за час до интервью, вопросы нагуглил за 10 минут и пошел их задавать. И результаты потом соответствующие.
А так если я работ человека увидеть не могу, то ес-но будту идти по традиционному пути (решения на доске), а вот если у человека есть что продемонстировать в виде опен-сорсного проекта на который можно взглянуть, то он и себе работу облегчает (о чем собственно и речь) и мне.
А вот ты сам оформляешь код в таком стиле в pet проекрах? Я например вообще тесты не пишу ))
In vino Veritas!
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Архитектор из дома

Post by crypto5 »

Интеррапт wrote:
Сабина wrote:Написать better hash map или простенькую queue, cache service.
Better hashmap сложно придумать, он прост как три копейки и особо там уже ничего не придумаешь. Основные копья можно поломать, чтобы придумать хорошую хеш-функцию для ключа, которая позволит минимизировать кол-во коллизий или вообще добиться инъективного отображения :)
В википедии огромную статью с разными подходами наваяли тем не менее ))
In vino Veritas!
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Архитектор из дома

Post by Интеррапт »

crypto5 wrote: А вот ты сам оформляешь код в таком стиле в pet проекрах? Я например вообще тесты не пишу ))
Если пет проект просто потрогать новую технологию - то нет. Если что-то вроде того, что уйдет в какой-нибудь мобильный магазин, то пишу, просто поменьше. А в коде, который будут трогать другие люди (это на основной работе) - обязательно и много.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Архитектор из дома

Post by Интеррапт »

crypto5 wrote:
Интеррапт wrote:
Сабина wrote:Написать better hash map или простенькую queue, cache service.
Better hashmap сложно придумать, он прост как три копейки и особо там уже ничего не придумаешь. Основные копья можно поломать, чтобы придумать хорошую хеш-функцию для ключа, которая позволит минимизировать кол-во коллизий или вообще добиться инъективного отображения :)
В википедии огромную статью с разными подходами наваяли тем не менее ))
Не знаю, что там в википедии, небось половина статьи рассказывает про то, что нужно хеш функции правильные выбирать и как бороться с коллизиями. А вторая половина небось про перформенс и где использовать. Ну и еще всякие вариации типа linked hash map. Но что-либо новое по улучшению самих хеш таблиц - вряд-ли получится придумать, максимум что в проекте может понадобится - это написать правильную хеш функцию для ключа.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Архитектор из дома

Post by crypto5 »

Интеррапт wrote: Не знаю, что там в википедии, небось половина статьи рассказывает про то, что нужно хеш функции правильные выбирать и как бороться с коллизиями. А вторая половина небось про перформенс и где использовать. Ну и еще всякие вариации типа linked hash map. Но что-либо новое по улучшению самих хеш таблиц - вряд-ли получится придумать, максимум что в проекте может понадобится - это написать правильную хеш функцию для ключа.
Телеграфирую идею better hash map:
Классический хешмеп когда он заполнен на какой то % и/или колизии превысили определенный порог - создает новый массив в n раз больше, и перевставляет туда все данные, что может сильно убить latency отклика приложения если в хешмепе много данных.
Можно придумать такой хешмеп, который вместо копирования старого массива будет просто создавать новый, и вставлять новые элементы туда, а искать в обоих массивах, при этом для определения нужного массива при поискe можно использовать http://en.wikipedia.org/wiki/Bloom_filter, и вуаля, получаем быстрый хешмеп который линейно не тормозит при вставке.
In vino Veritas!
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Архитектор из дома

Post by Интеррапт »

crypto5 wrote:
Интеррапт wrote: Не знаю, что там в википедии, небось половина статьи рассказывает про то, что нужно хеш функции правильные выбирать и как бороться с коллизиями. А вторая половина небось про перформенс и где использовать. Ну и еще всякие вариации типа linked hash map. Но что-либо новое по улучшению самих хеш таблиц - вряд-ли получится придумать, максимум что в проекте может понадобится - это написать правильную хеш функцию для ключа.
Телеграфирую идею better hash map:
Классический хешмеп когда он заполнен на какой то % и/или колизии превысили определенный порог - создает новый массив в n раз больше, и перевставляет туда все данные, что может сильно убить latency отклика приложения если в хешмепе много данных.
Можно придумать такой хешмеп, который вместо копирования старого массива будет просто создавать новый, и вставлять новые элементы туда, а искать в обоих массивах, при этом для определения нужного массива при поискe можно использовать http://en.wikipedia.org/wiki/Bloom_filter, и вуаля, получаем быстрый хешмеп который линейно не тормозит при вставке.
А зачем bloom filter в данном случае нужен? Если есть вероятность false positive, с таким же успехом можно просто по очереди попытаться найти сначала в одном массиве, потом в другом. Никакого выигрыша в данном случае bloom filter вообще не даст, разве что если у вас большое кол-во этих самых массивов.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Архитектор из дома

Post by crypto5 »

Интеррапт wrote:
crypto5 wrote:
Интеррапт wrote: Не знаю, что там в википедии, небось половина статьи рассказывает про то, что нужно хеш функции правильные выбирать и как бороться с коллизиями. А вторая половина небось про перформенс и где использовать. Ну и еще всякие вариации типа linked hash map. Но что-либо новое по улучшению самих хеш таблиц - вряд-ли получится придумать, максимум что в проекте может понадобится - это написать правильную хеш функцию для ключа.
Телеграфирую идею better hash map:
Классический хешмеп когда он заполнен на какой то % и/или колизии превысили определенный порог - создает новый массив в n раз больше, и перевставляет туда все данные, что может сильно убить latency отклика приложения если в хешмепе много данных.
Можно придумать такой хешмеп, который вместо копирования старого массива будет просто создавать новый, и вставлять новые элементы туда, а искать в обоих массивах, при этом для определения нужного массива при поискe можно использовать http://en.wikipedia.org/wiki/Bloom_filter, и вуаля, получаем быстрый хешмеп который линейно не тормозит при вставке.
А зачем bloom filter в данном случае нужен? Если есть вероятность false positive, с таким же успехом можно просто по очереди попытаться найти сначала в одном массиве, потом в другом. Никакого выигрыша в данном случае bloom filter вообще не даст, разве что если у вас большое кол-во этих самых массивов.
Если данных много то и массивов может насоздаваться много. Возможно последовательный поиск будет и быстрее чем bloom filter, возможно и нет, поэтому я написал "можно использовать".
In vino Veritas!
vopros
Уже с Приветом
Posts: 808
Joined: 13 Jan 2009 05:11
Location: из страны восходящих закатов

Re: Архитектор из дома

Post by vopros »

вроде ключ можно генерить который сам будет сразу знать к какому масиву он принадлежит
Кто не рискует, тот не пьет

Return to “Работа и Карьера в IT”