Страшний тест на співбесіду з програмуванням C # - будь-яка порада? [зачинено]


21

У мене можлива робота на C # Dev, але перед тим, як я можу взяти інтерв'ю, мені потрібно пройти тест в агентстві з працевлаштування.

Зараз, хоча я є старшим розробником, який має понад 10 років досвіду програмування і більше 3 років із програмою c #, я справді не з нетерпінням чекаю цього тесту, і я думаю, що є хороший шанс, що я його не зможу.

На мій досвід, ці тести є непередбачуваними, і вони задають вам речі, які ви рідко використовуєте в повсякденних робочих ситуаціях.

Мені потрібна ваша найкраща порада щодо того, що я маю переглянути - наприклад, хороша книга чи веб-сайт. У мене є менше 1 тижня, щоб підготуватися, і важливо, щоб я пройшов це.

Заздалегідь спасибі.

РЕДАКТУВАННЯ: Для подальшого виправдання моїх проблем щодо написання таких тестів - Розгляньте наступне питання:

12) Подія:

   a) The result of a users action - correct answer
   b) The esult of a party
   c) code to force users action

Правильна відповідь відповідно до тесту - "А", але оскільки я займаюся розробкою SOA (часто коли події можуть базуватися на системних подіях (а не користувачах)), я на 100% впевнений, що подію не слід керувати дії користувача. Це було також питання C # (не питання ASP.net). Виходячи з мого розуміння, я не міг помітити правильну відповідь, але B здається найкращим з партії (якщо визначення учасника: будь-яке суть, яка може викликати подію. Такі питання мене лякають.


4
Якщо ви "старший розробник", і використовуєте C # щоденно протягом трьох років, вам повинно бути гаразд. Ці тести, як правило, призначені для вилучення тих людей, які не знають мови та її використання. Якщо ви використовуєте його щодня протягом 3-х років, тоді вам довелося зіткнутися з майже всіми підводними каменами в даному тесті.
Джордж Стокер

11
@GeorgeStocker - насправді мені довелося взяти деякі з цих тестів (спрямованих більше на повну рамку .NET), і вони були дуже деталізовані. Мені їх було досить складно, тому що спершу вони потрапили в області фреймворку (наприклад, WCF), де я просто не мав великого досвіду, плюс вам довелося знати такі речі, як варіант налаштування, який ви використовуєте у файлі .config, щоб увімкнути якийсь незрозумілий варіант. Це були речі, які ви рідко турбуєтесь запам'ятовуючи, тому що ви, ймовірно, коли-небудь використовували його один раз і Google це при цьому. Мені цей досвід виявився трохи засмучуючим.
Скотт Вітлок

7
О, і одне з питань, що я помилився, було: "у VB.NET, яке ключове слово використовується для декларування структури? A) структура b) структура c) структура d) структура". Я думав, що "intellisense це знає, тому мені не доведеться!" Тепер, звичайно, відповідь закарбувалась у моїй пам’яті.
Скотт Вітлок

17
@ScottWhitlock: Немає можливості адекватно підготуватися до погано розробленого інтерв'ю. У якийсь момент ви повинні довіряти, що вони достатньо компетентні, щоб запитувати та оцінювати, виходячи з областей, на які ви насправді претендуєте на спеціалізацію, а також певних концептуальних здібностей. Якщо їх немає, то, мабуть, у вас все одно буде жалюгідний час, працюючи на них.
Aaronaught

2
Це тест мови C # або тест .NET Framework?
Мурахи

Відповіді:


24

Хоча дещо старе, можливо, ця публікація блогу вам корисна: Які чудові розробники .NET повинні знати (більше. NET Інтерв'ю питань)

Усі, хто пише код

  • Охарактеризуйте різницю між ниткою та процесом?
  • Що таке служба Windows і чим її життєвий цикл відрізняється від "стандартного" EXE?
  • Який максимальний об’єм пам’яті, до якого може звернутися один процес у Windows? Чи відрізняється це від максимальної віртуальної пам'яті для системи? Як це вплине на дизайн системи?
  • Чим відрізняється EXE від DLL?
  • Що таке сильний набір проти слабкого типу? Що є кращим? Чому?
  • Продукт Corillian - це "контейнер для компонентів". Назвіть щонайменше 3 компонентних контейнера, які зараз постачаються разом із сімейством Windows Server.
  • Що таке PID? Як це корисно при усуненні неполадок у системі?
  • Скільки процесів можна прослухати на одному порті TCP / IP?
  • Що таке GAC? Яку проблему вона вирішує?

Розробник .NET середнього рівня

  • Охарактеризуйте різницю між інтерфейсно-орієнтованим, об’єктно-орієнтованим та орієнтованим на аспект програмуванням.
  • Опишіть, що таке інтерфейс і чим він відрізняється від класу.
  • Що таке рефлексія?
  • Яка різниця між веб-службами XML, що використовують ASMX та .NET Remoting за допомогою SOAP?
  • Чи представлена ​​система типів XmlSchema та CLS ізоморфна?
  • Концептуально, яка різниця між ранньою зв'язкою та пізньою зв’язкою?
  • Використовується Assembly.Завантажте статичну опору чи динамічну довідку?
  • Коли використання сборки Assembly.LoadFrom або Assembly.LoadFile буде доречним?
  • Що таке ім'я кваліфікованої збірки? Це ім'я файлу? Як це відрізняється?
  • Чи дійсно це? Assembly.Load ("foo.dll");
  • Чим сильно названа збірка відрізняється від тієї, яка не має найменування?
  • Чи може DateTimes бути недійсним?
  • Що таке СІТ? Що таке НГЕН? Які обмеження та переваги кожного?
  • Як генераційний сміттєзбірник у .NET CLR управляє життям об'єкта? Що таке недетерміновані доопрацювання?
  • Яка різниця між Finalize () та Dispose ()?
  • Чим корисна модель ()? Що таке ідентифікатор? Як він підтримує детерміновану доопрацювання?
  • Що робить цей корисний командний рядок? список завдань / м "mscor *"
  • Яка різниця між закуповими та позабірдовими?
  • Яка технологія дозволяє здійснювати позабіржовий зв’язок у .NET?
  • Коли ви запускаєте компонент в ASP.NET, в якому процесі він працює в Windows XP? Windows 2000? Windows 2003?

Старші розробники / архітектори

  • Що не так у такій лінії? DateTime.Parse (myString);
  • Що таке ПТБ? Де вони повинні бути розміщені для налагодження для роботи?
  • Що таке цикломатична складність і чому це важливо?
  • Напишіть стандартний замок () плюс "подвійну перевірку", щоб створити критичний розділ навколо змінного доступу.
  • Що таке FullTrust? Чи мають збірки GAC'ed FullTrust?
  • Яку користь отримує ваш код, якщо прикрасити його атрибутами, що вимагають конкретних дозволів безпеки?
  • Що це робить? гакутіл / л | знайти / i "Corillian"
  • Що це робить? sn -t foo.dll
  • Які порти повинні бути відкритими для DCOM через брандмауер? Яке призначення Порту 135?
  • Контрастний OOP та SOA. Які принципи кожного?
  • Як працює XmlSerializer? Яких дозволів ACL вимагає процес його використання?
  • Чому улов (виняток) майже завжди є поганою ідеєю?
  • Чим відрізняється Debug.Write від Trace.Write? Коли кожен слід використовувати?
  • Яка різниця між налагодженням Debug та Release? Чи є значна різниця швидкостей? Чому або чому ні?
  • Чи відбувається JITting за збірку чи за метод? Як це впливає на робочий набір?
  • Протиставляйте використання абстрактного базового класу проти інтерфейсу?
  • Яка різниця між a.Equals (b) та a == b?
  • У контексті порівняння, що таке ідентичність об'єкта проти еквівалентності об'єкта?
  • Як можна зробити глибоку копію в .NET?
  • Поясніть сучасне мислення навколо IClonable.
  • Що таке бокс?
  • Чи є рядок значенням типу або типом посилання?
  • Яке значення має шаблон "PropertiesSpecified", використовуваний XmlSerializer? Яку проблему намагається вирішити?
  • Чому вихідні параметри є поганою ідеєю в .NET? Чи вони?
  • Чи можна атрибути розміщувати за певними параметрами методу? Чому це корисно?

Розробники компонентів C #

  • Протиставити використання перебору з новим. Що таке затінення?
  • Поясніть використання віртуальних, запечатаних, переопределених та абстрактних.
  • Поясніть важливість та використання кожного компонента цього рядка: Foo.Bar, Версія = 2.0.205.0, Культура = нейтральна, PublicKeyToken = 593777ae2d274679d
  • Поясніть відмінності між державними, захищеними, приватними та внутрішніми.
  • Яку вигоду ви отримуєте від використання первинного комплексу Interop (PIA)?
  • За яким механізмом NUnit знає, які методи перевірити?
  • Яка різниця між: ловити (виняток е) {кинути e;} та ловити (виняток е) {кинути;}
  • Яка різниця між typeof (foo) та myFoo.GetType ()?
  • Поясніть, що відбувається в першому конструкторі: public class c {public c (рядок a): this () {;}; public c () {;}} Чим корисна ця конструкція?
  • Що це ? Чи можна це використовувати в статичному методі?

Розробники ASP.NET (UI)

  • Опишіть, як на базі браузера Form POST стає подією на стороні сервера, як Button1_OnClick ...

1
Кожна відповідь, перерахована тут, була корисною і хорошою, проте я переглянув кожне питання у вашому списку (зайняло у мене 4 години), написав зразок тесту в Інтернеті і пройшов. Я б закликав будь-якого розробника .net хоча б раз переглядати ці запитання і переконатися, що ви розумієте відповіді, і переконайтеся, що ви отримаєте другу та третю думку. Дуже багато людей відповідають на запитання (знайдені в Google), але багато відповідей часом не стислі, навіть неправильні. Тож будьте обережні. Перехресно перевірте, які відповіді ви знайдете.
JL01

2
Гарне посилання! Я здивований, скільки з тих, кого я знав. це.Его ++;
Самості Джастін

@justnS: Те саме трапилося і зі мною, коли я відкрив пост. :-)
Конаміман

Я поїхав на співбесіду кілька тижнів тому, і вони мені це надрукували, щоб відповісти. що на мене, відображено на інтерв'юера.
dbones

1
Коли ви додасте відповіді? ;)
Thijs van Dien

10

Просто йди геть, Рене

Я кілька разів брав такі тести. Тепер я просто йду геть. Тести вимірюють найбільш тривіальні шматочки знань з програмування. Ви хочете працювати з тим, хто вважає, що ці тести - хороший спосіб оцінити програмістів? Я не.


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

4
@Sklivvz: можливо, якби вони були хорошими тестами. Більшість комерційних тестів - це дурні вправи з дрібниць: "Який клас ви б використали для читання текстового файлу?" Хороший розробник може протягом десяти хвилин поговорити про відмінності між байтовими потоками та потоками символів та деталями кодування UTF, і все ж пропустити це питання. Коли інформація легко доступна, немає сенсу запам’ятовувати її.
Кевін Клайн

2
Я згоден з Кевіном. Занадто багато інформації, яка не стосується вашої роботи, може бути в тестах. Ось чому вони винайшли Google і IntelliSense - коли нам потрібні відповіді, ми знаходимо їх, на основі необхідності їх використання
ADNow

2
Це залежить від його тестування. Є тести, від яких я б пішов, але потім є хороші тести. У нас є простий тест з програмування 3. Перше питання - написати простий додаток C #. Другий просить написати 5 простих SQL запитів. Третє питання - це питання, на яке неможливо відповісти, якщо тестувальник не попросить отримати додаткову інформацію. Перше і друге питання виключають абсолютно некомпетентних програмістів. Це економить нам час від опитування людей, які не варті нашого часу. Третє питання дає нам зрозуміти, як програміст підходить до вирішення проблеми. Дуже цінний матеріал.
Піт

8

Торік я був у такій ситуації, як у вас. Пройшло так довго, що я був в інтерв'ю, що боявся цього. Я здійснив пошук запитань щодо інтерв'ю на C # і знайшов кілька сайтів (багато з них перелічені іншими плакатами), і я вивчив їх. На мій подив, 90% інтерв'ю були з того самого сайту, дослівно . Я думаю, інтерв'юери використовують Google і для пошуку питань :)


6

Я повністю згоден з вами щодо:

тести непередбачувані, що задають вам речі, які ви рідко використовуєте в повсякденних робочих ситуаціях.

..але вони є частиною цього процесу, тому ми насправді з цим нічого не можемо зробити. Я схожий на вас з досвідом близько 10 років, з яких близько 5 в .NET C #. Я виявив, що ці дві ДУЖЕ хороші книги:

C # в глибині

C # в горішці

має охоплювати все, що потрібно знати про C #. Решта - це ваші власні вміння та навички, які ви набираєте за певними технологіями на основі C #, як ASP.NET тощо.


3
але вони є частиною процесу, тому ми нічого з цим насправді не можемо зробити. Як щодо того, щоб пропагувати, щоб на вашому місці роботи не було дурних тестів на програмування як частина найму? Процеси найму повинні показувати вашу компетентність, а не те, що ви можете запам'ятати незрозумілі дрібниці.
joshin4colours

@ joshin4colours - саме тому я вірю в добру довгу розмову на інтерв'ю ... вони хороші для усунення, хоча
TheBoyan

2
Я фактично
взяв

3

Ці тести все частіше стають частиною попередньої перевірки заявників професійними рекрутинговими фірмами та деякими компаніями. Вони розроблені для того, щоб дати інтерв'юерам нетехнічний спосіб оцінити чиїсь технічні здібності. Однак вони по суті є просто дрібницькими тестами, які не скажуть нічого важливого про здібності програміста, крім того, щоб відсікати тих, хто насправді нічого не знає. На жаль, деякі компанії / рекрутери приділяють цим результатам занадто велику вагу.

Шляхом навчання для них є пошук сайтів із питаннями інтерв'ю, законних сайтів, а не тих, хто намагається продати вам відповіді, обмазані спливаючою рекламою чи іншою такою нісенітницею, і набийте відповіді. Таким чином ви отримаєте гідний бал і перестрибнете через перешкоду. Якщо компанія приділяє надто велику вагу цим результатам, вони, ймовірно, не є найкращою компанією для роботи в будь-якому випадку.


2

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

Поки ви знаєте, як працює рамка взагалі та найпоширеніші простори імен / бібліотеки для завдань, які речі ви повинні використовувати для певних завдань, ви повинні бути хорошими.


2

З тестами інтерв'ю багато що залежить від корпоративної культури та творця тесту. Якщо вони мають намір задавати незрозумілі запитання і намагатимуться вас зв'язати, я б перейшов до іншої фірми чи агентства, яке більше зацікавлене у високоякісних людей, які розумні та можуть виконати роботу.

Однак, коли ви використовуєте c # у своїй щоденній роботі, я зосереджую ваші зусилля щодо вирішення проблем та логіки, а менше - на стороні вивчення книг.

Project Euler - чудове місце для практику та відточування навичок, які, швидше за все, стали трохи іржавими.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.