A>Добрый день, дорогие форумчане!
A>Подоспел быстрый квиз, взятый из собеседования на лида в крупную компанию.
да ну, для синьера трешевые вопросы
скорее просто срининг
A>Как бы вы ответили?
A>Для каждого вопроса лишь один(!) правильный ответ.
ну так не интересно
а как же пофлудить
A>A>1. Процесс открывает файл, вызывает fork(). Файл в child доступен на чтение?
A>A. Да
A>B. Нет
A>C. Перед вызовом fork() необходимо закрывать все открытые файлы
A>D. Нет, файл автоматически будет закрыт системой в дочернем процессе
A>E. Зависит от реализации, поведение не определено
A>
A>A>2. Участки памяти создаются при создании потока?
A>A. heap
A>B. stack
A>C. data segment
A>D. code segment
A>
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>
A>A>4. В программе не установлен обработчик на сигнал SIGUSR1. Что будет, если такой сигнал пришёл?
A>A. Будет проигнорирован
A>B. Будет вызван обработчик по умолчанию, созданный операционной системой
A>C. Программа завершит свою работу
A>D. Программа перейдёт в состояние "ожидание"
A>
A>A>5. Процесс выделяет память и вызывает функцию fork(). child модифицирует память. Корректна ли такая операция и если да, то будут ли доступны изменения памяти дочернего процесса в родительском процессе?
A>A. Такая операция некорректна, дочерний процесс завершит своё выполнение
A>B. Такая операция некорректна, поведение системы не определено
A>C. Допустимая операция, данные из дочернего процесса будут доступны в родительском
A>D. Допустимая операция, данные из дочернего процесса не будут доступны в родительском
A>E. Допустимая операция. Родительский процесс при изменении данных получит сигнал SIGMEM
A>
A>A>6. Почему для многих функций, например таких как readdir и strtok, существуют аналоги (readdir_r и strtok_r)?
A>A. Ресурсы выделенные такими функциями не освобождаются корректно при прерывании потока.
A>B. Эти функции не безопасны при возникновении асинхронных сигналов.
A>C. Эти функции не потокобезопасные.
A>D. Эти функции могут блокировать выполнение всех потоков процесса если они будут заблокированы до выделения запрошенных ресурсов.
A>E. Ресурсы выделенные такими функциями не освобождаются корректно при нормальном завершении потока.
A>
A>A>7. Вызов select() иногда используется вместо вызова sleep() для приостановки выполнения программы на заданный период времени. Почему?
A>A. на select() не может оказать влияние операции ввода-вывода.
A>B. вызов select() не прерывает асинхронные операции ввода вывода во время паузы.
A>C. select() не может быть прерван сигналами.
A>D. вызову select() можно указать паузу с точность до микросекунд.
A>E. select() позволяет процессу перехватывать сигналы, позволя при этом дождаться окончания установленной паузы.
A>
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>
A>A>10. Какая функция создаёт объект разделяемой памяти?
A>A. CreateFileMapping
A>B. shm_open
A>C. mmap
A>D. fcntl
A>
A>A>11. Ограничения при использовании разделяемой памяти (shared memory)?
A>A. Ограничений нет
A>B. Разделяемую память нельзя использовать в потоках
A>C. Нельзя изменить размер созданного объекта разделяемой памяти
A>D. Объект разделяемой памяти нельзя использовать совместно между не дочерними процессами
A>
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>
A>A>13. Для того, чтобы работать с дескриптором в неблокирующем режиме надо:
A>A. передать специальные параметры вызову socket/open
A>B. использовать select
A>C. использовать fcntl
A>