Linux 软件工程师 从面试小白到面霸

笔者作为一枚小小的程序员在面试中经常会考一些算法的实现,做个总结

二分法

递归二分法

写法非常简洁
注意移动的区域重合,所以要从不同的方向进行


非常经典的strlen函数没用我们的变量递加而用指针计数,非常耐人寻味


有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值。


struct 内存对齐知识点

数据存放的大小端知识点

static union { char c[4]; unsigned long l; } endian_test __initdata = { { ‘l’, ‘, ‘, ‘b’ } };
#define ENDIANNESS ((char)endian_test.l)

嵌入式关键字volatile

1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 3). 多线程应用中被几个任务共享的变量

数组指针(也称行指针)
定义 int (*p)[n];

指针数组
定义 int *p[n];

在C/C++中,常量指针是这样声明的:

1)const int *p;

2)int const *p;

在C/C++中,指针常量这样声明:

int a;

int *const b = &a; //const放在指针声明操作符的右侧

链表的定义

struct list_head {
struct list_head *next, *prev;
};


 typedef struct的用法


指针函数int *f(xy)

int (*f) (int x);

看看signal的原型

void (*signal(int signum,void(* handler)(int)))(int);


进程与线程的区别

一、进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。
二、线程是进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),一个线程可以创建和撤销另一个线程;

中断处理过程分为两个阶段:

中断响应过程和中断服务过程。

中断响应时间是中断响应过程所用的时间,

从发出中断请求到进入中断处理所用的时间。

因为线程调度是在进程中进行,在同一存储区内操作,而进程则在不同存储区操作,所以进程调度数度比线程慢

linux使用的进程间通信方式:来源:云在青天水在瓶(QQ835304205)

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2014年5月23日
下一篇 2014年5月23日

相关推荐