Здравствуйте IT, Вы писали:
IT>Здравствуйте Anatolix, Вы писали:
IT>Понятно, с java у нас слабовато. Ответ не правильный. Этот вопрос на знание механизмов работы GC.
Здравствуйте Anatolix, Вы писали:
A>Хм не вижу связи с Garbage Collector. A>Там про него вообще ничего определенного сказать нельзя за исключением того что он плохой.
Правильно, хороший должен ты написать
A>P.S. Можешь не в рамках интервью, а в рамках обсуждения интерьвью объяснить мне и общественнсти какое отношение это имеет к GC
Проблема не в том, что файл не откроется (я могу обрабатывать это исключение и в вызывающей процедуре), а в том, что если он откроется и произойдёт исключение во время записи, то он уже никогда не закроется, точнее закроет его сборщик мусора. Это, кстати, первое разочарование C++ программеров, начинающих писать на Java или C#.
OK понятно. Тут рядом Java программер сказал, что да так оно обычно и делается.
Так что здесь ты меня подловил. Но это не значит что я совсем java не знаю.
У меня там вего 0.5 года experience написано. Продолжаем.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте IT, Вы писали:
IT>А так же не забывайте, что всё что пока задано и отвечено в этом топике, это дело не более двух минут в реальной жизни. Пока это всё только разминка
Лучше бы вы писАли вопрос — ответ как пара сообщений. Иначе всё вытянется далеко-далеко.
- вопрос
|-ответ
- вопрос
|-ответ
- вопрос
|-ответ
Здравствуйте Anatolix, Вы писали:
A>OK понятно. Тут рядом Java программер сказал, что да так оно обычно и делается. A>Так что здесь ты меня подловил. Но это не значит что я совсем java не знаю. A>У меня там вего 0.5 года experience написано. Продолжаем.
В том то всё и дело. Человек с 10 летним опытом C++ может о таких вещах в Java ничего не знать, так же как и java-guy о protected/private наследовании.
Давай продолжим. Хочешь вопрос посложнее? Ok.
Допустим я спросил о том какие существуют способы синхронизации в Windows, ты мне ответил. Теперь я тебе даю вот такой код и прошу тоже найти в нём потенциальные проблемы. Названия классов и методов условные:
Дабы ускорить процесс, давай не будет полностью эмулировать жизнь, а попытаемся распараллелить это дело, я тебе дам сразу несколько вопросов.
A>COM / ATL — хорошо — 1 год
Для начала самый стандартный и, на мой взгляд, самый правильный по данной тематике вопрос. И хотя я его считаю несколько теоретическим, тем не менее.
Что такое STA и MTA и какая между ними разница?
Можешь отделаться определениями, можешь порассуждать.
Хорошая статья по данной теме есть на нашем сайте, но ты обещал не подглядывать.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте Anatolix, Вы писали:
A>COM / ATL — хорошо — 1 год
Ты хочете (Вы хотишь) передать клиентской программе расширенную информацию об ошибке из COM сервера, написанного на ATL. Какие средства библиотеки и технологии Вы будете использовать.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте IT, Вы писали:
IT>Здравствуйте Anatolix, Вы писали:
A>>OK понятно. Тут рядом Java программер сказал, что да так оно обычно и делается. A>>Так что здесь ты меня подловил. Но это не значит что я совсем java не знаю. A>>У меня там вего 0.5 года experience написано. Продолжаем.
IT>В том то всё и дело. Человек с 10 летним опытом C++ может о таких вещах в Java ничего не знать, так же как и java-guy о protected/private наследовании.
IT>Давай продолжим. Хочешь вопрос посложнее? Ok.
IT>Допустим я спросил о том какие существуют способы синхронизации в Windows, ты мне ответил. Теперь я тебе даю вот такой код и прошу тоже найти в нём потенциальные проблемы. Названия классов и методов условные:
IT>
Интересный вопрос. Точного ответа не знаю имею только предположения... Жду не дождусь ответа
Это интервью изначально было интересно, а сейчас оно начинает становиться ООчень интересным. Ответы на эти вопросы ИМХО можно сразу куда-нить в Q&A помещать...
Здесь не стоит выносить critical section за класс,
т.к. получается, что если я заблокировал один экземпляров,
то все остальные в этот момент стоят курят, хотя могли
бы работать. Надо сделать CriticalSection одной из
переменных класса(не статистической)
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте IT, Вы писали:
IT>Здравствуйте Anatolix, Вы писали: IT>Что такое STA и MTA и какая между ними разница?
Это так называемые апартаменты. COM берет на себя
заботу о синхронизации, если я передаю интерфейс
из одного апартамента в другой, то он на самом деле маршалится
и в другом апартаменте я получаю не сам интерфейс а заглушку
которая сериализует вызовы.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте IT, Вы писали:
IT>Здравствуйте Anatolix, Вы писали:
A>>COM / ATL — хорошо — 1 год
IT>Ты хочете (Вы хотишь) передать клиентской программе расширенную информацию об ошибке из COM сервера, написанного на ATL. Какие средства библиотеки и технологии Вы будете использовать.
надо реализовать какой-то интерфейс, имя без подсказки не помню
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте IT, Вы писали:
IT>Здравствуйте Anatolix, Вы писали:
A>>Assembler — хорошо — 2.5 года опыта в Reverse Engeneering(хобби, эпизодически)
IT>Имеется 300k дезассемблированной кода. По каким отличительным признакам можно определить на каком языке высокого уровня написана программа.
Несколько прямых признаков(метка компилятора, сигнатуры библиотек)
И много косвенных(конвенция вызовов(хорошо видно кто сохраняет регистры и чистит стек), формат строк(asciiz или pascal) )
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Странно, такое впечатление, что все задачи на одно и тоже.... а если exception случится в AddInternal.... а вот про "одной из класса" — так это не обязательно — если в одном месте пользуются(а тут не написано другого) то ничего и не будет....
Здравствуйте Anatolix, Вы писали:
A>Здравствуйте IT, Вы писали:
IT>>Здравствуйте Anatolix, Вы писали:
IT>>
A>Здесь не стоит выносить critical section за класс, A>т.к. получается, что если я заблокировал один экземпляров, A>то все остальные в этот момент стоят курят, хотя могли A>бы работать. Надо сделать CriticalSection одной из A>переменных класса(не статистической)
Здравствуйте IT, Вы писали:
IT>Здравствуйте Anatolix, Вы писали:
A>>Object Pascal — отлично — 2 года
IT>Эх, давно я не брал в руки шашки
IT>Как на паскале сделать forward объявление класса. Как то же самое сделать на C++.
Pascal
type MyClass=class;
(это в Object Pascal от Delphi, в классическом используется ключевое слово
object а не class)
C++
class MyClass;
В pascal если мы предварительно описали класс
мы обязаны его определить до конца модуля.
Не совсем понятное, но раздражающее ограничение.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Denis, Вы писали:
D>Странно, такое впечатление, что все задачи на одно и тоже.... а если exception случится в AddInternal.... а вот про "одной из класса" — так это не обязательно — если в одном месте пользуются(а тут не написано другого) то ничего и не будет....
Ага. Похожи все вопросы. И об ответе я почему-то также подумал, а вот о вынесенной критической секции нет.
Вопрос: А как бы тогда красиво переписать этот код?(try...catch? Interlocked...?)
Здравствуйте IT, Вы писали:
IT>Здравствуйте Anatolix, Вы писали:
A>>MFC — хорошо — 1 год
IT>Если представить архитектуру Document/View в виде отношений один к одному/многим, как бы это выглядело? (не забудь и про CxxxFrame).
Sorry, но плохо помню такие вещи, уже семь лет не программировал
с MFC
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Anatolix, Вы писали:
A>Здравствуйте IT, Вы писали:
IT>>Здравствуйте Anatolix, Вы писали:
A>>>Object Pascal — отлично — 2 года
IT>>Эх, давно я не брал в руки шашки
IT>>Как на паскале сделать forward объявление класса. Как то же самое сделать на C++.
A>Pascal
A>type MyClass=class; A>(это в Object Pascal от Delphi, в классическом используется ключевое слово A>object а не class)
наверное я совсем уже забыл паскаль, но что-то помниться там было такое ключевое слово forward?
И я подумал что должно быть че-нить вроде объявления функции с forward:
procedure Proc();forward;
Я не прав?