1 | |||||||||||||||||||||
Тестовое задание на Junior C++ dev26.07.2013, 18:40. Показов 57778. Ответов 65
Метки нет (Все метки)
Доброго времени суток.
Неделю назад ради интереса отправил свое резюме в одну компанию, куда требуются с++ юниоры. Получил от них тестовое задание. Я ожидал, что они мне откажут (опыта то у меня действительно мизер), но хотелось бы узнать у более опытных людей, какое решение задач "ожидает" компания от соискателя для продолжения с ним отношений. Далее идет 4 задачи и мой вариант решения каждой из них.
0
|
26.07.2013, 18:40 | |
Ответы с готовыми решениями:
65
Тестовое задание надолжность Junior C++ gamedev Тестовое задание Тестовое задание Тестовое задание от компании Exness |
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,727
|
|
26.07.2013, 22:15 | 41 |
0
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|
26.07.2013, 22:39 | 42 |
Нуу, так как нет определенных условий, то первую задачу можно решить используя std::bitset в несколько строк. Ну или по хорошему вначале посчитать кол-во лидирующих нулей, выделить память под массив, а далее побитовыми операциями достать нужные биты.
Со вторым я солидарен - нужно создать массив и перемешать его. Третье - числа в диапазоне от 5 до 15? Тут тупо можно использовать любой алгоритм, но наверно эффективнее будет сортировка вставками, хотя по хорошему было бы родить алгоритм, который для мелких значений сортирует вставками, а для больших например быстрой или слиянием. Ну в четвертом тоже все просто - уже рассказали.
0
|
4 / 4 / 0
Регистрация: 13.04.2013
Сообщений: 25
|
|
26.07.2013, 23:19 | 44 |
Оставлю и я свой комментарий, хотя, возможно, что-то из этого уже прозвучало.
Задача 1. Наверняка для проверки представления о работе с битами. Твоё решение было бы нормальным, если бы вместо рекурсии сделать обычный цикл, всё же на скорость это влияет катастрофически. Задача 2. Это даже близко не рандом. Контрпример к твоему решению - запусти свою программу для массива на 1000 элементов, 20 перестановок на неё не особо то и повлияют. Задача 3. Сортировка. Много кода, не стал вчитываться. Возможно там и всё хорошо. Но, в любом случае, основным критерием выступает не сделанная сортировка, а метод, который употребил человек. По этому вопросу пример куча, и то, разобрался ли опрашиваемый в более быстрых и интересных способах реализации задачи, или сделал "в лоб", очень многое показывает о его стремлении к красивому. Задача 4. Стандартная олимпиадная задачка, решается в 4 строчки. Не пишу ответ, дабы не портить никому кайф. Маленькая подсказка Кликните здесь для просмотра всего текста
сложность алгоритма О(N)
Судя по результатам теста ТС 2 задачи из 4 завалил (вторая и 4ая). А при 50% результате отказ действительно предсказуем. Как-никак, а опыт имеет огромное значение, если действительно хотите работать по данной специальности - нужно больше практиковаться.
1
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|
26.07.2013, 23:25 | 45 |
Ну дык нужно же где-то хранить битовый результат, хотя все на усмотрение программиста.
Для этой сортировки понадобятся два временных массива, что ИМХО не хорошо. Или если брать простой алгоритм пдсчета, то это та же фигня, что просто взять массив и заполнить сразу его числами от 1 до N(самый быстрый алгоритм получается - массив любой длины сортируется в один проход ^_^).
0
|
26.07.2013, 23:30 [ТС] | 46 |
Конечно же Вот только чтобы получить больше опыта, нужно куда то устроиться в подмастерье... а чтобы это сделать, нужно больше опыта Преподавателя у меня нет, универ я закончил 5 лет назад и из головы уже многое повылетало. Не буду же я на форуме по каждой задаче спрашивать оптимальные алгоритмы решения. Курсы не признаю вовсе Но я не собираюсь опускать руки. Надеюсь, толк из меня будет вскоре
0
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|
26.07.2013, 23:32 | 47 |
Ну дык, а книжки умные кто будет читать? Вооружись Корменом и Кнутом, прочитай - будешь сам оптимальные алгоритмы придумывать.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
26.07.2013, 23:38 | 49 |
Оптимальность... Оптимальность далеко не всегда важна. Зависит от задач, зависит от компании, зависит, в конце концов, от предметной области. Чаще всего лучше написать красивый, понятный код, нежели писать swap через битовые операции.
0
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|
26.07.2013, 23:45 | 50 |
Хороший программист легко напишет оптимальный алгоритм красиво и понятно. Я, например, считаю, что оптимальность очень важна. Одно дело когда ты пишешь поиск подстроки прямым поиском в несколько строк, а другое - когда тот же поиск, но алгоритмом Боуера и Мура. Второе выглядит многим красивее...
Мне кажется, что красота кода, его понятность и его оптимальность - понятия схожи, и одно без другого как-то и не встречаются.
0
|
kamre
|
26.07.2013, 23:54
#51
|
0
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|
27.07.2013, 00:02 | 53 |
Тут я с тобой солидарен =) А еще C++ хорош своей креативностью, любой баг в программе подпирается костылем, цвет, размер, форма и позиция которого подбираются на любой вкус ^_^
0
|
7 / 7 / 5
Регистрация: 06.10.2012
Сообщений: 140
|
|
27.07.2013, 00:03 | 54 |
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
27.07.2013, 00:07 | 55 |
Я вероятно соглашусь вцелом, но не соглашусь в частностях. Хороший программист знает что и где выбрать. Где-то удобнее простой поиск подстроки, где-то удобнее алгоритмом Боуера и Мура, где-то удобнее использовать регулярные выражения, а где-то этот поиск вообще не нужен.
0
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|
27.07.2013, 00:11 | 56 |
Лучше хорошо допилить один язык, остальные пойдут намного проще. Вначале я неплохо в школе выучил C, после него C++ пошел легко. Далее Java - один хрен что и C++, а C# - считай содран с Явы. А дальше совсем все просто пошло: Python, Фортран, Хаскел, Лисп, Асма. За пару дней запоминаешь синтаксис языка и его особенности и уже можно писать что-либо осмысленное.
Добавлено через 1 минуту Это как раз и называется поиском оптимального решения для конкретной задачи.
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
27.07.2013, 00:14 | 57 |
nonedark2008,
Кажется вы немножко себе противоречите. Впрочем, пустое. В целом, вы сказали все верно.
0
|
nonedark2008
|
27.07.2013, 00:17
#58
|
0
|
27.07.2013, 08:03 | 59 |
судя по прототипу функции
void numberAsBinary(char *_result, unsigned int _number); результат сразу помещать в строку result, дополнительные массивы вряд ли приветствуются. откуда там два временных массива? там только массив count из 11 элементов всего. а вообще стоило пару сортировок прислать с комментариями. стандартная детская задачка, решается в две строчки кода. При оценке ее сложности можно O-большим не пользоваться, чтобы подчеркнуть, что сложность алгоритма W(N) < N.
0
|
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
|
||||||
29.07.2013, 22:26 | 60 | |||||
Что-то мне кажется что эта задача с подвохом. У нас уже есть перемешанный массив с числами от 1 до N.
И теперь нужно произвести его сортировку. Но тогда можно и таким способом
0
|
29.07.2013, 22:26 | |
29.07.2013, 22:26 | |
Помогаю со студенческими работами здесь
60
ООП. Тестовое задание собеседования. Тестовое задание для трудоустройства Небольшое тестовое задание в финской компании. Тестовое задание от работадателя. Хотелось бы услышать критику. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |