Здравствуйте, AlexGin, Вы писали:
AG>>>6) Чем статический метод класса отличается от обычного метода? RF>>Тем, что он выполняется для всех объектов этого класса при его вызове.
AG>Значит ли это, что если НЕТ НИ ОДНОГО объекта этого класса, что статический метод выполняться НЕ БУДЕТ?
На некоторых компиляторах будет, но медленно. Но вообще это undefined behavior.
Здравствуйте, AlexRK, Вы писали:
AG>>>6) Чем статический метод класса отличается от обычного метода? RF>>>Тем, что он выполняется для всех объектов этого класса при его вызове.
AG>>Значит ли это, что если НЕТ НИ ОДНОГО объекта этого класса, что статический метод выполняться НЕ БУДЕТ?
ARK>На некоторых компиляторах будет, но медленно. Но вообще это undefined behavior.
Шутка и юмор заценены...
P.S. Статический метод — это метод не принадлежащий ни одному из объектов (экземпляров) класса.
Он просто объявлен в пространстве имён данного класса. Фактически — это аналог глобальной функции (просто объявленной в составе класса).
Будет выполняться одинаково, вне зависимости от того, сколько экземпляров данного класса существует (или вообще не существует ни одного).
mgu>Оформляет в виде коллекции и приводит к строке по умолчанию?
Сортирует по востребованности на рынке, если резюме не нацелено на конкретного работодателя. Я бы python поставил перед delphi
AG>P.S. Статический метод — это метод не принадлежащий ни одному из объектов (экземпляров) класса. AG>Он просто объявлен в пространстве имён данного класса. Фактически — это аналог глобальной функции (просто объявленной в составе класса). AG>Будет выполняться одинаково, вне зависимости от того, сколько экземпляров данного класса существует (или вообще не существует ни одного).
и, как следствие не имеет контекста(ака ссылки на экземпляр класса), ну а далее всякие фабричные методы и фабрики
Здравствуйте, AlexRK, Вы писали:
AG>>Значит ли это, что если НЕТ НИ ОДНОГО объекта этого класса, что статический метод выполняться НЕ БУДЕТ?
ARK>На некоторых компиляторах будет, но медленно. Но вообще это undefined behavior.
Крокодилы летают время от времени, но очень, очень низко!
Крокодилы летают время от времени, но очень, очень низко!
Цирк, выходит на арену конферансье: — А сейчас выступят летающие крокодилы!!!
Зал: — Да ну, фигня какая... Не бывает такого...
Тут на арену выбегает стадо крокодилов, бежит, бежит и... взлетает!!!
И начинает летать по кругу, только один маленький крокодильчик отстает
от всей банды. Зал в шоке...
Маленькая девочка в первом ряду, умиляясь, восклицает: — Ах, летающие
крокодильчики, как это прелестно!!!
А маленький крокодильчик подлетает к ней и говорит: — Эх, девочка, знала бы ты,
КАК НАС ТУТ ПИ$#ЯТ...
SH>А маленький крокодильчик подлетает к ней и говорит: — Эх, девочка, знала бы ты,
SH>КАК НАС ТУТ ПИ$#ЯТ...
Цирк, выходит конферансье, объявляет:
— Смертельный номер, полет лошади из-под купола цирка!
Ведут хромую больную лошадь, поднимают на веревке под купол, сбрасывают вниз. Лошадь летит на арену, падает, ба-бах! Зал разражается аплодисментами. Лошадь с огромным трудом поднимается и говорит:
— КАК ЖЕ ВЫ ЗА$БАЛИ...
Здравствуйте, AlexRK, Вы писали:
A>>А зачем вообще там i?
ARK>ИМХО, с i код гораздо нагляднее.
A>>Почему бы просто не написать: A>>
A>> unsigned long result = 2;
A>> // Сэкономим пару итераций.
A>> for (; value>2; --value )
A>> result *= value;
A>>
Для факториала i лишняя. Она просто там не нужна. С i может привычнее, но само определение факториала обычно даётся рекурсивно, поэтому более естественно писать его без использование итеративной переменной. Рекурсию в данном случае тоже можно использовать,т.к. о производительности речи не идёт.
ARK>Ну, тогда уж
ARK>
ARK> unsigned long result = 1;
ARK> for (; value; result *= value--);
ARK>
инкремент в выражениях лучше осторожно использовать. Есть разные стили, но это потенциальный источник ошибок, лучше отделить в отдельную операцию. Может while лучше использовать, если for непривычно выглядит.
И с result = 1 ТС уже поругали.
ARK>> unsigned long result = 1;
ARK>> for (; value; result *= value--);
ARK>>
VF>Столько разговоров про факториал, и ни слова про переполнение...
Это проблема собеседований — непонятно что именно спрашивают. Спроектировать тип данных для вычисления факториала для хотя бы 500 совсем не тривиально, не говоря уже о производительности. И главное — зачем? Для среднестатистического программиста такой навык не требуется.
Здравствуйте, alzt, Вы писали:
VF>>Столько разговоров про факториал, и ни слова про переполнение...
A>Это проблема собеседований — непонятно что именно спрашивают. Спроектировать тип данных для вычисления факториала для хотя бы 500 совсем не тривиально, не говоря уже о производительности. И главное — зачем? Для среднестатистического программиста такой навык не требуется.
Я это и не предлагаю; просто можно заметить, что в 64-битный unsigned long помещается только 20!, и дальше идти по циклу не стоит...
Здравствуйте, VladFein, Вы писали:
A>>Это проблема собеседований — непонятно что именно спрашивают. Спроектировать тип данных для вычисления факториала для хотя бы 500 совсем не тривиально, не говоря уже о производительности. И главное — зачем? Для среднестатистического программиста такой навык не требуется.
VF>Я это и не предлагаю; просто можно заметить, что в 64-битный unsigned long помещается только 20!, и дальше идти по циклу не стоит...
Тогда можно предложить на шаблонах написать факториал и вначале функции вставить проверку, что если n>factorial<unsigned long>::max, то вернуть код ошибки, или даже исключение бросить.
Здравствуйте, alzt, Вы писали:
A>>>Это проблема собеседований — непонятно что именно спрашивают. Спроектировать тип данных для вычисления факториала для хотя бы 500 совсем не тривиально, не говоря уже о производительности. И главное — зачем? Для среднестатистического программиста такой навык не требуется.
VF>>Я это и не предлагаю; просто можно заметить, что в 64-битный unsigned long помещается только 20!, и дальше идти по циклу не стоит...
A>Тогда можно предложить на шаблонах написать факториал и вначале функции вставить проверку, что если n>factorial<unsigned long>::max, то вернуть код ошибки, или даже исключение бросить.
Так а я о чём?
Один кандидат бросается, сморщив лоб, писать for цикл, а другой оговаривает тех задание: что возвращать, кто отвечает за проверку входных данных, exception vs error code, etc.
Понятно же что задание академическое. Если бы нужен был факториал — посмотрели бы в таблице.
Здравствуйте, AlexRK, Вы писали:
SH>>>>Delphi это не язык программирования, это IDE, язык там Pascal
ARK>>>Нет, Delphi — это именно язык программирования, наряду с IDE. Никакого Pascal там нет.
mgu>>А вот и специалисты подтянулись. RussianFellow, мужайтесь!
ARK>Э... А в чем проблема, гражданин специалист? Вы не в курсе, что Delphi — это язык программирования?
Здравствуйте, Privalov, Вы писали:
P>В Шарпе примитивные типы являются объектами. P>Не знаю, насколько это важно, пару раз пользовался чем-то таким: P>string p = 25.ToString();
string -- это объект с поведением примитивного типа, это во многих яхыках так, в т. ч. и С++-ах с человеческим лицом.
P>Перегрузка операций опять же. Удобнее читать P>int c = a + b; P>чем P>int c = a.add(b);
В Джаве есть плюс как сложение, от сотворения мира.
P>Исключения объявлять не надо. В Java меня порядком достал такой код: P>
P>void MyCoolMethod(int a, int b) throws Exception
P>{
P> int p;
P> try
P> {
P> // 100500 строк кода
P> }
P> catch (Exception ex)
P> {
P> }
P>}
P>
Если блюёт исключениями, то оборачивать всю функцию в try/catch нэ надо.
Здравствуйте, elmal, Вы писали:
mgu>>Блин, пойду повешусь. Ведь половины из всего этого я не знаю. Особенно какие отличия между C# и Java. E>Отличия с практической точки зрения? Я не шарпист, но как минимум могу сказать про другие средства разработки, про другой Code Convention (и кстати Java convention мне больше нравится). Могу ошибаться, но для веб части шарп завязан на IIS, по крайней мере это было раньше, для Java вариантов миллион. У шарпа фич и синтаксического сахара гораздо больше, другие дженерики без erasure (это и достоинства и недостатки). С кроссплатформенностью есть ньюансы, раньше было завязано многое на решения от Microsoft, сейчас возможно все получше стало, но как на практике, это как раз от кандидата и хотелось бы услышать. И много чего еще. Кто не такой дилетант в шарпе, как я, тот до черта мог бы рассказать про системы сборки, про библиотеки, мог бы дать рекомендации и т.д.
Так вы уже практически всё и рассказали. Эти вопросы, скорее, к архитектору. А знания си-шарпа как языка -- это отличия класса от структуры и using от using.
mgu>>С таким набором вопросов удаётся кого-нибудь нанять, кроме студентов? Или это и есть способ нанимать работников за миску риса? E>Проблем с набором нет, я всегда говорил что программистов избыток и найти человека вообще на проблема. Кстати, именно студентов набрать проблематично. Ибо уровень студента обычно — ужас ужас ужас. Хоть и значительно выше уровень, чем у топикстартера и даже зарплатные ожидания у них зачастую ниже, но толкового студента найти, у которого хотя бы базис есть, весьма проблематично. Брать выпускника технического ВУЗа программерской специальности не знающего что такое дерево (он умудрился проучиться не слышав про это, ответ был что то вроде это что то на первом курсе было, щас вообще не помню) вообще смысла нет. Даже если теоретический уровень хороший (таких мало и в основном за счет самообразования), зачастую куча гонора при отсутствии опыта перевешивают все плюсы.
Это да.
E>От копипаста отучать приходится, от операторов экскремента, от спагетти, от излишней переусложненности на ровном месте — это пройдет не один год пока детские болезни уйдут.
Эти болезни у многих хронические. Многие мои бородатые коллеги на мой глас вопиющего в пустыне по поводу всего вышеизложенного изрекают: "Так понятнее!"
E>Набор вопросов варьируется от того, что у человека в резюме. Первый вопрос — какие языки лучше всего знаете. И если человек знает с C# и Java, естественно будут подобные вопросы. Если человек на знает Java вообще или знает хреново, но знает хорошо Common Lisp, Python и т.д — вопросы будут другие. Взяли недавно питониста (а у нас pythonа нет, если что), по Java например вопросов практически не было, ибо я быстро увидел что смысла гонять нет, по существу опыта нет. Прекрасно работает, очень довольны, хоть и биг босса пришлось убеждать его брать, а он хотел его забраковать ибо кандидат Java не знает в достаточной мере.
А зачем приглашали питониста? Джавистов-то как собак нерезаных.
Здравствуйте, RussianFellow, Вы писали:
mgu>>Здравствуйте, RussianFellow, Вы писали:
RF>>> int res;
RF>>> if (n==0) RF>>> res = 1; RF>>> else RF>>> { RF>>> res = 1;
mgu>>Спасибо, мы вам перезвоним.
RF>Что, неправильный код?
Здравствуйте, AlexGin, Вы писали:
mgu>>Тогда сразу гоните в шею тех, кто владеет и русским, и английским. С такими скиллами ведь будут инсёртить английские ворды в русский спич. AG>Не надо передергивать, это разговорные языки. AG>И за русским, и за английским стоит одна и та же сущность — разговорное (и письменное) общение между людьми.
А я и не передёргиваю: неоднократно встречал пациентов, которые в модных языках программирования все переменные объявляют в начале функции -- как в дореволюционном С.
AG>Поясню подробнее на примере: AG>Есть C++ и C# (синтаксис весьма схожий, стеки технологий — различны): AG> — разрабатывать систему документооборота будем на C# (со всеми сопутствующими технологиями: ADO.NET, WPF/WinForms/ASP.NET...); AG> — для приложений real-time управления объектом, выберем C++ (с STL, boost, и к ним же Qt/MFC...).