当前位置:文档之家› 面试模拟题1(C语言)

面试模拟题1(C语言)

面试模拟题1 (C)面试题1:用find 写出查找/opt/kernel目录下(包括子目录)文件名为Kconfig的命令。

cd /opt/kernel; find –name Kconfig 或find /opt/kernel –name Kconfig面试题2:用 Vi 编译器底行命令模式实现字符串替换,把当前文件中的“xiaodai”全部替换成“banzhang”。

%s/xiaodai/banzhang/g面试题3:变量的声明和定义有什么区别?答:变量的定义:为变量分配地址和存储空间,只在一个地方定义变量的声明:不为变量分配地址,可以在多个地方声明,加入extern 修饰的变量的声明,说明此变量将在文件以外被定义。

很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化,分配内存空间,如外部变量。

面试题4:sizeof是库函数吗?sizeof 和 strlen 的区别?sizeof 不是库函数,sizeof 是计算变量类型的大小,即占存储区多少个字节;而 strlen 是计算字符串字面值的实际长度,如字符串“hello”,它的长度是5,则strlen(“hello”) = 5;sizeof 是一个操作符,strlen 是库函数sizeof 的参数可以是数据的类型,也可以是变量,而strlen 只能以结尾为‘\0’的字符作为参数。

编译器在编译时就计算出了sizeof 的结果,而 strlen 函数必须在运行时才能计算出来,并且sizeof 计算的是数据类型占内存的大小,而 strlen 计算的是字符串实际的长度。

数组做 sizeof 的参数不退化,而传递给 strlen 做参数就退化指针了,计算出的是数组中字符串中的实际长度。

如: char num[10] = “hello”sizeof(num) = 10, 而 strlen(num) = 5;又如:char num[] = “helloworld”sizeof(num) = 11, strlen(sum) = 10注意:sizeof 是最容易混淆为函数名的操作符。

面试题5:链表和数组有什么区别面试题6:简述队列和栈的异同面试题7:有以下语句: char a=3, b=6, c; c = a^b<<2; 则c的二进制值是_____。

面试题8:如何打印出当前源文件的文件名以及源文件的当前行号?面试题9:假设某个函数的原型为:void foo( int x, int y ); 该函数分别被C编译器和C++编译器编译后在符号库中的名字是什么?面试题10:在QT程序中可以调用被C 编译器编译后的函数吗?如果可以怎么实现?面试题11:.h头文件中的ifndef/define/endif 的作用?#i nclude<file.h> 与#i nclude "file.h"的区别?面试题12:结构与联合有和区别?面试题13:全局变量和局部变量可否同名,他们是否有区别?如果有,是什么区别?面试题14:static有什么用途?static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?面试题15:什么是预编译,何时需要预编译?面试题16:有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为多少?。

面试题17:请计算sizeof的值char str[] = “Hello” ;char *p = str ;int n = 10;请计算sizeof (str ) =_____sizeof ( p ) =_____sizeof ( n ) =_____void Func ( char str[100]){请计算sizeof( str ) =}void *p = malloc( 100 ); 请计算sizeof ( p ) =char *str[]={“Hello”,”HI”,“\x0”};请计算:sizeof(str) =sizeof(str[0]) =面试题18:头文件中有如下宏定义,#define DECLARE_TASKLET(name, func, data) \struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(0), func, data }.c源文件中有如下语句,static DECLARE_TASKLET(btn_tasklet,btn_tasklet_func,(unsigned long)&mydata);请写出预编译后,该语句展开的结果.面试题19:写一个程序,以递归方式反序输出一个字符串。

如给定字符串“abc”输出“cba ”。

面试题20:对于一个字节(8bit)的无符号整形变量,求二进制表示中“1”的个数,要求算法执行效率尽可能地高。

面试题21:参数传递有哪些形式?寄存器和堆栈传递各有什么优缺点? 面试题22:Define宏语句和inline函数有什么区别?面试题23:char a[5][4],a的地址为0,问printf(“%d”,a[4]+3)值面试题24:编写一个宏,实现判断数组a元素的个数。

面试题25:.#define DOUBLE(x) x+x ,i = 5*DOUBLE(5); i 是多少?面试题26:i++一下代码的输出结果是?int i = 1;int j = 2;int k = i+++j;cout << k << endl;面试题27:下面代码输出是什么?为什么void foo(void){unsigned int a = 6;int b = -20;(a+b > 6) puts("> 6") : puts("<= 6");}面试题28:关于动态申请内存的问题void GetMemory(char *p){p = (char *)malloc(100);}void Test(void){char *str = NULL;GetMemory(str);strcpy(str, "hello world");printf(str);}请问运行Test 函数会有什么样的结果?面试题29:请问运行 Test 函数会有什么样的结果?char *GetMemory(void){char p[] = "hello world";return p;}void Test(void){char *str = NULL;str = GetMemory();printf(str);}面试题30:请问运行 Test 函数会有什么样的结果?void GetMemory2(char **p, int num){*p = (char *)malloc(num);}void Test(void){char *str = NULL;GetMemory(&str, 100);strcpy(str, "hello");printf(str);}面试题31:请问运行 Test 函数会有什么样的结果?void Test(void){char *str = (char *) malloc(100);strcpy(str, “hello”);free(str);if(str != NULL){strcpy(str, “world”);printf(str);}}面试题32:用预处理指令#define 声明一个常数,用以表明 1 年中有多少秒(忽略闰年问题)面试题33:C 语言中结构化程序设计的三种基本控制结构面试题34:请说出 const 与#define相比,有何优点?面试题35:简述数组与指针的区别?面试题36:main 函数执行完毕后,是否可能会再执行一段代码,给出说明?面试题37:如果编写一个标准 strlen 函数面试题38:如何引用一个已经定义过的全局变量?面试题39:do……while 和 while……do 有什么区别?面试题40:写一个“标准”宏 MIN面试题41:typedef 和 define 有什么区别面试题42:Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。

也可以用预处理器做类似的事。

例如,思考一下下面的例子:#define dPS struct s *typedef struct s * tPS;以上两种情况的意图都是要定义dPS 和tPS 作为一个指向结构s指针。

哪种方法更好呢?(如果有的话)为什么?面试题43:int (*s[10])(int) 表示的是什么面试题44:写出 bool 、int、 float、指针变量与“零值”比较的 if 语句bool 型数据:面试题45:请写出以下代码的打印结果#include<stdio.h>void main( void ){int a[5]={1,2,3,4,5};int *ptr=(int *)(&a+1);printf("%d,%d",*(a+1),*(ptr-1));return;}面试题46:设置地址为 0x67a9 的整型变量的值为 0xaa66。

相关主题