C вопросы на собеседовании

C вопросы на собеседовании

Заметил, что на собеседовании часто задают одни и те же вопросы по программированию. Если бы брали на работу водителя, то некоторые вопросы звучат примерно так:

  • В какую сторону надо крутить руль, чтоб повернуть направо?
  • За что отвечает педаль сцепления/тормоза/газа?

Такое конечно случается далеко не всегда, но первые пару вопросов обычно такого рода («А какую надо давить педаль, чтоб автомобиль остановился?»). Публикую свои ответы на некоторые вопросы для программистов. Вдруг кому пригодится.. Возможно, здесь много ошибок и помарок — при составлении этого списка я не пользовался интернетом. Старался выдать, что знаю сам.

Как можно оптимизировать данный цикл?

Вот таким образом:

В исходном цикле каждый раз происходит вычисление позиции элемента в массиве array. Переписав функцию мы избавляемся от этого вычисления.

В чем отличие std::list<T> от std::vector<T>?

std::vector<T> — это обертка над обычным С/C++ массивом. Соответственно:


  • если std::vector<T> заполнен, то при добавлении нового элемента, массив удаляется целиком и создается заново с бОльшим размером
  • любой элемент массива можно получить моментально, потому что позиция элемента вычисляется банальным прибавлением индекса к первому элементу (array[i] = array + i)
  • удаление любого элемента из массива, кроме последнего, приведет к перемещению всех элементов справа от удаляемого на одну позицию влево (при соблюдении некоторых условий, можно воспользоваться хаком)
  • занимает неразрывный блок памяти

std::list<T> — это список элементов, которые связаны между собой указателями prev (предыдущий элемент) и next (следующий элемент). Внутри себя std::list<T> хранит указатель на первый элемент и последний (зависит от реализации). Исходя из этого:

  • чтобы удалить любой элемент, необходимо просто переставить указатели
  • для того, чтобы обратиться к произвольному элементу, необходимо пробежаться от начала или конца (в зависимости от реализации) к искомому
  • каждому элементу выделяется память индивидуально

В языке Java различия между ArrayList и LinkedList практически такие же.

Почему в C++ нужно использовать new вместо теплого лампового malloc()

?

Потому что malloc() тупо выделяет блок памяти и возвращает этот блок программисту. А new выделяет память и вызывает конструктор объекта. Тоже самое относится к delete и free(). delete вызывает деструктор и освобождает память. free() просто освобождает память. Также есть размещающий new, который создает объект в уже выделенной вами памяти.

Кстати, изначально конструкторы и деструкторы классов в C++ назывались new и delete и выглядели вот так:

В чем отличие между new/delete и new[]/delete[]?

new выделяет память для одного элемента и вызывает конструктор для него, в то время как new[] выделяет память для массива элементов и вызывает конструктор для каждого из них. delete должен вызываться для объекта выделенного с помощью new, а delete[] для массива, выделенного с помощью new[]. От проблем соответствия new/delete вас могут избавить классы std::auto_ptr<T> (для одного элемента) и std::tr1::scoped_array<T> (для массива элементов). Которые сами вызывают правильный delete в деструкторе.

Для чего нужен тип std::auto_ptr<T>?

В стародавние времена вы должны были сами следить за тем, чтоб после каждого new был вызван свой delete


. Это было жутко неудобно (программисты Си выкручиваются из этой ситуации вставляя goto):

После появление std::auto_ptr<T> стало возможным переписать функцию таким образом:

И еще очень важный момент: std::auto_ptr<T> владеет объектом единолично. Вы не сможете шарить объект между двумя std::auto_ptr<T> (используйте в таких случаях std::shared_ptr<T>):

И помните: std::auto_ptr<T> не подходит для массивов выделенных с помощью new[]. Для этих целей используйте std::tr1::scoped_array<T> или boost::scoped_array<T>.

Что такое RAII?

Это переводится как «Получение ресурса есть инициализация». Идея вкратце такая: в конструкторе открываем/блокируем ресурс, в деструкторе закрываем/освобождаем ресурс. Вот пример:

Или более каноничный пример (блокирование мьютекса или критической секции):

Зачем нужен виртуальный деструктор?

Попробуем обойтись без него:

Вывод:

Как можно заметить деструктор B не вызвался. Сделаем деструктор класса A виртуальным и посмотрим что получится:

Теперь все отлично:

В каком порядке инициализируются члены класса?

Члены класса создаются в порядке их объявления в классе. Уничтожаются они в обратном порядке. Давайте проверим:

Запустим:

Все правильно.

Порядок объявления очень важен, если один член класса во время инициализации использует данные другого члена. Кстати, компилятор gcc выдает warning (с флагом -Wall), если вы описали инициализацию членов класса в другом порядке. И это еще одна причина в пользу использования настройки компилятора «считать предупреждения ошибками» (в gcc это флаг -Werror


).

blog2k.ru

Каковы ваши три самые сильные и слабые стороны?

Достаточно распространенный вопрос, на который нужно подготовить действительно хороший ответ. Что касается сильных сторон, то обратите внимание на то, что компании нуждаются в следующих вещах: зарабатывать деньги, экономить деньги и экономить время. Что касается слабостей, то попытайтесь указывать не на черты вашего характера, а на определенные навыки. Например, вы можете упомянуть, что раньше вы не умели работать с PowerPoint, однако прочитали об этом книгу, много практиковались и сейчас даже можете обучать других работе с этой программой. Каждый раз, когда вы говорите о своей слабости, также называйте способ, которым вам удалось эту слабость победить. Также можно указать свою слабость, которую потом можно превратить в силу. Например, вы может сказать, что очень страстно относитесь к своей работе и полностью отдаетесь ей. Именно поэтому, если вы видите других людей, которые работают не так, это вам не нравится.

вопросы

Что не дает вам спать ночью?


Еще один способ спросить о ваших слабостях. Лучше всего сказать: за исключением нескольких кошмаров о предстоящих интервью, вы работаете очень усердно, поэтому у вас нет проблем со сном. Вы знаете, насколько важно планирование своего времени, и при помощи сна «перезагружаете батарейки».

ответ

Опишите ваш прогресс на предыдущей работе

Отличный вопрос, если компания ищет кандидата определенного типа. В ответе можно упомянуть личные и деловые качества. Упоминая предыдущую работу, говорите о ней позитивно. Скажите: атмосфера на предыдущей работе была отличной, вы много работали и видели хороший результат. Если у вас не было повышений, тогда упомяните ответственные задания, которые были вам предоставлены и которые вы выполнили на отлично. Также можно рассказать о некоторых трудных ситуациях, которые вы смогли преодолеть.

ответ

Если бы вы были цветом, то каким именно?

Достаточно частый вопрос. В этом случае лучше всего сказать, что вы бы предпочли быть радугой. Существуют разные типы личности, и вы хотите развивать каждую из них в самом себе. Иногда, в зависимости от обстоятельств, вам нужно быть красным, иногда зеленым, иногда черным, а иногда даже розовым. Подобный ответ понравится работодателю и вызовет у него или нее улыбку, что также вам на руку.

ответ

Как долго вы планируете работать в нашей компании?


Это отличный вопрос, который косвенно указывает, что вам хотят предложить место. Однако этот вопрос также может быть коварным. Вы можете красиво уйти от подобного ответа, перенаправив его обратно на работодателя. Скажите: вы хотите построить успешную и продолжительную карьеру в этой компании. Упомяните, что вы хорошо справляетесь с трудностями и ищете новые возможности для роста. После этого спросите работодателя, как долго он готов предлагать вам такие возможности.

ответ

Опишите, как вы работаете над серьезным проектом

Это прекрасная возможность продемонстрировать себя в качестве менеджера. Стратегическое планирование невозможно без учета ресурсов, которые вам нужны, а также конкретных дат и четких этапов. Это, несомненно, приведет к положительному результату.

Как вы справляетесь со стрессом?

Лучше всего скажите: вы избегаете стрессовых ситуаций благодаря правильному планированию своего времени. В сутках не так много времени, поэтому вы хотите его использовать максимально, ставя при этом конкретные и четкие цели. Вы регулярно делаете физические упражнения, правильно питаетесь и хорошо высыпаетесь. Благодаря этому вам удается эффективно бороться со стрессом.

ответ

Чтобы вы сделаете в первые 90 дней на работе?


Не зная деталей, лучше всего дать общий ответ. Упомяните, что вы будете выстраивать свои цели согласно политике компании, а также верите, что все они будут успешно достигнуты. Вы определяете свои цели согласно вашим приоритетам, учитывая при этом нужды компании на каждом конкретном этапе.

ответ

Что вам нравится и что вам не травится в вашей нынешней работе?

Здесь главное — не поддаться искушению и не сказать что-то негативное о вашей нынешней работе. Даже если вы считаете, что ваша компания похожа на комнату пыток, не говорите этого на интервью. Ваш работодатель ждет от вас позитивного комментария. Скажите, что вы довольны своей работой, что атмосфера там положительная, а ваш начальник очень вас поддерживает и выступает в качестве учителя. После этого скажите, что, например, компания, в которой вы сейчас работаете, небольшая, поэтому вы не видите для себя возможностей для роста. Если же ваша компания большая, тогда скажите, что вы ищете небольшую организацию, где вы сможете внести более значительный вклад.

ответ

Какая часть вашей работы является для вас самой важной?


Здесь важно не просто начать перечислять всякие задания, которые всплывают у вас в голове, а изложить общую ситуацию, выгодно представляя при этом ваши положительные черты характера. Скажите, что для вас важно поэтапное планирование вашего времени, а также четкое определение целей на каждом из этапов.

Что вы думаете о сверхурочной работе?

Здесь главное — не сказать, что вы не готовы к сверхурочной работе, поскольку у вас больной родственник, маленький ребенок или любые другие проблемы. Лучше всего скажите, что вы гордитесь своими умениями правильно планировать свое время и быстро и эффективно работать, однако вы понимаете, что иногда нужно поработать и сверхурочно.

ответ

Опишите ваши лидерские качества

Упомяните, что вы умеете убеждать других осуществлять нужные действия. Скажите также, что вы умеете мотивировать других, направлять их, обсуждать и находить компромисс, а также создавать положительную рабочую атмосферу.

Как вы развиваете ваши таланты?

Это еще один способ продемонстрировать вашу способность работать с людьми. Скажите, что вы умеете создавать положительную мотивацию для других, а также что вы всегда обращаетесь с другими так, как бы вы хотели, чтобы обращались с вами. Для того чтобы это прозвучало еще лучше, приведите несколько примеров людей, которых вы нанимали или с которыми вы вместе работали, а также упомяните о том, как вы себя при этом чувствовали.

Назовите ваше самое большое достижение


Спросите у вашего работодателя о том, что именно он подразумевает: личное или профессиональное достижение. Если он попросит назвать два варианта, то это просто отлично, если же попросит выбрать одно по степени важности, тогда обязательно поставьте профессиональное достижение выше. Не упоминайте, что самым большим достижением в ваше жизни является рождение вашего ребенка, даже если это действительно так (и должно быть таковым). Помните: вы здесь для того, чтобы показать свой профессионализм, поэтому выстраивайте ваши ответы в соответствии с этой целью.

Продайте мне эту ручку

Очень частое задание при интервью на должность агентов по продажам. Это позволит проверить ваши навыки продавца и умения убеждать других людей. Работодатель сморит на то, как вы можете продавать товар, учитывая интересы и потребности конкретного потенциального покупателя. Не начинайте говорить о товаре и его преимуществах до того момента, пока не узнаете, что именно важно для вашего покупателя. Начните с того, что спросите вашего работодателя о том, что именно для него важно при выборе ручки. Случайте внимательно его ответ и далее действуйте в соответствии с этой информацией.

У вас есть еще вопросы?


У вас всегда должны быть вопросы. Никогда не отвечайте, что их у вас нет и вам все понятно. Это ваш последний шанс оставить о себе хорошее впечатление. Придите на интервью подготовленным и возьмите с собою блокнот, в котором будет минимум пять вопросов, касающихся данной компании. Для этого поищите дополнительную информацию о ней и продемонстрируйте, что вы хорошо знакомы с особенностями ее работы. В качестве примера вы можете спросить о том, какой работодатель видит компанию через 5 лет, или же о том, какие навыки он считает необходимыми для этой работы.

fb.ru

Общие вопросы

В чем разница между интерфейсно-ориентированным, объектно-ориентированным и аспектно-ориентированным программированием?

Аспектно-ориентированное

Аспектно-ориентированное програмирование базируется на изучении того сколько и каких компонент или частей требуется для взаимодействия с системой. Основным для АОП является взаимодействие этих элементов.

Интерфейсно-ориентированное

Интерфейсно-ориентированное программирование это подход основанный на программировании по контракту. Ни одна часть интерфейса не зависит от того как реализована другая, вся коммуникация между ними описана в контракте. Веб-сервисы на основе WSDL наиболее известный пример этого подхода.

Объектно-ориентированное

Объектно-ориентированное программирование основывается на понятиях абстракции, инкапсуляции, полиморфизма и наследования. Классы реализуют эти концепции для построение объектов, контролирующих или реализующих систему.

Абстракция позволяет уменьшить связывание между компонентами пердоставляя дополнительный слой между ними, для того чтоб один объект не зависил от того, как другой реализуюет свои бизнес-правила. (Интерфейсы, слои) Отличная штука, если вы хотите изолировать части системы так, чтоб их изменение или замена не стали проблеммой для работы системы в целом.

Инкапсуляция позволяет работать абстракции пряча детали реализации класса от вызывающих его. (Публичные и приватные поля)

Наследование позволяет базовым(родительским) классам содержать общую функциональность и передавать ее всем своим классам-потомкам. Класс Figure(фигура) может иметь поле цвет, которое будет унаследовано его классами-потомками Square(квадрат) или Circle(круг).

Полиморфизм позволяет реализовывать одноименные публичные методы, позволяя различным классам выполнять различные действия при одном и том же вызове. То есть объекты классов Square и Circle могут отображаться(реализовывать метод render) поразному несмотря не то, что они оба подклассы Shape, метод render определен в Shape. (Overriding)

 

Что такое CLR? Что такое IL? Что такое CLS?

CLR ("Common Language Runtime", "общеязыковая исполняющая среда") — это компонент .NET Framework, основной задачей которого является управление интерпретацией и исполнением кода IL. CLR отвечает за изоляцию памяти приложений, проверку типов, безопасность кода, преобразование IL в машинный код.

IL (Intermediate Language) — код, содержащий набор инструкций, не зависящих от платформы. Иными словами, после компиляции исходного кода он преобразуется не в код для какой-то определенной платформы, а в промежуточный код на языке IL.

CLS ("Common Language Specification", общеязыковая спецификация) — это набор правил, следуя которым разработчики достигают бесконфликтной работы во всех языках .NET.

Что такое managed code?

Управляемый код (managed code) — это код, работающий в среде CLR. Содержит метаданные, в которых находится информация для среды выполнения — о типах, членах и ссылках, используемых в коде.

Что такое assembly?

Сборка (assembly) — один или несколько файлов, содержащий логический набор функциональности (код и другие данные, связанные с кодом). Бывают статические сборки, хранящиеся на диске, и динамические, которые создаются во время выполнения программы. Сборка — это базовый блок приложения, все ресурсы, относящиеся к ней, доступны или только внутри этого блока, или экспортируются наружу. При выполнении сборка задает область видимости имен и следит за ее соблюдением.

Что такое приватные и совместные сборки?

Сборки (assembly) бывают двух типов — приватные (private), которые использует только само приложение, и совместные (shared), использующиеся набором приложений. При приватных сборках приложение изолируется от внешнего воздействия программ и операционной системы, отпадает необходимость заботиться об уникальности имен в глобальном пространстве имен. Чтобы сделать сборку совместной, ее необходимо специальным образом собрать и присвоить ей строгое шифрованное имя.

Что такое assembly manifest?

Манифест сборки (assembly manifest) — это внутренняя часть сборки, которая позволяет ей быть самоописанной. Assembly manifest позволяет идентифицировать сборку, указывает файлы, которые включаются в реализацию сборки, описывает типы и ресурсы, используемые в сборке, указывает зависимости от других сборок, а также набор прав доступа, которые необходимы сборке для корректной работы. Эта информация используется во время выполнения для разрешения ссылок, проверку корректности версий, проверку целостности загруженных сборок.

В чем разница между понятиями namespace и assembly?

Namespace (пространство имен) является логическим соглашением, используемым во время разработки, в то время как assembly (сборка) устанавливает область видимости имени в процессе выполнения.

В чем различие между Value Type и Reference Type?

Value Type находятся в стеке, а Reference Type в куче.

Когда объект удаляется сборщиком мусора?

Объект удаляется сборщиком мусора, когда на него не остается ссылок.

Что такое Code Access Security (CAS)?

CAS — это защитная технология, позволяющая установить ограничение на исполнение управляемого кода. Таким образом можно определить разрешения и установить права доступа к ресурсам компьютера.

Что такое attribute?

Атрибут (attribute) — это универсальное средство связи данных с типами, позволяют добавлять любую текстовую информацию о классах, свойствах, методах и т.д. Атрибуты сохраняются с метаданными и могут быть получены при выполнении программы.

Как обеспечить использование именованных параметров в конструкторе атрибута?

Конструкторы атрибутов могут принимать именованные параметры — поля и свойства атрибутов. При задании именованного параметра в конструктор атрибута передается имя свойства или поля, которое должно принять этот параметр. При чем эти свойства и поля должны быть открытыми. Если именованные параметры передаются, то они обязательно должны идти следом за позиционными параметрами, которые явно указаны в конструкторе атрибута. Указание именованных параметров не является обязательным, поэтому при проектировании атрибутов необходимо помнить о том, что некоторые его поля или свойства могут быть не проинициализированы. Пример использования именованных параметров в конструкторе атрибута:

  [DllImport("Kernel32", CharSet=CharSet.Auto, SetLastError=true)]

Здесь передается 1 позиционный параметр — строка "Kernel32" и 2 именованных параметра, которые устанавливают открытые поля CharSet и SetLastError в значения CharSet.Auto и true соответственно.

В чем различие между Finalize и Dispose?

Dispose — обеспечивает явный контроль над ресурсами, используемыми объектом, а Finalize — неявный, используемый сборщиком мусора.

Что такое Boxing и Unboxing?

Упаковка (boxing) позволяет преобразовать размерный тип в ссылочный. При упаковке объекта размерного типа происходят следующие действия:

  1. Выделяется память в управляемой куче.
  2. Совершается копирование полей размерного типа в память, которая была выделена в куче.
  3. Возвращается адрес объекта.

Некоторые компиляторы автоматически создают IL-код, необходимый для упаковки объекта размерного типа. Процесс извлечения адреса полей из упакованного объекта называется распаковкой (unboxing). Распаковка не является полной противоположностью упаковке. В отличие от упаковки при распаковке не происходит никакого копирования. Однако обычно вслед за распаковкой следует копирование полей, поэтому обе операции (распаковка и копирование) являются противоположностью операции упаковки. Приведем пример использования упаковки и распаковки.

  struct Point {   public Int32 x, у;  }     class App {   static void Main() {   ArrayList a = new ArrayList();   Point p; 		 	// Выделяется память для Point (не в куче).   for (Int32 i = 0 ; i < 10; i++) {   p.x = p. у = i; 	// Инициализация членов в нашем размерном типе.   a.Add(p); 	 	// Упаковка размерного типа и добавление ссылки в ArrayList.  	}     	Point р1 = (Point) a[0]; 	// распаковка и копирование полей  }

Упаковка и распаковка/копирование снижают производительность приложения как в плане замедления, так и в расходе дополнительной памяти, поэтому нужно стараться минимизировать создание кода, в котором происходят операции упаковки и распаковки/копирования.

Что такое GAC?

GAC — это глобальный кэш сборок. В нем хранятся совместно используемые сборки. Обычно это каталог С:WindowsAssemblyGAC. Этот каталог имеет определенную структуру, в котором хранятся подкаталоги, имена которых сгенерированы по определенному алгоритму. В GAC можно поместить только сборки со строгими именами. Для того, чтобы поместить сборку в GAC, используют специальный инструмент GACUtil.exe, который знает всю внутреннюю структуру GAC и может генерировать имена подкаталогов надлежащим образом. Регистрировать в GAC сборки необходимо для того, чтобы избежать конфликтов имен сборок. Приведем пример: две компании выпустили сборку и назвали ее одним именем Calculus. Если мы скопируем эту сборку в каталог, в котором уже находится сборка с таким же именем, то мы затрем сборку, которая ранее могла использоваться каким-то приложением. Это приложение с новой сборкой теперь работать не сможет. Решением этой проблемы будет регистрация этих двух сборок в GAC, в котором для каждой будет создан отдельный каталог.

Какие типы можно использовать в предложении foreach?

Массивы, коллекции. Классы в которых реализован интерфейс System.Collections.IEnumerable.

В чем различие между классом и структурой?

Для С# классы System.Object, System.Exception, System.File-Stream и System.Random — это ссылочные типы (память выделяется из упр. кучи). В свою очередь размерные типы в документации называются структурами (structure) и перечислениями (enumeration). Например, структуры System.In132, System.Boolean, System.Decimal, System.TimeSpan и перечисления System.DayOfWeek, System.10.FileAttributes и System.Drawing.FontStyle являются размерными типами (хранятся обычно в стеке потока, но могут быть встроены в ссылочные типы).

Что означает модификатор virtual?

При наследовании класса. Данный метод м.б. переопределен в производных классах с помощью ключевого слова override.

Чем отличается event от delegate?

Delegate – это по сути указатель на функцию.

В С# модель издатель — подписчик, где класс публикует событие, которое он может инициировать, и любые классы могут подписаться на это событие. Метод, вызываемый при возникновении события, определяется делегатом

Может ли класс реализовать два интерфейса, у которых объявлены одинаковые методы? Каким образом?

Да.

  public class GiuseppePizzaria : IWindow, IRestaurant   {   // Реализация метода GetMenu интерфейса IWindow.   Object IWindow.GetMenu() { ... }   // Реализация метода GetMenu интерфейса IRestaurant.   Object IRestaurant.GetMenu() { ... }  }

Поддерживает ли C# множественное наследование?

С# поддерживает множественное наследование в виде наследования от класса и нескольких интерфейсов, или просто от нескольких интерфейсов.

Но не поддерживает наследование от нескольких классов.

Кому доступны переменные с модификатором protected на уровне класса?

Любому классу-наследнику

Наследуются ли переменные с модификатором private?

Да, но они не являются доступными.

Опишите модификатор “protected internal”

Члены с таким модификатором доступны классам, находящимся в той же сборке и унаследованным от данного класса.

Назовите класс .NET, от которого наследуются все классы?

System.Object.

Что обозначает термин immutable (неизменяемый)?

Это значит, что данные, хранящиеся в переменной, не могут быть изменены. При этом заметьте, что значение переменной может быть изменено — путём отказа от использования старых данных, которые могут быть изменены. Оригинальные данные остаются в памяти, а новые значения создаются вновь, в новой области памяти. Пример тип String.

Какая разница между классами System.String и System.Text.StringBuilder?

Данные, хранящиеся в классе System.String и есть неизменяемые (immutable). Класс System.StringBuilder разрабатывался так, чтобы над изменяемой строкой можно было проделать множество операций. То есть при каждой операции над объектом класса System.String происходит перенос данных в новую область памяти, что влияет на производительность программы.

Какое преимущество использования класса System.Text.StringBuilder перед System.String?

Класс StringBuilder более эффективен в случае работы с большим количеством строк. Объекты класса System.String неизменяемы, поэтому при каждом изменении строки создаётся новый объект в памяти.

Можно ли хранить разные типы данных в объекте класса System.Array?

Да

  static void Main(string[] args)   {      object[] arr = new object[] { "string", 0, new Guid() };      foreach (object var in arr)      {          Console.WriteLine(var.GetType().ToString());      }      Console.ReadKey();       double d = 0.0;      ValueType[] arr2 = new ValueType[] { d, 0, new Guid() };      foreach (ValueType var in arr2)      {          Console.WriteLine(var.GetType().ToString());      }      Console.ReadKey();  } 

Объясните разницу между System.Array.CopyTo() и System.Array.Clone()?

Первая операция осуществляет глубокое копирование массива, а вторая – поверхностное. Поверхностное копирование массива копирует только сами элементы объекта класса Array, независимо от того являются они ссылочными или значимыми типами. Копирования объектов, на которые ссылаются ссылочные типы не происходит. Ссылки в новом объекте класса Array указывают на те же объекты, что и ссылки в оригинальном массиве Array. Глубокое копирование копирует как элементы класса Array, так и объекты, на которые они явно или неявно ссылаются.

Как отсортировать элементы массива в убывающем порядке?

Нужно вызвать метод Sort(), а затем метод Reverse().

As, is – что это, как применяется?

Операторы приведения типов.

If(o is Employee){

Employee e = (Employee) o;

}

Проверка типа осущ., 2-ды. По этому в CLR

Employee e = o as Employee;

If(e != null){

}

Вопросы по классам

Какой синтаксис используется для указания класса родителя в C#?

После имени класса наследника нужно поставить двоеточие и указать имя базового класса. Пример:

  class ChildClass : ParentClass

Можно ли запретить наследование от своего собственного класса?

Да. Для этого служит ключевое слово “sealed”.

Можно ли разрешить наследование класса, но запретить перекрытие метода?

Да. Указываем класс как public, а метод как sealed.

Что такое абстрактный класс?

Это класс, объект которого не может быть создан. Такой класс должен иметь класс-наследник с реализацией абстрактных методов. Абстрактный класс – это фактически чертёж нормального класса без реализации.

В каком случае вы обязаны объявить класс абстрактным?

  1. В том случае, если класс является наследником абстрактного класса, но не все методы базового класса перекрыты и имеют реализацию.
  2. В том случае, если хотя бы один метод класса является абстрактным.

Что такое интерфейс класса?

Интерфейсы, как и классы, определяют набор свойств, методов и событий. Но, в отличие от классов, они не содержат их реализации. Интерфейсы реализуются классами и определяются как самостоятельные сущности.

Почему нельзя указать модификатор видимости для методов интерфейса?

Потому что все они должны иметь модификатор public, который и установлен по умолчанию.

Можно ли наследовать от нескольких интерфейсов?

Да.

Назовите отличия между интерфейсом и абстрактным классом?

В интерфейсе все методы (свойства и т.д.) абстрактны и не имеют реализации. В абстрактном классе некоторые методы могут быть реализованы. В интерфейсе члены не могут иметь модификатора видимости (все они являются public по умолчанию), а в абстрактном классе члены могут иметь модификатор видимости.

Назовите различия между структурами и классами.

Для С# классы System.Object, System.Exception, System.File-Stream и System.Random — это ссылочные типы (память выделяется из упр. кучи). В свою очередь размерные типы в документации называются структурами (structure) и перечислениями (enumeration). Например, структуры System.In132, System.Boolean, System.Decimal, System.TimeSpan и перечисления System.DayOfWeek, System.10.FileAttributes и System.Drawing.FontStyle являются размерными типами (хранятся обычно в стеке потока, но могут быть встроены в ссылочные типы).

В чем разница между абстрактными и виртуальными классами? Между виртуальными и абстрактными методами?

Абстрактный класс это класс, содержащий хотя бы один метод (abstract).. Виртуальный метод имеет реализацию и м.б. переопределен в производном классе. Абстрактный метод не имеет реализацию, только описание метода, который д.б. реализован в производных классах.

Dispose(), Finalize() – что это за методы, как используются в .NET?

Используются для освобождения ресурсов. Применяя метод Dispose, вы должны обеспечить неявную очистку методом Finalize. Если программисту не удалось вызвать метод Dispose, использование метода Finalize предотвращает постоянную утечку ресурсов.

Для чего в .NET используется конструкция using(…){…}? Причем тут IDisposable?

Значение Using непосредственно связано с интерфейсом IDisposable. Интерфейс IDisposable представляет нам возможность быстро освободить общие ресурсы, не полагаясь на автоматический сборщик мусора (garbage collector). Конструкция Using позволяет вызывать метод Dispose автоматически, как только нужный объект выйдет за блок Using.

Вопросы по методам и свойствам

Назовите явное имя параметра, передаваемого в метод set свойства класса?

value. Тип этого параметра определяется типом свойства.

Что обозначает ключевое слово “virtual” для метода или свойства?

То, что метод или свойство может быть перекрыто.

Чем перекрытый метод отличается от перегруженного метода?

При перекрывании метода мы изменяем его поведение в классе наследнике. Перегрузка метода просто приводит к использованию другого метода с тем же именем внутри класса.

Можно ли объявить перекрытый метод статическим, если перекрываемый метод не является статическим?

Нет. Сигнатура виртуального метода должна остаться постоянной, кроме замены ключевого слова virtual на ключевое слово override.

Вопросы по сборкам

Что такое «сопутствующая сборка» (satellite assembly)?

Сборки, помеченные определенными региональными стандартами, называются сателлитными сборками

Какая наименьшая исполнимая единица в .NET?

сборка

Что происходит в памяти при упаковке и распаковке значимого типа?

При упаковке экземпляра размерного типа происходит следующее.

  1. В управляемой куче выделяется память. Ее объем определяется длиной размерного типа и некоторыми накладными расходами, позволяющими этому размерному типу стать настоящим объектом. Этими накладными расходами являются указатель на таблицу методов и индекс SyncBlocklndex.
  2. Поля размерного типа копируются в память, выделенную только что в куче.
  3. Возвращается адрес объекта. Этот адрес является ссылкой на объект; размерный тип превратился в ссылочный.

Распаковка не является точной противоположностью упаковки.

Она состоит только в получении указателя на исходный.

размерный тип (поля данных), содержащийся в объекте. И никакого копирования при распаковке (в отличие от упаковки). Однако обычно вслед за распаковкой выполняется копирование полей, поэтому в сумме обе эти операции являются отражением операции упаковки

jopr.org

  • Вопросы для собеседований зачастую придумываются, чтобы проверить кандидатов.
  • Некоторые из этих вопросов очевидно сложны, в то время как другие представляют собой более утонченные ловушки.
  • Мы побеседовали с двумя карьерными экспертами, которые перечислили некоторые особенно хитрые вопросы, о которых следует знать и уметь на них отвечать.

Находчивые менеджеры по найму точно знают, что спрашивать у кандидатов.

Иногда это означает задать кандидату казалось бы простые вопросы.

Сначала эти вопросы могут показаться безобидными, но на самом деле они пытаются заставить вас раскрывать информацию, которую вы, возможно, пытались скрыть.

Менеджеры по подбору  часто любят эти запросы. Используемые правильно, они пробивают традиционный шум и беспорядок интервью, чтобы добраться до вашей сущности.

Поэтому важно научиться отвечать на вопросы, призванные обхитрить вас.

Вот несколько особенно острых вопросов — и некоторые предложения о том, как ответить на них:

«Расскажите о себе?»

C вопросы на собеседовании

«Работодатель хочет услышать, что кандидат сделал домашнее задание», — рассказала Тина Никола, карьерный коач и основатель Resume Writer’s Ink. «Интервьюер также слушает уровень уверенности в том, насколько хорошо кандидат изображает себя через информацию, которая передается».

Итак, как может такой простой вопрос быть ловушкой? Никола сказала, что важно не использовать этот вопрос в качестве возможности поговорить о вашей личной жизни. Вам нужно сосредоточиться на своей потенциальной ценности для организации.

«Работодатель хочет услышать о ваших достижениях, разбитых на два или три кратких пункта, которые задают тон интервью», — сказала Никола.

Помните, что мы говорим людям о нас ровно то, что они услышат. Поэтому будьте начеку и описывайте свои сильные стороны, отвечая на этот вопрос.

«Не вы могли бы описать себя одним словом?»

C вопросы на собеседовании

«Работодатель хочет услышать, что кандидат сделал домашнее задание», — рассказала Тина Никола, карьерный коач и основатель Resume Writer’s Ink. «Интервьюер также слушает уровень уверенности в том, насколько хорошо кандидат изображает себя через информацию, которая передается».

Итак, как может такой простой вопрос быть ловушкой? Никола сказала, что важно не использовать этот вопрос в качестве возможности поговорить о вашей личной жизни. Вам нужно сосредоточиться на своей потенциальной ценности для организации.

«Работодатель хочет услышать о ваших достижениях, разбитых на два или три кратких пункта, которые задают тон интервью», — сказала Никола.

Помните, что мы говорим людям о нас ровно то, что они услышат. Поэтому будьте начеку и описывайте свои сильные стороны, отвечая на этот вопрос.

«Не вы могли бы описать себя одним словом?»

C вопросы на собеседовании

С этим вопросом интервьюеры, вероятно, надеются получить несколько данных.

Они хотят знать о вашем типе личности, о том, насколько вы уверены в себе и хорошо ли ваш стиль работы подходит для данной позиции, объяснила Линн Тейлор, национальный карьерный эксперт и автор книги «Tame Your Terrible Office Tyrant: How to Manage Childish Boss Behavior and Thrive in Your Job»

Этот вопрос может быть проблемой, особенно на раннем этапе интервью, потому что вы действительно не знаете, какой тип личности ищет менеджер.

«Существует тонкая грань между самоуверенностью и уверенностью в себе, и есть разница между скромностью и стеснительностью», — сказала Тейлор. «Люди многогранны, поэтому очень непросто навесить на себя один ярлык».

Если вы сомневаетесь, выбирайте консервативный маршрут. Например, если ваши коллеги считают вас и веселым, и надежным, то Тейлор рекомендует оставаться в безопасной зоне и подчеркнуть именно последнюю характеристику.

Но, прежде всего, постарайтесь адаптировать свой ответ к той роли или организации, о которой идет речь.

«Большинство работодателей сегодня ищут командных игроков, которые умеют работать под давлением, оптимистичны, честны, надежны и преданы», — добавила она. «Однако было бы ошибкой перечислять все прилагательные, которые, по вашему мнению, будут хорошо восприняты. Это ваша возможность описать ваши лучшие качества, которые, по вашему мнению, пригодились бы вам на этой работе».

«Чем эта позиция отличается от остальных, на которые вы претендуете?»

C вопросы на собеседовании

Таким образом рекрутеры спрашивают: «Вы претендуете на другие позиции?»

«менеджер по подбору персонала сначала пытается выяснить, насколько вы активны в поиске работы», — сказала Никола. Интервьюер хочет посмотреть, как вы говорите о других компаниях или позициях, которые вас интересуют, и насколько вы честны.

Если вы скажете: «Это единственная работа, на которую я подаю заявку», это станет красным флагом для рекрутера. Очень немногие кандидаты на работу претендуют только на одну работу, поэтому они могут предположить, что вы нечестны.

Однако, если вы открыто говорите о других позициях, которые вас интересуют, и вы благосклонно относитесь к ним, менеджер по подбору персонала может посчитать, что вы недоступны.

«Говорить отрицательно о других работах или работодателях тоже нехорошо», — сказала она.

Уместно сказать: «Есть несколько организаций, с которыми я беседую, однако, я еще не решил, что лучше всего подходит для моего карьерного роста».

«Это позитивно и защищает конкурентов», — сказала Никола. «Нет никаких причин заваливать другие компании или хвастаться».

«Вы можете перечислить три своих самых сильных и самых слабых сторон?»

C вопросы на собеседовании

Таким образом рекрутеры спрашивают: «Вы претендуете на другие позиции?»

«менеджер по подбору персонала сначала пытается выяснить, насколько вы активны в поиске работы», — сказала Никола. Интервьюер хочет посмотреть, как вы говорите о других компаниях или позициях, которые вас интересуют, и насколько вы честны.

Если вы скажете: «Это единственная работа, на которую я подаю заявку», это станет красным флагом для рекрутера. Очень немногие кандидаты на работу претендуют только на одну работу, поэтому они могут предположить, что вы нечестны.

Однако, если вы открыто говорите о других позициях, которые вас интересуют, и вы благосклонно относитесь к ним, менеджер по подбору персонала может посчитать, что вы недоступны.

«Говорить отрицательно о других работах или работодателях тоже нехорошо», — сказала она.

Уместно сказать: «Есть несколько организаций, с которыми я беседую, однако, я еще не решил, что лучше всего подходит для моего карьерного роста».

«Это позитивно и защищает конкурентов», — сказала Никола. «Нет никаких причин заваливать другие компании или хвастаться».

«Вы можете перечислить три своих самых сильных и самых слабых сторон?»

C вопросы на собеседовании

Интервьюер ищет негативные и положительные пункты, за которые он может зацепиться, вроде неспособности хорошо работать с коллегами или неспособность соблюдать установленные сроки.

«Каждая работа имеет свои уникальные требования, поэтому ваши ответы должны демонстрировать применимые сильные стороны, а ваши недостатки должны иметь положительную обратную сторону», — сказала Тейлор. «По крайней мере, вы должны указать, что отрицательные черты компенсируются положительными».

По ее словам, разоблачение ваших слабостей может навредить вам, если вы не перекроете их позитивными.

«Ваши сильные стороны могут не совпадать с набором навыков или стилем работы, необходимым для работы. Лучше заранее подготовиться к этому вопросу или вы рискуете очутиться на минном поле», — сказала Тейлор.

И, что касается сильных сторон, менеджеры по найму хотят знать, что вы станете лучшей заменой для новой позиции.

Но самое главное — показать интервьюеру, что вы способны к продуманному самоанализу.

«Они также хотят изучить вашу способность зрело и уверенно оценить себя», — сказала Тейлор.

«Почему вы хотите работать здесь?»

C вопросы на собеседовании

Интервьюеры спрашивают об этом, потому что они хотят знать, что вас больше всего волнует, насколько хорошо вы их исследовали и насколько сильно вы хотите получить эту работу.

«Очевидно, вы хотите работать в фирме по нескольким причинам», — сказала Тейлор. «Однако расстановка приоритетов позволяет многое сказать о том, что для вас наиболее важно».

Вы можете подумать про себя: «Мне слишком мало платят», или «У меня ужасный босс», или: «При прочих равных, сюда попросту меньше ехать» — ни одна из этих причин не вызовет у менеджера по найму симпатию к вам.

«Кроме этого, таким образом проверяется, насколько вы заинтересованы в этой работе». Менеджеры по найму хотят видеть, что вы нашли время для исследования компании и понимания отрасли.

Они также хотят знать, что вы действительно хотите эту работу (а не просто любую работу); что у вас есть настрой на действия; что у вас много энергии; что вы можете внести значительный вклад; что вы понимаете их миссию и цели; и что вы хотите быть частью этой миссии.

«Почему вы хотите уйти с текущего места работы?»

C вопросы на собеседовании

Интервьюеры спрашивают об этом, потому что они хотят знать, что вас больше всего волнует, насколько хорошо вы их исследовали и насколько сильно вы хотите получить эту работу.

«Очевидно, вы хотите работать в фирме по нескольким причинам», — сказала Тейлор. «Однако расстановка приоритетов позволяет многое сказать о том, что для вас наиболее важно».

Вы можете подумать про себя: «Мне слишком мало платят», или «У меня ужасный босс», или: «При прочих равных, сюда попросту меньше ехать» — ни одна из этих причин не вызовет у менеджера по найму симпатию к вам.

«Кроме этого, таким образом проверяется, насколько вы заинтересованы в этой работе». Менеджеры по найму хотят видеть, что вы нашли время для исследования компании и понимания отрасли.

Они также хотят знать, что вы действительно хотите эту работу (а не просто любую работу); что у вас есть настрой на действия; что у вас много энергии; что вы можете внести значительный вклад; что вы понимаете их миссию и цели; и что вы хотите быть частью этой миссии.

«Почему вы хотите уйти с текущего места работы?»

C вопросы на собеседовании

«Ваш потенциальный начальник ищет негативные шаблоны поведения, особенно если вы часто меняете место работы», — сказала Тейлор.

Интервьюер может попытаться определить, были ли у вас проблемы с работой в команде, что и приводило в итоге к увольнению, быстро ли вам надоедает работа и другие красные флаги.

Так что будьте осторожны. Если вы не дипломатичны, ваш ответ может вызвать дополнительные вопросы и сомнения в вашей кандидатуре.

По словам Тейлор, менеджер по подбору персонала надеется, что вы ищете более сложную позицию, которая лучше подходит для вашего набора навыков.

«Знайте, что менеджеры по найму не возражают, слушая, что вас особенно волнует возможность роста в их компании», — сказала Тейлор.

«За что в своей карьере вы гордитесь больше всего?»

C вопросы на собеседовании

Интервьюеры хотят понять, чем вы увлечены, что, по вашему мнению, делаете лучше всего, и гордитесь ли вы своей работой вообще.

«Как вы описываете свой любимый проект, например, почти так же важно, как и сам проект», — сказала Тейлор. «Предполагается, что если вы сможете говорить о своей прошлой работе с уверенностью и гордостью, вы можете сделать то же самое во время важных презентаций у нового работодателя».

Менеджеры могут предположить, что этот вид работы — это то, что вы действительно хотите делать больше всего или сосредоточиться на нём в будущем.

Впрочем, это может заставить вас звучать однобоко, если вы не поставите свой рассказ в контекст широкого спектра навыков и интересов.

Менеджеры по найму хотят видеть вашу способность четко формулировать и поощрять энтузиазм в других, а также вашу положительную энергию.

«Однако здесь стоит сделать одно предостережение: оставайтесь краткими», сказал Тейлор. «Вы хотите продемонстрировать свою способность хорошо представлять себя на работе».

«С какими типами начальников и коллег вы работали наиболее и наименее успешно? Почему?»

C вопросы на собеседовании

Интервьюеры хотят понять, чем вы увлечены, что, по вашему мнению, делаете лучше всего, и гордитесь ли вы своей работой вообще.

«Как вы описываете свой любимый проект, например, почти так же важно, как и сам проект», — сказала Тейлор. «Предполагается, что если вы сможете говорить о своей прошлой работе с уверенностью и гордостью, вы можете сделать то же самое во время важных презентаций у нового работодателя».

Менеджеры могут предположить, что этот вид работы — это то, что вы действительно хотите делать больше всего или сосредоточиться на нём в будущем.

Впрочем, это может заставить вас звучать однобоко, если вы не поставите свой рассказ в контекст широкого спектра навыков и интересов.

Менеджеры по найму хотят видеть вашу способность четко формулировать и поощрять энтузиазм в других, а также вашу положительную энергию.

«Однако здесь стоит сделать одно предостережение: оставайтесь краткими», сказал Тейлор. «Вы хотите продемонстрировать свою способность хорошо представлять себя на работе».

«С какими типами начальников и коллег вы работали наиболее и наименее успешно? Почему?»

C вопросы на собеседовании

Главный секрет ответа на этот вопрос – оставайтесь хорошим парнем.

Вы рискуете показаться сложным человеком, рассказывая о неудачном опыте взаимодействия с другими, по крайней мере, если вы не уберете из своего рассказа эмоции.

Интервьюеры пытаются выяснить, есть ли у вас конфликты с людьми с различными типами личности.

«Во-вторых, они хотят знать, в каких условиях вы можете работать на полную», — сказал Тейлор.

Вы также можете непреднамеренно описать некоторые атрибуты вашего предполагаемого босса.

«Они желают услышать больше хороших новостей, чем плохих», — сказала Тейлор. «Всегда лучше начинать с позитива и преуменьшать негатив».

Вы не хотите быть уклончивым, но сейчас не время описывать все ваши недостатки.

Данный вопрос – возможность в целом рассказать о качествах, которые вы наиболее цените в коллегах, при этом демонстрируя, что вы можете работать с людьми с самыми разными личностными типами.

Например: «Мне кажется, что я хорошо срабатываюсь с любыми людьми. Мои наиболее удачные деловые взаимоотношения складывались в случаях, когда люди общались друг с другом и устанавливали совместные цели».

«Вы никогда не задумывались стать предпринимателем?»

C вопросы на собеседовании

В большинстве случаев этот вопрос зависит от того, планируете ли вы покинуть корабль и основать свою собственную компанию, сказала Тейлор.

«Ни одна фирма не хочет даже думать об этом, так как это неминуемо вызовет сомнения, а стоит ли вообще тратить на вас время и деньги», — сказала Тейлор.

Не стоит особо увлекаться рассказами о том, как вы хотели стать собственным начальником. Работодатель может опасаться, что вы все еще надеетесь, что в конце концов выйдете в самостоятельное плавание.

Вы можете сказать менеджеру по персоналу, что вы рассматривали подобный вариант или уже имели опыт самостоятельной работы.

Превратите собственный опыт в позитив, сказав, что вы уже испытали это или подумали об этом, и это не для вас.

Это может быть более убедительным, чем говорить: «Нет, я никогда не рассматривал этот вариант».

Это возможность обсудить, почему работа в корпоративной среде в качестве члена команды наиболее подходит вам.

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

Кроме того, вы можете рассеять окончательные сомнения, рассказав, почему их компания наиболее подходит для вас.

«Если бы вы могли работать в любом месте, какую компанию вы бы выбрали?»

C вопросы на собеседовании

В большинстве случаев этот вопрос зависит от того, планируете ли вы покинуть корабль и основать свою собственную компанию, сказала Тейлор.

«Ни одна фирма не хочет даже думать об этом, так как это неминуемо вызовет сомнения, а стоит ли вообще тратить на вас время и деньги», — сказала Тейлор.

Не стоит особо увлекаться рассказами о том, как вы хотели стать собственным начальником. Работодатель может опасаться, что вы все еще надеетесь, что в конце концов выйдете в самостоятельное плавание.

Вы можете сказать менеджеру по персоналу, что вы рассматривали подобный вариант или уже имели опыт самостоятельной работы.

Превратите собственный опыт в позитив, сказав, что вы уже испытали это или подумали об этом, и это не для вас.

Это может быть более убедительным, чем говорить: «Нет, я никогда не рассматривал этот вариант».

Это возможность обсудить, почему работа в корпоративной среде в качестве члена команды наиболее подходит вам.

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

Кроме того, вы можете рассеять окончательные сомнения, рассказав, почему их компания наиболее подходит для вас.

«Если бы вы могли работать в любом месте, какую компанию вы бы выбрали?»

C вопросы на собеседовании

Менеджеры по подбору персонала хотят выяснить, насколько вы серьезно относитесь к ним, в частности, к конкуренции, а также к вашему уровню лояльности, сказала Тейлор.

«Это также помогает им отсеять кандидатов, которые могут в дальнейшем изменить свою профессию», — сказала Тейлор. «Возможно, вы слышали, что Google — отличное место для работы, однако подобный ответ стал бы для вас губительным, дав вам возможность теоретически получить место в компании вашей мечты».

В основном, сосредоточьтесь конкретно на работе. Не попадайтесь на обсуждение подобных вопросов и не высказывайте в открытую свою симпатию к каким-либо компаниям.

«Интервьюер хочет знать, что сейчас вы проходите собеседование в компании, в которой больше всего хотите работать», — сказал Тейлор.

Ответом на это может быть: «На самом деле, я интенсивно изучал ключевые фирмы, а [ваша компания] кажется идеальным вариантом для моих данных», — сказала Тейлор. «Мне интересно, что [ваша компания] делает XYZ в отрасли, и я хочу внести свой вклад».

«За что вас увольняли?»

C вопросы на собеседовании

«Работодатели хотят знать, как вы справляетесь со сложными обстоятельствами, вроде потери работы», — сказала Никола. «Они хотят услышать, что вы позитивны и готовы вернуться к работе с отличным отношением. Также они хотят услышать уверенный настрой, а не пораженческое или злое отношение».

Вы можете быть обиженным или злым из-за потери работы, поэтому этот вопрос может заставить вас высказаться оскорбительно по отношению к вашему бывшему работодателю – этого ни в коем случае не стоит делать во время собеседования.

«Избегайте обвинений, отчаяния и не выставляйте себя жертвой», — добавила она.

Вместо этого поговорите о бизнес-решении, стоящем за увольнением, и оставьте при себе свои собственные чувства по поводу данной ситуации.

«Ни в коем случае не высказывайте никаких обвинений и собственного недовольства», — сказала Никола. «Говорите строго по факту».

«Что бы вы сделали, если бы выиграли завтра 5 миллионов долларов?»

C вопросы на собеседовании

«Работодатели хотят знать, как вы справляетесь со сложными обстоятельствами, вроде потери работы», — сказала Никола. «Они хотят услышать, что вы позитивны и готовы вернуться к работе с отличным отношением. Также они хотят услышать уверенный настрой, а не пораженческое или злое отношение».

Вы можете быть обиженным или злым из-за потери работы, поэтому этот вопрос может заставить вас высказаться оскорбительно по отношению к вашему бывшему работодателю – этого ни в коем случае не стоит делать во время собеседования.

«Избегайте обвинений, отчаяния и не выставляйте себя жертвой», — добавила она.

Вместо этого поговорите о бизнес-решении, стоящем за увольнением, и оставьте при себе свои собственные чувства по поводу данной ситуации.

«Ни в коем случае не высказывайте никаких обвинений и собственного недовольства», — сказала Никола. «Говорите строго по факту».

«Что бы вы сделали, если бы выиграли завтра 5 миллионов долларов?»

C вопросы на собеседовании

(примерно 286 миллионов рублей. Недавно в России пенсионерка выиграла 500 миллионов рублей — примечание редакции)

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

Они хотят услышать, что вы продолжите работу, потому что вы увлечены тем, что вы делаете, и они хотят знать, что вы будете принимать разумные финансовые решения.

Если вы сделаете что-то безответственное с вашими собственными деньгами, они будут беспокоиться, что вы будете небрежны и на работе.

Ваш ответ на этот вопрос говорит работодателю о вашей мотивации и рабочей этике.

Ваш собеседник также может проверять вашу способность справляться с неожиданными вопросами.

«Этот вопрос может не иметь ничего общего с работой, поэтому вас вполне может заинтересовать, почему их так волнует ответ на этот вопрос», — говорит Тейлор. «Так или иначе, вы запросто можете потерять несколько очков, если не возьмете паузу для того, чтобы собрать свои мысли в кучу, прежде чем отвечать на данный вопрос».

«Ставили ли ваши начальники или коллеги под сомнение вашу честность? Расскажите нам об этом»

C вопросы на собеседовании

Ваш потенциальный начальник оценивает ваши моральные ориентиры, спрашивая, как вы справились с деликатной ситуацией, которая испытала вашу честность, сказала Тейлор.

«Кроме того, они могут пытаться копнуть такими вопросами глубже, чтобы оценить ваши персональные рамки», — сказала она.

По сути, они хотят знать: использовали ли вы дипломатические методы? Устраивали ли вы скандалы? Какова была реакция? Какие мысли привели вас к этому решению?

Интервьюеры хотят узнать, как вы справляетесь с деликатными вопросами, а также подобные вопросы позволяют отсеять кандидатов, которые оскорбляют бывших коллег, вне зависимости от того, насколько критическим был их проступок.

«Они будут обеспокоены тем, что вы делитесь слишком конфиденциальной информацией с интервьюером», — сказала она. «Это очень сложный вопрос, потому что вы должны тщательно выбирать свои слова, используя по максимуму все дипломатические методы».

Ваш ответ должен быть ясным, кратким и профессиональным, не раскрывая внутренних подробностей вашей работы на предыдущем месте.

«Вы ничего не выиграете от того, что расскажете частную корпоративную информацию», — сказала Тейлор.

«Как вы думаете, почему кому-то могло бы не понравиться работать с вами?»

C вопросы на собеседовании

Ваш потенциальный начальник оценивает ваши моральные ориентиры, спрашивая, как вы справились с деликатной ситуацией, которая испытала вашу честность, сказала Тейлор.

«Кроме того, они могут пытаться копнуть такими вопросами глубже, чтобы оценить ваши персональные рамки», — сказала она.

По сути, они хотят знать: использовали ли вы дипломатические методы? Устраивали ли вы скандалы? Какова была реакция? Какие мысли привели вас к этому решению?

Интервьюеры хотят узнать, как вы справляетесь с деликатными вопросами, а также подобные вопросы позволяют отсеять кандидатов, которые оскорбляют бывших коллег, вне зависимости от того, насколько критическим был их проступок.

«Они будут обеспокоены тем, что вы делитесь слишком конфиденциальной информацией с интервьюером», — сказала она. «Это очень сложный вопрос, потому что вы должны тщательно выбирать свои слова, используя по максимуму все дипломатические методы».

Ваш ответ должен быть ясным, кратким и профессиональным, не раскрывая внутренних подробностей вашей работы на предыдущем месте.

«Вы ничего не выиграете от того, что расскажете частную корпоративную информацию», — сказала Тейлор.

«Как вы думаете, почему кому-то могло бы не понравиться работать с вами?»

C вопросы на собеседовании

Ваш потенциальный начальник хочет узнать, имеются ли у вас какие-то ярко выраженные личностные проблемы, а кто сможет поведать об этом лучше, чем вы сами?

«Они считают, что самое страшное, что может произойти во время ответа – ложь с вашей стороны, ведь они думают, что прекрасно определяют, когда им говорят неправду», — сказала Тейлор. «Отрицательный тон вопроса должен проверять характер даже самых опытных профессионалов».

Однако будьте осторожны. Ответив на этот вопрос, вы можете сделать себе медвежью услугу.

Если вы скажете: «Я не могу назвать ни одной причины, по которой кто-то не захотел бы со мной работать», — вы, таким образом, оскорбите интервьюера, перефразировав его вопрос до тривиальности.

Таким образом, вы должны переформулировать вопрос таким образом, чтобы ответить на него и при этом не наговорить на себя. «Менеджеры по найму не ищут кандидатов на работу, у которых есть жалость к себе», — сказала она.

Тейлор предложил быть позитивным: «Мне повезло, я всегда имел хорошие отношения с коллегами».

«Единственный раз, когда меня откровенно невзлюбили – хотя это был и временный эффект – когда мне было необходимо заставить персонал работать лучше», — добавила Тейлор. «Я считаю, что иногда мы должны принимать непопулярные решения во благо целой компании».

«Как вам удалось выделить время для этого собеседования? Ваш начальник знает, где вы?»

C вопросы на собеседовании

Менеджеры по найму хотят узнать, что ваши приоритеты расставлены правильно: текущая работа на первом месте, собеседования – на втором.

 «Они знают, что ваши привычки говорят о вашей честности и о том, как вы будете вести себя на новой работе, когда будете подыскивать другое место», — сказала Тейлор. «Они также хотят знать, как вы справляетесь с неловкими ситуациями, когда вы не можете быть откровенными с вашим боссом. В идеале вам следует подчеркнуть, что собеседование проходит во время вашего перерыва, то есть в ваше личное время».

Этот вопрос завуалированно намекает: «Каково это искать работу за спиной своего начальника?». Большинству работников крайне дискомфортно говорить о своих поисках.

Поэтому они говорят об этом расплывчато, как и о других личных вопросах.

Разумно объяснить, что вы всегда ставите свою работу на передний план и планируете собеседование до или после работы, в обеденное время, в выходные дни, если это необходимо, и во время личного перерыва.

Если вас напрямую спрашивают: «Где, по мнению вашего начальника, вы сейчас находитесь?», давайте расплывчатый ответ.

Не говорите: «Я взял отгул по болезни». Вместо этого Тейлор предложила попробовать что-то вроде: «Мой босс понимает, что у меня есть определенные периоды на перерыв и личное время, — он не просит подробностей, его больше волнуют результаты моей работы».

«Расскажите мне о случае, когда вы были не согласны с политикой компании»

C вопросы на собеседовании

Менеджеры по найму хотят узнать, что ваши приоритеты расставлены правильно: текущая работа на первом месте, собеседования – на втором.

 «Они знают, что ваши привычки говорят о вашей честности и о том, как вы будете вести себя на новой работе, когда будете подыскивать другое место», — сказала Тейлор. «Они также хотят знать, как вы справляетесь с неловкими ситуациями, когда вы не можете быть откровенными с вашим боссом. В идеале вам следует подчеркнуть, что собеседование проходит во время вашего перерыва, то есть в ваше личное время».

Этот вопрос завуалированно намекает: «Каково это искать работу за спиной своего начальника?». Большинству работников крайне дискомфортно говорить о своих поисках.

Поэтому они говорят об этом расплывчато, как и о других личных вопросах.

Разумно объяснить, что вы всегда ставите свою работу на передний план и планируете собеседование до или после работы, в обеденное время, в выходные дни, если это необходимо, и во время личного перерыва.

Если вас напрямую спрашивают: «Где, по мнению вашего начальника, вы сейчас находитесь?», давайте расплывчатый ответ.

Не говорите: «Я взял отгул по болезни». Вместо этого Тейлор предложила попробовать что-то вроде: «Мой босс понимает, что у меня есть определенные периоды на перерыв и личное время, — он не просит подробностей, его больше волнуют результаты моей работы».

«Расскажите мне о случае, когда вы были не согласны с политикой компании»

C вопросы на собеседовании

менеджер по подбору персонала пытается определить целый ряд вещей при помощи этого вопроса.

А именно, ваша способность принимать решения, легкость работы с другими людьми и, самое главное, сможете ли вы сказать открыто, если найдете проблемную зону, которую можно было бы улучшить.

«Если вы скажете, что у вас никогда не было подобных случаев, то в это сложно поверить даже в отношении самых сговорчивых сотрудников», — сказал Никола. «Также это говорит о том, что вы готовы принять любой расклад дел, лишь бы не думать о результатах».

Хотя компании хотят, чтобы руководители и сотрудники следовали правилам, они в это же время хотят нанимать людей, способных пересмотреть потенциально устаревшие положения политики компании и имеющих смелость высказать своё мнение, предложить способы изменения для поддержания конкурентной и продуктивной рабочей среды.

Поэтому предоставьте реальную ситуацию, которая указала бы на логическую и деловую причину, по которой вы были против корпоративной политики, предложила она.

«Сосредоточьтесь на том, как ваша идея переработать политику была выгодна для компании в целом», — сказала Никола. «Расскажите о проведенных вами исследованиях, о фактах, которые вы предоставили, и о результатах ваших попыток переписать политику».

businessinsider.com, перевод: Артемий Кайдаш

hr-portal.ru

Предисловие

Не так давно, на мою электронную почту пришло сообщение от рекрутёров, представляющих одну очень известную и очень крупную компанию, работающую на мировом рынке электронных устройств. По разного рода этическим соображениям я не буду уточнять название компании. Тема сообщения, как вы догадались, была приглашением на собеседование. Следуя принципу «от меня не убудет», а также подогреваемый любопытством и амбициями, я, после двадцатиминутного телефонного разговора с позвонившим мне агентом из этого рекрутского агентства, согласился.

Сегодня состоялось собеседование по скайпу с сотрудниками компании. Собеседование я, с большой долей вероятности, провалил. Прежде всего из-за элементарного недостатка знаний по некоторым деталям. Хотя, пару-тройку вопросов я элементарно не додумал. Так часто бывает в обстановке экзамена :)

В целом, надо сказать, что собеседование было очень простым. И я предполагал, что все будет гораздо страшнее. По опыту собеседования в наших местных аутсортинговых компаниях, скажу, что, по уровню сложности, это было на троечку.

Также, хочу добавить, что я крайне отрицательно отношусь к собеседованиям вообще. Во-первых, мало кто в состоянии вести себя на собеседованиях адекватно. Как не крути, а наличествует некоторый стресс. Даже в случае, если ты пришел на собеседование просто так, для "пощекотать нервы" (Думаю, что многие согласятся с тем, что надо всегда находится в поиске и не отказываться априори от того, что может сулить какие-то перспективы. Пусть и несбыточные.) Во-вторых, умение писать код и разбираться в вопросах на собеседовании не проверить. Для этого надо обязательно проводить тестовое задание.

Как бы там не было, думаю, что многим интересны будут вопросы, которые могут задать по профилю C/C++/Linux. Именно этим профилем занимаюсь я, и именно по этому профилю было проведено собеседование, отчёт о котором я хочу здесь представить.

Ниже я привожу практические и теоретические вопросы, которые были заданы вперемешку, но, которые, я, тем не менее, сгруппировал именно в такой последовательности. Целью было максимально разделить постановку практических вопросов от комментариев к ним.

Практические вопросы

Системный вызов fork(), стандартные потоки ввода/вывода

  1. Что вы можете сказать о следующем фрагменте кода? Есть ли в нем ошибки? Дайте максимальные комментарии о работе этого кода.
  2. Откомпилируется ли представленный фрагмент кода? Если откомпилируется, то что будет при запуске?
  3. Нужно ли изменить программу в строке с вызовом fprintf(), чтобы надпись "Hello" печаталась два раза? Если нужно, то как?
  4. Нужно ли изменить программу в строке с вызовом fprintf(), чтобы надпись "Hello" печаталась один раз? Если нужно, то как?
 #include <stdio.h>  int main() {  fprintf(0, "Hello");  fork();  return 0; } 

Знаковые и беззнаковые типы разной ёмкости

Что будет лежать в A после исполнения следующего фрагмента кода?

 int A = 128; char B = A;  A = B; 

Виртуальный деструктор

Что будет напечатано при исполнении следующего фрагмента кода? Максимально прокомментируйте этот код. Есть ли в нем принципиальные ошибки и, если есть, то как их исправить?

 #include <iоstreаm>  using nаmespаce std;  class Fаther {  public:  Fаther() {}  ~Fаther()   {  cоut << "~Father" << endl;  }  };   class Sоn : public Fаther {  public:  Sоn() : Fаther()   {   }  ~Sоn()   {   cоut << "~Son" << endl;  } };  int mаin() {  Fаther* оbject = new Sоn();  delete оbject; } 

Игры с указателями

Что будет содержаться в массиве a после исполнения представленного ниже кода?

 char a[]="111111111111"; *((int*)a+1) = 0; 

Односвязный список

Представьте себе односвязный список. Если у вас есть указатель на произвольный элемент этого списка, то сможете ли вы написать алгоритм корректного удаления этого элемента из списка? Т.е. такого удаления, при котором не нарушается связанность левой и правой частей списка.

Теоретические вопросы

Теоретические вопросы я оставлю практически без комментариев. Они достаточно чёткие в своей постановке и если кто-то чего-то не знает, то может найти это в литературе или в сети Интернет без особых проблем.

  1. Что такое виртуальная память? Что в процессоре ответственно за реализацию виртуальной памяти?
  2. Что вы можете рассказать об архитектурах CISC и RISC? Основные особенности и различия.
  3. Как работают системные вызовы? Как переносятся параметры системного вызова?
  4. Расскажите о системном вызове fork(). Что передается в копию процесса?
  5. Что такое виртуальный конструктор?
  6. Сколько таблиц виртуальных методов может быть в объекте класса? От чего это зависит? Что можно сказать о размещении указателей на них?
  7. Можно ли в конструкторе вызывать виртуальные методы?
  8. Что вы можете рассказать о различиях между std::vector и std::list в плане их внутренней реализации?
  9. Как должен быть оформлен класс, чтобы его объекты могли храниться в std::vector?
  10. Чем отличается процесс от потока?
  11. Разделяют ли потоки стек?
  12. Что такое мьютекс? Что такое семафор? Можно ли семафор использовать для синхронизации процессов?
  13. Какие вы знаете средства взаимодействия процессов? Могут ли процессы иметь общую память?

Хочу дать единственный комментарий к вопросу о количестве таблиц виртуальных методов. Прежде чем отвечать наверняка вспомните и подумайте о множественном наследовании. Здесь вас могут легко запутать.

Комментарии к практическим вопросам

Системный вызов fork(), стандартные потоки ввода/вывода

 #include <stdio.h>  int main() {  fprintf(0, "Hello");  fork();  return 0; } 

Конечно же в представленном коде есть ошибки. Прежде всего, нулевой указатель на поток не приведет ни к чему хорошему, учитывая, что здесь, очевидно, хотят сделать вывод строки в поток. Такой код откомпилируется, так как синтаксически он корректен, но приведет к segmentation fault.

Если в качестве потока вывода указать поток stdout, т.е. написать fprintf(stdout, "Hello"), то надпись будет выведена два раза, так как поток stdout буферизируется и при создании копии процесса, также будет сделана копия буферов stdout. Поэтому, при завершении обоих процессов, буферы каждого будут сброшены и на терминале появятся две надписи "Hello".

Если в качестве потока вывода указать поток stderr, т.е. написать fprintf(stderr, "Hello"), то надпись будет выведена только один раз, так как поток stderr не буферизован и поступившие в него данные сразу будут выброшены на устройство вывода связанное с данным потоком. Функция fork() будет выполнена только после этого.

Знаковые и беззнаковые типы разной ёмкости

Что будет лежать в A после исполнения следующего фрагмента кода?

 int A = 128; char B = A;  A = B; 

Тип char представляет собой знаковый однобайтовый тип, поэтому число 128, которое будет в него записано будет интерпретироваться как отрицательное число в дополнительном коде. Следовательно, при обратном присвоении мы получим число (-128).

Виртуальный деструктор

Код представляет собой проблему из-за того, что не имеет виртуального деструктора. В результате, объект, созданный как Son, но хранящийся как Father не будет иметь в своей таблице виртуальных методов указание на деструктор подкласса и будет уничтожен как объект класса Father. Вообще, говоря, данный объект вообще не будет иметь таблицы виртуальных методов, так как он не имеет ни одного виртуального метода.

Ситуация представленная в этом примере является более чем "классикой жанра" и может быть найдена в любом пособии при разговоре о виртуальных деструкторах.

Игры с указателями

 char a[]="111111111111"; *((int*)a+1) = 0; 

Имя массива в C/C++ является адресом его начального элемента. Приведя этот адрес к указателю на целое число мы получаем указатель на следующие четыре байта целого (для вычислительных систем, где int занимает четыре байта). Инкремент этого указателя сдвигает адрес указателя на четыре байта (столько занимает начальный элемент массива из элементов типа int). Следовательно разыменуемый адрес указывает на четыре байта памяти, сдвинутые относительно исходного адреса на четыре байта. После обнуления этих четырех байт мы получим, что в массиве a будет лежать "1111000000001111". В этой записи, согласно стандарту Си, литерал '00' представляет собой восьмиричную запись однобайтового значения.

Односвязный список

Вот по поводу этого вопроса я ничего сказать не могу. Априори был уверен, что сделать это нельзя. На собеседовании меня уверили, что можно. Буду думать. Если придумаю, то может найду время написать об этом.

Некоторые из тех, кому я уже рассказал об этой задачке предполагают, что речь идёт о кольцевом односвязном списке. Однако слово "кольцевой" в вопросе, насколько я помню, не звучало. Как умолчание я бы посчитал это нелепицей. Да и если речь идёт о кольцевом односвязном списке, то это было бы слишком просто. Хотя, судя по тому, что все вопросы были достаточно простые, то, может быть, так оно и есть.

И еще один момент. Я специально спрашивал насчёт указателя на начало списка. Указатель не дали. И ещё раз уточнили. Дан односвязный список и указатель только на тот внутренний элемент списка, которые требуется корректно удалить. В общем, выглядит задачка как полный бред. Как заметил один мой коллега, Дубровин Алексей, за эту задачу компании должна быть назначена премия Тьюринга по теме "Как утечку памяти превратить в связанный список" :).

Спустя неделю. Прошла неделя с момента публикации этого сообщения и я подумал, что имеет смысл опубликовать размышление моих коллег по этой задаче. Сначала коллеги из "Мирантис", потом Михаил Сёмичев из "ЕПАМ" (все это наши местные отделения распределенных аутсортинговых компаний) и, наконец, Владимир Легкий из компании "Волга-софт" предположили, что возможно речь идет о следующем решении. Если не заниматься движениями указателей, а выполнить смещение данных относительно удаляемого элемента, то решение получается простое, но имеет одно ограничение. Оно не работает для случая, если указатель задачи указывает на последний элемент.

Поясню решение. Оно может быть в нескольких вариантах, но в одной сути.

Один из вариантов предпологает, что мы выполним циклический сдвиг данных по элементам списка относительно указываемого элемента. Тогда данные из указываемого элемента пропадут (чем не удаление элемента), а два последних элемента списка будут иметь одинаковые продублированные данные. Последний элемент, в этом случае, мы можем без проблем удалить.

В другом, более хитром и более эффективном применении идеи о перемещении данных, мы можем сделать полную копию следующего элемента в указываемый по задаче. Т.е. буквально сделать memcpy(). Перед этим надо сохранить указатель на следующий элемент с тем, чтобы после выполнения "сырой" копии удалить следующий элемент.

knzsoft.blogspot.com


Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.