Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Задачки из сегодняшнего теста

924  1 2 3 все
Murr_0002 завсегдатай15.10.10 15:08
Murr_0002
15.10.10 15:08 
Задачки из сегодняшнего теста.
Объем теста - 27 заданий, описание самого объемного из которых занимает 2.5 страницы - чисто DBA-задача.
Предлагаемая позиция - Senior C# Developer.
Те задачки, которыми хочу поделится, выполнить нет никаких проблем, но не могу понять что именно проверялось:

Задачка 1. Даны два целых значения. Поменять из местами, не заводя новую переменную.
Задачка 2. Даны две строки. Поменять их местами, не заводя новую переменную.
Задачка 3. Дана строка вида "1:2:3:4". Перевести в массив целых.
Задачка 4. Даны SQL-строка и SqlConnection. Выполнить sql, возвратив единичное значение.
Что можно такими задачками протестить у Senior'a? Знание 2-3 трюков? Знание названий методов?
Трюки Я таки могу слепить и по-круче... но смысла в них не вижу - код должен быть прозрачным.
Название методов - так Я их не помню... т.е. знаю что такая хрень где-то там есть, но точное название метода, его принадлежность и какой список параметров - даже и не думал запоминать... где-то со времен OWL и TurboVision оно совершенно бесполезно - достаточно знать что такая функциональность примерно там есть.
#1 
AlexOtt знакомое лицо15.10.10 16:56
AlexOtt
NEW 15.10.10 16:56 
в ответ Murr_0002 15.10.10 15:08
первые три - чисто алгоритмические...
#2 
Murr_0002 завсегдатай15.10.10 17:31
Murr_0002
NEW 15.10.10 17:31 
в ответ AlexOtt 15.10.10 16:56, Последний раз изменено 15.10.10 17:34 (Murr_0002)
1-я - надо _знать_ трюк с хором.
2-я - надо знать как обращаться с длиной строки для выполнения сложения и деления строки.
3-я - надо знать, что у стринга есть метод Split()
4-я - надо знать что есть метод ExecuteScalar() у SqlCommand

Это все что можно выяснить - два трюка и два метода - при тесте на Сениорскую позицию?
После чего надо дать ДБА-задачку с только описанием на 2.5 листах?
#3 
Knusprig завсегдатай15.10.10 18:27
Knusprig
NEW 15.10.10 18:27 
в ответ Murr_0002 15.10.10 17:31
Ну наверное вопросы подбирает тот, кто считается на фирме самым крутым C#-истом.
Девки спорили на даче о свойствах ряда Фибоначчи
#4 
anly старожил15.10.10 19:08
anly
NEW 15.10.10 19:08 
в ответ Murr_0002 15.10.10 17:31
В ответ на:
1-я - надо _знать_ трюк с хором.
а что за трюк?
Проклят нарушающий межи ближнего своего (Втор.27:17)
#5 
anly старожил15.10.10 19:13
anly
NEW 15.10.10 19:13 
в ответ anly 15.10.10 19:08
кстати о трюках. Наверно, тест будет зачтён если пункт не решен. не люблю трюки. люблю ясность. я встречал код (только в c++) с тройными указателями типа void*** . опасно с гениями работать.
Проклят нарушающий межи ближнего своего (Втор.27:17)
#6 
Bigfoot свой человек15.10.10 19:16
Bigfoot
NEW 15.10.10 19:16 
в ответ Murr_0002 15.10.10 17:31
1. можно поменять и без xor
Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
#7 
  digital.pilot патриот15.10.10 19:18
digital.pilot
NEW 15.10.10 19:18 
в ответ anly 15.10.10 19:08
var1 := A
var2 := B
var1 := var1 xor var2 (= A xor B)
var2 := var2 xor var1 (= A)
var1 := var1 xor var2 (= B)
#8 
  digital.pilot патриот15.10.10 19:20
digital.pilot
NEW 15.10.10 19:20 
в ответ anly 15.10.10 19:13
у меня, если память не изменяет, в дипломе были тройные указатели... как параметры ф-ий, куда передавался 2-мерный массив чего-то для последующего изменения...
#9 
anly старожил15.10.10 19:22
anly
NEW 15.10.10 19:22 
в ответ digital.pilot 15.10.10 19:20
не стыдно вспоминать?
Проклят нарушающий межи ближнего своего (Втор.27:17)
#10 
anly старожил15.10.10 19:26
anly
NEW 15.10.10 19:26 
в ответ digital.pilot 15.10.10 19:18
мда... лучше памяти прикупить чтоб на переменную хватило
Проклят нарушающий межи ближнего своего (Втор.27:17)
#11 
Aerzenn посетитель15.10.10 19:34
Aerzenn
NEW 15.10.10 19:34 
в ответ Murr_0002 15.10.10 15:08
Murr_0002, у меня не большая просьба, а ты не мог бы выложить более обширный список этих задачек из теста ?
Мне интересно, что на сегодняшний день есть "актуальные задачки".
Спасибо!
#12 
Aerzenn посетитель15.10.10 19:54
Aerzenn
NEW 15.10.10 19:54 
в ответ Murr_0002 15.10.10 17:31
а по поводу первого трюка, гы..., подумал я, как ?!
Запустил тестовый project, посидел и в результате, как оказалось, все просто:
int a = 200;
int b = 300;
a = a + b;
b = a - b;
a = a - b;
Console.WriteLine("a = {0}; b = {1}", a, b);
чем не трюк то, а...
#13 
megabyte постоялец15.10.10 20:01
megabyte
NEW 15.10.10 20:01 
в ответ Aerzenn 15.10.10 19:54
Боян :-)
http://en.wikipedia.org/wiki/XOR_swap_algorithm#Variations
#14 
kitov знакомое лицо15.10.10 20:23
NEW 15.10.10 20:23 
в ответ Aerzenn 15.10.10 19:54
В ответ на:
int a = 200;
int b = 300;
a = a + b;
b = a - b;
a = a - b;

а если а+b > maxint ?
В питоне все проще :-)
a,b = b,a
#15 
  digital.pilot патриот15.10.10 20:46
digital.pilot
NEW 15.10.10 20:46 
в ответ anly 15.10.10 19:22
да вроде ничего такого постыдного нет
#16 
  digital.pilot патриот15.10.10 20:48
digital.pilot
NEW 15.10.10 20:48 
в ответ kitov 15.10.10 20:23
в SQL тоже прикольно. update t set a = b, b = a
#17 
Murr_0002 завсегдатай15.10.10 22:52
Murr_0002
NEW 15.10.10 22:52 
в ответ Knusprig 15.10.10 18:27
вопросы подбирает тот, кто считается
------
Теперь прикинь - проводится не персональный, а массовый тест - в комнату загоняют 8 гавриков и смотрящего и раздают пачку листов с заданиями теста. 27 вопросов. 90 минут времени.
#18 
Murr_0002 завсегдатай15.10.10 22:55
Murr_0002
NEW 15.10.10 22:55 
в ответ anly 15.10.10 19:08
Ниже уже ответили - тройной хор промеж собой.
В результате - именно то, что требуется. Никакого отношения ни к С#, ни к сениористости кандидата - просто надо знать трюк.
#19 
Murr_0002 завсегдатай15.10.10 23:01
Murr_0002
NEW 15.10.10 23:01 
в ответ anly 15.10.10 19:13
с тройными указателями типа void***
------
У меня было и по-больше. Правда довольно быстро сообразил что желательно все упростить...
опасно с гениями работать.
-----
С ними сложно работать не гениям. Но когда два гения в фазе - это чертовски красиво - "...здесь так? - да! - здесь так? - нет, так! - нельзя! - где? - там! - тогда так! - давай вот этак! - зачем? - вот там будет так! - да." - это была сделана недельная работа целого отдела большой программистской конторы...
#20 
Murr_0002 завсегдатай15.10.10 23:05
Murr_0002
NEW 15.10.10 23:05 
в ответ anly 15.10.10 19:26
лучше памяти прикупить чтоб на переменную хватило
-----
Я примерно об этом написал рекрутеру. Ну что в конторе проблема с избытком использованных переменных... Смайлик не забыл поставить...
#21 
Murr_0002 завсегдатай15.10.10 23:15
Murr_0002
NEW 15.10.10 23:15 
в ответ Aerzenn 15.10.10 19:34
а ты не мог бы выложить более обширный список этих задачек из теста
------
Не могу. Это было утром. Потом был обед. С Хеннесси. Я уже просто не помню тех задач что там были.
Честно говоря, Я их специально научился забывать - при интенсивной работе размышление над уже
выполненной задачей только вредит производительности.
Хотя... одну помню. Дана таблица. В ней есть поле Salary. Выбрать два наибольших значения в таблице.
что на сегодняшний день есть "актуальные задачки"
-----
Это очень по-разному. В одном случае будет достаточно поместить значение в контрол, в другом -
будет мало если ты спроектируешь всю систему, включая всякие мелочи типа лоад-балансер, и напишешь
весь код... и сделаешь это за пару недель прямо у клиента...
Если есть желание помучатся - могу подкидывать части своих задачек.
#22 
Murr_0002 завсегдатай15.10.10 23:17
Murr_0002
NEW 15.10.10 23:17 
в ответ Aerzenn 15.10.10 19:54
как оказалось, все просто:
------
int a = MAXINT;
int b = MAXINT;
a = a + b; ???
#23 
anly старожил16.10.10 00:01
anly
NEW 16.10.10 00:01 
в ответ Murr_0002 15.10.10 23:17
= -2
Проклят нарушающий межи ближнего своего (Втор.27:17)
#24 
anly старожил16.10.10 00:05
anly
NEW 16.10.10 00:05 
в ответ Murr_0002 15.10.10 23:01
В ответ на:
это была сделана недельная работа целого отдела большой программистской конторы...
и обеспеченно еще больше проблем в будущем.
Проклят нарушающий межи ближнего своего (Втор.27:17)
#25 
Murr_0002 завсегдатай16.10.10 00:43
Murr_0002
NEW 16.10.10 00:43 
в ответ anly 16.10.10 00:01
Вообще-то - exception...
#26 
Murr_0002 завсегдатай16.10.10 00:45
Murr_0002
NEW 16.10.10 00:45 
в ответ anly 16.10.10 00:05
и обеспеченно еще больше проблем в будущем.
-----
Нет, батенька, все сделано как надо... по крайней мере - не хуже, чем наработал бы отдел... а скорее всего - лучше.
#27 
kitov знакомое лицо16.10.10 12:02
NEW 16.10.10 12:02 
в ответ anly 16.10.10 00:01
В ответ на:
= -2

int a = INT_MAX;
int b = INT_MAX;
a = a + b;
printf("a+b=%ld\n", a);

a+b=4294967294
все относительно (c)
#28 
Aerzenn посетитель16.10.10 12:36
Aerzenn
NEW 16.10.10 12:36 
в ответ anly 16.10.10 00:05
и обеспеченно еще больше проблем в будущем.
_____________________________
для ленивых - да, это так.
Если эти гении и в самом деле есть гегии и знают правильный подход реализовании идеии,
то с моей точки зрения, я бы потратил неделю, если надо - две, и приобрел бы хорошую практику написания кода.
Ведь, действительно, класных гениев - единицы, и если у тебя есть цель быть одним из них, к этому надо стремиться, сколько времени на это не понадобилось бы!
#29 
AlexOtt знакомое лицо16.10.10 16:34
AlexOtt
NEW 16.10.10 16:34 
в ответ Murr_0002 15.10.10 17:31
а без split у нас нынче нельзя строку разпарсить? :-)
#30 
AlexOtt знакомое лицо16.10.10 16:36
AlexOtt
NEW 16.10.10 16:36 
в ответ anly 15.10.10 19:26
В ответ на:
мда... лучше памяти прикупить чтоб на переменную хватило

в некоторых случаях (цифромолотилка и т.п.) обмен xor'ом может быть быстрее - не вымываются значения из регистров и т.д.
#31 
Murr_0002 завсегдатай16.10.10 16:43
Murr_0002
NEW 16.10.10 16:43 
в ответ AlexOtt 16.10.10 16:34
а без split у нас нынче нельзя строку разпарсить? :-)
------
Можно. Но(!) 90 минут и 27 задач. Т.е. - примерно 3 минуты на задачу, включая ту, у которой задание написано на 2.5 листах.
Вопрос - можно ли написать более-мение работающий парсинг строки за 3 минуты, авторучкой, на 2-х сантиметрах бумаги? :)
#32 
anly старожил16.10.10 20:10
anly
NEW 16.10.10 20:10 
в ответ kitov 16.10.10 12:02
В ответ на:
a+b=4294967294
но это уже не int
Проклят нарушающий межи ближнего своего (Втор.27:17)
#33 
AlexOtt знакомое лицо16.10.10 20:12
AlexOtt
NEW 16.10.10 20:12 
в ответ Murr_0002 16.10.10 16:43
можно... недавно писал парсер application/x-www-urlencoded на куске доски. оно пишется со скоростью письма
#34 
Murr_0002 завсегдатай16.10.10 22:17
Murr_0002
NEW 16.10.10 22:17 
в ответ AlexOtt 16.10.10 20:12
оно пишется со скоростью письма
-----
Но занимает более 3-х минут.
Да, можно написать перебор массива типа LOGICAL*1 на предмет символов-сплитеров,
но мне почему-то кажется, что это будет минусом в общем зачете - похоже что тест
был именно на знание того, что существует Split().
На следующей неделе получу результат и тогда поглядим что там есть.
#35 
Aerzenn посетитель17.10.10 12:23
Aerzenn
NEW 17.10.10 12:23 
в ответ Murr_0002 16.10.10 22:17
На следующей неделе получу результат и тогда поглядим что там есть
---------------------------------------
Если не сложно, будет возможность выложить задачки? Можешь в личку (или как будет удобней).
#36 
Murr_0002 завсегдатай17.10.10 14:22
Murr_0002
NEW 17.10.10 14:22 
в ответ Aerzenn 17.10.10 12:23
Если не сложно, будет возможность выложить задачки?
------
Что Я помнил - Я уже запостил. Что пришлют в качестве результата - не имею ни малейшего представления.
И это... это было тестовое задание. Научится чему-либо полезному по нему невозможно - чисто проверка
знаешь-не-знаешь в том объеме, который интересовал конкретного работодателя.
#37 
Программист постоялец19.10.10 15:04
NEW 19.10.10 15:04 
в ответ AlexOtt 16.10.10 16:36
В ответ на:
в некоторых случаях (цифромолотилка и т.п.) обмен xor'ом может быть быстрее - не вымываются значения из регистров и т.д.

Такие задачи пишутся на C#? :D
#38 
Murr_0002 завсегдатай19.10.10 15:31
Murr_0002
NEW 19.10.10 15:31 
в ответ Программист 19.10.10 15:04
Такие задачи пишутся на C#? :D
------
Эээ... а чем тебе не нравится Шарп? Если умеешь - напишешь и на нем...
На моей последней работе далали именно числомолотилку и именно на C#...
И ничего - живет...
#39 
Программист постоялец20.10.10 16:36
NEW 20.10.10 16:36 
в ответ Murr_0002 19.10.10 15:31
Где я говорил, что мне не нравится C#? :)
Просто если уж пишешь на шарпе, то думать об экономии 2-3 тактов и пары байт несколько странно :) ИМХО.
#40 
Murr_0002 завсегдатай20.10.10 17:38
Murr_0002
NEW 20.10.10 17:38 
в ответ Программист 20.10.10 16:36
то думать об экономии 2-3 тактов и пары байт несколько странно :) ИМХО.
------
Думать об экономии 2-3 тактов или пары байт странно уже со времен Фортрана.
А вот то, что задачки на экономию пары байт дают в качестве теста - вообще не понятно...
#41 
AlexOtt знакомое лицо20.10.10 22:52
AlexOtt
NEW 20.10.10 22:52 
в ответ Murr_0002 20.10.10 17:38
это лишь означает, что ты не работаешь с тяжело нагруженными проектами, где все считается - и память и байты... Или обработка большого кол-ва данных, типа поиска и т.п.
#42 
Murr_0002 завсегдатай20.10.10 23:22
Murr_0002
NEW 20.10.10 23:22 
в ответ AlexOtt 20.10.10 22:52
Я работаю с очень разными проектами.
Часть из них - числодробилки, с упаковкой данных в битовые структуры.
Данных, особенно - промежуточных, тоже хватает и копошиться в них
приходится не мало.
Но(!) экономить байты и такты в том месте где неизвестно какая нагрузка
Я точно не буду - когда-нибудь железяка переварит данные и выплюнет
результат. Когда скорость не устроит - буду смотреть что и как.
Но вопрос не в этом - позиция Сениор С# девелопер и проверки на уровне
знания трюковых операций... да еще в том месте, где сущностная переменная
может быть заменена ссылкой на объект класса и все пойдет лесом.
Стороннее. Сегодня позвонила еще одна рекрутерша. Поговорили. Куча вопросов,
куча ответов. Последний вопрос - сколько хочешь денег? - Столько-то. - Может ли
эта сумма измениться? - Может, но в последнее время Я не видел предложений,
которые были бы интересны настолько, что Я был бы готов к существенному
снижению этой суммы. - Досвидания.
Вот такие переговоры.
#43 
1 2 3 все