Здравствуйте, мыщъх, Вы писали:
М>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, мыщъх, Вы писали:
A>>>>речь о том что по названию класса можно определить его поведение. A>>>>класс File не удаляет файл в деструкторе, A>>>>а класс TempFile — удаляет файл в деструкторе, М>>>то есть для создания временных файлов нужен целый класс? а почему не метод CreateTempFile класса File? почему не CreateFile(,,,TEMP_FILE) ?!
G>>Потому что в таком случае посмотрев на созданный файл ты не узнаешь что он временный. М>точно так же, посмотрев на TempFile я не узнаю является ли он SHORT_LIVED или нет. ведь существует две категории временных файлов -- файлы, которые нужно держать в памяти и по возможности не сбрасывать на диск, и файлы, сбрасываемые на диск как можно чаще.
G>>Именно типы позволяют в программах передавать больше информации, чем содержится в самом тексте. G>>В твоем случае File.CreateTempFile должен возвращать TempFile, который будет наследником File. М>да не будет он возвращать TempFile. 'temp' это один из очень многих атрибутов объекта File. более того, деструктору глубоко начхать какой файл -- временный или нет. он вызывает close, не вникая в техническе детали.
М>CreateTempFile это обертка над File.Create|Open. в принципе, я согласен, что удобнее иметь File.CreateTempFile, чем File.CreateFile('имя_по_фиг_для_временных_файлов_его_выберет_сама функця', TEMP_FILE), но создавать производный класс... интересно, в какой библиотеке (из числа популярных) разработчики применили такое решение?
Наверное TempFile не очень удачное название. Важно что этот файл по-умолчанию будет удаляться в деструкторе, возможно AutoDeleteFile будет более удачным названием, так как отражает поведение. Ему вполне можно добавить метод DoNotDelete, чтобы выполнять нужный тебе сценарий.
Здравствуйте, rm822, Вы писали:
М>>а вот теперь реализовать это за O(N). брутфорсить не предлагать. R>а 1000 ядер нвидии не спасет отца русской демократии?
А еще лучше Playstation 3)
cli>>>>Так может тебе твои преподы и зарплату тогда будут платить? K>>>Мне хорошо платят, не переживай. И что самое характерное — идиотскими задачками на собеседовании в этой фирме меня не изводили. Z_>>Это где так?) K>Это не в России. Удаленка.
Так это ж еще лучше) И где такая благодать?)
Здравствуйте, visitor_pattern, Вы писали:
_>Ладно бы спрашивали тонкости реализации (например как этот самый HashMap ведет себя при попытке изменения из разных потоков и почему так происходит) — нет просто схему.
Ээээ... вот тут не понял, он падает при модификации из разных потоков как то особенно? по другому чем связанный список или массив ?
Здравствуйте, cli, Вы писали:
L>>Я не так давно подобному деятелю выкатил решение, более эффективное, нежели его "правильный ответ". L>>Столько говна и соплей было!
cli>Пока, что говном тут ты кидаешься, не зная человека лично.
Здравствуйте, alpha21264, Вы писали:
PKz>>Не знаю что это за люди и что за компании, и в каком гондурасе это происходит, но от предложения написать код на клочке бумаги я блеванул бы не отходя от кассы.
A>Яндекс просит написать небольшую программу на бумажке. A>Если Яндекс для Вас — Гондурас, то Вы зажрались.
Здравствуйте, keenn, Вы писали:
cli>>Максим, поскольку у тебя проблемы с долговременной памятью, решил напомнить, как я выгляжу. Не волнуйся на счёт духа, не волнуйся за меня.
K>так ты на курсе теперь понятно почему такой злой
Здравствуйте, VovkaMorkovka, Вы писали:
VM> когда они требуются, есть тимлид, чтобы это знать.
Т.е. тимлид должен делать ревью всего кода своей команды на случий если кто-то чего не знает и подтирать за всеми?
"For every complex problem, there is a solution that is simple, neat,
and wrong."
F>class Bar{
F> int a;
F> int b;
F>};
F>Bar b = {1,2}
F>
RU>>
F>test.cpp:36: ошибка: in C++98 ‘b’ must be initialized by constructor, not by ‘{...}’
F>test.cpp:36: предупреждение: extended initializer lists only available with -std=c++0x or -std=gnu++0x
RU>>
С приватными полями для структур тоже не проходит:
struct Test {
private:
int a;
int b;
};
int main() {
Test t = {2, 9};
return 0;
}
Visual C++ 2008 Express Edition:
error C2552: 't' : non-aggregates cannot be initialized with initializer list 'Test' : Types with private or protected data members are not aggregate
GCC 4.5.1 20100924 (Red Hat 4.5.1-4):
error: in C++98 ‘t’ must be initialized by constructor, not by ‘{...}’
error: could not convert ‘{2, 9}’ to ‘Test’
error: ‘int Test::a’ is private
error: within this context
error: ‘int Test::b’ is private
error: within this context
Comeau C/C++ 4.3.10.1 (Oct 6 2008 11:28:09) for ONLINE_EVALUATION_BETA2:
error: initialization with "{...}" is not allowed for object of type "Test" Test t = {2, 9};
Здравствуйте, мыщъх, Вы писали:
___>>Но вот если у кандидата на позицию С++ программиста пробелы в знаниях приводят к излишним или недостаточным вызовом деструкторов, то его код имеет очень небольшую ценность(иногда отрицательную) и требуется дополнительное образование. ___>>А если ему еще вопросы на эту тему не нравятся — то тут надо сразу прощаться.
М>по поводу отрицательной ценности. написал быстрый и грязный файл на си и отдал коллеге на рефракторинг. после рефракторинга: М>1) код перстал компилиться ms vc (у коллеги gcc); М>2) код стал впадать в бесконечный цикл на каждом втором примере;
М>по поводу (2) -- я не уверен, что это не есть следствие (1), т.к. я все-таки собрал его ms vc в матюгами. возможно, под gcc оно соберется и без зависаний, но... на фига мне такой рефракторинг? а начальство сказало, что я сам дурак, ибо у коллеги не было мазы и профита делать это кошерно и правильно, т.к. код мой и профит мой, хотя мы оба сидим на окладе и рефракторингом его подписали заниматься в свободное от основной работы время. и вот я сейчас думаю -- что делать? забить или списать это на "ошибки со всеми случаются" ? что код виснет -- это ладно. это просто баг, а баг это косяк. бывает. но вот что из ANSI C мы получили диалект gcc -- тут попахивает фундаментальными пробелами. в частности, коллега стал объявлять переменные "на лету", что, конечно, удобно, но... это будет или C99 или gcc расширение С89. с учетом того, что коллега пишет под никсы, вероятно, он даже не знает, что есть расширение, а что есть стандарт (под никсами объявление переменных по месту использования в си программах очень популярно).
Это не совсем то, о чем я говорил.
И мне кажется что слово "рефекторинг" тут не совсем подходит.
Если коллега Ваш код под другой компилятор затачивал, то это скорее портирование.
В любом случае если код должен работать на нескольких платформах, то и билды и тесты должны быть для всех платформ.
Ну и каждое изменение должно девелопером на всех вариантах пробоваться. Без матюгов и без всяких "возможно"
После рефакторинга не должна изменяться функциональность, не говоря уже о компилябельности.
Но как я понял у Вас контора весьма спецефичная поэтому спорить не будем.
М>с goto понятно, но вот попадались сообщения, что людям отказывали только потому что они давали переменным и функциям короткие и бессмысленные имена типа a, p, i... а тут уже очень спорно. что лучше for(a=0;a<len;a++) *p = a; или for(index = 0; index < length_of_divine_array; index++) divine_array[index] = index; второй пример понятнее, но он и длинее. его длинее не только писать, но и читать. а чем длинее код -- тем меньше его помешается на экране. кстати, математики в формулах почему-то тяготеют к однобуквенным обозначениям. интересно почему? и как будут выглядеть формулы, записанные английским языком без сокращений?
Люди говорили что им отказывали _только_ из-за этого.
Лично мне слабо верится если честно. Ну конечно и среди собеседующих встречаются необычные люди.
Но вот я во всех конторах, где привлекался к техсобеседованиям, всегда писал отчет. И если бы я написал "все знает но некошерно называет переменные — не брать", то наверно на следующее собеседование меня бы просто не позвали. Это как минимум
Меня кстати по этому поводу забавляют местные рассказки про заваливания сильных кандидатов много запросивших.
Я в очень разных конторах и проводил и проходил собеседования. Нигде и никогда техническое собеседование с разговором о деньгах не пересекалось. Собеседуя кандидата я никогда не знал(кроме случайных исключений) запрашиваемую ЗП.
Вариант отчета "все знает, но не ответил на мой суперзаверченый вопрос, или не читал мою любимую книжку — не брать" мне кажется фантастическим. Не ну может быть сам генеральный проводит собеседование и ни перед кем не отчитывается. Ну или чего-то в этом роде.
М>а что если кандидат считает, что ассмблер лучше си, а си лучше, чем питон? и никак ему не объяснить, что программа, работающая с приемлимой скоростью на _всех_ платформах без дополнительных телодвижений с точки зрения бизнеса лучше, а программист на питоне еще и дешевле и что асм нужен только там, где он действительно нужен?
Я принимал участие только в собеседовании на конкретную позицию с использованием конкретного языка.
Что считает кандидат по поводу остальных языков на результат собеседования не влияло.
Если он под требования подходит то возможно потом с ним интересно будет поговорить-поспорить на эти темы
М>или вот как объяснить, что логику нужно изначально отделять от интерефейса, причем, под интерфейсом понимается не только UI, но и API. в частности, если мы пишем функцию типа compress_data, то вызовы alert("critical error") нелепы, т.к. тут смешаны два уровня и что compress_data должна возврашать ошибку, обрабатываемую вызывающим ее кодом? C# программисты очень любят кидать исключения с текстовыми сообщениями и их сложно переубедить, что это не есть хорошо.
Программисты много чего любят детать нехорошего , но есть ревью кода, есть присмотр за джуниорами и много чего.
Все это правда к собеседованиям мало относится.
Разве что, если человека невозможно переубедить даже весомыми аргументами и он готов отстаивать свое ошибочное мнение до нервного срыва, то это очень сильный аргумент в сторону "не брать".
Здравствуйте, keenn, Вы писали:
OAO>>>Вообще, кто все эти люди?
K>или даже так, как вариант. ты весь такой профессионал. в метро, дома в любую свободную минуту ты читаешь интереснейшую компутерную инфу. на работе углубляешься в тонкости и глубоко копаешь. года идут. со временем что-то происходит, тебе уже не так интересно, чаще ты начинаешь заниматься чем-то другим, более тебя интересующим (и о ужас! даже почитывать об этом в рабочее время). компутерные талмуды на 650 страниц пылятся по полгода. это называется — ты выгорел. ты видишь, что денег особо бОльших гораздо более глубокие знания тебе не приносят (а деньги к этому моменту тебя начали интересовать больше чем все новые захватывающие компутерные открытия).
Здравствуйте, ishare, Вы писали:
I>Здравствуйте, keenn, Вы писали:
OAO>>>>Вообще, кто все эти люди?
K>>или даже так, как вариант. ты весь такой профессионал. в метро, дома в любую свободную минуту ты читаешь интереснейшую компутерную инфу. на работе углубляешься в тонкости и глубоко копаешь. года идут. со временем что-то происходит, тебе уже не так интересно, чаще ты начинаешь заниматься чем-то другим, более тебя интересующим (и о ужас! даже почитывать об этом в рабочее время). компутерные талмуды на 650 страниц пылятся по полгода. это называется — ты выгорел. ты видишь, что денег особо бОльших гораздо более глубокие знания тебе не приносят (а деньги к этому моменту тебя начали интересовать больше чем все новые захватывающие компутерные открытия).
Здравствуйте, out-of-the-way, Вы писали:
OOT>Здравствуйте, ishare, Вы писали:
I>>Здравствуйте, keenn, Вы писали:
OAO>>>>>Вообще, кто все эти люди?
K>>>или даже так, как вариант. ты весь такой профессионал. в метро, дома в любую свободную минуту ты читаешь интереснейшую компутерную инфу. на работе углубляешься в тонкости и глубоко копаешь. года идут. со временем что-то происходит, тебе уже не так интересно, чаще ты начинаешь заниматься чем-то другим, более тебя интересующим (и о ужас! даже почитывать об этом в рабочее время). компутерные талмуды на 650 страниц пылятся по полгода. это называется — ты выгорел. ты видишь, что денег особо бОльших гораздо более глубокие знания тебе не приносят (а деньги к этому моменту тебя начали интересовать больше чем все новые захватывающие компутерные открытия).
OOT>А разве такое бывает? У меня даже близко нету.
Ну да. Теперь для меня программирование это, хоть и интересная, но просто работа, а когда то вообще ничего другого не интересовало.
OOT>А разве такое бывает? У меня даже близко нету.
все люди разные (с).
меня например серьезное и по серьезному ничего кроме денег никогда не интересовало. кто то не верит, кто то смееца над моей убогостью. но тем не менее это так и совершенно очевидно что я таким останусь на всю жизнь. и я себя не оправдываю, догадываюсь што раз все брезгливо морщаца значит со мной што то не так. но я даже не могу себе представить как может быть по другому. как те слепые и фиолетовый цвет
Здравствуйте, Ikemefula, Вы писали:
I>Унизить человека проще всего при большом скоплении людей особенно если с тобой много друзей которые не дадут тебя в обиду, т.е. проще всего на публике когда ответственности ты не понесёшь.
Чувствуется знаток темы
Ну много публики на собеседование не притащишь, но поглумиться на форуме — это у них похоже милое дело
Здравствуйте, Klatu, Вы писали:
I>>Унизить человека проще всего при большом скоплении людей особенно если с тобой много друзей которые не дадут тебя в обиду, т.е. проще всего на публике когда ответственности ты не понесёшь.
K>Чувствуется знаток темы K>Ну много публики на собеседование не притащишь, но поглумиться на форуме — это у них похоже милое дело
Унизить на форуме вообще по моему очень сложно Ну разве что если комплексы выплывут наружу или люди слишком хорошо друг друга знают. Как то так.