Re: Собеседование в Логике
От: _Obelisk_ Россия http://www.ibm.com
Дата: 19.09.07 18:45
Оценка:
Здравствуйте, Awaken, Вы писали:

A>Сходил в компанию, знаменитую своими сложными собеседованиями.

A>надеюсь вопросы не могут являться тайной, иначе грош цена таким вопросам,
A>если знание ответов заранее дает 100% прохождение собеседования
A>итак, вопросы:

Хм...А что в этих вопросах такого специфического ? Я, правда, по собеседованиям не ходил (устраивает текущее место), но все перечисленные вопросы вполне просты, на мой взгляд.
Для копирования сложных композит паттернов виртуальный конструктор не пойдет. Лучше сделать метамодель для иерархии классов, входящих в данный паттерн. В этом случае операцию клонирования можно отделить и вынести за пределы иерархии классов паттерна. Т.е. сам паттерн будет сугубо пассивным хранилещем данных, а все операции с ним будут делаться внешними методами (импользуя метамодель) Это добавляет большей гибкости и абстрактности, так как опреции типа клонирования будут зависить лишь от метамодели и не зависить от самой модели. Т.е. добавление новых классов в иерархию не потребует дописывания алгоритма клонирования.

Я такой подход использовал при создании importer-а из Rational Rose в другой тул. Сей импортер должен был читать Rose файлы напрямую. Это потребовало создания внутреннего представления для файлов, которое как раз и является сложной разновидностью паттерна композит с перекрестным ссылками (в том числе и циклическими). Метамодель + вспомогательные шаблоны были написаны вручную (~ 4000 строк кода). Потом была нарисована UML модели внутреннего представления для Rose-файлов. Затем был написан небольшой кодогенератор (~2000 строк кода), который из этой модели генерил С++ классы + код, инициализирующий метамодель. Объем генеренного кода уже порядка 30 000 строк. В общем, за две недели получилось полноценное и эффективное внутреннее представление, с поддержкой таких операций, как сериализация/десеарилизация/клонирование/обход и т.д, которые зависят лишь от метамодели. Это позволило впоследствии дополнять и уточнять модель без переписывания этих методов.



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[2]: Собеседование в Логике
От: minorlogic Украина  
Дата: 19.09.07 18:57
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Но выбрал другую компанию, но в сл. если передумаю рассматриваю Логику как вполне приемлемый вариант для работы.


На чем остановились если не секрет ?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: Собеседование в Логике
От: minorlogic Украина  
Дата: 19.09.07 19:01
Оценка:
Здравствуйте, _Obelisk_, Вы писали:
....

И это вы только реализовывали патерн композит ? Гм, заставляет задуматься ...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re: Собеседование в Логике
От: LuciferMoscow Россия  
Дата: 19.09.07 19:17
Оценка:
Здравствуйте, Awaken, Вы писали:

A>-в каких случаях функцтор или функция не инлайнится?

Вопрос поставил в тупик. Хотя идеи есть.

A>-почему алгоритм sort не примениним к контейнеру list?

Блин, неужно random_access_iterator хочет?!

A>-как избежать рейс кондишена при инициализации синглтона

A>пришлось объяснять про double-checked locking,
A>попутно возникли вопросы про блокировку и мьютексы
А на некоторых процах не работает

A>-чем отличается критическая секция от мьютекса

A>(это их любимый вопрос -я до сих пор НЕ ЗНАЮ, как внутри работает критическая секция,
A>знаю только что она быстрее и ее нельзя шарить между процессами)
Крит. секция — не объект ядра

A>-абстрактная фабрика, когда применять? попросили нарисовать UML диаграмму,

УМЛ не нарисую.

A>и придумать пример из жизни.

A>придумал кодогенератор генерирующий одни и те же конструкции на разных языках программирования :
A>JavaFactory, CSharpFactory, CPlusFactory
Баян.

A>-паттерн композит, нарисуйте диаграмму

Кажись я декоратор нарисовал.

A>-как реализовать глубокое копирование вышеуказанного паттерна, с помощью виртуального конструктора.

См. предыдущий ответ

P.S. В целом приятное впечатление(хотя возможно это такая подача автора)
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[2]: Собеседование в Логике
От: minorlogic Украина  
Дата: 19.09.07 20:28
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

A>>-почему алгоритм sort не примениним к контейнеру list?

LM>Блин, неужно random_access_iterator хочет?!

прикольно если реализация пользует advance
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: Собеседование в Логике
От: AntZ  
Дата: 20.09.07 04:19
Оценка: :))
Здравствуйте, LuciferMoscow, Вы писали:

LM>Здравствуйте, Awaken, Вы писали:


A>>-в каких случаях функцтор или функция не инлайнится?

LM>Вопрос поставил в тупик. Хотя идеи есть.
Когда внутренний профайлер считает инлайн невыгодным, когда на функцию могут быть указатели, когда так захотел компилер.

A>>-почему алгоритм sort не примениним к контейнеру list?

LM>Блин, неужно random_access_iterator хочет?!
Ну, можно было и догадаться пузырьком сортировать, если рандома нет!

A>>-как избежать рейс кондишена при инициализации синглтона

A>>пришлось объяснять про double-checked locking,
A>>попутно возникли вопросы про блокировку и мьютексы
LM>А на некоторых процах не работает
Обычно volatile помогает. Double check locking обычно используется для улучшения перформанса. Принцип — лучше недолочить, чем перелочить.

A>>-чем отличается критическая секция от мьютекса

A>>(это их любимый вопрос -я до сих пор НЕ ЗНАЮ, как внутри работает критическая секция,
A>>знаю только что она быстрее и ее нельзя шарить между процессами)
LM>Крит. секция — не объект ядра
А Вы видели исходники ядра? Лучше все-таки сначала их увидеть

A>>-абстрактная фабрика, когда применять? попросили нарисовать UML диаграмму,

LM>УМЛ не нарисую.
Да UML очень легко рисовать. Поверьте, художественный дар совсем не требуется. Вот Мону Лизу нарисовать гораздо сложнее, а в UML все квадратно-прямоугольное, кроме треугольников наследования.

A>>-как реализовать глубокое копирование вышеуказанного паттерна, с помощью виртуального конструктора.

LM>См. предыдущий ответ
Все просто — надо сделать виртуальный конструктор и реализовать там глубокое копирование.

LM>P.S. В целом приятное впечатление(хотя возможно это такая подача автора)

Мало они издевались, мало. Не попросили написать оператор перегрузки постфиксного ++, создать указатель на виртуальную функцию-член с неограниченным количеством параметров, применить паттерн FactoryMethod для уничтожения объектов и написать собственную реализацию мьютекса на вижуал бейсике
Re[3]: Собеседование в Логике
От: minorlogic Украина  
Дата: 20.09.07 04:59
Оценка:
Здравствуйте, AntZ, Вы писали:

AZ>... когда на функцию могут быть указатели...


Кажется это не должно быть препятствием к инлайну , просто функциф будет компиленной дет лежать а встраиваться там где это возможно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[3]: Собеседование в Логике
От: messir_kelvin Украина  
Дата: 20.09.07 06:06
Оценка: :))) :)
Здравствуйте, AntZ, Вы писали:

LM>>P.S. В целом приятное впечатление(хотя возможно это такая подача автора)

AZ>Мало они издевались, мало. Не попросили написать оператор перегрузки постфиксного ++, создать указатель на виртуальную функцию-член с неограниченным количеством параметров, применить паттерн FactoryMethod для уничтожения объектов и написать собственную реализацию мьютекса на вижуал бейсике
А потом предложить зарплату в 800$
Re[3]: Собеседование в Логике
От: _Obelisk_ Россия http://www.ibm.com
Дата: 20.09.07 06:31
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Здравствуйте, _Obelisk_, Вы писали:

M>....

M>И это вы только реализовывали патерн композит ? Гм, заставляет задуматься ...


В смысле две недели — это долго ? Дык за это время была написана метамодель, генератор и нарисована модель, из которой сгенерилось порядка 150 классов. Парсер для Rose-их файлов написался за день. Если сможете сделать быстрее — попробуйте



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[2]: Собеседование в Логике
От: AntZ  
Дата: 20.09.07 07:04
Оценка: 15 (7) +3 :))) :))) :))) :))) :))) :))) :))) :))) :))) :)
_O_>Хм...А что в этих вопросах такого специфического ? Я, правда, по собеседованиям не ходил (устраивает текущее место), но все перечисленные вопросы вполне просты, на мой взгляд.
_O_>Для копирования сложных композит паттернов виртуальный конструктор не пойдет. Лучше сделать метамодель для иерархии классов, входящих в данный паттерн. В этом случае операцию клонирования можно отделить и вынести за пределы иерархии классов паттерна. Т.е. сам паттерн будет сугубо пассивным хранилещем данных, а все операции с ним будут делаться внешними методами (импользуя метамодель) Это добавляет большей гибкости и абстрактности, так как опреции типа клонирования будут зависить лишь от метамодели и не зависить от самой модели. Т.е. добавление новых классов в иерархию не потребует дописывания алгоритма клонирования.

Нет, лучше сделать активную виртуальную модель иерархии классов путем пассивной абстракции данных и корреляции паттернов на базе метамодели знаний полученной в результате корреляции объектно-ориентированного подхода с абстрактно-реляционной парадигмой данных. В этом случае клонирование метамодели не нарушает нормализацию виртуального наследования и обеспечивает проактивный подход к абстракции иерархической инкапсуляции.
Re[4]: Собеседование в Логике
От: minorlogic Украина  
Дата: 20.09.07 07:12
Оценка:
Здравствуйте, messir_kelvin, Вы писали:

_>А потом предложить зарплату в 800$


Для некоторых регионов это очень много , для других мало. Шутка неясна
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[3]: Собеседование в Логике
От: De-Bill  
Дата: 20.09.07 07:15
Оценка:
AZ>Нет, лучше сделать активную виртуальную модель иерархии классов путем пассивной абстракции данных и корреляции паттернов на базе метамодели знаний полученной в результате корреляции объектно-ориентированного подхода с абстрактно-реляционной парадигмой данных. В этом случае клонирование метамодели не нарушает нормализацию виртуального наследования и обеспечивает проактивный подход к абстракции иерархической инкапсуляции.

С точки зрения банальной эрудиции, не каждый индивидум, поражающий абстракт, способен игнорировать тенденцию парадоксальных эмоций.
Re[3]: Собеседование в Логике
От: _Obelisk_ Россия http://www.ibm.com
Дата: 20.09.07 07:16
Оценка:
Здравствуйте, AntZ, Вы писали:

AZ>Нет, лучше сделать активную виртуальную модель иерархии классов путем пассивной абстракции данных и корреляции паттернов на базе метамодели знаний полученной в результате корреляции объектно-ориентированного подхода с абстрактно-реляционной парадигмой данных. В этом случае клонирование метамодели не нарушает нормализацию виртуального наследования и обеспечивает проактивный подход к абстракции иерархической инкапсуляции.


Блин, я ведь серьезно писал. Должным образом реализованная метамодель, описывающая иерархию классов, входящих в реализацию паттерна composite решает проблемы с клонированием. Я ведь разработкой CASE средства на базе UML2 занимаюсь. Тут всех этих паттернов дофига имеется
Скажем, сама метамодель UML является вариацией паттерна composite, если рассматривать граф индуцированный ассоциациями типа Composition.



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[4]: Собеседование в Логике
От: AntZ  
Дата: 20.09.07 07:42
Оценка: 14 (4) +2 :))) :))) :))) :))
.

_O_>Блин, я ведь серьезно писал. Должным образом реализованная метамодель, описывающая иерархию классов, входящих в реализацию паттерна composite решает проблемы с клонированием. Я ведь разработкой CASE средства на базе UML2 занимаюсь. Тут всех этих паттернов дофига имеется

_O_>Скажем, сама метамодель UML является вариацией паттерна composite, если рассматривать граф индуцированный ассоциациями типа Composition.

Вы, как декабристы, страшно далеки от народа.
Я плохо понимаю, что такое "граф индуцированный ассоциациями типа Composition", но очевидно, что это очень круто. Я также очень советую посетить эту компанию и "построить" их по полной программе, пусть знают, что ничего не понимают в паттернах! Думаю, они будут рыдать, когда осознают, что так мало знают о том, что знает любой разработчик CASE средств на базе UML2 в институте системного программирования
Re[5]: Собеседование в Логике
От: _Obelisk_ Россия http://www.ibm.com
Дата: 20.09.07 07:58
Оценка:
Здравствуйте, AntZ, Вы писали:

AZ>Вы, как декабристы, страшно далеки от народа.

AZ>Я плохо понимаю, что такое "граф индуцированный ассоциациями типа Composition", но очевидно, что это очень круто. Я также очень советую посетить эту компанию и "построить" их по полной программе, пусть знают, что ничего не понимают в паттернах! Думаю, они будут рыдать, когда осознают, что так мало знают о том, что знает любой разработчик CASE средств на базе UML2 в институте системного программирования

Блин, мы не теорией занимаемся (хоть мы и в ИСПе), мы на Telelogic работаем. Сейчас разработка всех продуктов из этой серии (http://www.telelogic.com/products/tau/index.cfm) на нас. У нас два релиза в год выходит. Мы делаем практические вещи.
И я не хочу никого строить, я действительно полагаю, что метамодель здесь поможет. Просто мне казалось, что такие понятия как граф, модель, метамодель, UML и т.д. программисты должны знать.



Душа обязана трудиться! (с) Н.Заболоцкий.
а что такое ВИРТУАЛЬНЫЙ КОНСТРУКТОР
От: Denis Россия http://blogs.gotdotnet.ru/personal/Denis
Дата: 20.09.07 08:17
Оценка:
Господа, тут в ветке переодически упоминается слово "виртуальный конструктор", причём так как будто это чтото обыденное... в Дельфи это вроде как действительно обыденное, а вот в С++ я не знаю...
Re[3]: Собеседование в Логике
От: nen777w  
Дата: 20.09.07 08:32
Оценка: :)
N>>Но выбрал другую компанию, но в сл. если передумаю рассматриваю Логику как вполне приемлемый вариант для работы.

M>На чем остановились если не секрет ?


Не секрет. Luxoft.
Re: а что такое ВИРТУАЛЬНЫЙ КОНСТРУКТОР
От: superman  
Дата: 20.09.07 08:33
Оценка:
Здравствуйте, Denis, Вы писали:

D>Господа, тут в ветке переодически упоминается слово "виртуальный конструктор", причём так как будто это чтото обыденное... в Дельфи это вроде как действительно обыденное, а вот в С++ я не знаю...


также известен как фабричный метод
Re[2]: а что такое ВИРТУАЛЬНЫЙ КОНСТРУКТОР
От: Denis Россия http://blogs.gotdotnet.ru/personal/Denis
Дата: 20.09.07 09:01
Оценка:
S>также известен как фабричный метод
ааа, тогда понятно, спасибо!
Re[4]: Собеседование в Логике
От: Denis Россия http://blogs.gotdotnet.ru/personal/Denis
Дата: 20.09.07 09:31
Оценка:
_O_>Скажем, сама метамодель UML является вариацией паттерна composite, если рассматривать граф индуцированный ассоциациями типа Composition.
это вы серьёзно написали?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.