Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 432, средняя оценка - 4.73
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
#1

Практические задания из собеседований - C++

31.05.2011, 10:02. Просмотров 53331. Ответов 42
Метки нет (Все метки)

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

1. Написать функцию, определяющую является ли заданное число степенью двойки.
2. Написать функцию, определяющую содержит ли односвязный список циклы (например, последний ссылается на второй).

Просьба решения выкладывать под CUT'ом.
15
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2011, 10:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Практические задания из собеседований (C++):

Получить практические навыки реализации классов на С++ - C++ Builder
помогите пожалуйста люди )

Где можно найти практические задания по с++ - C++
где можно найти практические задания по си и с++?

Где брать практические задания и как лучше практиковатся по ним? - C++
Как говорят, лучший способ научиться программировать - это писать программы. Хотелось в данной теме перечислить все источники, из которых...

Практические работы - C++
Практическая 1 1)Узнать, содержится ли в строке, введенной пользователем сочетание букв «ао»; 2)Запросить у пользователя массив из 7...

практические работы - C++
блин ребят помогите задали практические делать а я вообще в c# не шарю над по темам мтупенчатые массивы файловай система c# ...

Задания с собеседований - C#
Покидайте, пожалуйста, практических заданий, которые вас просили реализовать на собеседованиях (или перед собеседованием). Хочется...

42
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
09.07.2012, 02:57  [ТС] #31
ForEveR,
неа
не спасет. У нас две операции: присваивание указателю _instance адреса выделенной памяти и присваивание полю field значения 0. Тут важно то, что квалификатор volatile вступает в силу только после полной инициализации объекта, поэтому field не может быть volatile в конструкторе по определению, поэтому операции присваивания instance_ и field могут быть переупорядочены компилятором.
2
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
09.07.2012, 16:18 #32
CyBOSSeR,
#2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Singleton : noncopyable {
private:
  static volatile Singleton* volatile instance_;
 
  Singleton()
  { /* ... */ }
 
public:
  static volatile Singleton* volatile instance() {
    if (!instance_) {
      lock();
      if (!instance_) {
        volatile Singleton* volatile tmp = new volatile Singleton();
        instance_ = tmp;
      }
    }
    return instance_;
  }
};
Было интересно почитать http://www.aristeia.com/Papers/DDJ_Jul_Aug_2004_revised.pdf
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
09.07.2012, 16:30 #33
Цитата Сообщение от ForEveR Посмотреть сообщение
CyBOSSeR, #2
А что мешает, вместо указателя, завести флажок и устанавливать его при помощи атомарных операций? Будет та же блокировка с двойной проверкой, но без побочных эффектов.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
09.07.2012, 16:38 #34
Deviaphan, Насколько я понимаю, тут не говорилось об использовании С++11, буста или же конкретных либах, позволяющих использовать потоки, а так по идее ничего не мешает
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
09.07.2012, 16:42 #35
Цитата Сообщение от ForEveR Посмотреть сообщение
тут не говорилось об использовании С++11, буста или же конкретных либах,
Это WinAPI функция вроде.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
09.07.2012, 17:25 #36
Deviaphan, Ну тут ведь не только о винде полагаю)
0
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
09.07.2012, 23:34  [ТС] #37
ForEveR, все таки хотелось бы увидеть код инициализации поля, о котором я говорил.
Цитата Сообщение от Deviaphan Посмотреть сообщение
А что мешает, вместо указателя, завести флажок и устанавливать его при помощи атомарных операций?
Хотелось бы увидеть код, для Windows или нет, не важно, можно использовать все что угодно.

Добавлено через 28 минут
И еще один вопрос: как бы вы реализовали потокобезопасный singleton в рамках C++11?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
10.07.2012, 00:16 #38
cut
Судя по тому что я прочитал, есть только 1 вариант инициализации пожалуй.

C++
1
2
3
4
5
6
7
8
class Singleton
{
   Singleton()
   {
      static_cast<volatile int&>(field) = 0;
   }
   int field;
};


А на тему потокобезопасного синглтона, никсман уже вроде давал ответ на этот вопрос в сообщении №13
Ну и еще вариант в рамках С++11 http://stackoverflow.com/questions/6...ngleton-in-c11
2
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
10.07.2012, 01:32  [ТС] #39
ForEveR,
ок.
про необходимость защиты от переупорядовачивании в железе, думаю, говорить не стоит, т.к. это упомянуто в документе по ссылке, которую ты выложил


Цитата Сообщение от ForEveR Посмотреть сообщение
А на тему потокобезопасного синглтона, никсман уже вроде давал ответ на этот вопрос в сообщении №13
Да, это отличноее решение, работающее и в C++03, но C++11 дает нам гарантии, которые позволяют решить задачу
проще.

C++
1
2
3
4
5
6
7
8
9
10
11
class Singleton : noncopyable {
private:
  Singleton() {
    / * ... */
  }
public:
  static Singleton& instance() {
    static Singleton instance_;
    return instance_;
  }
};
Да, это старый добрый Meyers singleton .
2
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
10.07.2012, 13:02 #40
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Хотелось бы увидеть код
Так, я потерял нить дискуссии.
Почему этот код будет работать не правильно?
C++
1
2
3
if (!instance_) {
      lock();
      if (!instance_) {
Или речь про то, что адрес в кэше будет висеть и для второго потока не обновится?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
10.07.2012, 15:05 #41
Deviaphan, Почитай доку, которую я давал под катом в посте №32, там описываются все проблемы, которые возникают при такой реализации, дока написана Мейерсом и Александреску.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
10.07.2012, 15:26 #42
Цитата Сообщение от ForEveR Посмотреть сообщение
в посте №32
Спасибки, как-то пропустил ссылку ту.)
Тогда, раз проблема связанна с оптимизацией, можно для файла с синглтоном запретить оптимизации. Через прагмы или в свойства проекта прописать. Но не переносимо получится, разумеется.
0
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
10.07.2012, 20:45  [ТС] #43
Deviaphan, тут дело не только в компиляторе, дело в том, что операции могут переупорядовачиватся процессором, что тоже может привести к потоконебезопасности. В доке по ссылке это есть, но вскользь. Лучше почитать об этом в другом месте, например, здесь.
1
10.07.2012, 20:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2012, 20:45
Привет! Вот еще темы с ответами:

Практические задания C# - C#
Изучаю C# по &quot;Герберт Шилдт &quot;C# 3.0, 4.0. Полное руководство&quot;&quot;, но там нету практических заданий. Может кто посоветовать книжку с...

Практические задания по C# - C#
Здравствуйте. Полный новичок. Начал изучать C# неделю назад , решил начать с книги Г.Шилдт &quot;C# 4.0 полное руководство&quot;. Много примеров,...

Html Практические задания - HTML, CSS
Нужна помощь с практическими заданиями, я не успеваю( Нужен код:

Практические задания, нейросети - Искусственный интеллект
Привет. Выбрала для себя две книги: Рассела С. &quot;ИИ: современный подход&quot; и Люгера Дж. Ф. По каким сайтам/книгам можно перейти к практике?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
43
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru