Що слід очікувати від технічної оцінки для C ++? [зачинено]


10

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

Мій C ++ трохи іржавий, оскільки я нещодавно робив проекти на PHP.

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

Що я повинен очікувати в одному з цих тестів?


1
Це питання для PHP, але відповіді стосуються: programmers.stackexchange.com/questions/73654/…
Ерік Вілсон

Відповіді:


5

Це C ++, так що ви можете очікувати чого завгодно, я маю на увазі РЕАЛЬНО все.

Зазвичай це стосується питань хитрості та певних питань поліморфізму.

Але може бути і щось просте.

Будьте готові відповісти на запитання на кшталт "чому б ви зробили віртуальний деструктор", що таке "мінливий", "спроектуйте клас" на якусь нереальну проблему, "реалізуйте пов'язаний список", "переверніть рядок" тощо.


Я додав би "Для чого mutableвикористовується ключове слово?" до будь-якої категорії.
Том

5

Якщо це чистий тест на C ++ (тобто не тест на Windows / MFC / керований C ++), то витрачайте кілька годин або день на ефективний C ++ Скотта Меєра, і вам слід дуже добре. Він не охоплює шаблони та STL, але якби вони були зацікавлені в цьому, вони, ймовірно, не дали б вам тест на дві години. Минуло кілька років, але я часто опитував розробників C ++. Незважаючи на те, що ідеї в програмі Ефективний C ++ є фундаментальними для програмування на C ++, лише близько десяти відсотків кандидатів знали їх.


1
+1 за рекомендацією щодо книги - і пропустіть ефективнішу книгу С ++ від Скотта Мейєра. Коли я брав інтерв'ю з програмістами, я також дивився на інтелектуальну чесність (ви намагаєтеся блефувати чи визнаєте, що не знаєте), чи знаєте ви того, чого не знаєте, і чи знаєте ви, де знайти відповідь. (Якби опитувати когось, хто стверджує, що працював у C ++, питання було б набагато складніше). Якщо у вашому резюме не було нічого, що напрошувало б навички програмування на інших мовах, я також попросив би написати просту програму і подивитись, чи правильно ви висвітлювали кутові справи.
MZB

Я випускник з обчислень, мене навчали, як робити програми в консолі на C ++, мене навчали реалізовувати бінарні сортувальні дерева та подвійно пов'язані списки і т.д. як їх реалізувати. Рольова робота призначена для випускника, тому я не знаю, чого вони чекають від мене, бо у мене немає реального досвіду роботи C ++.
ведмедик

4

Ну, це залежить від того, наскільки це буде чи ні, вони дозволять вам використовувати Google. : P

Зазвичай я роблю досить добре в технічних тестах, поки можу використовувати інструменти навколо себе. Коли вони хочуть, щоб я кодував його, коли я потрапив у біду. Тож найкраща порада, яку я можу дати вам, - це сліпий код вдома… Переконайтеся, що ви пам’ятаєте дрібниці, які ми приймаємо як належне, тому що ми можемо їх легко перевірити, якщо не пам’ятаємо.

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

(Це мій загальний досвід, я не з Великобританії)


Як щодо теорії, поліморфізму, спадкування. Я знаю лише теорію для цього лише від закінчення навчання, але я не знаю, як це реалізувати в C ++
bearbread

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

@bearbread: сама теорія мало чого варта. читайте про шаблони дизайну та спробуйте їх реалізувати.
Каролі Хорват

Я знаю шаблони дизайну, такі як MVC для PHP, це ви маєте на увазі?
ведмедик

1

Каталог практичних кодів Виберіть простий алгоритм (кільцевий буфер, башта Ханої, двійковий пошук тощо) і кодуйте його з нуля. Потім зробіть це знову наступного разу, і наступного разу, і наступного разу, і наступного разу, і так далі. Подивіться, як ви можете покращити їх при кожній ітерації.


1
+1. Також робіть це з другом, який трохи досвідченіший. По черзі програмуйте, ви обоє дізнаєтесь щось нове.
Том

0

Це правда, що ти можеш чекати чого завгодно.

Вони сказали, що тест був C ++, але, можливо, це справді підмножина C C ++, яку вони використовують у своїх тестах (ви будете використовувати масиви char замість стандартних рядків бібліотеки). Це буде важко дізнатися.

Якщо це дійсно C ++, я б радив ознайомитись з основами:

  • Класи, змінні, масиви
  • посилання, покажчики (і чому ви не повинні використовувати їх за замовчуванням)
  • використання ключового слова const
  • Поняття, орієнтовані на об'єкти (успадкування, поліморфізм ...)
  • Шаблони

тоді:

  • Стандартні звичаї бібліотеки (std :: string, std :: вектор, контейнери, ...)

0

Те, що було розміщено, було чудовим досі, але я додам щось і історію! Я б сказав, що практика застосовує те, що ви знаєте на C ++, до проблем у галузі програмної компанії. Чудово, якщо ви знаєте всі додаткові та додаткові C ++, але якщо ви не можете звернутися до проблеми, ви марні для компанії. Бачачи, що це позиція молодших розробників, я не думаю, що вони очікують, що ти знатимеш усе про C ++.

Я пройшов перший технічний тест на свою першу роботу розробника минулого тижня і був здивований тим, що знайшов. Я очікував чогось на кшталт FizzBuzz або чогось більш гострого ґрунтового (це було для Java, btw), але те, що я знайшов, - це вони дали мені файл і дали мені розібрати його до нового формату, який є частиною роботи. Крім того, вони дозволили мені використовувати Google та власні бібліотеки. Підсумок, вам потрібно знати C ++, але якщо ви хочете знати, яким може бути тест, погляньте на домен позиції, на яку ви подаєте заявку, і працюйте над впровадженням C ++ щодо чогось у цьому домені.


Я б здогадався, що <1% програмістів на C ++ знають усі мови :) Просто візьміть усі випадки невизначеної / не визначеної / визначеної реалізацією поведінки як один із прикладів.

0

Ти:

  1. Написання коду
  2. приймаючи багаторазовий вибір
  3. Інтерв'ю особисто

При написанні коду

Вони сподіваються, що ви дізнаєтесь (і використаєте):

  • РАЙ
  • Правило трьох
  • Зрозумійте розумні покажчики

Вони, ймовірно, перевірять вас на:

  • Спадщина
  • Віртуальні функції
  • Серіалізація в / з потоку
  • перевантажувати арифметичні оператори (не часто використовуються в реальному житті, але легко написати тест навколо).

Якщо вам не пощастить, вони можуть подумати

  • Багаторазове успадкування та віртуальні базові класи - це те, що ви повинні знати.
    • Це не так, але деякі люди сходять зі сліз.

При багаторазовому виборі

  • Зрозумійте всю термінологію ОО
  • Знайте C ++ способи реалізації ОО

В інтерв'ю з особами

  • Все вищесказане.
  • Знання рекурсії
  • Як перетворити рекурсію в цикл
  • Як оцінити складність Big O ()
  • Стандартні алгоритми сортування (не лише бульбашки).

1
Я програміст на C, а не на C ++, тому я не знаю розмови ... але я ніколи не чув про RIAA та правило трьох. Однак я чув про RAII (збирання ресурсів - це ініціалізація, тобто ваш деструктор повинен очистити свій власний безлад), і я знаю, що якщо ваш код потребує копії Ctr, оператора присвоєння перевантаження або деструктора, він потребує всіх трьох. Мені здається, що інтерв'ю, яке є сирною дрібницею в програмуванні сленгу, а не перевірка ваших навичок, говорить про щось погане про компанію.

1
І в рівній мірі, якщо вони запитують про багаторазове успадкування та рекурсію, я вважаю, що їхня база коду - це велика безлад. Якщо вони очікують, що ви знаєте всі загальні алгоритми сортування, як робити розкручування рекурсії, серіалізацію об'єктів тощо, це також говорить про щось погане про компанію. Хіба вони не чекають своїх роботів на роботів? У реальному світі ви шукаєте такі речі, перш ніж їх використовувати. Навіть якщо я знаю теорію, що стоїть за всіма цими речами, я б все одно їх шукав, просто щоб переконатися, що я використовую оптимальне рішення, а не щось таке, тому я придумав сам.

@Lundin: Вам не потрібно знати шовковисті імена, але вам потрібно знати принципи, згадуючи їх тут, це полегшує пошук. Вам потрібно знати алгоритми сортування, тому що ви повинні знати, який з них використовувати і коли (і що ще важливіше чому) (речі роботи не можуть зробити, але люди роблять дуже добре).
Мартін Йорк

З рекурсією чи багаторазовим посиленням немає нічого по суті. Проблема полягає в розробниках через те, що використовувати його (і робити це неправильно). Деякі проблеми можна вирішити (легко) лише за допомогою рекурсії (спочатку проаналізуйте глибину структури дерева).
Мартін Йорк


-1

Я отримав у своєму останньому інтерв'ю:

Різниця між передачею об'єкта функції за значенням / посиланням / покажчиком і тим, де і чому ви це зробите.

Замініть два останні 8 біта цілого числа, наприклад, RGBA на RGAB.

Що таке RIAA?

Визначте мета-програмування шаблону: у вас може виникнути запитання в частині "вирішити цю проблему з TMP .."

Що означає змінне, мінливе, const тощо тощо? знати всі ключові слова.

багаторазове успадкування .... знову і знову.

Багатопотокове навантаження: споживачі та буферизовані об'єкти спільної пам'яті.

Ще кілька питань периферії:

Агрегація та композиція UML

Шаблони проектування: реалізуйте сингл ... Які спільні компоненти MVC?

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