Linux校招面试剑指BAT我用 Linux

[校招面试]C语言复习知识面总结

2018-03-01  本文已影响153人  batbattle

第一部分  基础知识

关键字的熟练使用,尤其是以下关键字:

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语言做多进程编程、多线程编程、高并发编程;

上一篇下一篇

猜你喜欢

热点阅读