[校招面试]C语言复习知识面总结
第一部分 基础知识
关键字的熟练使用,尤其是以下关键字:
void、void*,使用率很高,尤其是内核源码;
const的作用,和宏定义区别是什么,底层如何实现;
extern作用;
enum、union、struct,这三者各自使用以及组合使用,再结合sizeof,对一个对象占用内存大小的计算。
register、volatile变量的特性;
return,你真的理解了吗,结合临时变量,static变量,char *p、char ar[10]变量,自定义对象去一一尝试,分析,总结;
sizeof的变化使用,如
sizeof x,为了方便表示,x代表一个表达式, 不想重复写sizeof,因为我是程序员,不想做无意义重复工作。x 具体如下:
7、7+9、5.0-1、5.0-1.0、“A”、'A'、int + 1、ar[2][3];
int *p[2][3]; x 具体如下:p、p[0]、p[1][1]、*p、*p[0]、p+1、p[0]+1、&p;
typedef,会用,敢用。内核使用率很高;
指针和数组的联系与区别(从内存表示和查找数据的角度去分析)、多维指针和多维数组;
函数的定义及调用、宏定义的优缺点;
第二部分 拔高知识
常见的函数编译方式有哪些,优缺点各自是什么,如何选择特定编译方式,函数调用方式有哪些;
指针函数、函数指针、指针数组、数组指针的定义,初始化,使用;
野指针的概念,产生的原因有哪些,如何避免;
内存泄露的概念,如何避免;
C语言内存分布结构;
第三部分 精华知识
C语言如何实现多态;
柔性数组的运用场景;
memcpy、memset、memmove、memcmp的使用及实现;
malloc、calloc、realloc、free的使用及实现;
单链表、单链表的逆序输出,就地逆置、头插和尾插;
循环链表、双链表的实现、如何高效判断一个链表是否相交(有环);
循环队列、优先级队列的实现;
第四部分 意外惊喜
熟练掌握GDB调试、Makefile文件编写规则;
GDB调试一个Coredump文件(借助ulimit命令完成);
GDB调试多进程、多线程;
GDB为什么可以安全“修改”进程的私有栈上数据;
熟练掌握Linux下C语言开发;
C语言做网络编程、io复用编程等;
C语言做多进程编程、多线程编程、高并发编程;