Подготовка к интервью C++ [закрывается]

Это зависит от того, как эффективный Вам нужны вещи быть. Просто итерация по списку, ища элемент, который удовлетворяет определенное условие, является O (n), но ArrayList - также. Содержит, если Вы могли бы реализовать, Равняется методу. Если Вы не делаете этого в циклах или внутренних циклах, этот подход, вероятно, очень хорошо.

при реальной необходимости в очень эффективных скоростях поиска по всей стоимости необходимо будет сделать две вещи:

  1. Работа вокруг того, что класс сгенерирован: Запишите класс адаптера, который может перенести сгенерированный класс и который реализует , равняется () на основе тех двух полей (предполагающий, что они общедоступны). Не забывайте также реализовывать , хэш-код () (*)
  2. Переносит каждый объект с тем адаптером и поместил его в HashSet. HashSet.contains () имеет постоянное время доступа, т.е. O (1) вместо O (n).

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

* () хэш-код Реализации () лучше всего сделан XOR'ing (^ оператор) хэш-коды тех же полей, которые Вы используете для, равняется реализации (но умножаются на 31 для сокращения шанса XOR получение 0)

39
задан Kyle Walsh 15 October 2009 в 18:13
поделиться

8 ответов

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

Другими словами: твердо владейте основами и твердым синтаксисом C ++. Кроме того, не повредит знание общих библиотек, таких как STL и Boost ... но убедитесь, что вы знаете, что вам дают эти библиотеки! В конце концов, экраны телефонов нужны для того, чтобы отсеивать людей, не умеющих делать основы. Докажите, что можете, и переходите к следующему шагу. Удачи!

Вот несколько ссылок на вопросы для интервью, чтобы проверить:

Итак, для завершения , некоторые книги:

53
ответ дан 27 November 2019 в 02:08
поделиться

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

2
ответ дан 27 November 2019 в 02:08
поделиться

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

Даже если если вы не знаете ответа на конкретный вопрос, стоит упомянуть, что обычно вы ищите ответ на <ваш любимый ресурс> (например, StackOverflow).

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

Так что расслабьтесь и попробуйте насладиться этим!

2
ответ дан 27 November 2019 в 02:08
поделиться

Прочтите (или просмотрите, в зависимости от того, сколько времени у вас есть на подготовку) "

1
ответ дан 27 November 2019 в 02:08
поделиться

Я провел собеседование с несколькими кандидатами, специально сосредоточив внимание на их знаниях C ++, и если и был один вопрос, который хорошо сработал, чтобы поместить знания людей в C ++ в градиент, то это был этот:

Исправьте эту утечку памяти настолько надежно, насколько сможете:

void doSomething()
{
Foo* pFoo = new Foo();
[do some stuff]
}
  • +1 для помещения delete pFoo в конец
  • +2 для помещения pFoo в std :: auto_ptr
  • +3 за знание того, что такое RAII - концепция, если не аббревиатура
  • +4 за упоминание гарантий безопасности исключений для auto_ptr
  • +5 за усиление pFoo: shared_ptr
  • +6 за знание, когда shared_ptr не может быть освобожден.
  • +7 за разговор о методах сборки мусора для исправления циклических ссылок

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

Edit: Я бы порекомендовал кого-нибудь для найма на уровне 3 или выше.

46
ответ дан 27 November 2019 в 02:08
поделиться

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

2
ответ дан 27 November 2019 в 02:08
поделиться

Даже если они проходят собеседование на должность C ++, не все вопросы могут относиться к C ++. Например, в одном и том же наборе собеседований для одной должности C ++ меня задавали вопросы, связанные со следующими:

  • Алгоритмическая сложность хорошо известных алгоритмов сортировки и поиска
  • Многопоточное программирование
  • Многопроцессное программирование
  • Программирование сокетов
  • Философия / подход к разработке программного обеспечения
  • Философия / подход к тестированию и валидации программного обеспечения
  • Отладка
  • Бенчмаркинг
  • Динамический и статический анализ кода (например, обнаружение утечки памяти во время выполнения или компиляция) time)

В моем случае телефонное собеседование было частью процесса проверки, чтобы определить, могу ли я пройти онлайн-тест на знание C / C ++ (например, через BrainBench). Затем результаты онлайн-тестирования определили, буду ли меня вылетать для собеседований на месте, которые также включали дополнительные «практические» тесты разработки программного обеспечения.

YMMV. Многое также зависит от того, что вы утверждаете в своем резюме.

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

HTH и удачи!

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

HTH и удачи!

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

HTH и удачи!

3
ответ дан 27 November 2019 в 02:08
поделиться
  • Попробуйте несколько практических задач на TopCoder .

  • Посмотрите Часто задаваемые вопросы по C ++ Маршалла Клайна . Это хороший способ узнать что-то новое и отточить то, что вы уже знаете, на случай, если он решит задать вам несколько вопросов «знания», а не вопросов «решения проблем».

8
ответ дан 27 November 2019 в 02:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: