LINUX.ORG.RU

Quiz для профф. Pay attention, please.

 ,


0

3

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

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

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

Сегодня ещё получил ответ про heap. Доказывали, что надо и его указать.

«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.»

avovana7
() автор топика
Ответ на: комментарий от avovana7

«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.»

Это уже от аллокатора зависит. Если у тебя аллокатор без арены, то нет.

cumvillain
()
Ответ на: комментарий от avovana7

«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.»

Ну я сейчас полез смотреть эти ваши pthreads. Там четко написано что:

Each thread has a unique:
Thread ID
set of registers, stack pointer
stack for local variables, return addresses  <==== Ответ: B. stack
signal mask
priority
Return value: errno
Obezyan
()