【转+原】linux程序员面试题

来源:互联网 发布:网络水军价格 编辑:程序博客网 时间:2024/06/03 17:04

  面试题是一套笔试题,比较经典(闭卷,100分钟完卷,最好写出解题步骤),若你能答对百分之七八十,说明你一只脚踏进了linux编程的大门,若你能答对百分之九十以上,你收我做弟子(可怜可怜我吧),你若不及格,那就跟我一样:菜鸟! 
  
  一、基础题: 
    1.请列举出你用过的LINUX发行版及其中的GCC版本、GLIB版本 
    2.ISO七层参考模型中的PPP协议、HTTP协议处于哪一层? 
    3.说出TCP和UDP的相同和不同之处 
    4.IP数据包头部是多长?146.0.0.0属于哪一类IP地址? 
    5.请写出linux嵌入式系统开发过程 
    6.在以下列举的GCC中的参数,请一一写出代表的意思: 
     -c 
            -o 
            -share 
            -static 
          7.写出以下参数的含义: 
      _attribute_   (packet) 
                volatile 
  
                #define   ANYONE((DIR)<<IO_CTCL   / 
                                    (FILE)<<IO_CTCL) 
  
  二、程序阅读题(输出程序结果): 
    1.按值和按地址传递(此题太简单,略) 
    2.指针的取地址和取值、指针运算操作(比较简单,略) 
    3.char   *p; 
              p=malloc(20); 
              char   q*; 
              q=strcpy(p,"Please   answer   the   question   carefully"); 
              q+=7; 
              printf("%s",q); 
              printf("%s",p); 
          4.#define   X   1 
              #define   Y   X+1 
              int   p; 
              p=x+y/2; 
              printf("%d",p); 
          5.struct   n{ 
                int   p; 
                char   name; 
                }a; 
                void   structp(struct   n   b) 
                { 
                      b.p=10; 
                      b.name='X'; 
                } 
                int   main() 
              { 
                    int   x=5; 
                    char   name='Y'; 
                    a.p=x; 
                    a.name=name; 
                    structp(a); 
                    printf("%d",a.p); 
                    printf("%c",a.name); 
              } 
          6.略(记不清楚了,好像是字符串操作题) 
    7.略(结构和双链表,此题比较难,花时间多) 
    8.分析以下程序,写出结果 
              Void   GetMemory2(char   **p,   int   num) 
            {   
                *p   =   (char   *)malloc(num); 
            } 
            void   Test(void) 
            {   
                char   *str   =   NULL; 
                GetMemory(&str,   100); 
                strcpy(str,   "hello"); 
                printf(str); 
            } 
            9.分析以下程序,写出结果 
     char   *GetMemory(void) 
              { 
                char   p[]   =   "hello   world"; 
                  return   p; 
              } 
              void   Test(void) 
            { 
                char   *str   =   NULL; 
                str   =   GetMemory(); 
                printf(str); 
            } 
  
  
  三、程序写作题: 
    1.用C语言实现下现函数(不能调用库函数) 
      char   *strcpy(char   *dest,const   char   *src) 
      为什么此字符串拷贝函数还要返回一个字符指针? 
    2.有两个整型变量x,y如何不使用任何中间变量的同时将两个值交换 
    3.写出BOOl   flag与零值的比较,指针与零值的比较 
  四、英语基础题(本人英语不好,所以记不住,此题有两部分,第一部分是声明变量,第二部分是完型填空) 
  五、选择题(此题的具体备选答案我记不住了,不过你若掌握了这部分知识,不需要备选答案,若没有了解,   也不过是在猜题) 
    1.在网络数据传输时,哪种方式数据延迟最大?为了尽可能减少误码,最不宜采用哪种方式传输?分组交   换主要是对数据报文传输的哪方面的改进?改进的直接结果是什么?为了达到数据的最小误码率,应采   哪种方式(或组合方式)进行传输?(提示:备选答案中有:线路交换,分组交换,虚电路等等) 
    2.下面有一棵二叉搜索树,物理存储的方式按一个节点占三个存储单元,例如:有一结点P,在内存1001   中存储P的信息,1002中存储P的左边链接指针,1003中存储P的右边链接指针,以下是一张将要存储的   节点表: 
       P:P(节点本身信息),L1(P的左链节点指针),R1(P的右链节点指针);(以下以此类推) 
       W:W,L2,R2 
       E:E,L3,R3 
       R:R,L4,R4 
       C:C,L5,R5 
              将上述节点以字母表的顺序生成二叉搜索树,并存储在内存1001之后的连续单元中(存储节点时按字    母顺序存储,比如C存储在1001,1002,1003中,那么E就应存储在1004,1005,1006中)。 
     请问:L2,R3,L5将分别存储在哪个内存单元 
        对此二叉搜索树进行后序遍历和前序遍历,请分别写出遍历顺序

原创粉丝点击