上海 炉石面试题及解析

1. 什么是预编译

也就是预处理考察编译期间做的事情

首先预处理:对宏和#include文件包含条件编译,特殊符号进行处理

然后生成目标文件也就是二进制文件:在unix环境中这步生成一个可以重定向的的目标文件

最后会生成一个可执行文件:

这个可执行文件并不能独自运行他需要借助连接器帮他找到他所需的其他目标文件中的东西。


2. const char *a char *const a char *const a 比较三个的区别:考察const限定的作用
3. char a[]="1234";
char a1[]="1234";
char *ptr="1234";

char *ptr1="1234";
cout<<(a==a1)<<endl;
cout<<(ptr==ptr1)<<endl;
写出打印结果;

该题主要我认为考察静态存储区的东西只有一份所有地址相同,只读,不可以修改

4。void text(char str[])
{
for(int i=0;i<sizeof(str)/sizeof(str[0];i++)
{
........
}

}

具体记不清了 这个题主要考察 数组传过来后就退化成指针,所以确定长度不可以用sizeof 应该用strlen
5.一个32位的机器,该机器的指针是多少位,如何用代码测试。:

四个字节    sizeof(char */int*)只要是指针就可以测出来
6.int main()
{
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf("%d,%d\n",*(a+1),*(ptr-1));
}
写出结果

这个问题主要考察数组跨度问题数组名跨度为数组元素的长度

数组地址为整个数组
7. int (*fun[10])(int)代表啥意思

是一个包含10个函数指针的数组

 

8 具体忘了,考点strcpy这个函数的缺点。

9.a=3;b=5 不通过中间值让a=5,b=3(考点用异或)

a=a+b;

b=a-b;

a=a-b;

或者用异或;

10.进程同步的方法,及优缺点
11.进程间的通信方法
12。线程死锁的必要条件
13.列出常见的任务调度算法
14.让你写出一个存放函数指针的数组
15.类中静态变量和非静态变量的区别
16.osi七层模型
17.线程堆栈的考察,dll是否由堆栈

18.用宏写一个返回两个数中较小的一个数

#define Min(a,b)  return ((a)>(b))?(b):(a)

19.用宏写一个测量数组大小

编程题

atoi的实现

在单链表中删除一个给定目标的节点。

 

没写的可以百度有的概念,有的十多种解法

 

上一篇:运算符


下一篇:Linux 正则表达式