![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Тест по Delphi при приеме на работу [D6, Win2k]
Anna © (2005-01-25 16:14:00)
Страницы: < 1 2 3 4 5 6 7 8 9 >
Уважаемые профессионалы, помогите, пожалуйста! При приеме на работу надо выяснить уровень компетентности человека в Delphi.
Может быть, кто-нибудь знает недлинный тест, котором достаточно быстро можно понять, насколько кандидат в предмете.
Я Delphi немного знаю.
Developerr (2005-01-26 13:13:00) [121]
> Юрий Зотов ©
Видно сразу, что опытный программист, с хорошей культурой программирования.
Этому учат в самом начале программирования. Код в Паскале (Делфи) нужно офрмлять лесенкой.
Но посмотрите в [12]
> Серьезный пока занят...
Как может, человек без опыта оценить хороший программист или нет. На мой взгляд для Опытного программиста это будет выглядеть нелепо. Обычно чем меньше человек знает, тем больше он задает глупых вопросов, на которые даже Отцы программирования могут затрудниться ответить.
Что значит, Серьезный пока занят.... Да для опытного программиста достаточно пары минут, чтобы понять соображает человек или нет. Я не думаю, что нельзя выделить 5 минут, чтобы проверить кого-либо.
default (2005-01-26 13:11:00) [122]MetalFan © (26.01.05 12:52) [53]
он рассчитан на то что High(I) мы будет считать за High(Cardinal)=$FFFFFFFF и на понимание того чего там делается
Fay (2005-01-26 13:08:00) [123]2 begin...end © (26.01.05 13:03) [55]
>> Если значение PWord увеличивается на 1, то это, в частности, не означает,
>>что новый указатель будет указывать на следующий байт памяти.
Очень свежая мысль
default (2005-01-26 13:06:00) [124]MetalFan © (26.01.05 12:52) [53]
да, подлый код
он рассчитан на то что решающий эту задачу даст ответ на этот код как на код:
type
PWord = ^word;
var
I: integer;
W: word;
begin
I := High(Cardinal) shr 8;
W := PWord(Cardinal(@I) + 2)^;
end;
begin...end (2005-01-26 13:03:00) [125]> [51] default © (26.01.05 12:39)
Не только. Как минимум, для осмысленного решения данного примера нужно знать внутреннее устройство Integer и правила выполнения операций с указателями. Если значение PWord увеличивается на 1, то это, в частности, не означает, что новый указатель будет указывать на следующий байт памяти.
> [53] MetalFan © (26.01.05 12:52)
А почему бы и нет? :-)
MetalFan (2005-01-26 12:59:00) [126]
I := High(I) shr 8
mov [ebp-$08], $007fffff
W := PWord(Integer(@I)+2)^;
lea eax,$02
jno TForm1.Button1Click + $20
call @IntOver
mov ax,[eax]
mov [ebp-$0a],ax
объясните плз суть ассемблерного кода!
MetalFan (2005-01-26 12:52:00) [127]так в W мы всегда имеем $7F. почему?
Piter (2005-01-26 12:40:00) [128]Arm79 © (26.01.05 11:42) [48]
имхо как раз умение решать средней сложности задачи сразу, находу, без заглядываний в справку и отличает опытного программера, "профи", так как на каждое обращение к справке тратится время и "прогер средней руки" будет писать прогу намного медленее, чем профи
да ну, бред. Конечно, программист с большим опытом уже какие-то вещи запомнил на 100%, но это только так сказать побочный эффект, это вовсе не отличительная способность высококлассного специалиста. Это разве может говорить о хорошей памяти.
А вот знать ГДЕ искать и КАК искать - это другое...
default (2005-01-26 12:39:00) [129]MetalFan © (26.01.05 12:33) [50]
да не в чём, разве что в знании что младший байт лежит по младшему адресу
MetalFan (2005-01-26 12:33:00) [130]
> type
> PWord = ^word;
> var
> I: integer;
> W: word;
> begin
> I := High(I) shr 8;
> W := PWord(Integer(@I) + 2)^;
> end;
простите за оффтоп)
объясните в чем соль этого кода!
видимо не очень хорошо знаю:
Вопрос 1 (на знание основ и платформы).
Чему будет равно W после выполнения следующего кода процессором Intel x86? Ответ
объяснить.
Игорь Шевченко (2005-01-26 11:57:00) [131]Gero © (25.01.05 19:38) [27]
> > И по форматированию многое можно сказать об опыте.
>
> Ничего подобного.
Когда у тебя будет такой же опыт, как у Сергея или у меня, тогда ты сам придешь к тому, что по форматированию и прочим аспектам оформления кода можно очень многое сказать о его авторе. Без обид.
С уважением,
Arm79 (2005-01-26 11:42:00) [132]kaZaNoVa © (25.01.05 18:33) [18]
Arm79 © (25.01.05 17:15) [9]
> Но решаемость этой задачи в короткие сроки с хелпом и
> справочной литературой у меня не вызывает никаких
> сомнений.
имхо как раз умение решать средней сложности задачи сразу, находу, без заглядываний в справку и отличает опытного программера, "профи", так как на каждое обращение к справке тратится время и "прогер средней руки" будет писать прогу намного медленее, чем профи)))
Не считаю себя профи. Не тяну. Вот "прогер средней руки" - самое оно. Но к справке обрашаюсь, только когда делаю что нибудь новое, а не каждый раз.
kaZaNoVa © (25.01.05 18:24) [15]
Arm79 © (25.01.05 17:15) [9]
> Да, и по поводу отсылки файлов с рабочего стола... Я
> вот с ходу не напишу.
я тоже, но могу сказать, что например для коннекта импользую WinApi сокеты в потоке, блокирующие, для определения папки рабочего стола использую Shell-функции, для поиска файлов - FindFile из SysUtils и т.д. и только одну процедуру чистого кода написать - я так думаю ...
попутно сказать можно, что почтовый протокол RFC можно в яндексе глянуть и т.д
Алгоритм то отсылки понятен, но весь вопрос в реализации. Я вот почту бы попытался бы отослать через Indy или NM. Разве это хуже работы с сокетами? Я так не считаю. Если есть готовая реализация (уже отлаженная), то почему бы ее и не использовать...
KilkennyCat (2005-01-26 01:25:00) [133]
> Может и так. Хотя это имхо плохой стиль программирования.
поэтому и не понял...
Юрий Зотов (2005-01-26 01:24:00) [134]> default © (25.01.05 23:39) [40]
> а если человек не уверен что сравнение обязательно будет
> слева направо...
...то этот человек не знает, как работает компилятор, что он может оптимизировать, а что наверняка не будет. Следовательно, такой человек крутым профи не является.
> All
Этот пример нельзя рассматривать в отрыве от всей программы. И поэтому я задал вопрос, но не стал на него отвечать. Помните дона Хуана? "Что лучше - пена или дом?".
:о)
Здесь , на форуме, однозначного ответа дать нельзя.
Но в контексте конкретной программы ответ (иногда - однозначный, иногда - наиболее вероятный), как правило, все же существует. Фокус как раз в том и состоит, что профи, во-первых, знает о таких фичах, а во-вторых, учитывает их. Буквально в каждой строчке.
Поэтому буквально каждая строчка у него оптимальна. И при взгляде на добротный, профессиональный код это видно.
При взгляде же на код середнячка тоже видно. Но совсем другое.
Piter (2005-01-26 01:07:00) [135]Developerr (25.01.05 19:03) [22]
Юзеру до лампочки, какой код в программе, главное чтобы хорошо работало и без глюков или я не прав?
прав. Только дело в том, что профессиональный программист будет оформлять код ВСЕГДА ГРАМОТНО. Он просто так привык и ему ТАК УДОБНЕЕ.
Поэтому если оформления нету - то это на 99,999999% не профессиональный программист
Gero © (25.01.05 19:38) [27]
Да ни о чем это не говорит.
Форматирования кода и уровень знаний никак не связаны.
ошибаешься.
Точнее, формально ты прав, напрямую они не связаны. Но я никогда не встречал программиста с хорошим уровнем знаний, который не имел бы опыта написания программ. А если он имеет достаточный опыт написания программ - он автоматически форматирует код, на автомате.
Я например даже в чисто тестовых приложениях, может быть в десяток строк, все равно делаю форматирование, уже на уровне рефлексов. Так ГОРАЗДО проще, когда код оформлен.
И если человек профи, если он уже писал миллионы строк в своей жизни - как у него не может быть такого же рефлекса?
Я согласен с тем, что хорошее форматирование не всегда говорит о профессионале. Но плохое форматирование всегда говорит о НЕпрофессионале
Вот комментирую я очень редко, хотя по заявлениям профессионалов это тоже должно придти и это надо делать
KilkennyCat © (25.01.05 23:08) [38]
а вот я не понял... имеется ввиду, что выполнение (F1 < F2) может повлиять на (A > B) ?
Может и так. Хотя это имхо плохой стиль программирования.
К тому же, в функциях F1 и F2 могут выполняться операции, которые просто не имеет смысла выполнять, если A<=B. И вообще, функции наверняка будут выполняться куда дольше, чем мгновненное сравнение A с B.
Palladin (2005-01-26 00:04:00) [136]
> Кроме читабельности ничего не страдает.
Достичь читабельности и логической структуризайции кода - это чуть ли не самая важное для опытного программиста, к коду он может и невернуться, а может и вернуться, если невернется, много не потеряет, но если вернется - много сэкономит.
saNat (2005-01-26 00:03:00) [137]Я скорее начинающий, но написал бы
If (A>B)And(F1<F2)
Then
исходя из того, что если(A>B)не выполняется, то не зачем тратить время на проверку результата функций
С уважением, ЕВА
SergP (2005-01-25 23:56:00) [138]
> [35] Юрий Зотов © (25.01.05 22:38)
> > Gero © (25.01.05 21:22) [30]
>
> Еще пример (A и B - целые переменные, F1 и F2 - функции,
> возвращающие целые значения).
>
> Какой код лучше:
> if (A > B) and (F1 < F2) then...
> или
> if (F1 < F2) and (A > B) then...
>
> Так вот - в коде профи все нюансы подобного рода продуманы
> и написаны оптимальным образом. А ведь это тоже элементы
> оформления (хотя и не форматирование, конечно).
ИМХО в большинстве случаев if (A > B) and (F1 < F2) then...
Но если представить ситуацию что может быть задача где A>B практически во всех случаях сравнении и иначе только в тысячных долях процента от всех случаев, а функции F1 и F2 сами по себе простенькие. В таком случае будет лучше использовать второй вариант.
SergP (2005-01-25 23:49:00) [139]
> [13] palva © (25.01.05 17:34)
> Пусть в вашем присутствии пройдет онлайновый тест на certifications.ru
> Delphi 5 или Delphi 7. Там 40 вопросов. Кто на большее число
> вопросов ответит, того возьмете.
Тот тест даже при присутствии кого-нить (т.е. честно) может пройти большая часть людей, которые только поверхностно знакомы с Delphi.
И вообще использование тестов (простых, сложных или даже суперсложных) в таких вопросах как сабж ИМХО нежелательно.
default (2005-01-25 23:39:00) [140]"> if (A > B) and (F1 < F2) then...
> или
> if (F1 < F2) and (A > B) then..."
а если человек не уверен что сравнение обязательно будет слева направо и напишет код
if F1 < F2 then if A > B then...
то зачтётся ответ?