Задачи на интервью

User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Задачи на интервью

Post by Интеррапт »

Мальчик-Одуванчик wrote:
Medium-rare wrote:A method is a function that belongs to a class. Not anymore? 8O
Нет. В С++ правильно называеть это функция-член (member function). словоупотребление "метод" относится к обьектно-ориентированному программированию в целом а в плюсах считается ошибочным и даже "достойным порицания" (Dewhurst)
Ну если быть еще точнее, что method - это не member function, а virtual member function. Только удобней одно слово произнести вместо трех.
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: Задачи на интервью

Post by dotcom »

Интеррапт wrote: Ну если быть еще точнее, что method - это не member function, а virtual member function. Только удобней одно слово произнести вместо трех.
Это все буквоедство, вызванное кривым пониманием того, что когда-то сказал Страуструп. В cpp'ной группе давным-давно был флейм по этому поводу. Метод - синоним функции члена. Виртуальная функция член = виртуальный метод. Никакого основания разделять эти два понятия тут нет.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Задачи на интервью

Post by Мальчик-Одуванчик »

Интеррапт wrote:
Мальчик-Одуванчик wrote:
Medium-rare wrote:A method is a function that belongs to a class. Not anymore? 8O
Нет. В С++ правильно называеть это функция-член (member function). словоупотребление "метод" относится к обьектно-ориентированному программированию в целом а в плюсах считается ошибочным и даже "достойным порицания" (Dewhurst)
Ну если быть еще точнее, что method - это не member function, а virtual member function. Только удобней одно слово произнести вместо трех.
В терминологии С++ такого понятия как "метод" нет.
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: Задачи на интервью

Post by dotcom »

Мальчик-Одуванчик wrote: В терминологии С++ такого понятия как "метод" нет.
Да? А то, что их Страуструп называл методами, так он тоже языка не знал? :D
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Задачи на интервью

Post by Мальчик-Одуванчик »

dotcom wrote:
Интеррапт wrote: Ну если быть еще точнее, что method - это не member function, а virtual member function. Только удобней одно слово произнести вместо трех.
Это все буквоедство, вызванное кривым пониманием того, что когда-то сказал Страуструп. В cpp'ной группе давным-давно был флейм по этому поводу. Метод - синоним функции члена. Виртуальная функция член = виртуальный метод. Никакого основания разделять эти два понятия тут нет.
В стандарте языка достоточно четко определен термин "функция-член". Никакие синонимы к этому термину там не определены.
А поскольку стандарт дополнялся совсем недавно и не претерпел по этому поводу никаких изменений то лучше называть правильно.
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Задачи на интервью

Post by АццкоМото »

Я понимаю, что из ста приветовцев примерно стосорокшесть с половиной вертели Вику на нефритовом стержне своих непокобелимых знаний, а особоодаренные - и вовсе сами эту Вику пишут потными ночами, но все же:
https://en.wikipedia.org/wiki/Method_(c ... ogramming)
даже про виртуальность нет ни слова, за исключением virtual methods
Мат на форуме запрещен, блдж!
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: Задачи на интервью

Post by dotcom »

Мальчик-Одуванчик wrote: В стандарте языка достоточно четко определен термин "функция-член". Никакие синонимы к этому термину там не определены.
Кроме идеалистических соображений называть все добуквенно, как это указано в стандарте, у вас есть еще какие-то возражения против слова "метод" применительно к функции члену?
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Задачи на интервью

Post by Мальчик-Одуванчик »

dotcom wrote:
Мальчик-Одуванчик wrote: В терминологии С++ такого понятия как "метод" нет.
Да? А то, что их Страуструп называл методами, так он тоже языка не знал? :D
Ну ЕМУ такое невежество простительно :)
дословно он написал "виртуальную функцию-член иногда называют методом".
но со времен третьего издания этот термин стали использовать для любых функций-членов, что приводит к неоднозначности трактования.
User avatar
Medium-rare
Уже с Приветом
Posts: 9194
Joined: 04 Mar 2011 03:04
Location: SFBA

Re: Задачи на интервью

Post by Medium-rare »

Мальчик-Одуванчик wrote:
Medium-rare wrote:A method is a function that belongs to a class. Not anymore? 8O
Нет. В С++ правильно называеть это функция-член (member function). словоупотребление "метод" относится к обьектно-ориентированному программированию в целом а в плюсах считается ошибочным и даже "достойным порицания" (Dewhurst)
Вокруг меня сотни профессионалов называют это методом класса, при том, очень сильно чаще, чем по другому. Уверенность, что это не галлюцинация, стремится к 100%. Тот, кто спорит с общепринятым, конечно, может принимать себя хоть за Страустрапа, но вероятность того, что мы не поверим, тоже стремится к 100%.
... and even then it's rare that you'll be going there...
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Задачи на интервью

Post by Мальчик-Одуванчик »

dotcom wrote:
Мальчик-Одуванчик wrote: В стандарте языка достоточно четко определен термин "функция-член". Никакие синонимы к этому термину там не определены.
Кроме идеалистических соображений называть все добуквенно, как это указано в стандарте, у вас есть еще какие-то возражения против слова "метод" применительно к функции члену?
хотя бы то, что стандартное определение однозначное, а приведенный слэнг уже нет.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Задачи на интервью

Post by Мальчик-Одуванчик »

Medium-rare wrote:
Мальчик-Одуванчик wrote:
Medium-rare wrote:A method is a function that belongs to a class. Not anymore? 8O
Нет. В С++ правильно называеть это функция-член (member function). словоупотребление "метод" относится к обьектно-ориентированному программированию в целом а в плюсах считается ошибочным и даже "достойным порицания" (Dewhurst)
Вокруг меня сотни профессионалов называют это методом класса, при том, очень сильно чаще, чем по другому. Уверенность, что это не галлюцинация, стремится к 100%. Тот, кто спорит с общепринятым, конечно, может принимать себя хоть за Страустрапа, но вероятность того, что мы не поверим, тоже стремится к 100%.
Процитируйте им совет номер 9.
Меня тоже иногда передергивает, когда слышу "ложить".
User avatar
Medium-rare
Уже с Приветом
Posts: 9194
Joined: 04 Mar 2011 03:04
Location: SFBA

Re: Задачи на интервью

Post by Medium-rare »

Не по делу не буду ничего им советовать, на тупую борьбу с остроконечниками нет времени.
... and even then it's rare that you'll be going there...
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Задачи на интервью

Post by Мальчик-Одуванчик »

Medium-rare wrote:Не по делу не буду ничего им советовать, на тупую борьбу с остроконечниками нет времени.
Зря, книжка неплохая. Написана как раз для профессионалов и посвящена систематизации типичных косяков.
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: Задачи на интервью

Post by dotcom »

Мальчик-Одуванчик wrote: но со времен третьего издания этот термин стали использовать для любых функций-членов, что приводит к неоднозначности трактования.
Я еще раз спрашиваю, где тут неоднозначности? В каком контексте в C++ метод может использоваться в ином значении, чем функция член?
Last edited by dotcom on 25 Apr 2013 16:10, edited 1 time in total.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Задачи на интервью

Post by Мальчик-Одуванчик »

dotcom wrote:
Мальчик-Одуванчик wrote: но со времен третьего издания этот термин стали использовать для любых функций-членов, что приводит к неоднозначности трактования.
Я еще раз спрашиваю, где тут неоднозначности? В каком контексте в C++ метод может использоваться в ином контексте, чем функция член?
1. Неужели сами не заметили?
Интеррапт (и Страуструп вместе с ним) говорят о методах применительно исключительно к виртуальным функциям-членам.
Вы, Poryadok и Mediun-rare относите к методам любые функции-члены. Не находите что это несколько разные определения?

2. "template method" - использование термина "метод" совершенно в другом контексте и не имеющий ничего общего с "template member function".
User avatar
Ljolja
Уже с Приветом
Posts: 2924
Joined: 01 Apr 2004 04:22

Re: Задачи на интервью

Post by Ljolja »

Мальчик-Одуванчик wrote:
Интеррапт wrote:
Мальчик-Одуванчик wrote:
Medium-rare wrote:A method is a function that belongs to a class. Not anymore? 8O
Нет. В С++ правильно называеть это функция-член (member function). словоупотребление "метод" относится к обьектно-ориентированному программированию в целом а в плюсах считается ошибочным и даже "достойным порицания" (Dewhurst)
Ну если быть еще точнее, что method - это не member function, а virtual member function. Только удобней одно слово произнести вместо трех.
В терминологии С++ такого понятия как "метод" нет.
Мальчик-Одуванчик, с такой attitude Вы интервью завалите. Если интервюер использует непривычную/незнакомую терминологию, Ваша (на интервью) задача - разобраться, как его терминология соотносится с Вашей и при етом его ненарoком не обидеть :-)
Я боюсь, что наступит день, когда технологии превзойдут простое человеческое обшение. И мир получит поколение идиотов (c)
User avatar
fruit6
Уже с Приветом
Posts: 4205
Joined: 10 Jan 2004 01:22
Location: n-sk -> MD -> VA

Re: Задачи на интервью

Post by fruit6 »

как бы завалить интервью может не только претендент, чай не 2001й год.
User avatar
Poryadok
Уже с Приветом
Posts: 1383
Joined: 17 Jan 2005 22:33
Location: Minsk, Belarus - Beaverton, OR

Re: Задачи на интервью

Post by Poryadok »

Medium-rare wrote:
Poryadok wrote:Я попросил написать сигнатуру метода, который будет по коду ошибки возвращать severity и text description
Это был правильный вопрос, насколько товарищ в самом деле представляет собственно программирование на языке.
Тут у меня спрашивали какие еще вопросы
ну, про bstr. Мне тут один кразавчег индус обьяснял, что ему не надо память освобождать, у него refcount
А это вопрос на память. Principal или не principal может помнить, а может и нет. Ну я бы поприкалывался, BSTR или bstr_t? Нехороший вопрос. Он вам пытался рассказать про ref count, отлично, можно было послушать версию. Ещё лучше задать вопрос, что он знает об этом, вместо конкретных COM/ATL типов. Кстати, MS до вопросов такого рода на интервью не опускается. Ask me how I know. Понимание тут ни при чём.
Еще люблю спрашивать можно ли из ивента, пойманого дотнетом у com-а рисовать в ui, и если нет,то что делать в winforms и wpf. Индус, например, уверял меня, что без проблем.
Это опять слишком для ремесленника вопросы. Тогда неплохо бы сначала поговорить о принципиальном понимании, что есть UI thread, и знает ли товарищ детали имплементации? Ну а если клеймит, что знает, как оно там в wpf, для примера?
Про BSTR я вообще-то спросил чем он отличается от char*.
Я ожидал ответа, что во-первых, BSTR - это всегда unicode, а во-вторых, он содержит длину. Получил ответ, что BSTR сам освобождает себе память. Если бы мужик не говорил 90% времени интервью о чём его не спрашивают, а останавливался сам хотя бы через 10 минут после заданого вопроса и давал слово вставить, я бы у него ещё спросил - как, мол, так - если функция возвращает BSTR, то когда же оно выходит из области видимости - может он бы и сообразил. Но когда мужика удалось остановить, у нас уже более интересные вопросы возникли.
Я такого человека взять не могу. Он мне memory leak-ов наделает.

Я на интервью не требую помнить каждую букву. Я требую как раз понимания. Но и общее представление предмета должно быть, или не указывай его в резюме. Например, если указал clearcase, то либо знай, что такое version tree, либо не претендуй больше чем на junior position, а то principal engineer, который никогда не задавался вопросом, кто внёс изменение и почему, меня сильно настораживает.

А ещё у и у меня, и соседних групп любимый вопрос на интервью - расскажи чем занимался на прошлой работе, и нарисуй диаграму. (к нам приходят люди, который работали с железом, и у нас работа - с железом). Диаграма обычно - железо - firmware - бизнес-логика - UI, и стрелочки между ними.
Если человек не может нарисовать диаграму - не берём принципиально. К сожалению, таких - много. Рисуйте диаграмы красиво и чётко, чем чётче диаграма - тем лучше. Желательно знать, что работает в одном процессе, а что - в разных, и как маршаллится через границу процесса. Тех, кто знает, через что у них маршаллилось - берём (например, тётка знала, что у них использовались named pipes и могла нарисовать диаграму - взяли и, похоже, не прогадали). Principal Engineers с десятками лет работы, у которых всегда-всегда всё было исключительно в одном процессе - не берём, потому что стрёмно.
Отлипай давай от форума и марш работать!
User avatar
Medium-rare
Уже с Приветом
Posts: 9194
Joined: 04 Mar 2011 03:04
Location: SFBA

Re: Задачи на интервью

Post by Medium-rare »

Poryadok wrote: Про BSTR я вообще-то спросил чем он отличается от char*.
Я ожидал ответа, что во-первых, BSTR - это всегда unicode, а во-вторых, он содержит длину. Получил ответ, что BSTR сам освобождает себе память.
Ну так, в лоб и был задан вопрос, что есть BSTR? М... изучить проблемы не составляет, хотя уже и вполне официально просят не пользоваться этим типом, лет 10, не меньше. Очень давно не использовал, по моему, нерекомендвано больше. А вообще да, товарищ "забыл, потому что не знал". Тогда "до свидания"... В ответ на такой вопрос неплохо ответить честно "знаю" и рассказать, "не знаю" и сказать, что много разных строковых типов знаю помимо того. Сам по себе такой вопрос лучше не задавать.
Я такого человека взять не могу. Он мне memory leak-ов наделает.
Так эта... Запрещаете пользоваться голым BSTR, только _bstr_t и никогда не детачить от него системный BSTR, код-ревью обязательно.
Я на интервью не требую помнить каждую букву. Я требую как раз понимания.
Ну не стыдно программеру не знать BSTR. Научиться его использованию не сложно. Для понимания, раз не знает BSTR, можно было повентилировать, как он себе представляет обращение со строковым типом, прередаваемым между процессами:

struct BSTR
{
uint32_t count;
wchar_t* pstr;
};

Вот какой бы API для того придумал?
Например, если указал clearcase, то либо знай, что такое version tree, либо не претендуй больше чем на junior position, а то principal engineer, который никогда не задавался вопросом, кто внёс изменение и почему, меня сильно настораживает.
ClearCase самый ужасный version control ever. Никогда не укажу. Но на враньё указавших фильтровать, может, так и надо.
А ещё у и у меня, и соседних групп любимый вопрос на интервью - расскажи чем занимался на прошлой работе, и нарисуй диаграму. (к нам приходят люди, который работали с железом, и у нас работа - с железом). Диаграма обычно - железо - firmware - бизнес-логика - UI, и стрелочки между ними.
Если человек не может нарисовать диаграму - не берём принципиально. К сожалению, таких - много. Рисуйте диаграмы красиво и чётко, чем чётче диаграма - тем лучше. Желательно знать, что работает в одном процессе, а что - в разных, и как маршаллится через границу процесса. Тех, кто знает, через что у них маршаллилось - берём (например, тётка знала, что у них использовались named pipes и могла нарисовать диаграму - взяли и, похоже, не прогадали). Principal Engineers с десятками лет работы, у которых всегда-всегда всё было исключительно в одном процессе - не берём, потому что стрёмно.
Ну это понятно, раз надо interprocess communications такие. Лично мне всегда это было интересно, как оно работает. Недавно лепил некий automation, вспомнил Named Pipe. Но почему обязательно IPC? Это даже вовсе не обычное решение для работы с оборудованием. Слушать/ говорить в порт оборудования прямо в процессе куда чаще распространено.
... and even then it's rare that you'll be going there...
Andy Wooden
Уже с Приветом
Posts: 1686
Joined: 11 Mar 2005 00:31
Location: ПЗ

Re: Задачи на интервью

Post by Andy Wooden »

возражу по двум пунктам:
1. это неверно

Code: Select all

struct BSTR
{
uint32_t count;
wchar_t* pstr;
};
2. не быть знакомым с этой макрософтовской рацухой - ну совершенно не стыдно
User avatar
M. Ridcully
Уже с Приветом
Posts: 11999
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: Задачи на интервью

Post by M. Ridcully »

Poryadok wrote: Про BSTR я вообще-то спросил чем он отличается от char*.
Я ожидал ответа, что во-первых, BSTR - это всегда unicode
В огороде бузина, а в Киеве - дядька. А char*, что, не может быть unicode?
Мир Украине. Свободу России.
User avatar
M. Ridcully
Уже с Приветом
Posts: 11999
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: Задачи на интервью

Post by M. Ridcully »

Poryadok wrote:Я ожидал ответа, что во-первых, BSTR - это всегда unicode, а во-вторых, он содержит длину.
Про "unicode" уже написал - это какая-то ваша собственная интерпретация, про длину - верно, но самое главное вы забили - про аллокаторы.

Но вообще это казуистика, такую херню на собеседовании спрашивать.
Мир Украине. Свободу России.
User avatar
Medium-rare
Уже с Приветом
Posts: 9194
Joined: 04 Mar 2011 03:04
Location: SFBA

Re: Задачи на интервью

Post by Medium-rare »

Andy Wooden wrote:возражу по двум пунктам:
1. это неверно
Это был пример, а не иллюстрация, что там на самом деле. Мы видим OLECHAR*. Корректнее было бы строку прямо в структуре размещать (? наверное), но опять таки, просто на интервью спросить, как товарисч представляет себе интерфейс для работы с такой кракозяброй, тут девелопер себя и покажет.
A BSTR is a composite data type that consists of a length prefix, a data string, and a terminator. The following table describes these components.
Item Description
Length prefix A four-byte integer that contains the number of bytes in the following data string. It appears immediately before the first character of the data string. This value does not include the terminating null character.
Data string A string of Unicode characters. May contain multiple embedded null characters.
Terminator Two null characters.

A BSTR is a pointer. The pointer points to the first character of the data string, not to the length prefix.
... and even then it's rare that you'll be going there...
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: Задачи на интервью

Post by dotcom »

А как теперь правильно строки передавать в COM, если без BSTR? Я, к счастью, с COM'ами давно не работаю.
avitya
Уже с Приветом
Posts: 3836
Joined: 13 Sep 2007 10:06

Re: Задачи на интервью

Post by avitya »

КОМ зло, ОЛЕ зло. Виндовс тоже зло.

Return to “Работа и Карьера в IT”