10 10以后的面试

时间:2021-07-28 05:29:42


Linux不熟悉的命令  man ls 就能查看ls相关的用法


gcc编译过程: 
在使用GCC编译程序时,其编译过程可以分为4个阶段:预处理(Pre-Processing) -> 编译(Compling) -> 汇编(Assembling) -> 连接(Linking) .


grep命令:
 grep [-acinv] [--color=auto] '搜寻字符串' filename
将/etc/passwd,有出现 root 的行取出来 
grep root /etc/passwd  或者  cat /etc/passwd | grep root 


Linux的环境变量的设置:修改/etc/profile文件   export指令也行


GDB调试:

       进入GDB调试: gdb test(可执行文件)

       设置断点: b  8(行号)

       查看断点情况  info b

       运行代码  r

       查看变量值  p  N(N变量名)  

       单步运行 n

       程序继续执行  c

       退出  Q

       查看堆栈  info  static  

       查看寄存器  info  reg

     

makefile :写个简单例子 

obj-m :=hello.o  

  KERNELDIR :=/home/ZP1015/Desktop/linux-2.6.32.2  
  all:  
     make -C $(KERNELDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-  
clean:  
    rm -f *.o *.ko *.mod.o *.mod.c *.symvers modul* 

       

int a=05 代表八进制


进程同步的方式:

Linux  下常见的同步方法有SysVIPC  的  sem(信号量)、file  locking  /  record  locking(通过  fcntl  设定的文件锁、记录锁)、futex(基于共享内存的快速用户态互斥锁)  
另外还有一个不能不提的,就是信号。


递增数列的判定:

void Judge(int *a, int n)
{
if (n == 1){ printf("递增"); }
if (n != 1)
{
if (a[n-1] >= a[n - 2]){ Judge(a, n - 1); }
if (a[n-1] < a[n - 2]){ printf("非递增"); }
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[] = {1,2,3,3,4,5};
int len = sizeof(a) / sizeof(a[0]);
Judge(a, len);
getchar();
return 0;
}