User Tools

Site Tools


C question

Types

  • Q1: Что выведет код?
#include <stdio.h>
#include <stdint.h>
 
int main(void) {
   int dir = -12;
   printf("%u\n", dir);
}
  • A

  • Q2: Что выведет код?
#include <stdio.h>
#include <stdint.h>
 
int main(void) {
   int32_t dir = 0x01 << 2;
   printf("%d\n", dir);
}
  • A

  • Q3: Является ли результат операции сдвига зависимым от порядка байтов в аппаратной архитектуре?
  • A

  • Q4: Что означает uint64_t * foo = NULL ?
  • A

  • Q: Отличается ли результат sizeof(char*) и sizeof(int64_t*)?
  • A

Memory


  • Q11: Какой функцией выделяется память?
  • A

  • Q12: Является ли функция выделения памяти стандартом и каким?
  • A

  • Q13: Корректным ли является код
#include <stdio.h>
#include <stdlib.h>
 
struct descr {
    int id;
};
 
int main(void) {
  struct descr* d;
  for (int i = 0; i < 1024; i++) {
      d = malloc(sizeof(struct descr));
      d->id = i;
      printf("%d\n", d->id);
  }
}
  • A

  • Q14: Какие основные области памяти программы вы знаете, и для чего они предназначены?
  • A

  • Q15: В какой области памяти располагаются переменные и в каких случаях?
  • A

  • Q16: В каком сегменте памяти будет располагаться данные переменной foo после компиляции и далее при исполнении:
#include <stdio.h>
 
void print(void) {
    char* foo = "qwerty123456";
    printf("%s\n", foo);
}
 
int main(void) {
  print();
}
  • A

  • Q17: Может ли быть в одной программе несколько стеков памяти?
  • A

Arrays

  • Q21: Что выведет код:
#include <stdio.h>
 
int main(void) {
   char* str = "qwerty123456";
   printf("%s\n", str[3]);
}
  • A

  • Q22: Какова длина массива, объявленного char* str = “qwerty”?
  • A

  • Q23: Какова длина массива, объявленного char* str = “йцукенг”?
  • A

  • Q24: В чем базовое отличие strcpy() и memcpy()?
  • A

Structures

  • Q31: Программа выведет два числа. Будут ли они одинаковыми?
#include <stdio.h>
#include <stdint.h>
 
struct descr {
    int32_t id;
    int64_t n1;
    int64_t n2;
};
 
int main(void) {
  printf("%lu\n", sizeof(struct descr));
  printf("%lu\n", sizeof(int32_t) + sizeof(int64_t) * 2);
  return 0;
}
  • A

Funcions

  • Q41: Как вернуть код ошибки типа int из функции?
  • A

  • Q42: Будет ли корректным код ниже и что выведет printf()?
#include <stdio.h>
#include <stdint.h>
 
void rotate(int32_t* var) {
    var += 1;
}
 
int main(void) {
   int32_t dir = 12;
   rotate(&dir);
   printf("%d\n", dir);
}
  • A

  • Q43: Будет ли корректным код ниже и что выведет printf()?
#include <stdio.h>
#include <stdint.h>
 
struct descr {
  int32_t dir;
};
 
void rotate(struct descr* descr) {
    descr->dir++;
}
 
int main(void) {
   struct descr d;
   d.dir = 12;
   rotate(&d);
   printf("%d\n", d.dir);
}
  • A

  • Q44: Будет ли корректным код ниже и какие функции будут объявлены в obj файле?
#include <stdio.h>
#include <stdint.h>
 
void rotate1(int32_t* var) {
    var += 1;
}
 
static void rotate2(int32_t* var) {
    var += 1;
}
 
int main(void) {
   int32_t dir = 12;
   rotate1(&dir);
   rotate2(&dir);
   printf("%d\n", dir);
}
  • A

  • Q45: Откомпилируется ли данный код?
#include <stdio.h>
 
typedef struct  {
  char* message;
} descr_t;
 
void run(const descr_t* descr) {
    descr->message = "qwerty";
}
 
int main(void) {
   descr_t descr;
   run(&descr);
   printf("%s\n", descr.message);
   return 0;
}
  • A

Operation system

  • Q51: Что такое системный вызов?
  • Q52: В чем отличие write() и fwrite()?

Mutexes and semaphores

  • Q61: В чем общие цели создания семафоров и мютексов?
  • A

  • Q62: В чем основные отличие семафоров и мютексов?
  • A

IPC

  • Q71: Какие виды коммуникации между процесссами вы знаете?
  • A