Найти тему
IT - Это просто

Самые популярные (50+) вопросы на собеседовании по языку "C"

Вот 50+ часто задаваемых вопросов и ответов на собеседовании, которые определенно помогут вам пройти одно из самых сложных собеседований.

Всем салют, друзья!

1. В чем разница между методами sprintf () и printf ()?
Метод sprint () работает аналогично методу printf () за исключением одной небольшой причины. Метод printf () записывает вывод на экран консоли, тогда как метод sprintf () записывает вывод в массив символов.

2. Когда необходимо использовать тип внешних данных для переменной?
Внешние переменные также называются глобальными переменными. Внешний следует использовать, если вам нужно, чтобы одна переменная была доступна для нескольких функций.

3. Каков диапазон значений целого числа в C?
16-разрядный компилятор: от -32768 до 32767
32-разрядный компилятор: от - 2147483648 до 2147483647

-2

4. Что такое метод передачи вызова по ссылке?
При вызове по ссылочному методу параметры передаются другим методам с использованием их адресов. Например: function1 (& a, & b). Здесь мы передаем номер местоположения адреса a и b функции function1. Эта стратегия манипулирует фактическими аргументами.

5. Перечислите преимущества макросов перед переменными.
Преимущества использования макросов перед переменными заключаются в следующем:
компилятор может генерировать более быстрый и компактный код для констант, а не для переменных.
Всегда существует риск того, что переменная может быть случайно изменена в программе.

6. В чем разница между || и |?
|| является логическим оператором и произносится как оператор ИЛИ, тогда как | является побитовым оператором ИЛИ.

7. Для чего используется ключевое слово continue?
Ключевое слово Continue позволяет нам передать управление программой обратно в самую первую строку текущего цикла, тем самым минуя следующие операторы после ключевого слова. Продолжение обычно связано с блоком IF.

8. Как сделать так, чтобы метод scanf () принимал многословные строки?
Функция Scanf () по умолчанию принимает одну строку. Однако метод scanf () может принимать строки из нескольких слов, используя следующий метод:
scanf («% [^ \ n] s», str);
Таким образом, метод scanf () принимает ввод до тех пор, пока не будет нажата клавиша Enter.

9. В чем разница между «А» и «А»?
«A» - символьная константа, а «A» - строковая константа.

10. Поддерживает ли Linux Ubuntu файл заголовка conio.h?
Нет, библиотека GCC в Linux Ubuntu не содержит определений для заголовочного файла conio.h.

11. Что такое спецификатор формата или доступ к адресу с помощью указателей в Windows и Linux?
Указатель доступа к адресу в Windows:% u
Указатель доступа к адресу в Linux:% p

12. Опишите оператор модуля?
Оператор модуля используется для получения значения остатка при делении одного целого числа на другое целое число. Оператор модуля не может работать со значениями типа Float. Например: 10% 2 = 0

13. Необходим ли блок Else для соответствующего блока if?
Нет, блок If обычно не зависит от блока Else. Блок «Иначе» используется только тогда, когда должен использоваться условный подход.

14. В чем разница между && и &?
&& является логическим оператором и произносится как оператор И, тогда как & является побитовым оператором И.

15. Зарегистрируйте оператора сравнения и оператора присваивания.
Оператор присваивания используется для присвоения или установки значения переменной, тогда как оператор сравнения используется для проверки условия.
Оператор присваивания: =
Оператор сравнения: ==

16. Объясните условный оператор.
Условный оператор также называется тернарным оператором. Синтаксис условного оператора: выражение 1? выражение 2: выражение 3
Выражение 1 включает условие. В зависимости от его значения, если Условие оценивается как Истина, будет выполнено выражение 2, а если Выражение 1 оценивается как Ложь, выражение 3 будет оценено.

17. В чем разница между циклом «Пока» и «Выполнить»?
Цикл «пока» проверяет условие перед выполнением следующего набора операторов, тогда как цикл «пока» сначала выполняет набор операторов один раз, а затем проверяет условие. В этом случае оператор будет выполнен хотя бы один раз, даже если условие оценивается как ложное.

18. Для чего используется ключевое слово break?
Ключевое слово break позволяет нам передать Control в самый первый оператор, который происходит после текущего цикла. Таким образом, он выводит контроль выполнения из цикла. Разрыв обычно используется с блоками ПЧ и переключателями.

19. В чем преимущество структуры корпуса коммутатора перед блоком IF?
Структура Switch Case приводит к более структурированной программе, а уровень отступов управляем, тем более, если есть несколько операторов с каждым случаем Switch.

20. Укажите ограничения на структуру корпуса коммутатора?
Выражение с плавающей запятой нельзя проверить в случае переключения.
Случай никогда не может иметь выражение переменной, такое как c + 5.
Недопустимо использовать одни и те же выражения для нескольких наблюдений.

21. Какое значение имеет нулевой символ в строке?
Нулевой символ представлен \ 0. Он отличается от 0. Нулевой символ - это завершающий символ для массива символов, т. Е. Строки. Это единственный способ отследить конец строки.

22. В чем разница между function () и function (); ?
function () включает определение функции, тогда как function (); это синтаксис объявления функции.

23. Какова роль возврата?
При выполнении оператора return он немедленно передает управление обратно вызывающей функции.
Он возвращает значение, указанное в круглых скобках после оператора return, вызывающей функции.

24. Объясните класс автоматического хранения.
Синтаксис: auto int a;
Хранение:
Срок службы памяти : до тех пор, пока элемент управления не останется в блоке, в котором определена переменная.
Начальное значение по умолчанию: Объем значения мусора
: Локально для блока, в котором инициализирована переменная

25. В чем разница между методами scanf () и gets ()?
Метод scanf () не может принимать строки из нескольких слов (включая пробел), тогда как метод gets () может помочь принять строки из нескольких слов.

26. Объясните соглашение о вызовах в пользовательских функциях?
Он описывает в основном две вещи:
порядок, в котором аргументы передаются функции.
Также упоминается, какая функция выполняет очистку переменных, когда элемент управления возвращается из функции.
Чаще всего используется стандартное соглашение о вызовах.

27. Что такое метод передачи вызова по значению?
В методе вызова по значению параметры передаются другим методам с использованием их значений. Например: function1 (a, b)
Здесь мы передаем значения a и b функции function1.

28. Что такое оператор отмены ссылки?
Оператор отмены ссылки обозначается звездочкой *. Он используется для хранения адреса идентификатора в программировании на C.

29. Зарегистрируйте классы хранения в языке программирования C.
Классы хранилища следующие:
Класс автоматического хранилища Класс
хранилища Класс
статического хранилища Класс
внешнего хранилища

30. Объясните класс хранения регистров.
Синтаксис: register int a;
Хранение: регистры ЦП
Срок службы: до тех пор, пока управление не останется в пределах блока, в котором определена переменная.
Начальное значение по умолчанию: значение мусора.
Объем: локально для блока, в котором инициализируется переменная.

31. В чем разница между методами getch () и getche ()?
Оба этих метода позволяют пользователю прочитать один символ сразу после его ввода, не дожидаясь нажатия клавиши Enter. Однако в методе getche () символ отображается эхом после его ввода, тогда как в методе getch () эхо символа отсутствует.

32. Когда требуется использовать статический тип данных для переменной?
Класс статического хранилища следует использовать только тогда, когда вы хотите, чтобы значение переменной было постоянным между разными функциями одной и той же программы.

33. В чем разница между методами getchar () и fgetchar ()?
Основное различие между ними в том, что getchar () - это макрос, а fgetchar () - это функция.

34. Объясните класс статической памяти.
Синтаксис: static int a
Хранение:
Срок службы памяти : Значение сохраняется между различными функциями
Начальное значение по умолчанию: Ноль
Область действия: Локально для блока, в котором инициализирована переменная

35. Когда необходимо использовать автоматический тип данных для переменной?
Вероятно, это наиболее распространенный тип данных, используемый для любой переменной. Приставка auto не обязательна. Если у вас нет особой потребности в переменной, вам следует выбрать автоматический класс хранения.

36. Что такое директива pragma?
Это директива специального назначения, которую можно использовать для включения или выключения определенных функций. Это может помочь вам отменить предупреждения или любые другие ошибки. В C доступно множество директив pragma, а именно:
#pragma startup
#pragma exit
#pragma warn

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

38. Включите шаги в процесс создания программы на языке Си.
Программа AC выполняется со следующими шагами:
Файл
исходного кода C Расширенный исходный код Код
сборки
Связывание объектного кода других библиотек
Исполняемый код

39. Перечислите операции, которые можно выполнять с указателем.
Операции, которые могут быть выполнены с использованием указателя в C, следующие:
Добавление числа к указателю
Вычитание числа из указателя
Вычитание одного указателя из другого
Сравнение двух переменных указателя

40. Объясните класс внешнего хранилища.
Синтаксис: extern int a;
Хранение:
Срок службы памяти : Пока программа не прекращает выполнение
Начальное значение по умолчанию: Ноль
Область действия: Глобальная

41. Что такое строка?
Строка - это одномерный массив символов, который заканчивается нулевым символом ('\ 0').
Например: имя символа [] = «сумасшедший программист»;

42. Что такое указатель NULL?
Указатель NULL - это специальное зарезервированное значение указателя. Следовательно, нулевой указатель ни на что не указывает. На момент объявления ему не присвоен какой-либо адрес. Следовательно, когда указатель имеет значение NULL, он никуда не указывает. Указатель NULL полезен, когда у вас нет адреса местоположения, который можно было бы назначить указателю во время объявления.

43. Являются ли 0 и '\ 0' одинаковыми? Если нет, объясните.
Нет, 0 и '\ 0' разные. Значение ASCII '\ 0' равно 0, тогда как значение 0 - 48. '\ 0' - это завершающий символ, обычно используемый в строках. Это единственный способ, которым функции внутри строки могут узнать, где заканчивается строка. '\ 0' - это одиночный символ.

44. В чем разница между char const * p и const char * p?
В char const * p указатель p постоянен. Следовательно, невозможно указать p на другое место. Однако вы можете изменить значение символа, указанного в p.
В const char * p символ, на который указывает p ', является константой, поэтому изменить значение p невозможно. Однако можно указать p на другое место.

45. В чем основное различие между Декларацией и Определением?
Объявляя переменную, мы указываем только связанный с ней тип данных. На данный момент нет выделения памяти. Однако, когда мы определяем переменную в системе, этой переменной присваивается начальное значение, и этой конкретной переменной присваивается выделение памяти.

46. ​​Для чего используется метод ferror ()?
ferror () является стандартной библиотечной функцией. Он указывает на ошибки, возникающие во время операции записи или чтения файла. Он возвращает 0, если операция чтения / записи прошла успешно, и ненулевое значение в случае сбоя.

47. Что такое указатель пустоты?
Указатель пустоты - это особый тип указателя, который указывает на адрес данных, с которыми может быть связан какой-либо конкретный тип данных. Указатель пустоты также известен как универсальный указатель. Указатель void объявляется как обычный указатель с использованием ключевого слова void в качестве типа указателя.

48. Что такое директива #undef?
Иногда по разным причинам необходимо изменить предварительно определенное имя, чтобы оно не было определено. Это определение не означает удаления этого имени из имени. Это можно установить с помощью директивы Undef. Предположим, если вы хотите отменить определение макроса, который был ранее определен, вы можете использовать следующий синтаксис:
#undef macro_name

49. Как мы можем ссылаться на базовый адрес одномерного массива?
Следующие методы будут работать для доступа к базовому адресу массива:
* num
* (num + 0)

50. Что такое модульный подход к программированию?
Модульное программирование - это процесс разбиения программы на части для уменьшения сложности большой программы. Такие части известны как Функции. Каждая функция выполняет определенную задачу и обычно взаимосвязана для передачи данных между другими функциями одной и той же программы.

51. Объясните типы ошибок в программировании на Си.
Ошибки времени выполнения:
эти ошибки обычно перехватываются компиляторами и возникают из-за незаконных операций, выполняемых в программе, таких как деление целого числа на ноль, недоступность пространства памяти и другие. Эти ошибки прерывают работу программы.

Ошибки времени компиляции: ошибки
компиляции - это те, которые возникают во время компиляции программы. Эти ошибки далее делятся на:

Семантические ошибки
Эти ошибки возникают из-за неопределенных операций, таких как недопустимое присвоение, как это x + y = z.

Ошибки синтаксиса
Эти ошибки возникают, если мы не следуем рекомендациям и правилам, предписанным этим конкретным языком.

Логические ошибки
Логические ошибки труднее всего отладить, поскольку они обычно не обнаруживаются компилятором. Обычно это происходит из-за проблем с алгоритмом и логикой в ​​программе.

52. Что такое рекурсия?
Когда функция вызывает себя снова и снова, она называется рекурсивной функцией. Функция вызывает себя до тех пор, пока определенное условие не перестанет быть ложным. Рекурсию можно использовать для замены сложного кода вложенности, разделив проблему на те же проблемы своего подтипа.

53. Что такое висячий указатель?
Висячий указатель возникает во время уничтожения объекта, когда объект, имеющий входящую ссылку, отменяется или удаляется без изменения значения указателя. Это сделано для того, чтобы указатель по-прежнему указывал на ячейку памяти освобожденной памяти.

54. В чем разница между char str [] = "Интервью" и char * p = "Интервью"?
Char * p = ”Interview”
В этом случае p действует как указатель на постоянную строку.
Char str [] = ”Interview”
В этом случае str действует как постоянный указатель на строку.

Итак, это был список некоторых важных вопросов и ответов на собеседовании C. Если вы обнаружили некорректную или отсутствующую информацию в приведенном выше списке, сообщите об этом в комментариях ниже.