面试模拟题1(C语言)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面试模拟题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
面试题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)