
Kathu
22.03.2017
20:25:39
и на ноль делить можно, если ловить исключение которое кинется при делении на ноль)

Matway
22.03.2017
20:37:53
0.0 (он же binary64) в IEC 559 (IEEE 754) имеет мантиссу, прозрачную как слеза тестировщика. Все цифры (двоичные разряды), которые там есть - ноль.
Целочисленное деление на 0 в C++ - UB. По стандарту нет никакого исключения.


Aldar
22.03.2017
20:39:10
Ну я могу рассказать, как собеседовал. Сначала шел по С++. Очень подробно останавливался на ключевом слове const во всех его вариациях включая указатели. Писал примеры на листке с const, спрашивал скомпилиться или нет, нормальный код или нет. Потом спрашивал про конструторы, деструкторы, виртуализацию (без этого бесполезного вопроса про таблицы), опять, с примерами ну и дальше мельком остальные маловажных, неопределяющих вопросов, типо шаблонов. Если человек отвечает на const, конструкторы с деструкторами, виртуализацию, то однозначно идем дальше независимо от отрицательных результатов остальных вопросов по плюсам (типо исключений). Дальше спрашивал знает ли что такое stl. Если не знает, спрашивал про структуры. Если не знает и про структуры, давал написать код на бумаге создания массива и вставки нового элемента в него. Если код более менее правильный, просил оценить сложность его. Если не знает что такое сложность, то какой порядок операций нужно чтобы это сделать. Потом предлагал структуру списка, и просил написать код листа. Потом просил сравнить порядки и объяснял что это и есть сложность. Потом шел по дереву, давал некоторое количество чисел в ряд, и просил их расположить в дереве. Если человек рисовал не сбалансированное бинарное, спрашивал про сложность, и предлагал её уменьшить. Потом спрашивал про хеш таблицы на уровне знает или нет. Если же человек знает stl то пробегался просто по stl со стандартными вопросами, но вопрос "Почему нельзя всегда использовать простой массив" задавал всегда :)
это на джуна?


/dev
22.03.2017
20:43:43

Google

/dev
22.03.2017
21:06:41

Evgeniy
22.03.2017
21:07:28

Антон
22.03.2017
21:37:10

Pavel
22.03.2017
21:40:22
норм)

Антон
22.03.2017
21:41:11
там должно быть так:
stringpool.push_back(&((MPushsOp*)op)->str);

Alexander
22.03.2017
21:45:19

Evgeniy
22.03.2017
21:47:11

/dev
22.03.2017
21:49:57

Gregory
22.03.2017
21:51:18
Что у нас тут?
Конкурс: Ай какой я теперь незаменимый сотрудник на работе?

Антон
22.03.2017
22:00:23
Ты так думаешь?
работает же, все равно это временное решение, ибо оно приводит к утечке памяти

Andrei
22.03.2017
23:26:40

Pavel
22.03.2017
23:27:27
"сколько байт в килобайте"
вот в байте может быть 9 бит :)

Google

Anatoly
23.03.2017
01:23:44
А может и не быть

Mikhail
23.03.2017
06:15:48

Kirill
23.03.2017
06:30:36
Мне понравилось когда давали код с нным количеством ошибок, говорили объяснить код по ходу чтения строчка за строчкой и параллельно исправить ошибки
Ты и показываешь знания и не пытаешься из памяти вытащить нужное слово)
А было дело я пришел на собеседку в 12 в ушел в 2 40 сам, сказав что сдаюсь и не буду больше решать задачи)
Притом задача например была такая, реализовать на бумажке type trait is_same. Я сделал через перегрузку. Гововюрят, ок, но сделайте подругому, я сделал через статическое приватное поле которое у одинаковых типов одно на двоих, мне говорят, хорошо, но мы хотим по другому

/dev
23.03.2017
06:34:36

Kirill
23.03.2017
06:35:04
Хотели они через специализацию, но чтобы догадаться как хотел собеседующий, нужно было под часа решать задачу разными способами пока не угадаешь

Aleksei
23.03.2017
06:37:19
Вчера про const говорили. Мне кажется, это хороший вопрос. Много нюансов. Не обязательно рассказывать все, главное чтобы кандидат вообще его использовал. А то бывает, что const вообще нигде не пишут.

Kirill
23.03.2017
06:37:26
Плюс там же главное объяснить, почему вот так сделано плохо, а не сказать что говно, я бы сделал по другому)
Всмысле битовая и логическая

Aleksei
23.03.2017
06:39:07
Так я бы сам не ответил :)

Денис
23.03.2017
06:39:50

Kirill
23.03.2017
06:42:35
Ну конст метод может менять бытовое представление класса, но не менять его логически.
Тоесть есть например класс который содержит данные и свое приватное поле для каких то промежуточных расчетов, чтобы в стеке его не дергать. данные мы не поменяли, а после вызова какого то метода поле типа temp поменялось, и вроде класс тот же. А побитово нет
Вот из этого и вылезает правильно ли кандидат использует конст мьютабл или нет

/dev
23.03.2017
06:43:53
Да даже в банальном вопросе: есть вектор из 100 даблов, найдите сумму — можно закопаться. Учитывая, что сумма не ассоциативна, и результат будет плавать от порядка суммирования и кучи других факторов, а от её результата может много другого зависеть (тесселяция, например), есть что обсуждать.

Anatoly
23.03.2017
06:44:25
Сломать с дуру многое под силу

Google

Anatoly
23.03.2017
06:45:53
Смотрел доклад по так называемому мета программированию. Отличный способ взорвать мозг у соискателя

Kirill
23.03.2017
06:48:11
В итоге оно конечно никогда практически не пригодится, но это галочка, типо ты в этом разбирался, ты из наших)

Anatoly
23.03.2017
06:49:48
После чего все обнимаются
?

Kirill
23.03.2017
06:50:01
И танцуют)

Mikhail
23.03.2017
07:07:09

Evgeniy
23.03.2017
07:27:51

Anatoly
23.03.2017
07:29:06
Конечно, доклад можно скинуть
На трубе был

Evgeniy
23.03.2017
07:29:56

Anatoly
23.03.2017
07:30:51
По всей теме. Слишком узкое направление
На мой скромный взгляд конечно

Evgeniy
23.03.2017
07:31:37
Ну один конкретный вопрос можно?)

Anatoly
23.03.2017
07:33:25
Да нет же, я совершенно не понимаю в этом.

Aldar
23.03.2017
07:36:59
Ну один конкретный вопрос можно?)
#include <utility>
#include <type_traits>
template<class, class = void>
struct has_method_foo : std::false_type
{};
template<class T>
struct has_method_foo<T, std::void_t<decltype(std::declval<T>().foo())>> : std::is_same<decltype(std::declval<T>().foo()), int>::type { };
что делает и как работает?

Evgeniy
23.03.2017
07:40:10

Aldar
23.03.2017
07:41:36
да, но это и так понятно))
точнее метод foo

Evgeniy
23.03.2017
07:42:07

Google

Evgeniy
23.03.2017
07:43:45
да, но это и так понятно))
Если метода нет вообще, специализируется первая структура по SFINAE, если есть, то из сейм проверяет инт или нет

Vyacheslav
23.03.2017
08:46:24
Предполагаю, что Анатолий говорил про этот доклад https://www.youtube.com/watch?v=MbbOsKMA3rk
про рефлексию в C++14

babysitter
23.03.2017
08:51:54

Vyacheslav
23.03.2017
08:54:13
возможно )

Evgeniy
23.03.2017
09:09:35

Dmytro
23.03.2017
09:23:52
драсте)

Anatoly
23.03.2017
10:05:33

Monday Begins on Saturday
23.03.2017
10:23:09
Привет, а могу я создать шаблон который будет выглядеть вот так:
lock_space(object_mutex)
{
bool data = Obj.GetData();
calculate(data);
}а на этапе компиляции преобразовываться в вот это:
{
std::lock_guard<std::mutex> lock(object_mutex);
bool data = Obj.GetData();
calculate(data);
}
Как-нибудь можно фигурные скобки и всё что внутри шаблону передать в аргументах?

Tema
23.03.2017
10:24:07
define std::lock_guard<std::mutex> lock lock_space
как нить

Evgeniy
23.03.2017
10:24:47

Tema
23.03.2017
10:24:54

Плюшка
23.03.2017
10:25:00
ну можно сделать что-то вроде #define lock_space(x) std::lock_guard<std::mutex> lock(x)

Monday Begins on Saturday
23.03.2017
10:27:04
Всеравно непонятно как строки внутри передать.
Я просто хочу от такого избавиться:
// ...
object_mutex->lock();
Data data = Obj.GetData();
calculate(data);
object_mutex->unlock();
// ...

Evgeniy
23.03.2017
10:28:14

Tema
23.03.2017
10:28:20

mefest
23.03.2017
10:29:10

Google

Tema
23.03.2017
10:29:15
{
object_mutex(mylock);
Data data = Obj.GetData();
calculate(data);
}

mefest
23.03.2017
10:29:22

Tema
23.03.2017
10:29:24
прост незабывай скоупы делать
новомодный

/dev
23.03.2017
10:29:44

mefest
23.03.2017
10:29:55

Tema
23.03.2017
10:30:04
там разрулить просто
вынести обжэкт наружу
ну это мелочи

/dev
23.03.2017
10:30:38

Tema
23.03.2017
10:31:00
я вот чот даж не уверен

mefest
23.03.2017
10:31:55

Anatoly
23.03.2017
10:35:39
оптимизатор ничего не выбросит