Это зависит от того, как эффективный Вам нужны вещи быть. Просто итерация по списку, ища элемент, который удовлетворяет определенное условие, является O (n), но ArrayList - также. Содержит, если Вы могли бы реализовать, Равняется методу. Если Вы не делаете этого в циклах или внутренних циклах, этот подход, вероятно, очень хорошо.
при реальной необходимости в очень эффективных скоростях поиска по всей стоимости необходимо будет сделать две вещи:
, Конечно, создавая этот HashSet все еще имеет O (n) стоимость. Вы только собираетесь получить что-либо, если стоимость создания HashSet незначительна по сравнению с общей стоимостью всего содержания (), проверяет, что необходимо сделать. Попытка создать список без дубликатов является таким случаем.
* () хэш-код Реализации () лучше всего сделан XOR'ing (^ оператор) хэш-коды тех же полей, которые Вы используете для, равняется реализации (но умножаются на 31 для сокращения шанса XOR получение 0)
Убедитесь, что вы знаете свои основные структуры данных и алгоритмы. Вас скорее спросят об этом, чем о чем-то более высоком в пищевой цепочке. Обычно они сохраняются для личного собеседования.
Другими словами: твердо владейте основами и твердым синтаксисом C ++. Кроме того, не повредит знание общих библиотек, таких как STL и Boost ... но убедитесь, что вы знаете, что вам дают эти библиотеки! В конце концов, экраны телефонов нужны для того, чтобы отсеивать людей, не умеющих делать основы. Докажите, что можете, и переходите к следующему шагу. Удачи!
Вот несколько ссылок на вопросы для интервью, чтобы проверить:
Итак, для завершения , некоторые книги:
Захват знающий друг, и пусть он задаст вам несколько задач программирования на C ++, которые вы можете решить на доске. Во многих собеседованиях вы решаете задачу на доске, и вам может быть неприятно думать на ногах и записывать вещи перед кем-то, если вы к этому не привыкли.
Я начинаю верить в то, что иногда существует четкое разделение между кандидатами, которым нравится программирование как хобби, и теми, кто считает это «просто повседневной работой».
Даже если если вы не знаете ответа на конкретный вопрос, стоит упомянуть, что обычно вы ищите ответ на <ваш любимый ресурс> (например, StackOverflow).
Исходя из вашего опыта, я не думаю, что интервьюер будет ожидать, что вы ответите правильно на все вопросы. Скорее всего, они пытаются определить, есть ли у вас «потенциал».
Так что расслабьтесь и попробуйте насладиться этим!
Прочтите (или просмотрите, в зависимости от того, сколько времени у вас есть на подготовку) "
Я провел собеседование с несколькими кандидатами, специально сосредоточив внимание на их знаниях C ++, и если и был один вопрос, который хорошо сработал, чтобы поместить знания людей в C ++ в градиент, то это был этот:
Исправьте эту утечку памяти настолько надежно, насколько сможете:
void doSomething() { Foo* pFoo = new Foo(); [do some stuff] }
Это всегда помогало показать, как долго кто-то работал с C ++. Это одна точка данных, которую вы можете использовать, чтобы определить, где вы находитесь на шкале знаний C ++.
Edit: Я бы порекомендовал кого-нибудь для найма на уровне 3 или выше.
Помимо очевидных частей языка, я обнаружил, что работодатели захотят увидеть, полностью ли вы понимаете указатели, ссылки, как копирующие конструкторы используются во всем, возможно, STL, и, конечно, основы занятий.
Даже если они проходят собеседование на должность C ++, не все вопросы могут относиться к C ++. Например, в одном и том же наборе собеседований для одной должности C ++ меня задавали вопросы, связанные со следующими:
В моем случае телефонное собеседование было частью процесса проверки, чтобы определить, могу ли я пройти онлайн-тест на знание C / C ++ (например, через BrainBench). Затем результаты онлайн-тестирования определили, буду ли меня вылетать для собеседований на месте, которые также включали дополнительные «практические» тесты разработки программного обеспечения.
YMMV. Многое также зависит от того, что вы утверждаете в своем резюме.
Интервьюеры часто пытаются помочь вам, давая вам подсказки, чтобы увидеть, сможете ли вы прийти к ответу, который они ищут. Помимо оценки ваших знаний, они также хотят узнать, как вы думаете. Изредка вы можете встретить никчемного интервьюера, который не будет ни полезным, ни позитивным. Главное - быть уверенным в своих силах и быть правдивым.
HTH и удачи!
Интервьюеры часто пытаются помочь вам подсказками, чтобы увидеть, сможете ли вы прийти к искомому ответу. Помимо оценки ваших знаний, они также хотят узнать, как вы думаете. Изредка вы можете встретить никчемного интервьюера, который не будет ни полезным, ни позитивным. Главное - быть уверенным в своих силах и быть правдивым.
HTH и удачи!
Интервьюеры часто пытаются помочь вам подсказками, чтобы увидеть, сможете ли вы прийти к искомому ответу. Помимо оценки ваших знаний, они также хотят узнать, как вы думаете. Изредка вы можете встретить никчемного интервьюера, который не будет ни полезным, ни позитивным. Главное - быть уверенным в своих силах и быть правдивым.
HTH и удачи!
Попробуйте несколько практических задач на TopCoder .
Посмотрите Часто задаваемые вопросы по C ++ Маршалла Клайна . Это хороший способ узнать что-то новое и отточить то, что вы уже знаете, на случай, если он решит задать вам несколько вопросов «знания», а не вопросов «решения проблем».