Здравствуйте, drx, Вы писали:
drx>Здравствуйте, Alf, Вы писали:
STM>>>Вопросы тоже пока называть не буду, да и это не столь важно, так как многие вопросы открытые, и решений может быть множество. Были вопросы по проектированию классов, по планированию/управлению процессом разработки, по тестированию.
Alf>>мда, товарищи, ведете себе как последние китайцы — типа если меньше говорить, то считается что у тебя больше шанс получить офер. На самом деле это нифига не так.
Здесь оффер не при чем.
Вспоминается старая история на RSDN: Приходит индус на интервью, не отвечает на первый вопрос и уходит. На следующий день приходит другой индус, отвечает на первый вопрос, на второй не отвечает и уходит. На следующий день приходит третий индус, знает ответ уже на первые два вопроса, но на другие не отвечает...
Ну дальше ясно )
Кстати, а у меня не было ни строчек/указателей/етк, прям обделили
А когда они обещали ответ дать? А то я к концу интервью был настолько уставшим, что для меня заключительное собеседование с hr-ом сейчас как в тумане...
Здравствуйте, кубусь, Вы писали:
К>Здравствуйте, SpeakToMe, Вы писали:
К>А когда они обещали ответ дать? А то я к концу интервью был настолько уставшим, что для меня заключительное собеседование с hr-ом сейчас как в тумане...
Обещали next week, т.е. по идее в середине след. недели должны сказать (пока они там все обсудят думаю раньше вторника-среды не будет, а то и позднее).
Кстати, а с HR-ом были интересные вопросы — "представьте, что я инвестор, какой бы вы стартап открыли? а еще одну идею предложите?". Честно говоря, не ожидал
Здравствуйте, Alf, Вы писали:
STM>>кстати, а что спрашивал товарищ из VS, который любит беседовать?
Alf>если ты про прикольного лысоватого дядьку — то много бесед по CV и задачка на inplace string extension
Кто-нить расскажите что значит inplace string extension?
Здравствуйте, PaulMinelly, Вы писали:
PM>Кто-нить расскажите что значит inplace string extension?
Это значит повставлять в строку символов "на месте", т.е. не выделяя новой памяти. При условии, что в текущем буфере строки хватит места для вставляемых символов.
STM>Кстати, а с HR-ом были интересные вопросы — "представьте, что я инвестор, какой бы вы стартап открыли? а еще одну идею предложите?". Честно говоря, не ожидал
им сейчас нужно конкурировать с гуглом, а без инноваций это не сделать. Поэтому за идеи они будут хвататься.
Не зря же несколько раз про Green House рассказывали
кста,
было странно что вообще никаких NDA и ничего не просили не разглашать
судя по более ранним чёсам там были такие шаги.
Жуткий дефицит кадров или уже в пофигизм ударились?
PM>>Кто-нить расскажите что значит inplace string extension?
G>Это значит повставлять в строку символов "на месте", т.е. не выделяя новой памяти. При условии, что в текущем буфере строки хватит места для вставляемых символов.
Кстати, как делать задачи такого плана как повставлять в строку, перевернуть строку но именно на C#?
Ведь string в C# immutable — то что, использовать stringbuilder? Вы, я понимаю, это все делали чисто на C++ потому что задачи выглядят именно для него? Как для C# быть? Или они сами говорят — вот тебе stringbuilder — переверни символы в строке?
PM>Кстати, как делать задачи такого плана как повставлять в строку, перевернуть строку но именно на C#? PM>Ведь string в C# immutable — то что, использовать stringbuilder? Вы, я понимаю, это все делали чисто на C++ потому что задачи выглядят именно для него? Как для C# быть? Или они сами говорят — вот тебе stringbuilder — переверни символы в строке?
стрингбилдер как таковой не предназначен для операций над буфером. Поэтому если собираетесь решать такие задачи на сишарпе — сразу можно начинать от стринга и работать с буфером.
Ну а если приперло от стрингбилдера — Chars property. Только в реальной жизни это оч. неэффективно. Проще сделать ToString() и работать уже без извратов.
PM>>Кстати, как делать задачи такого плана как повставлять в строку, перевернуть строку но именно на C#? PM>>Ведь string в C# immutable — то что, использовать stringbuilder? Вы, я понимаю, это все делали чисто на C++ потому что задачи выглядят именно для него? Как для C# быть? Или они сами говорят — вот тебе stringbuilder — переверни символы в строке?
Alf>стрингбилдер как таковой не предназначен для операций над буфером. Поэтому если собираетесь решать такие задачи на сишарпе — сразу можно начинать от стринга и работать с буфером. Ну а если приперло от стрингбилдера — Chars property. Только в реальной жизни это оч. неэффективно. Проще сделать ToString() и работать уже без извратов.
Какой буфер ты имеешь виду? Смотри, дают они вот такое:
string mystring = "some long sting here";
и говорят — давай переверни все буквы в строке задом на перед чтобы было "ereh gnits gnol emos".
Как мне это делать, когда string — он immutable? Т.е. я не могу в нем поменять символы местами как в массиве, а если захочу изменить строку хоть чуть-чуть, то будет генериться новая строка каждый раз и мне придется делать конкатенацию аж целых _5_ строк len/2 раз:
Т.е. мы например меняем символ [i] и [len-i] местами, тогда строку можно будет представить ввиде отрезков:
[0;i-1][i][i+1;len-i-1][len-i][len-i+1;len]
и поменять [i] и [len-i] местами:
[0;i-1][len-i][i+1;len-i-1][i][len-i;len]
и так для всех i от 1 до len/2 раз. Получится офигительная куча строк, которые буду создаваться, объединяться каждый раз и вот это будет действительно ужос. А стрингбилдером все можно поменять inplace. Или почему это плохой выход и какой буфер ты имеешь ввиду?
Хмм...
А если просто сделать буфер в виде массива char'ов (char[] buffer ...) и работать с ним?
А для конвертации в строку/из строки использовать String.ToCharArray() и String..ctor(char[] value)?
Здравствуйте, PaulMinelly, Вы писали:
PM>Кстати, как делать задачи такого плана как повставлять в строку, перевернуть строку но именно на C#? PM>Ведь string в C# immutable — то что, использовать stringbuilder? Вы, я понимаю, это все делали чисто на C++ потому что задачи выглядят именно для него? Как для C# быть? Или они сами говорят — вот тебе stringbuilder — переверни символы в строке?
Возможно, что такие вопросы задавали людям с ярко выраженным "C++ Background" в резюме, чтобы проверить работу с строками/указателеми и т.д. У меня C++ в резюме всего около года давным-давно, остальное Java/C#, и такого вопроса я не получил. Если бы задали, то получил бы у строки массив char[] и дальше игрался бы с ним аналогично стилю C, за исключением указателей ессно.
Здравствуйте, Овощ, Вы писали:
О>Здравствуйте, PaulMinelly.
О>Хмм... О>А если просто сделать буфер в виде массива char'ов (char[] buffer ...) и работать с ним? О>А для конвертации в строку/из строки использовать String.ToCharArray() и String..ctor(char[] value)?
Тогда получается не in-place, а использование памяти аж O(n).
Здравствуйте, PaulMinelly, Вы писали:
О>>А если просто сделать буфер в виде массива char'ов (char[] buffer ...) и работать с ним? О>>А для конвертации в строку/из строки использовать String.ToCharArray() и String..ctor(char[] value)?
PM>Тогда получается не in-place, а использование памяти аж O(n).
Не совсем. Если у нас будет на входе StringBuilder, то можем работать с его символами через коллекцию Chars. Если мы все операции будем делать в пределах одного потока, каждый read/write элемента внутреннего массива символов будет О(1) операций, если из разных потоков — при записи попадаем на O(n) операций.
STM>Возможно, что такие вопросы задавали людям с ярко выраженным "C++ Background" в резюме, чтобы проверить работу с строками/указателеми и т.д. У меня C++ в резюме всего около года давным-давно, остальное Java/C#, и такого вопроса я не получил. Если бы задали, то получил бы у строки массив char[] и дальше игрался бы с ним аналогично стилю C, за исключением указателей ессно.
на самом деле пишите хоть на псевдокоде, главное четко озвучивать что вы хотите сделать
а так они спрашивают на каком языке вам удобно писать — они проверяют не знание синтаксиса, а именно мышление и навыки применения алгоритмов. ИМХО на сишарпе активно никто из них и не пишет.
О>>Хмм... О>>А если просто сделать буфер в виде массива char'ов (char[] buffer ...) и работать с ним? О>>А для конвертации в строку/из строки использовать String.ToCharArray() и String..ctor(char[] value)?
PM>Тогда получается не in-place, а использование памяти аж O(n).
ну а что делать. managed среда и всё такое, приходится платить
только никто не мешает вам сказать что на вход вашего метода уже приходит char[] =)
в общем случае в задаче могут быть любые бинарные данные
Здравствуйте, Alf, Вы писали:
STM>>Возможно, что такие вопросы задавали людям с ярко выраженным "C++ Background" в резюме, чтобы проверить работу с строками/указателеми и т.д. У меня C++ в резюме всего около года давным-давно, остальное Java/C#, и такого вопроса я не получил. Если бы задали, то получил бы у строки массив char[] и дальше игрался бы с ним аналогично стилю C, за исключением указателей ессно.
Alf>на самом деле пишите хоть на псевдокоде, главное четко озвучивать что вы хотите сделать Alf>а так они спрашивают на каком языке вам удобно писать — они проверяют не знание синтаксиса, а именно мышление и навыки применения алгоритмов. ИМХО на сишарпе активно никто из них и не пишет.
ИМХО это спорно. VS активно пишется на сишарпе, и они сейчас, к примеру, переписывают редактор с unmanaged на managed. В SQL Server, конечно, большой кусок кода на плюсах, но сишарп тоже имеется — всякие Business Intelligence/Reports/Studio/etc.
Здравствуйте, SpeakToMe, Вы писали:
STM>Здравствуйте, PaulMinelly, Вы писали:
О>>>А если просто сделать буфер в виде массива char'ов (char[] buffer ...) и работать с ним? О>>>А для конвертации в строку/из строки использовать String.ToCharArray() и String..ctor(char[] value)?
PM>>Тогда получается не in-place, а использование памяти аж O(n).
STM>Не совсем. Если у нас будет на входе StringBuilder, то можем работать с его символами через коллекцию Chars. Если мы все операции будем делать в пределах одного потока, каждый read/write элемента внутреннего массива символов будет О(1) операций, если из разных потоков — при записи попадаем на O(n) операций.
Операций. Я-то говорю про память O(n), причем здесь потоки? В стрингбилдере использование дополнительной памяти O(1) на всю задачу, как например и при использовании char[] дополнительная память тоже O(1).
Кстати, манипуляции с C-шарповым стрингом приводит к тому, что в памяти конкатенируются O(n) элементов строки все n/2 раз. Поэтому в этом случае тоже исполование памяти O(n), даже хоть и без дополнительного явного хранилища.