тестовые вопросы
От: Alexander Pazdnikov  
Дата: 20.06.12 08:04
Оценка:
Здравствуйте, Коллеги.

Прошу поправить мои ответы на несколько тестовых вопросов.

Спасибо.



.Q
1. Является ли язык C строгим подмножеством языка C++?

.A
По-моему, нет.
По крайней мере, усиленный контроль типов в C++ требует от большинства программ на С доработки.

.Q
4. Каков размер следующей структуры? Почему?

struct S
{
int i;
void *v;
char c;
long l;
};

.A
зависит от разрядности процессора и от принятого выравнивания адресов.

ARM — (sizeof(int) = 4, sizeof(void *) = 4, alignment = 4) — 16 байт
x86 (sizeof(int) = 4, sizeof(void *) = 4, alignment = 4) — 16 байт
x86_64 (sizeof(int) = 4, sizeof(void *) = 8, alignment = 4) — 20 байт
ia64 (sizeof(int) = 8, sizeof(void *) = 8, alignment = 8) — 32 байт

.Q
8. Предположим, есть реализация dequeue в виде двусвязного списка (то
есть есть указатели на предыдущий и следующий элементы). А
возможна ли реализация, где для связи узлов используется только
одно слово вместо двух (то есть мы хотим сэкономить одно слово
размера sizeof(struct node *))?
.A
Полагаю, речь идёт о циклическом буфере или контейнере где есть указатель на начало и указатель на конец, элементы включают указатель только на следующий элемент. Проход односторонний, с конца в начало.

.Q
9. Предположим, что в многопоточной программе в одном потоке
выполняется код

a = 3;
b = 1;

а в другом потоке

if (b == 1)
sum += a;

(оба потока видят одни и те же а и b, блокировок нет). Если
условие выполнится, то на сколько увеличится sum?

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