Добрый день, дорогие форумчане! Подоспел быстрый квиз, взятый из собеседования на лида в крупную компанию. Как бы вы ответили?
Для каждого вопроса лишь один(!) правильный ответ.
- Процесс открывает файл, вызывает fork(). Файл в child доступен на чтение?
- A. Да
- B. Нет
- C. Перед вызовом fork() необходимо закрывать все открытые файлы
- D. Нет, файл автоматически будет закрыт системой в дочернем процессе
- E. Зависит от реализации, поведение не определено
- Участки памяти создаются при создании потока?
- A. heap
- B. stack
- C. data segment
- D. code segment
- Можно ли заблокировать cигналы SIGHUP(1), SIGKILL(9), SIGTERM(15)?
- A. да все
- B. только SIGHUP
- C. только SIGKILL
- D. только SIGTERM
- E. только SIGHUP и SIGKILL
- F. только SIGHUP и SIGTERM
- G. только SIGKILL и SIGTERTM
- В программе не установлен обработчик на сигнал SIGUSR1. Что будет, если такой сигнал пришёл?
- A. Будет проигнорирован
- B. Будет вызван обработчик по умолчанию, созданный операционной системой
- C. Программа завершит свою работу
- D. Программа перейдёт в состояние «ожидание»
- Процесс выделяет память и вызывает функцию fork(). child модифицирует память. Корректна ли такая операция и если да, то будут ли доступны изменения памяти дочернего процесса в родительском процессе?
- A. Такая операция некорректна, дочерний процесс завершит своё выполнение
- B. Такая операция некорректна, поведение системы не определено
- C. Допустимая операция, данные из дочернего процесса будут доступны в родительском
- D. Допустимая операция, данные из дочернего процесса не будут доступны в родительском
- E. Допустимая операция. Родительский процесс при изменении данных получит сигнал SIGMEM
- Почему для многих функций, например таких как readdir и strtok, существуют аналоги (readdir_r и strtok_r)?
- A. Ресурсы выделенные такими функциями не освобождаются корректно при прерывании потока.
- B. Эти функции не безопасны при возникновении асинхронных сигналов.
- C. Эти функции не потокобезопасные.
- D. Эти функции могут блокировать выполнение всех потоков процесса если они будут заблокированы до выделения запрошенных ресурсов.
- E. Ресурсы выделенные такими функциями не освобождаются корректно при нормальном завершении потока.
- Вызов select() иногда используется вместо вызова sleep() для приостановки выполнения программы на заданный период времени. Почему?
- A. на select() не может оказать влияние операции ввода-вывода.
- B. вызов select() не прерывает асинхронные операции ввода вывода во время паузы.
- C. select() не может быть прерван сигналами.
- D. вызову select() можно указать паузу с точность до микросекунд.
- E. select() позволяет процессу перехватывать сигналы, позволя при этом дождаться окончания установленной паузы.
- Что из нижеперечисленного нельзя использовать для предотвращения одновременного доступа к общему объекту из разных потоков?
- A. mutex
- B. posix semaphore
- C. flock
- D. rwlock
- При использовании схемы producer and consumer (производитель и потребитель) какой механизм синхронизации можно использовать?
- A. mutex
- B. condition variable
- C. mutex и condition variable
- Какая функция создаёт объект разделяемой памяти?
- A. CreateFileMapping
- B. shm_open
- C. mmap
- D. fcntl
- Ограничения при использовании разделяемой памяти (shared memory)?
- A. Ограничений нет
- B. Разделяемую память нельзя использовать в потоках
- C. Нельзя изменить размер созданного объекта разделяемой памяти
- D. Объект разделяемой памяти нельзя использовать совместно между не дочерними процессами
- Синхронизация доступа к данным между двумя процессами. Необходимо обеспечить наилучшую переносимость между различными Unix. Какие функции вы бы использовали для обеспечениния поставленной задачи?
- A. pthread_mutex_lock
- B. flock
- C. semop
- D. pthread_mutex_lock, flock
- E. flock, semop
- Для того, чтобы работать с дескриптором в неблокирующем режиме надо:
- A. передать специальные параметры вызову socket/open
- B. использовать select
- C. использовать fcntl