Re: Quiz для проф. Pay attention, please.
От: landerhigh Пират  
Дата: 06.11.23 07:53
Оценка: +1 :))
Здравствуйте, avovana, Вы писали:

A>Для каждого вопроса лишь один(!) правильный ответ.


Причем, один и тот же.

A>
A>Синхронизация доступа к данным между двумя процессами. Необходимо обеспечить наилучшую переносимость между различными Unix. Какие функции вы бы использовали для обеспечениния поставленной задачи?
A>


Спасибо за интерес к моей кандидатуре, я вам перезвоню.
www.blinnov.com
Re: Quiz для проф. Pay attention, please.
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 06.11.23 17:01
Оценка: +3
Здравствуйте, avovana, Вы писали:

A>Для каждого вопроса лишь один(!) правильный ответ.


Для некоторых — нет правильного ответа. Для некоторых — более одного.
Автору квиза предлагается пойти покурить в сторонке.

Расписывать подробнее — за деньги.
The God is real, unless declared integer.
Re[2]: Quiz для проф. Pay attention, please.
От: Pzz Россия https://github.com/alexpevzner
Дата: 09.11.23 04:48
Оценка: +1
Здравствуйте, netch80, Вы писали:

A>>Для каждого вопроса лишь один(!) правильный ответ.


N>Для некоторых — нет правильного ответа. Для некоторых — более одного.

N>Автору квиза предлагается пойти покурить в сторонке.

+100500

И к тому же, полно глупых вопросов.

Что значит, "участки памяти создаются при..."? Участки памяти "создаются" при втыкании DIMM-а в соответствующий слот. А где и какая память выделяется про создании потока — подробности реализации.

Действительно ли кому-то необходимо знать, каков дефолтовый обработчик для SIGUSR1, или это мелкая частная подробность, которую кому надо, тот посмотрит?

К чему этот вопрос, о том, чего нельзя использовать для реализации межпоточных блокировок? Чтобы проверить, знает ли человек, что flock() работает на процесс, а не на поток? Показать, как всё равно можно использовать, несмотря на эту особенность? Как вообще такие вопросы сочинаются? Небось, попросили команду помочь, кто-нибудь из разрабов, кто недавно наткнулся на особенности поведения файловых блокировок в многопоточных программая, вставил свои два слова...

Ну и т.д. Написание полной рецензии не входит в мои планы.

Сам по себе формат, когда надо просто выбирать из нескольких вариантов ответов, сомнителен.
Re[6]: Quiz для проф. Pay attention, please.
От: landerhigh Пират  
Дата: 09.11.23 14:47
Оценка: :)
Здравствуйте, avovana, Вы писали:

A>И в конце дали этот список, чтобы я быстро пробежался выставляя ответы.


Ну считай, повезло.
Если, конечно, мечтой твоей жизни не было работать в команде, где будут заниматься "оптимизацией" путем "отказа" от виртуальных функций, при этом "не замечая" жирного такого O(N^2) в соседнем файле.
www.blinnov.com
Re[7]: Quiz для проф. Pay attention, please.
От: reversecode google
Дата: 11.11.23 21:29
Оценка: +1
Здравствуйте, avovana, Вы писали:

A>Здравствуйте, reversecode, Вы писали:


R>>спасиба, мы вам перезвоним ....

R>>последняя попытка


A>
A>13. Для того, чтобы работать с дескриптором в неблокирующем режиме надо:
A>A. передать специальные параметры вызову socket/open
A>B. использовать select
A>C. использовать fcntl

A>===>
A>A.
A>sockfd = socket(AF_INET, SOCK_STREAM|SOCK_NONBLOCK, 0)
A>


само собой это и имел ввиду
но вариант ведь только один по условиям вопросника
да и надо же было что бы кто то тоже свои знание освежил

A>
A>C.
A>void set_nonblocking(int fd){
A>  int flags;
A>  flags = fcntl(fd, F_GETFL);
A>  fcntl(fd, F_SETFL, flags | O_NONBLOCK);
A>}
A>

A>Не?

ну если вы еще знаете про accept4 то ва полюбому примут в люксофт
Re[4]: Quiz для проф. Pay attention, please.
От: reversecode google
Дата: 14.11.23 08:01
Оценка: +1
так они слишком простые
еще проще чем первый квиз
только первы вопрос задористый как я отметил
Quiz для проф. Pay attention, please.
От: avovana Россия  
Дата: 06.11.23 07:24
Оценка:
Добрый день, дорогие форумчане!
Подоспел быстрый квиз, взятый из собеседования на лида в крупную компанию.
Как бы вы ответили?

Для каждого вопроса лишь один(!) правильный ответ.
1. Процесс открывает файл, вызывает fork(). Файл в child доступен на чтение?
A. Да
B. Нет
C. Перед вызовом fork() необходимо закрывать все открытые файлы
D. Нет, файл автоматически будет закрыт системой в дочернем процессе
E. Зависит от реализации, поведение не определено

2. Участки памяти создаются при создании потока?
A. heap
B. stack
C. data segment
D. code segment

3. Можно ли заблокировать cигналы SIGHUP(1), SIGKILL(9), SIGTERM(15)?
A. да все
B. только SIGHUP
C. только SIGKILL
D. только SIGTERM
E. только SIGHUP и SIGKILL
F. только SIGHUP и SIGTERM
G. только SIGKILL и SIGTERTM

4. В программе не установлен обработчик на сигнал SIGUSR1. Что будет, если такой сигнал пришёл?
A. Будет проигнорирован
B. Будет вызван обработчик по умолчанию, созданный операционной системой
C. Программа завершит свою работу
D. Программа перейдёт в состояние "ожидание"

5. Процесс выделяет память и вызывает функцию fork(). child модифицирует память. Корректна ли такая операция и если да, то будут ли доступны изменения памяти дочернего процесса в родительском процессе?
A. Такая операция некорректна, дочерний процесс завершит своё выполнение
B. Такая операция некорректна, поведение системы не определено
C. Допустимая операция, данные из дочернего процесса будут доступны в родительском
D. Допустимая операция, данные из дочернего процесса не будут доступны в родительском
E. Допустимая операция. Родительский процесс при изменении данных получит сигнал SIGMEM

6. Почему для многих функций, например таких как readdir и strtok, существуют аналоги (readdir_r и strtok_r)?
A. Ресурсы выделенные такими функциями не освобождаются корректно при прерывании потока.
B. Эти функции не безопасны при возникновении асинхронных сигналов.
C. Эти функции не потокобезопасные.
D. Эти функции могут блокировать выполнение всех потоков процесса если они будут заблокированы до выделения запрошенных ресурсов.
E. Ресурсы выделенные такими функциями не освобождаются корректно при нормальном завершении потока.

7. Вызов select() иногда используется вместо вызова sleep() для приостановки выполнения программы на заданный период времени. Почему?
A. на select() не может оказать влияние операции ввода-вывода.
B. вызов select() не прерывает асинхронные операции ввода вывода во время паузы.
C. select() не может быть прерван сигналами.
D. вызову select() можно указать паузу с точность до микросекунд.
E. select() позволяет процессу перехватывать сигналы, позволя при этом дождаться окончания установленной паузы.

8. Что из нижеперечисленного нельзя использовать для предотвращения одновременного доступа к общему объекту из разных потоков?
A. mutex
B. posix semaphore
C. flock
D. rwlock

9. При использовании схемы producer and consumer (производитель и потребитель) какой механизм синхронизации можно использовать?
A. mutex
B. condition variable
C. mutex и condition variable

10. Какая функция создаёт объект разделяемой памяти?
A. CreateFileMapping
B. shm_open
C. mmap
D. fcntl

11. Ограничения при использовании разделяемой памяти (shared memory)?
A. Ограничений нет
B. Разделяемую память нельзя использовать в потоках
C. Нельзя изменить размер созданного объекта разделяемой памяти
D. Объект разделяемой памяти нельзя использовать совместно между не дочерними процессами

12. Синхронизация доступа к данным между двумя процессами. Необходимо обеспечить наилучшую переносимость между различными Unix. Какие функции вы бы использовали для обеспечениния поставленной задачи?
A. pthread_mutex_lock
B. flock
C. semop
D. pthread_mutex_lock, flock
E. flock, semop

13. Для того, чтобы работать с дескриптором в неблокирующем режиме надо:
A. передать специальные параметры вызову socket/open
B. использовать select
C. использовать fcntl
Re[2]: Quiz для проф. Pay attention, please.
От: avovana Россия  
Дата: 06.11.23 19:02
Оценка:
Здравствуйте, netch80, Вы писали:

N>Для некоторых — нет правильного ответа. Для некоторых — более одного.


Можно пример где более одного? Если ещё не за деньги)
Re[2]: Quiz для проф. Pay attention, please.
От: gyraboo  
Дата: 06.11.23 19:14
Оценка:
Здравствуйте, landerhigh, Вы писали:

A>>Для каждого вопроса лишь один(!) правильный ответ.

L>Причем, один и тот же.

И этот ответ — Java.
Re: Quiz для проф. Pay attention, please.
От: reversecode google
Дата: 09.11.23 03:08
Оценка:
A>Добрый день, дорогие форумчане!
A>Подоспел быстрый квиз, взятый из собеседования на лида в крупную компанию.

да ну, для синьера трешевые вопросы
скорее просто срининг

A>Как бы вы ответили?

A>Для каждого вопроса лишь один(!) правильный ответ.

ну так не интересно
а как же пофлудить

A>
A>1. Процесс открывает файл, вызывает fork(). Файл в child доступен на чтение?
A>A. Да
A>B. Нет
A>C. Перед вызовом fork() необходимо закрывать все открытые файлы
A>D. Нет, файл автоматически будет закрыт системой в дочернем процессе
A>E. Зависит от реализации, поведение не определено
A>

  Скрытый текст
A


A>
A>2. Участки памяти создаются при создании потока?
A>A. heap
A>B. stack
A>C. data segment
A>D. code segment
A>

  Скрытый текст
B



A>
A>3. Можно ли заблокировать cигналы SIGHUP(1), SIGKILL(9), SIGTERM(15)?
A>A. да все
A>B. только SIGHUP
A>C. только SIGKILL
A>D. только SIGTERM
A>E. только SIGHUP и SIGKILL
A>F. только SIGHUP и SIGTERM
A>G. только SIGKILL и SIGTERTM
A>

  Скрытый текст
F


A>
A>4. В программе не установлен обработчик на сигнал SIGUSR1. Что будет, если такой сигнал пришёл?
A>A. Будет проигнорирован
A>B. Будет вызван обработчик по умолчанию, созданный операционной системой
A>C. Программа завершит свою работу
A>D. Программа перейдёт в состояние "ожидание"
A>

  Скрытый текст
C


A>
A>5. Процесс выделяет память и вызывает функцию fork(). child модифицирует память. Корректна ли такая операция и если да, то будут ли доступны изменения памяти дочернего процесса в родительском процессе?
A>A. Такая операция некорректна, дочерний процесс завершит своё выполнение
A>B. Такая операция некорректна, поведение системы не определено
A>C. Допустимая операция, данные из дочернего процесса будут доступны в родительском
A>D. Допустимая операция, данные из дочернего процесса не будут доступны в родительском
A>E. Допустимая операция. Родительский процесс при изменении данных получит сигнал SIGMEM
A>

  Скрытый текст
D


A>
A>6. Почему для многих функций, например таких как readdir и strtok, существуют аналоги (readdir_r и strtok_r)?
A>A. Ресурсы выделенные такими функциями не освобождаются корректно при прерывании потока.
A>B. Эти функции не безопасны при возникновении асинхронных сигналов.
A>C. Эти функции не потокобезопасные.
A>D. Эти функции могут блокировать выполнение всех потоков процесса если они будут заблокированы до выделения запрошенных ресурсов.
A>E. Ресурсы выделенные такими функциями не освобождаются корректно при нормальном завершении потока.
A>

  Скрытый текст
C


A>
A>7. Вызов select() иногда используется вместо вызова sleep() для приостановки выполнения программы на заданный период времени. Почему?
A>A. на select() не может оказать влияние операции ввода-вывода.
A>B. вызов select() не прерывает асинхронные операции ввода вывода во время паузы.
A>C. select() не может быть прерван сигналами.
A>D. вызову select() можно указать паузу с точность до микросекунд.
A>E. select() позволяет процессу перехватывать сигналы, позволя при этом дождаться окончания установленной паузы.
A>

  Скрытый текст
D


A>
A>8. Что из нижеперечисленного нельзя использовать для предотвращения одновременного доступа к общему объекту из разных потоков?
A>A. mutex
A>B. posix semaphore
A>C. flock
A>D. rwlock
A>

  Скрытый текст
С


A>
A>9. При использовании схемы producer and consumer (производитель и потребитель) какой механизм синхронизации можно использовать?
A>A. mutex
A>B. condition variable
A>C. mutex и condition variable
A>

  Скрытый текст
C


A>
A>10. Какая функция создаёт объект разделяемой памяти?
A>A. CreateFileMapping
A>B. shm_open
A>C. mmap
A>D. fcntl
A>

  Скрытый текст
B


A>
A>11. Ограничения при использовании разделяемой памяти (shared memory)?
A>A. Ограничений нет
A>B. Разделяемую память нельзя использовать в потоках
A>C. Нельзя изменить размер созданного объекта разделяемой памяти
A>D. Объект разделяемой памяти нельзя использовать совместно между не дочерними процессами
A>

  Скрытый текст
C


A>
A>12. Синхронизация доступа к данным между двумя процессами. Необходимо обеспечить наилучшую переносимость между различными Unix. Какие функции вы бы использовали для обеспечениния поставленной задачи?
A>A. pthread_mutex_lock
A>B. flock
A>C. semop
A>D. pthread_mutex_lock, flock
A>E. flock, semop
A>

  Скрытый текст
C или E


A>
A>13. Для того, чтобы работать с дескриптором в неблокирующем режиме надо:
A>A. передать специальные параметры вызову socket/open
A>B. использовать select
A>C. использовать fcntl
A>

  Скрытый текст
A
Re: Quiz для проф. Pay attention, please.
От: reversecode google
Дата: 09.11.23 04:59
Оценка:
давали бы уже и остальное
https://www.linux.org.ru/forum/development/17405457?cid=17405856
Re[3]: Quiz для проф. Pay attention, please.
От: avovana Россия  
Дата: 09.11.23 07:10
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>К чему этот вопрос, о том, чего нельзя использовать для реализации межпоточных блокировок? Чтобы проверить, знает ли человек, что flock() работает на процесс, а не на поток? Показать, как всё равно можно использовать, несмотря на эту особенность? Как вообще такие вопросы сочинаются? Небось, попросили команду помочь, кто-нибудь из разрабов, кто недавно наткнулся на особенности поведения файловых блокировок в многопоточных программая, вставил свои два слова...


Pzz>Ну и т.д. Написание полной рецензии не входит в мои планы.


Pzz>Сам по себе формат, когда надо просто выбирать из нескольких вариантов ответов, сомнителен.


Ну вот да. Не просто было. Собеседование было по С++. Часа 2. Потом когда думал, что уже всё, дали такой опросник(на самом деле, он ещё больше) для быстрых проставлений ответов. Без обсуждений, рассуждений вслух. Просто надо проставить. Идея узнать "как реально правильно" с тех пор осталась. Вот, решил спросить мнения форумчан) Интересно порассуждать что возможно имели ввиду. Посмотреть вопрос, так сказать, с разных, возможных сторон. Как и бывает в программирование.
Re[2]: Quiz для проф. Pay attention, please.
От: avovana Россия  
Дата: 09.11.23 07:19
Оценка:
Здравствуйте, reversecode, Вы писали:

R>ну так не интересно

R>а как же пофлудить

Спасибо за ответы!
Классно заметили, что я в т.ч. на форуме Линукса спросил. Там мнения разнятся.
Хотелось бы узнать Ваше мнение насчёт такого высказывания по 2 вопросу, что получил с cpplang.slack:
2. Участки памяти создаются при создании потока?
A. heap
B. stack
C. data segment
D. code segment


"strictly speaking, the act of creating a thread doesn’t create the arena; it gets created by the first malloc in that thread. But since the arena pointer is a thread_local information and that will have reset to null, effectively that creates a new heap too."
Re[2]: Quiz для проф. Pay attention, please.
От: avovana Россия  
Дата: 09.11.23 07:21
Оценка:
Здравствуйте, reversecode, Вы писали:

R>давали бы уже и остальное

R>https://www.linux.org.ru/forum/development/17405457?cid=17405856

Погнали)

Sockets, files, poll & …
16. Вы разрабатываете приложение обрабатывающее большое число соединений в одном процессе, у которого один поток выполнения. Код должен работать без изменений на различных unix подобных системах. Какой системный вызов вы будете использовать? A. select B. pselect C. poll D. epoll E. kqueue

17. Каким образом можно создать файл только если его нет? A. open B. lstat потом open C. readdir потом open

18. Что произойдет если процесс А производит чтение из файла, а при этом процесс Б пытается его удалить? A. файл будет удален. Дальнейшая запись в него не удастся. B. произойдёт ошибка при удалении файла. C. файл продолжит существовать до момента закрытия дескриптора процессом А. При этом его можно будет открыть из другого процесса. D. файл продолжит существовать до момента закрытия дескриптора процессом А. При этом его нельзя будет открыть из другого процесса.

19. Чем Berkeley socket() отличается от POSIX pipe()? A. отличий нет B. дескриптор, созданный функцией pipe(), доступен либо для записи, либо для чтения C. только socket() можно использовать для обмена данными между дочерними процессами D. через pipe() по умолчанию неблокирующий ввод/вывод E. pipe() нельзя использовать для обмена большим объёмом данных

20. Если у вас есть файловый дескриптор открытого файла, какую из перечисленных функций вы будете использовать при определении позиции в файле, на которую указывает этот дескриптор? A. leof B. lrange C. lpos D. lptr E. lseek

21. Какую функцию надо вызвать для символьного линка на файл, чтобы определить размер самого файла? A. symstat B. stat C. lstat D. sizeof E. statfs

22. Причины использования неблокирующих операций ввода-вывода? A. Нет других способов организовать ввод-вывод в программах с GUI. B. Некоторое оборудование, например принтеры, требуют использования неблокирующего ввода-вывода. C. Неблокирующий ввод-вывод обеспечивает выполнение операций ввода-вывода без возникновения ошибок. D. Использование неблокирующего ввода-вывода обеспечивает более лёгкую разработку програмного обеспечения и позволяет писать более компактный код. E. Операция записи может потенциально никогда не завершиться, если записываемые данные не принимаются.

Какую из следующих команд вы будете использовать при выводе списка семафоров в Linux? A. ipcs B. sessreg C. ipcrm

System
23. Какое из следующих описаний справедливо для файла ‘CMakeLists.txt’?
A. Это пользовательская инструкция, описывающая последовательность действий для сборки проекта B. Список зависимостей, необходимых для сборки проекта C. Список правил, используемых для создания Makefile.in D. Список правил, используемых для создания сборочных скриптов E. Файл, используемый командой «make» для сборки программы

Networks
24. Происходят ли повторные попытки переслать потерянный пакет при использовании протоков UDP и TCP? A. да B. нет C. только для UDP D. только для TCP

25. Какой адрес может быть использован для широковещательной передачи запросов(IP Multicast)? A. 192.168.1.0 B. 150.12.23.1 C. 0.23.45.123 D. 10.34.23.255 E. 224.10.23.10

26. Процесс и его дочерний процесс используют один и тот же сокет. Вам нужно из дочернего процесса «закрыть» сокет так, чтоб он "закрылся"и в родительском процессе. Какую функцию вы станете использовать? A. close B. shutdown C. использование одного сокета в нескольких процессах невозможно D. невозможно закрыть сокет сразу в нескольких процессах
Re[4]: Quiz для проф. Pay attention, please.
От: Pzz Россия https://github.com/alexpevzner
Дата: 09.11.23 08:02
Оценка:
Здравствуйте, avovana, Вы писали:

Pzz>>Сам по себе формат, когда надо просто выбирать из нескольких вариантов ответов, сомнителен.


A>Ну вот да. Не просто было. Собеседование было по С++. Часа 2. Потом когда думал, что уже всё, дали такой опросник(на самом деле, он ещё больше) для быстрых проставлений ответов. Без обсуждений, рассуждений вслух. Просто надо проставить. Идея узнать "как реально правильно" с тех пор осталась. Вот, решил спросить мнения форумчан) Интересно порассуждать что возможно имели ввиду. Посмотреть вопрос, так сказать, с разных, возможных сторон. Как и бывает в программирование.


Это ты собеседуешь или тебя собеседуют?

Опросник составлен плохо. Это может говорить о том, что в организации нет хорошего опыта проведения собеседований (при чем тут C++, кстати? опросник, он на тему технических подробностей POSIX API с некоторыми вкраплениями WIN32; оно одинаковым всё будет, хоть в C++, хоть в Go, хоть в Питоне).

Это не говорит само по себе об организации, что в нек всё плохо. Но может получиться так, что команда окажется слабой. А может и не.
Re[5]: Quiz для проф. Pay attention, please.
От: landerhigh Пират  
Дата: 09.11.23 08:07
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Опросник составлен плохо.


"Опросник" составлен тем, кто в вопросах разработки ПО ничего не понимает.
www.blinnov.com
Re[6]: Quiz для проф. Pay attention, please.
От: Pzz Россия https://github.com/alexpevzner
Дата: 09.11.23 08:09
Оценка:
Здравствуйте, landerhigh, Вы писали:

Pzz>>Опросник составлен плохо.


L>"Опросник" составлен тем, кто в вопросах разработки ПО ничего не понимает.


Например, девочкой из HR. Которая пришла к разрабам с просьбой, "ребят, накидайде вопросов". Ну вот они и накидали, как смогли...

Девочке ведь 1) трудно отказать 2) никто особо всерьез ее не воспринимает.
Re[3]: Quiz для проф. Pay attention, please.
От: reversecode google
Дата: 09.11.23 08:12
Оценка:
так вы определитесь один ответ или два
во всех учебниках написано насколько я знаю, новый треид — новый стек
а откуда тот стек они возьмут дело такое
но допустим новый хип — от части общего процесса отщипнут и закинут указатель на стек для нового потока

или о чем речь?
Re[4]: Quiz для проф. Pay attention, please.
От: Pzz Россия https://github.com/alexpevzner
Дата: 09.11.23 10:43
Оценка:
Здравствуйте, reversecode, Вы писали:

R>или о чем речь?


Да в том-то все и дело, что непонятно, о чем речь. Как по мне, так новая память на заводе создается, который DIMM-ы делает (вернее, микросхемы для них). А дальше только распределяется.

Ну я уж и не говорю, что в разных ОС по-разному может быть это реализовано. Линуксоиды просто рассказали о глубоких технических деталях сегодняшней реализации этого хозяйства в ихней оси.
Re[5]: Quiz для проф. Pay attention, please.
От: avovana Россия  
Дата: 09.11.23 11:53
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Это ты собеседуешь или тебя собеседуют?


Собеседовали меня. Где-то 3 С++сника.
И в конце дали этот список, чтобы я быстро пробежался выставляя ответы.

То есть, не девушка hr, как была здесь гипотеза, это предложила.

Я думаю, что по такому опроснику просто набираются баллы. И потом в том числе по нему сравниваются кандидаты.
Где-то вот алгоритмы решают за время набирая в глазах интервьюера баллы за:
+самостоятельность решения
+размышление вслух
+умение слушать подсказки
+укладывание во время
А где-то вот так, получается, опросники заполнять в режиме on-line.
Re[4]: Quiz для проф. Pay attention, please.
От: avovana Россия  
Дата: 09.11.23 11:55
Оценка:
Здравствуйте, reversecode, Вы писали:

R>или о чем речь?


Идея, мол, что есть указатель на арену в malloc'е. И он thread_local. И начинает указывать на зануленную выделенную память(какой там ОС вначале даст сегмент). Мол, вот тебе и выделение heap'a. Же.
Re[5]: Quiz для проф. Pay attention, please.
От: reversecode google
Дата: 09.11.23 12:29
Оценка:
ну если я понял то что понял
то в мусл имплементации оно не совсем так
https://git.musl-libc.org/cgit/musl/tree/src/thread/pthread_create.c

но в целом да
стек же не с воздуха берется
а с хипа процесса, вон там анонимный mmap
так что сначала хип а потом на него стек корректируют
а не в так как в том комментарии про тлс
тлс вообще до космоса(пример мюсла)
Re[3]: Quiz для проф. Pay attention, please.
От: landerhigh Пират  
Дата: 09.11.23 14:50
Оценка:
Здравствуйте, avovana, Вы писали:

A>16. Вы разрабатываете приложение обрабатывающее большое число соединений в одном процессе, у которого один поток выполнения. Код должен работать без изменений на различных unix подобных системах. Какой системный вызов вы будете использовать? A. select B. pselect C. poll D. epoll E. kqueue


sys.апстена нужно использовать. Вопрошающему такое.
Почему — предполагается подумать самостоятельно.
www.blinnov.com
Re[4]: Quiz для проф. Pay attention, please.
От: reversecode google
Дата: 09.11.23 15:52
Оценка:
это единственный божественный вопрос из всех
Re[5]: Quiz для проф. Pay attention, please.
От: Pzz Россия https://github.com/alexpevzner
Дата: 09.11.23 17:09
Оценка:
Здравствуйте, avovana, Вы писали:

A>Идея, мол, что есть указатель на арену в malloc'е. И он thread_local. И начинает указывать на зануленную выделенную память(какой там ОС вначале даст сегмент). Мол, вот тебе и выделение heap'a. Же.


Программа в любом случае имеет право сказать malloc в одном потоке, а free — в другом. И стандартная библиотека не должна этому удивляться.

Другой вопрос, что может быть попотоковое выделение памяти под кучу с мыслью, что malloc сначала поищет в этой попотоковой куче, не беря никаких блокировок, а потом в общей куче, уже под локом. А free, наоборот, тоже как-то сообразит, что если память выделена из локальной кучи, то можно ее туда возвращать не под локом.

Но это именно оптимизация, чтобы в программе, которая очень интенсивно пользуется динамической памятью, потоки не мешали друг другу. И довольно нетривиальная оптимизация, поэтому далеко не везде реализованная.
Re[2]: Quiz для проф. Pay attention, please.
От: Pzz Россия https://github.com/alexpevzner
Дата: 09.11.23 17:10
Оценка:
Здравствуйте, reversecode, Вы писали:

R>давали бы уже и остальное

R>https://www.linux.org.ru/forum/development/17405457?cid=17405856

На удивление дурацкие вопросы...

И, что приятно, еще и взятые из интернету, а не по месту придуманные.
Re[3]: Quiz для проф. Pay attention, please.
От: Pzz Россия https://github.com/alexpevzner
Дата: 09.11.23 17:12
Оценка:
Здравствуйте, avovana, Вы писали:

A>19. Чем Berkeley socket() отличается от POSIX pipe()?


Berkeley сокеты породистые, у них даже имя собственное есть. А пайпы беспородные.
Re[4]: Quiz для проф. Pay attention, please.
От: avovana Россия  
Дата: 10.11.23 11:07
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>sys.апстена нужно использовать. Вопрошающему такое.

L>Почему — предполагается подумать самостоятельно.


У меня просто сейчас подход такой — главное пройти собеседование. Т.е. не включать "фуне" на собесе. А по макс. загрузить свой ЦП, чтобы понять, что хотели и дать, что ожидали.
Исходя из своих знаний, умения ориентироваться в текущей обстановки, умения налаживания контакта с интервьюерами.

А потом уже думать насколько это было норм с их стороны. Главное от себя выдать норм.

Поэтому и интересуюсь мнениями как в итоге правильно ответить. Тогда прошёл на старшего разработчика. Но не прошёл по сумме решений на лида/архитектора.
В следующий раз умнее буду.

P.S. есть ещё задачка из "вконтакте" в core команду. Н-надо? Для разминки мозгов На собесе в моменте лишь примерное решение накидал. Интересно, кто-нибудь догадается о нормальном?
Re[6]: Quiz для проф. Pay attention, please.
От: avovana Россия  
Дата: 10.11.23 11:10
Оценка:
Здравствуйте, reversecode, Вы писали:

R>ну если я понял то что понял

R>то в мусл имплементации оно не совсем так
R>https://git.musl-libc.org/cgit/musl/tree/src/thread/pthread_create.c

R>но в целом да

R>стек же не с воздуха берется
R>а с хипа процесса, вон там анонимный mmap
R>так что сначала хип а потом на него стек корректируют
R>а не в так как в том комментарии про тлс
R>тлс вообще до космоса(пример мюсла)

Вау. Спасибо за ссылку.
Т.е. взяли с кучи памяти и этот полученный адрес стал стартом для всего стека нового треда? Правильно понял?
Re[2]: Quiz для проф. Pay attention, please.
От: Maniacal Россия  
Дата: 10.11.23 11:44
Оценка:
Здравствуйте, reversecode, Вы писали:

A>>
A>>13. Для того, чтобы работать с дескриптором в неблокирующем режиме надо:
A>>A. передать специальные параметры вызову socket/open
A>>B. использовать select
A>>C. использовать fcntl
A>>

R>
  Скрытый текст
R>A


Насчёт "А" это ты погорячился. У функции socket разве есть параметры для неблокирующего режима? Неблокирующий режим задаётся после создания сокета с помощью вызова fcntl с параметром F_SETFL и флагом O_NONBLOCK.
Теоретически, можно и с помощью select определить будет ли операция блокирующей или нет. Но это не надёжно. между select и операцией I/O сокет может уже протухнуть.
Re[3]: Quiz для проф. Pay attention, please.
От: reversecode google
Дата: 10.11.23 12:04
Оценка:
M>Насчёт "А" это ты погорячился. У функции socket разве есть параметры для неблокирующего режима?

вот вы и не прошли собеседования
нука быстро наверствывайте недостаток в знаниях
Отредактировано 10.11.2023 12:06 reversecode . Предыдущая версия .
Re[4]: Quiz для проф. Pay attention, please.
От: Maniacal Россия  
Дата: 10.11.23 12:13
Оценка:
Здравствуйте, reversecode, Вы писали:


M>>Насчёт "А" это ты погорячился. У функции socket разве есть параметры для неблокирующего режима?


R>вот вы и не прошли собеседования

R>нука быстро наверствывайте недостаток в знаниях

Первый параметр указывает на семейство адресации, второй на тип (потоковый или датаграммы с различными плюшками), третий на протокол.
В винде вообще вместо fcntl используется ioctlsocket с параметром FIONBIO и флагом 1 для перевода сокета в неблокирующий режим.
Re[5]: Quiz для проф. Pay attention, please.
От: reversecode google
Дата: 10.11.23 12:14
Оценка:
спасиба, мы вам перезвоним ....
последняя попытка
Re[5]: Quiz для проф. Pay attention, please.
От: landerhigh Пират  
Дата: 10.11.23 13:25
Оценка:
Здравствуйте, avovana, Вы писали:


A>У меня просто сейчас подход такой — главное пройти собеседование. Т.е. не включать "фуне" на собесе. А по макс. загрузить свой ЦП, чтобы понять, что хотели и дать, что ожидали.


Подумай, так ли тебе хочется работать с пероснажами, которые уже на собеседовании дают понять, что они ничего не понимают в разработке?
www.blinnov.com
Re[6]: Quiz для проф. Pay attention, please.
От: Stanislav V. Zudin Россия  
Дата: 10.11.23 13:29
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>они ничего не понимают в разработке?


А как ты это понял?
По содержимому вопросника? ИМХО по нему можно только понять, что они не умеют проводить собеседование.
_____________________
С уважением,
Stanislav V. Zudin
Re[6]: Quiz для проф. Pay attention, please.
От: reversecode google
Дата: 10.11.23 13:30
Оценка:
а может его пытается собеседоват гендир
по вопросам оставшимися от старых работников
старые все срулили на большие зп
и его наймут на место этого главного который и будет рулить разработкой
о как закрутил
Re[7]: Quiz для проф. Pay attention, please.
От: landerhigh Пират  
Дата: 10.11.23 13:43
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>Здравствуйте, landerhigh, Вы писали:


L>>они ничего не понимают в разработке?


SVZ>А как ты это понял?

SVZ>По содержимому вопросника? ИМХО по нему можно только понять, что они не умеют проводить собеседование.

А значит, им пофиг, кого они в итоге наймут и с кем им придется работать ==> ничего не понимают в разработке.
www.blinnov.com
Re[8]: Quiz для проф. Pay attention, please.
От: Stanislav V. Zudin Россия  
Дата: 10.11.23 13:47
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>>>они ничего не понимают в разработке?


SVZ>>А как ты это понял?


L>А значит, им пофиг, кого они в итоге наймут и с кем им придется работать ==> ничего не понимают в разработке.


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

Очень похоже, как было в Люксофте.
_____________________
С уважением,
Stanislav V. Zudin
Re[9]: Quiz для проф. Pay attention, please.
От: landerhigh Пират  
Дата: 10.11.23 13:55
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>У меня сложилось впечатление, что опросник составляют одни люди (никак не заинтересованные), первичное собеседование с этим опросником проводят другие люди (мало понимающие в предметной области), а нанимать будут в группу к третьим и вот тут может быть более-менее вменяемое собеседование.


И эта группа "третьих" будет постоянно говорить, что вменяемых кандидатов нет.
www.blinnov.com
Re[10]: Quiz для проф. Pay attention, please.
От: Stanislav V. Zudin Россия  
Дата: 10.11.23 14:00
Оценка:
Здравствуйте, landerhigh, Вы писали:

SVZ>>У меня сложилось впечатление, что опросник составляют одни люди (никак не заинтересованные), первичное собеседование с этим опросником проводят другие люди (мало понимающие в предметной области), а нанимать будут в группу к третьим и вот тут может быть более-менее вменяемое собеседование.


L>И эта группа "третьих" будет постоянно говорить, что вменяемых кандидатов нет.


К ним будут просачиваться кандидаты, которые помнят АПИ наизусть. Могут оказаться вполне неплохие разработчики.

ЗЫ. Но зубрить апи — странное занятие.
_____________________
С уважением,
Stanislav V. Zudin
Re[11]: Quiz для проф. Pay attention, please.
От: landerhigh Пират  
Дата: 10.11.23 14:06
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>К ним будут просачиваться кандидаты, которые помнят АПИ наизусть.


Когда-то давно, в прошлом веке, многие АПИ можно было понмить дословно.

SVZ>Могут оказаться вполне неплохие разработчики.


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

SVZ>ЗЫ. Но зубрить апи — странное занятие.


А сейчас ты либо можешь вызубрить АПИ, либо научиться в программирование.
www.blinnov.com
Re[9]: Quiz для проф. Pay attention, please.
От: avovana Россия  
Дата: 10.11.23 18:54
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>Очень похоже, как было в Люксофте.


Ну всё верно. Крупная компания. С подходом, как сейчас принято(к счастью или сожалению): "Мы нанимаем в компанию в первую очередь, а не в команду".
Что, мол, пройдя общее собеседование уже с тобой связываются команды, которым хватило твоих набранных баллов или ещё чего-то там. И ты выбираешь с кем пообщаться.
И какую команду в итоге выбрать для работы.
Re[6]: Quiz для проф. Pay attention, please.
От: avovana Россия  
Дата: 11.11.23 21:23
Оценка:
Здравствуйте, reversecode, Вы писали:

R>спасиба, мы вам перезвоним ....

R>последняя попытка


13. Для того, чтобы работать с дескриптором в неблокирующем режиме надо:
A. передать специальные параметры вызову socket/open
B. использовать select
C. использовать fcntl

===>
A.
sockfd = socket(AF_INET, SOCK_STREAM|SOCK_NONBLOCK, 0)

C.
void set_nonblocking(int fd){
  int flags;
  flags = fcntl(fd, F_GETFL);
  fcntl(fd, F_SETFL, flags | O_NONBLOCK);
}

Не?
Re[3]: Quiz для проф. Pay attention, please.
От: avovana Россия  
Дата: 14.11.23 07:58
Оценка:
Здравствуйте, avovana, Вы писали:

R>>давали бы уже и остальное

R>>https://www.linux.org.ru/forum/development/17405457?cid=17405856

A>Погнали)


A>Sockets, files, poll & …...


@reversecode, гоу?
Re[3]: Quiz для проф. Pay attention, please.
От: reversecode google
Дата: 15.11.23 04:30
Оценка:
Здравствуйте, avovana, Вы писали:

A>Здравствуйте, reversecode, Вы писали:


R>>давали бы уже и остальное

R>>https://www.linux.org.ru/forum/development/17405457?cid=17405856

A>Погнали)



A>Sockets, files, poll & …

A>16. Вы разрабатываете приложение обрабатывающее большое число соединений в одном процессе, у которого один поток выполнения. Код должен работать без изменений на различных unix подобных системах. Какой системный вызов вы будете использовать?
A> A. select
A> B. pselect
A> C. poll
A> D. epoll
A> E. kqueue

A)

A>17. Каким образом можно создать файл только если его нет?

A> A. open
A> B. lstat потом open
A> C. readdir потом open

A)

A>18. Что произойдет если процесс А производит чтение из файла, а при этом процесс Б пытается его удалить?

A> A. файл будет удален. Дальнейшая запись в него не удастся.
A> B. произойдёт ошибка при удалении файла.
A> C. файл продолжит существовать до момента закрытия дескриптора процессом А. При этом его можно будет открыть из другого процесса.
A> D. файл продолжит существовать до момента закрытия дескриптора процессом А. При этом его нельзя будет открыть из другого процесса.

D)

A>19. Чем Berkeley socket() отличается от POSIX pipe()?

A> A. отличий нет
A> B. дескриптор, созданный функцией pipe(), доступен либо для записи, либо для чтения
A> C. только socket() можно использовать для обмена данными между дочерними процессами
A> D. через pipe() по умолчанию неблокирующий ввод/вывод
A> E. pipe() нельзя использовать для обмена большим объёмом данных

E)

A>20. Если у вас есть файловый дескриптор открытого файла, какую из перечисленных функций вы будете использовать при определении позиции в файле, на которую указывает этот дескриптор?

A> A. leof
A> B. lrange
A> C. lpos
A> D. lptr
A> E. lseek

E)

A>21. Какую функцию надо вызвать для символьного линка на файл, чтобы определить размер самого файла?

A> A. symstat
A> B. stat
A> C. lstat
A> D. sizeof
A> E. statfs

B)

A>22. Причины использования неблокирующих операций ввода-вывода?

A> A. Нет других способов организовать ввод-вывод в программах с GUI.
A> B. Некоторое оборудование, например принтеры, требуют использования неблокирующего ввода-вывода.
A> C. Неблокирующий ввод-вывод обеспечивает выполнение операций ввода-вывода без возникновения ошибок.
A> D. Использование неблокирующего ввода-вывода обеспечивает более лёгкую разработку програмного обеспечения и позволяет писать более компактный код.
A> E. Операция записи может потенциально никогда не завершиться, если записываемые данные не принимаются.

D)

A>Какую из следующих команд вы будете использовать при выводе списка семафоров в Linux?

A> A. ipcs
A> B. sessreg
A> C. ipcrm

A)

A>System

A>23. Какое из следующих описаний справедливо для файла ‘CMakeLists.txt’?
A> A. Это пользовательская инструкция, описывающая последовательность действий для сборки проекта
A> B. Список зависимостей, необходимых для сборки проекта
A> C. Список правил, используемых для создания Makefile.in
A> D. Список правил, используемых для создания сборочных скриптов
A> E. Файл, используемый командой «make» для сборки программы

D)

A>Networks

A>24. Происходят ли повторные попытки переслать потерянный пакет при использовании протоков UDP и TCP?
A> A. да
A> B. нет
A> C. только для UDP
A> D. только для TCP

D)

A>25. Какой адрес может быть использован для широковещательной передачи запросов(IP Multicast)?

A> A. 192.168.1.0
A> B. 150.12.23.1
A> C. 0.23.45.123
A> D. 10.34.23.255
A> E. 224.10.23.10

E)

A>26. Процесс и его дочерний процесс используют один и тот же сокет. Вам нужно из дочернего процесса «закрыть» сокет так, чтоб он "закрылся"и в родительском процессе. Какую функцию вы станете использовать?

A> A. close
A> B. shutdown
A> C. использование одного сокета в нескольких процессах невозможно
A> D. невозможно закрыть сокет сразу в нескольких процессах

D)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.