Это копия, сохраненная 29 июня 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
[code]Animal cat = new Animal();[/code]
И спрашиваю: сколько здесь объектов и как они называются? Мне отвечают "один объект, называется cat". Тогда я пишу такой код:
[code]Animal cat;
cat = new Animal();
cat = new Animal();[/code]
И задаю тот же вопрос. На этом месте все начинают нести ахинею разной степени тяжести, и на мои глаза наворачиваются слезы. Из примерно сорока человек только три ответили правильно на первый вопрос или просекли фишку после второго и скорректировали ответ. Это нормально? Может, студентам не стоит задавать такие вопросы? Может я как-то неправильно его формулирую? Диванные синьоры, скажите, вам очевиден ответ на этот вопрос? Я прямо в печали.
Первый код
Animal✱ cat = new Animal();
Второй код:
Animal✱ cat;
cat = new Animal();
cat = new Animal();
В первом мы выделяем память на 1 элемент клсса энимал, а во втором мы 2 раза выделяем память.
Мимостудент 1-й курс
Во втором коде два объекта. Один после потери на него ссылки становится доступен гарбаж коллектору.
>сколько здесь объектов и как они называются
Уточни, что считать «объектом», переменную с указателем или занятое место в хипе (раз у тебя там оператор «new», то будем считать, что данные располагаются в хипе). А лучше выпий йаду.
Может ты просто долбоеб и просто мучаешь студентиков, что бы злой дяда тебя не согнал с места?
На самом деле во втором случае две переменные которым присваивают объект анимал два раза. Что там сложного - хуй знает. Ты явно пиздишь и не даешь проходу молодым, старикан.
ОП - типичный еблан, который думает что дохуя хитрый. Доебываются до терминологии только ебланы, которые не могут в мышление.
А вот и да.
>>470299
Вот таких ответов я и жду.
>>470301
>>470307
Половину этих студентов я все равно беру. Просто с теми, кто на этот вопрос не ответил, иногда случается такая история:
Animal cat = new Animal()
Animal current = cat;
delete cat;
cat->printName();
ОЙ, А ПОЧЕМУ У МЕНЯ ОШИБКА, Я ЖЕ ТОЛЬКО КАРРЕНТ УДАЛИЛ, А КЭТ У МЕНЯ ОСТАЛСЯ!
http://en.wikipedia.org/wiki/Instance_(computer_science)
>Formally, "instance" is synonymous with "object"
блядь, ну и дебил. Ты в РПЦ не пробовал апплаиться?
>Formally, "instance" is synonymous with "object" as they are each a particular value (realization), and these may be called an instance object; "instance" emphasizes the distinct identity of the object.
Объект и инстанс это одно и тоже.
ОП такой хитрый еблан, который пытается понять, осознает ли студент разницу между объектом и указателем на объект. В частности, что у объекта не может быть названия, и что на один объект может указывать несколько указателей, а один и тот же указатель может в разное время указывать на разные объекты. Практика показывает, что для многих это становится откровением.
а теперь попробуй у такого объекта получить адрес, который он занимает в памяти. Потом отпишись в тред.
Два объекта. Кстати, указатели это зашквар, мутабельные переменные - сверхзашквар, а ты ммммаксимум петух.
>>470301
>>470307
Буду лучше писать со своими поносными звездочками, чтобы у всех работало, даже у таких днищ как я.
Половину этих студентов я все равно беру. Просто с теми, кто на этот вопрос не ответил, иногда случается такая история:
Animal✱ cat = new Animal()
Animal✱ current = cat;
delete cat;
cat->printName();
ОЙ, А ПОЧЕМУ У МЕНЯ ОШИБКА, Я ЖЕ ТОЛЬКО КАРРЕНТ УДАЛИЛ, А КЭТ У МЕНЯ ОСТАЛСЯ!
да иди ты нахуй. Ты бы еще пример привел с
[код блядь]
new Animal(); new Animal(); new Animal()
[код нахуй]
НА ВОПРОС ОТВЕЧАЕТ ОП-ДЕБИЛ!!! СКОЛЬКО ОБЪЕКТОВ?
>После каких вузов такие студенты появляются?
После любых, включая самый распальцованный. Я не знаю, может студенты волнуются, может они не понимают смысл вопроса, может они ищут больше подвоха, чем там есть. Но скорее всего они просто еблотрясы.
лаба3 уже скатывали
Что значит нахуя? Ты идиот?
Вопросы уровня 1 курс 2 семестр
мимо ВМК МО
Нормальный вопрос. Три моментально утекающих объекта. Не понимаю, почему это должно у кого-то вызывать проблемы или анальный огонь.
я пишу на нормальных языках с GC по жизни, но знаю понятия байтоебли.
Потому что иногда требуется использовать заранее неизвестное количество объектов, и размещать их в динамической памяти. Естественно пример утрированный. Нет, блять, мы пишем продакшен-код про экземпляры котиков.А я бы хотел
>Потому что иногда требуется использовать заранее неизвестное количество объектов, и размещать их в динамической памяти
Давай теперь пример, где нельзя обойтись без прямого управления памятью.
Байтопетух порвался
Сколько раз за сегодня валграйнд запускал? 20? 30?
На ВМК нужно срочно идти работать максимум на третьем курсе. Причем желательно в норм контору, где будут хорошие практики и рыночный подход. Иначе деградация и распад. На факультете программированию хотя бы немного учат от силы человек 10.
Я бы сказал "один объект, и на него указывает указатель, который называется cat". Потому что сам объект находится в динамической памяти и не называется никак. Я следующей строкой напишу cat = NULL, и что, у меня объект удалится? Наверное да, ведь у меня объект называется cat и я пишу cat = NULL, хуле.
Проблема не в первом ответе, а во втором. Придираться к первому ответу - это буквоедство, терминология и хуже червя пидора. Но когда тебе на второй вопрос отвечают не "а, ну да, объекты же никак не называются, кэт это указатель, он сначала на один указывает, потом на другой," а начинают крутить губу и говорить "нууу эээ они оба называются кэт, наверное, только я не совсем понимаю, наверное тут все-таки один объект," хочется просто уебать через стол.
> Я бы сказал "один объект, и на него указывает указатель, который называется cat". Потому что сам объект находится в динамической памяти и не называется никак
Это особенность плюсов, же. В некоторых других языках есть только указатели на объекты, получается в них у объектов (инстансов) вообще имен нет и быть не может? Алсо уже есть такое понятие как "анонимный объект (инстанс)" и твое толкование с ним раходится.
Ну вакансия-то плюсовая, и в требованиях базовые знания по плюсам. Так что все честно.
В плюсах есть термин "объект", который придумал не я, и есть термин "указатель", который тоже придумал не я. И я думаю, что с моей стороны требовать уметь различать эти две сущности - не слишком много для будущего программиста, если он не собирается делать карьеру пхп-макаки.
> требовать уметь различать эти две сущности
Ну так постарайся придумать задание которое будет проверять именно этот момент, например что-то с контейнерами в которых можно хранить указатели, а можно объекты.
Нормальному программисту, когда он услышит слова "объект без имени" или "анонимный объект" прийдут в голову конструкции вроде
foo.bar(new baz());
(new foo()).bar();
а твое заявление что в строке
Foo *foo = new Foo();
ты создаешь объект без имени вызовет только недоумение.
Хуево вопрос строишь: спрашивай где сколько объектов. Хули тут не ясно: один объект на указателе, второй объект проебан. Но как понять проебанность объекта? Как его наличие или как его отсутствие? Воспользоваться-то ты уже им вряд ли сможешь без специальных изъебов.
мимонодист140квмесяцнезнаювчемразница
ОП, у меня от тебя бобмит. Правильный ответ: научись сначала формулировать вопросы, кретин.
>здесь
Пиздесь.
>называются
define "называются"
>объектов
define "объект"
"А лучше пройдите нахуй, если в вашей компании все такие мудаки, то мне тут делать не хуй, до свиданья."
Почему нельзя просто у человека спросить как работает присваивание в случае ссылок, т.е. будут ли только ссылки копироваться или и значения тоже?
define "define", объебос
Внезапно двачую. Второй год провожу собеседования и предпочитаю брать домашних самоучек без вышки, чем дегенератов, которые купили диплом, но не могут ответить на элементарный вопрос.
>вам очевиден ответ на этот вопрос?
Да. Ты некорректно формулируешь вопрос. На некорректный вопрос ты получаешь некорректные ответы, что логично, тащемто. Далее, исходя из каких-то дополнительных соображений, ты считаешь какие-то из этих ответов более коррекными. И из того, что твой манямирок дополнительных соображений совпадает с меньшем количеством додумок соискателей следует только то, что ты аутист, т.к. большинство людей интерпретируют твои неявные соображения иначе.
Понятия не имею, что ты подразумеваешь под словом «объект», поэтому я бы растерялся и промямлил себе что-то под нос. То, что ты назвал объектом, чаще называют экземпляром класса, а еще чаще “instance”. По крайней мере, мне так кажется. В русскоязычную терминологию я почти не умею, документацию и книги на русском не читаю. У меня вот есть парочка знакомых преподавателей, которые всё называют либо КОМАНДОЙ, либо ОПЕРАТОРОМ. В чем-то они могут быть и правы, но в целом это глупость.
Надо сказать, после второго образца кода я бы уже понял, что ты имеешь в виду.
КГ/АМ
мимопервокурсота
> суть вопроса на понимание указателей и управления памятью
> кококо объекты инстансы кудкудах!
Вся суть крестопетушков.
мимо-студентонтота-вонабиджаваджуниор
ФЭЙСПАЛМ!!!!!БЛЯДЬ!!!!!!
Очевидно, что во втором случае остаётся только один объект, потому что первый после инициализации второго уничтожен властью Garbage Collector. Ебтвоюмать, возьми меня на работу!
Ебать, ваш пизданутый c++ настолько пизданутый, что хочется череп раскроить его создателю.
Интанс cat всасывает два Animal.
>сколько здесь объектов и как они называются?
Не ясно, что ты здесь хочешь. Называется что, блядь? Переменная? Название класса? Адрес объекта в памяти?
Вообще-то в спецификации С++ нет термина "объект" и термина "указатель". Там есть только object и pointer.
На некорректно сформулированный вопрос я ожидаю ответа "ваш вопрос некорректно сформулирован". Если человек на некорректно сформулированный вопрос пытается дать ответ, то он еблан.
Тогда тебе стоит волкать на интервью в офис-билдинг какой-нибудь мейжор интернешенал компани апплаится на вэкэнси интерна.
могу отправить тебя в соседний отдел к джавистам, там такой ответ примут но там таких вопросов не задают, потому что всем похуй
С недавних пор спрашиваю, что такое синус и как работает матрица поворота. А то взяли петушка вроде выглядел норм, а через неделю выяснилось, что он не знает, как полярные координаты в декартовы перевести.
>А то взяли
>через неделю выяснилось, что он не знает
Так-так-так. Что это тут у нас? Долбоёб проебал деньги фирмы, т.к. не смог явно обозначить требования к соискателю?
В-нулевых, ты хуй.
Во-первых, внимательный читатель помнит, что речь идет о стажировке. Во-вторых, проеб денег будет как раз если собеседование проводить не час на знание общих вещей и пригодность к стажировке, а ебашить четыре часа с вопросами по арифметике, географии, английскому, физике и всему прочему.
Наверное не врубились, что программа исполняется последовательно строчка за строчкой. сейчас набигут дегенераты с прологом и скажут, что ничего не выполняется последовательно и я хуй
>спрашиваю, что такое синус и как работает матрица поворота
Я бы сначала подохуел, а потом поржал с таких вопросов. Походу даже я с непрофильным образованием смог бы заползти в вашу контору.
А, ясненько, это же собеседование на стажировку. Тут не требуется профессионализм собеседующего.
Дырка есть. Тимлидом возьмешь?
Я же не долбоеб какой-нибудь, ты преувеличиваешь. Я упомянул тот же «экземпляр класса», который является наикорректнейшим обозначением того, что имел в виду ОП.
Не. Если ты не в состоянии догадаться, что это не единственный вопрос на собеседовании, то тебя даже в нашу контору бы не взяли.
Luxosoft ?
Потому что в вашу компанию нормальный человек пойти не захочет когда в ней работают такие долбаебы.
Я просто хуею от тебя, школьник ебаный...
А, тык если это С++, то такие вопросы актуальны, ибо там, насколько я помню, память надо ручками-ручками пидорить.
>кресты
Байтоёбы-баётоёбушки!
А вопрос-то с подвохом! В крестах нет объектов, как и самого ООП. Есть только куски памяти и указатели на них.
Бедных студентов вводят в заблуждение, а тебе приходится разгребать.
>На некорректно сформулированный вопрос я ожидаю ответа "ваш вопрос некорректно сформулирован".
Ты ожидаешь наименее вероятный ответ. Скажем так, студент никогда ничего не сдавал, кроме экзаменов, для него собеседование - тот же экзамен, а на экзамене вопросы всегда сформулированы корректно. Поэтому он пытается на него ответить, и естественно несёт хуйню. Какой-нибудь опытный аналитик попытался бы выяснить, что именно ты имеешь ввиду. А "ваш вопрос некорректно сформулирован" может ответить только какой-нибудь робот из советского мультфильма. Я тебе уже говорил, что ты аутист?
> Есть только куски памяти и указатели на них.
О чём я и говорю. Объект в С++ не относится к ООП.
Определение из спецификации:
An object is a region of storage.
Например:
int w;
В данном случае w является объектом типа int.
Потому что их еще не выебли в рот и в жопу императивной парашей и еще они наивно полагают, что учитель не долбоёб. Хотя на самом деле учитель - долбоёб и пишет не имеющую смысла хуйню: https://ideone.com/59tv8L
Если рассматривать с точки зрения обычного ооп, то в первом случае - объект один и ссылка одна, во втором - одна ссылка на второй объект, а первый либо грустит в куче, либо уже был выпилен сборщикомесли оный имеется за ненадобностью. Скорее всего второе, однако ситуация все равно не определенная. А в крестах, небось, без явного вызова деструктора первый объект кукует в куче один одиношенек и таким образом их два. Или нет?
> cкорее всего
> выпилен сборщиком
Скорее всего нет, т.к. GC по дефолту работает только если память кончилась/подходит к концу.
Интересно. Мои эксперименты показывали другое, ну да ладно, пусть будет так и он валяется в куче.
В памяти - три, доступных в программе на языке третьего поколения - ноль.
А вообще, количество объектов лежит в зависимости от настроек сборщика мусора. В джаве сборщик мусора можно надрессировать так, чтоб он часто сканировал память и подсчитывал ссылки на объект, тогда после выполнения кода и в памяти будет ноль объектов. В плюсах же будет висеть три объекта.
А вообще, есть ли в С++ сборщик мусора? В книге по Qt читал что есть, а вот в книге Праты читал, что нету
__Прислал оператор автоматических линий и механизмов__
Присваивает ссылку. В джаве вообще нельзя разиноменовать ссылку, так что все операции с объектами это операции со ссылками.
Объект выпиливается GC тогда, когда его время жизни заканчивается, т.е. когда область видимости , в которой объект функционировал, канула из стека нахуй. Я так понимаю процесс очищения памяти на Java. Для С++ вопрос ОП весма грамотен, для Java бессмыслен. Там, конечно, два объекта, во втором случае, но они, указывают на одно и то же место, а первый становится, как бы, мёртвым грузом, отправляющимся в объятия GC.
Я, кстати, изначально про сборщик на шарпе говорил. Там мною был проведен эксперимент по созданию дохуища бесполезных объектов и замерам памяти. В общем, что с ручным вызовом сборщика, что нет памяти в итоге оказывалось одинаково, из чего я сделал вывод, что сборщик кота за яйца не тянет и убивает все при первой возможности. Но истину я, конечно, не знаю, это просто наблюдение.
> Но истину я, конечно, не знаю, это просто наблюдение.
Ну вот так и не пизди мне тут про сборщик шарпа. Собирается только в крайнем случае. Почитай вообще про сборщики мусора, какие там есть проблемы за 50 лет их исследований, как их решают - это полезно.
Иногда такое ощущение что меня собеседуют на мидла вместо джуниора.
кресто/жава ваннаби девелопер с небольшим корпоративным опытом на крестах
БЛЯТЬ, ебучий пидор, ТЫ НЕ УКАЗАЛ ЯЗЫК МУДИЛА. Это во-первых.
Во-вторых:
если это с++
Ты не определил Animal. Что если там typedef Animal *animal выше? Где animal - класс. В принципе тогда твой код имеет смысл, в противном случае это ты дебил - присваиваешь объекту указатель. 3 ошибки на 4х строках, ахуенно.
если C#/другой мета-язык с garbage collector-ом
Код имеет смысл, 1 строчка - 1 объект в куче, 1 объект доступен (он же). 2-4 строчки - 2 объекта в куче, последний из которых доступен, первый - нет, его съест сборщик мусора. Итого 1 объект.
И да, если там typedef ты будешь иметь 1 объект и во 2м случае 2а объекта, но указатель на один из них ты проебёшь и он останется навечно выделен до самого конца исполнения проги.
Вы вообще понимаете, что объект по определению это "инстанс класса"?
Ух пичет. Надо будет собвеседоваться скороко, и тут какой-нибудь сказочный долбоеб будет спрашивать такие то охуительные истории. Хотя это конечно получше чем кем вы себя видете и т.п.
Так какой правильный ответ 0 2 3 4 ?
Понял что ОП наследственный дибил не могущий в разметку, терминологию, вообще ни во что кроме как доебывать нормальных людей, но надеюсь это не на долго.
да дочитай ты до того, как оп скажет, что правильного ответа нет.
что правильный ответ - начать уточнять терминологию.
пиздец вырожденцы пошли, читать разучились
зато небось в разговоре лицом к лицу каждые пять минут в телефон пялишься
>читать разучились
пичет же. Тяжело читать
>правильного ответа нет
охуительно. просто охуительно
>зато небось в разговоре лицом к лицу каждые пять минут в телефон пялишься
что ты блядь несешь, ебанутый
> Тяжело читать
Это пост #14, мудило
Как ты будешь анну каренину читать? Вот ее блядь тяжело читать, сука, и то я 150 страниц прочитал пока не бросил.
Я сюда зашёл 2-3 раз, я не прикручивал никаких мокрописек, чтобы чинить разметку, лучше бы макаке сказали по дефолту так сделать, а то хуйня убогая ваш раздел.
пришел блядь и указывает что делать
ты вообще знаешь, что мы делали до этого?
НЕТ!
>>470944
Скрипт дописывает, ссылка https://github.com/ololoepepe/MakabaCode/
заменяет <em> и </em> на звезды
>1 курс 2 семестр
На такие вопросы и школьник ответит.
А почему приходят такие? ну это ебаная просто история.
Пытался 4-х человек обучать программированию, но проблема в том, что из этих 4х понимал хоть что-то только один. Как-то просил проссумировать массив и полилась хуйня, мол есть формула, а далее полное нежелание что-либо писать. Ну вот и что мне? Ну есть формула - и что? Я попросил написал конкретный алгоритм, а получал сливы. Не удивительно, что >>470323 и такое бывает
В общем, в этом всем виновата русская необучаемость, а как известно, для того, чтобы обучаться в вузе, обучаемость не нужна.
> ты вообще знаешь, что мы делали до этого?
Выясняли кто соснул и у кого батхёрт, это же двач.
молодец, можешь поискать наш тред в /d/
>Вот таких ответов я и жду.
Лол, т.е. ты ждешь, что на тебя сразу рыпнутся студентики с целью пошатать твой пока что непоколебимый авторитет. Ну и лох, как на говно..
ООП ломает мозги и ты начинаешь бояться всего. Везде сейчас есть суперклассы. Object в Java, Object в C#, BasicObject и Object в Ruby, Qt QObject в Qt — после всей этой хуйни лоб потеет, когда слышишь слово «объект». Хотя, может, не у всех так.
В психологическоим плане некорректный вопрос и ожидание его уточнения - это два стула. Собеседуемый ожидает вопросы с подвохом но корректные(имеющие четкий ответ). Любые учтонения он воспринимает как: пики - свой слив(попытка заболтать, съехать), хуи - заувалирование оскорбление спрашивающего(дебил сам не понял что спросил и требуется уточнять)
Количестов "правильно" ответивших у ОП ~= 5-10%, что соответствует вероятности собеседовать полного мезантрапа, который не засыт показаться долбоебом или оскорбить человека ради высшего дела (императив "дело > чел. связей"). Но по человечески с такими людьми иногда оче НЕПРИЧЯТНО, они могут идти по костям.
норм анализ
> как пройти к озеру единорогов в моем мирке маняфантазий?
или просто
> что у меня в кармане?
Даже консилиум выдающихся умов человечества ничем не сможет тут помочь. Кроме как посоветовать сделать ОПу эвтаназию.
В скале object это вообще синглтон
Во втором случае создаются два объекта, первый называется cat, второй называется... Так падажи ебана... Да там синтаксическая ошибка, хули ты мозги нам ебешь.
Джуниор от мидла отличается только стажем и зарплатой.
Собственные проекты — это хуита. Разве что ты на лида или пма идешь. А вот без знания экосистемы языка ты хуй простой, даже на джуна не тянешь.
>и как работает матрица поворота
>матрица
>работает
Хранит в себе числовые значения.
Ты такой даун, что даже вопрос сформулировать грамотно не можешь. Хотя бы слово "оператор" вместо "матрица" использовал.
Все с технических специальностей это проходили на первом курсе. Я даже не помню как выгдядит матрица поворота, хотя 2 года назад припенял её в своей программе.
У вас на работе программисту требуется применять знания о матрицах и синусах? Что вы программируете?
>С недавних пор спрашиваю, что такое синус и как работает матрица поворота.
Даже люди с опытом бывает слабо представляют себе, как устроена матрица трансформации. Видел даже как люди, чтобы найти оси объекта, брали базис векторов и умножали на матрицу трансформации. Или использовали универсальный тормозной inverse для поиска обратной матрицы трансформации.
Игрушки, скорее всего.
Но я не ОП. Что за маниакальный желание за всеми сообщениями видеть семёна.
> брали базис векторов и умножали на матрицу трансформации
Ну там надо от нее трансляцию отрезать сначала, если я правильно помню. Она какая-нибудь 4x3 небось.
где учишся, сколько лет? мне 23 решил на програмизда пойти но не уверен поможет ли это
>2015
>Ебаться в срачелло проблемами с выделением памяти
>Писать на языках без сборщика мусора
Неудивительно, что к вам дауны идут, нормальная молодежь на этом говне уже просто не пишет. Меняйте стек и пойдут норм пацаны.
Наоборот, набрать джавамакак не проблема. Они пишут тонны тормозного унылого бойлерплейта, и легко взаимозаменяются. Нужны умные. Сомневаюсь что типичная корпоративная джаваобезьяна способна, например, видеокодек написать.
Само собой не напишет. Системное и прикладное программирование — разные вещи. Вопрос специализации. Аналогично можно сказать, что крестопидоров набрать не проблема. Они пишут тонные неподдерживаемого говна, которое постоянно протекает и падает с ошибками сегментации, и легко взаимозаменяемы. Сомневаюсь, что типичная крестомразь способна, например, написать корпоративную ис.
>Аналогично можно сказать, что крестопидоров набрать не проблема. Они пишут тонные неподдерживаемого говна, которое постоянно протекает и падает с ошибками сегментации, и легко взаимозаменяемы. Сомневаюсь, что типичная крестомразь способна, например, написать корпоративную ис.
С хуя ли ты так считаешь, быдло? В своей жизни пишу только кроссплатформенный код, протечек памяти вроде не бывало.
крестомразь
Это такие джявалегенды. В джвавамирке корпоративные обезьяны их очень любят друг-другу рассказывать в промежутках между пением гимна фирмы, тимбилдингом и прочей дрессировкой.
Надо заметить, что протекание памяти можно устроить на любом языке, но вот для ошибок сегментации и тысяч уязвимостей, связанных с управлением памятью, лучше всего подходят именно С и С++.
>и тысяч уязвимостей, связанных с управлением памятью
Потому что ей там можно управлять, в отличие от. В язычках с GC модель управления памятью только та, что хозяин гвоздями приколотил.
Ну да, это основная причина, почему С++ всё ещё активно используется. Впрочем, теперь же есть rust.
D, потому что никому не нужен, и не гарантирует безопасное управление памятью в условиях отсутствия GC.
Утечки сами по себе не приводят к нарушению memory safety. В http://smallcultfollowing.com/babysteps/blog/2015/04/29/on-reference-counting-and-leaks/ всё расписано же.
>матрица поворота
https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0_%D0%BF%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D1%82%D0%B0
А ещё выёбывается
Две лямбды этому.
>где, сколько
В Бауманке, 18.
Я бы на твоём месте шел бы на заочку или учился бы сам. Сидеть за одной партой с детьми не очень приятно, да и за 1-й год у нас не сильно много было практики, в основном математические дисциплины, а знание диффуров не сильно поможет программировать.
Я его выключил, от него у меня виснет браузер.
ЧТО ТЫ, ТУПОЙ ПЕРЕПОД, ПОДРАЗУМЕВАЕШ ПОД СЛОВОМ "НАЗЫВАЕТСЯ" И В ЧЕМ ПО ТВОЕМУ ТУПОРЫЛОМУ МНЕНИЮ ТАМ "ФИШКА"?
В первом коде просто ссылка на экземпляр класса.
Во втором коде переопределение ссылки, в следствии чего теряется доступ к первому экземпляру класса и он остается в памяти мусором.
Все правильно понял?
Мимо шарповец, двжа года не трогал плюсы.
Я затрудняюсь ответить сколько там объектов в интерналах реализации. Не помню уже что там в жабе означает запись Animal cat без присваивания. В душе не ебу как называют задроты-аутисты ооп инстанцирование и можно ли теперь называть нечто объектом.
Мой ответ:
а) 1
б) 2
Потому что в коде (что значит "здесь" блядь?) создаётся (new) 1 и 2 объекта соответственно. Когда они там умирают знает только gc. Алсо в некоторых языках сам класс тоже объект, в жабе по-моему не.
Подозреваю что все студенты ответили тебе правильно, но тебя в детстве папа переодевал в шмот для девочек и насиловал когда был пьян.
Ок. Даже если плюсы. В первом случае объект, ясен хуй, один. Во втором случае их создаётся два, но в крестах, если мне не изменяет память, при создании второго автоматически уничтожится первый. Вся эта вакханалия будет жить до конца скоупа и если больше нигде оно не используется (compile time refcount) - автоматически уничтожится. Вообще говоря особо хитрожопый компилятор может закосить эти строки и не создавать объекты совсем. Выходить в понедельник или вы мне перезвоните?
>но в крестах, если мне не изменяет память, при создании второго автоматически уничтожится первый
Разве? По-моему выделенная память просто в куче проебывается до завершения программы, отсюда и утечки.
Создаётся два объекта.
По исполнению кода первый уже никак не называется, а второй -- "cat".
Ну и на месте собеседуемых, я бы сразу ушёл после того, как увидел, что проводить интервью прислали говнокодера.
>[code]Animal cat = new Animal();[/code]
Сразу видно, что написавший это -- говнокодер.
Приличный человек написал бы так:
[code]Animal* cat = new Cat();[/code]
>В первом случае объект, ясен хуй, один.
В первом случае два объекта - pointer типа Animal и экземпляр класса Animal.
Тащемта нет. В плюсах ничего автоматически не удаляется - там надо деструктор вызывать. Это в шарпе гарбедж коллектор есть.
Вы мне объясните, я все правильно понял, или в очередной раз обосрался?
Говна поел, болезный?
>>471954
Если в целом, то да. Если придираться, то в плюсах ссылка это кое-что другое (в ОП посте именно указатели), плюс в С++ объект == выделенная память на хранение переменной любого типа (int i - объект типа int, int✡ i - объект типа int✡), то есть поинтер тоже является объектом.
Хотя мы оба говна поели - я не обратил внимание на Cat().
> int✡ i - объект типа int✡
А если так? Что это значит с синтаксической точки зрения?
[code]
int a, *b, c;
[/code]
мимо другой шарповец
Это значит что в крестопараше тип перемешан с идентификатором так, что хуй что проссышь. Не суйся.
В нормальном языке это три переменные типа int*
http://dpaste.dzfl.pl/5a2736d9ba06
Но в крестопараше...
Хуйня какая то.
А тут вообще нихуя нет.
ОП, у тебя два пирожка, один пирожок ты засунул в рот, другой в жопу, сколько теперь у тебя пирожков?
такое ощущение что ты кроме крестов больше ничего не знаешь
>У меня от тебя АЛЕКСАНДРЕСКУ. Pointer же всю жизнь скаляром был, какой ещё нафиг объект?
По определению An object is a region of storage.
Объект - это понятие из ООП. Держится на трёх столпах: полиморфизм, инкапсуляция, наследование. То есть обязательно речь идёт о классе. Скаляры остаются скалярами, иначе называемые примитивными типами. Примитивные типе в идеальном ООП - тоже классы. Но в крестах они никак не классы ради скорости.
Класс это такая таблица функций, которые принимают в качестве первого аргумента объект класса. При наследовании эта таблица копируется и расширяется. Виртуальные методы позволяют прямо в рантайме определить объект класса и найти нужную таблицу. То есть всегда имеется хотя бы минимальная интроспекция.
Пойнтер это просто пойнтер. Это конструкт языка, позволяющий кроссплатформенную косвенную адресацию. Никакой это не регион оф сторидж. Откуда тебе знать как компилятор этот пойнтер обработает? Может он решит его разместить в регистре, а то и совсем сократит преобразованием выражений.
Теперь представьте что мудак-ОП меня бы не принял потому что я не так ответил СКОЛЬКА ТУТ ОБЪЕКТАВ.
Animal cat;
cat = ✱ new Animal();
cat = ✱ new Animal();
>Откуда тебе знать как компилятор этот пойнтер обработает?
Кого это ебёт? Это же язык высокого уровня. На машинном уровне вообще нет понятия объект.
В джаве такие эксперименты удобнее проводить. Там ты можешь задать используемые алгоритмы для сборки, кажется даже размеры поколений. И самое удобное - ты можешь следить за логом.
Кажется когда я искал - не нашёл удобного лога для дотнетовского сборщика.
Это будет очень забавно если ты замерял через размер кучи занимаемой процессом (был где-то такой долбоёб, может на лоре или на хабре, тоже с дотнетом).
Как минимум в твоём эксперименте объекты ложились в молодое поколение - оно мелкое и сразу происходила сборка молодого поколения. Так как ты объекты присваивал простым стековым переменным - они сразу освобождались.
Как можно улучшить твой эксперимент: сохраняй ссылку в каком-нибудь списке. Сделай список потолще - так чтобы он успел пройти в старое поколение, но не произошла полная сборка. Обнули все переменные и наслаждайся тем как твои мертвые объекты занимают память.
Что может пойти не так? Конечно бывают хитровыебаные сборщики. Например в питоне (CPython от гвидо) вместе со сборщиком ещё есть счетчик ссылок (на самом деле это решение напрашивается само собой, но широкого применения оно не нашло так что кажется идея оказалась провальной). Алсо бывает конкуренси сборщик (зачастую работает параллельно с каким-нибудь традиционным), например в андроиде в логе можно увидеть что проходит конкурентная сборка (в хотспоте тоже можно поставить, но там флаг нужен - своевольничать он не станет).
Кажется есть возможность закопаться в эту тему не погрязая при этом в байтоебле. JikesRVM - виртуальная машина джавы написанная на джаве. Специально сделана чтобы обкатывать всякие алгоритмы, разумеется только для исследовательских целей.
Чё сказать-то хотел?
Не уверен, что так можно.
Типа, в cat копируется объект, который создается в куче?
Плюс, cat же не инициализирован никак.
> Плюс, cat же не инициализирован никак.
В первой строчке запускался конструктор по умолчанию.
> Типа, в cat копируется объект, который создается в куче?
Пиздец, а я столько раз так делал. Получается, каждый раз создавал два объекта, один из которых терялся. Вот это я быдло.
>ещё есть счетчик ссылок (на самом деле это решение напрашивается само собой, но широкого применения оно не нашло так что кажется идея оказалась провальной
Блеать, везде есть счётчик ссылок если ты не знал. Только в пердоне вызываются стандартные free/malloc сразу же как refcount=0, а в жабах хитровыебанно-отложенные выделяторы/очистители. Ебля с поколениями нужна только для того чтобы по многу раз не проверять одни и те же циклические ссылки.
>везде есть счётчик ссылок
>Ебля с поколениями
>циклические ссылки
Шизофреники так забавно мыслят.
я тока учусь
> Только в пердоне вызываются стандартные free/malloc сразу же как refcount=0
Так.
> а в жабах хитровыебанно-отложенные выделяторы/очистители
Хмм... Да вроде бы сборщик достаточно тупой инструмент. Допустим очистители - это ты про финализаторы так называемые. Они считай во всех мейнстримных языках есть. Типо рубей питонов. Если в джаве есть финализатор срабатывающий по счетчику ссылок, значит от джавы можно ожидать детерминированного освобождения ресурсов? Ну или зачем они ещё могут быть нужны.
> Ебля с поколениями нужна только для того чтобы по многу раз не проверять одни и те же циклические ссылки.
В общем то такому тупому инструменту как сборщик (не в смысле что он мне не нравится а тупому как например брутфорс) похую циклические ссылки или нет - время обхода не изменится. Но мысль верная - действительно лишнего обхода станет меньше.
> Блеать, везде есть счётчик ссылок если ты не знал.
Не знал. Может ты не знаешь, что для подтверждения достижимости объекта нужно обойти дерево ссылок в куче? Или быть может ты располагаешь действительно новым для меня знанием.
Навскидку здесь я не нашёл поля для счетчика http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/9b0ca45cd756/src/share/vm/ci/ciObject.hpp
И выше по иерархии тоже http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/9b0ca45cd756/src/share/vm/memory/allocation.hpp - класс ResourceObj лучший претендент для такого поля, там даже есть массив _allocation_t но, он не счетчик.
Остаётся вариант что сборщик сам хранит таблицу из пар ссылка-счетчик (что есть жесткий оверхед).
> А разве он не просто скопирует первые байты (сколько влезет в cat)? new же указатель вернёт?
Он разименовывается и данные копируются из кучи в стек.
> просто скопирует первые байты
Такого вообще быть не может, кресты строготипизированный язык. При попытке засунуть хуй не в ту дырку присвоить что-то не то тебя конпилятор в хуй пошлет.
Если бы я собеседовал людей, которые в принципе способны так ответить, я был бы счастлив и задавал бы совсем другие вопросы. Про таблицу виртуальных методов спрашиваю каждый раз. Два человека объяснили. Более половины признались, что даже не слышали такого термина (естественно, предлагаю несколько синонимов, на случай если чувак знает только слово vtable, но не знает расшифровки)
Но готовые специалисты с такими знаниями в нашей мухосрани добываются только хедхантингом, а наш хаэр не мог в хедхантинг.
создаются два объекта в куче и один на стеке?
и на стеке у нас сначала объект, сконструированный конструктором по умолчанию, потом копия первого объекта из кучи, потом копия второго? я прав:3
но то, как будет выглядет стек, определяется по сути же еще на этапе компиляции. то есть, если у тебя объявлена одна переменная, то она и будет одна. то есть объект, по сути, будет один, но его содержимое будет переписываться каждый раз.
Бывают люди, которые не читали про работу сборщиков? Самая туманная и при этом самая интересная часть сборщика именно то, какой он имеет механизм вызова. Если верить тебе, то мои результаты кто-то фальсифицировал, потому что крайним случаем там и не пахло, памяти было еще жопой жуй, но тонны мертвых объектов он убил без жалости и промедления. Такие дела.
Тебе рассказали уже, это было нулевое поколение, оно умирает быстро. Переведи объекты в долгоживущие - он будет их чистить только когда действительно припрёт, иначе пострадает производительность.
>сколько здесь объектов и как они называются?
>Может я как-то неправильно его формулирую?
>сколько здесь
Да, неправильно.
Как шизофреник.
Где здесь?
На бумажечке?
На бумажечке нисколько объектов нет, только чернила.
Сколько объектов в памяти компутера на таком то этапе выполнения программы?
Сколько объектов доступно для использование в парадигме конкретного языка программирования в таком то участке кода?
В общем.
Прежде чем собеседовать кого-то, научись по русски говорить.
И таки, чтобы ты понимал, адекватных кандидатов всегда один на 10-20 человек. (если речь о студентах и стажировке).
В куче лежит два, но ссылка осталась только на второй, поэтому первый скоро удалится сборщиком мусора.
Тред не читал.
само собой. Код с утечкой памяти. Вот такие люди вас собеседуют.
Ну и как тебе живется с единственной дыркой в теле?
Я те всосу!
Ловите рептилоида! Любой человек знает, что у него 8 дырок.
1) 1 обьект называется энимал а кет это сылка на него
2) 2 обьекта энимал у одного сылка кэт у второго нету сылки
будет правильно?
Нет. Ссылок в представленом коде нет. Энимал - имя класса, а не объектов. Количество объектов правильное.
Зачем ты pointer объектом называешь? Мм?
Тащемта как раз по части утечек RC отсасывает у GC. Циклические ссылки же.
Слишком толсто, братишка. Просуммировать массив это настолько типичная задачка, что даже школьники в деревне дураков пишут такой код на паскале.
Разговор с копипастой, ну да похуй.
Вопрос из серии «сколько крыльев у жирафа». Понятно, что цель была проверить понимание понятия ссылки, но "метод" еë не достигает.
Я вот студент, где на такое собеседование пойти, чтобы на плюсах кодить надо было и такие вопросы задавали?
Очевидно, оп мастер утечек памяти.
Это копия, сохраненная 29 июня 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.