一江春水向東流

          做一個有思想的人,期待與每一位熱愛思考的人交流,您的關注是對我最大的支持。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            44 隨筆 :: 139 文章 :: 81 評論 :: 0 Trackbacks

          Linux軟件工程師測試

          一、基礎總分:
          1.GCC
          用哪個參數可以產生obj文件:B
          (A) -c????? (B)-o????? (C)-share????? (D)-static


          2、GDB
          在main函數處設置斷點的命令是:A
          (A)b main????? (B)set main????? (C)set 0????? (D)b 0


          3、UNP
          下列函數中可以將主機字節序轉換成網絡字節序的是:D
          (A)convert()????? (B)sprintf()????? (C)ntonl()????? (D)htonl()


          4、man
          查閱"read系統調用"man手冊的命令是:B
          (A)man 1 read????? (B)man 2 read????? (C)man 3 read????? (D)man read


          5、shell
          刪除"/tmp/prj/"目錄下(及所有子目錄下)所有名字以".o"結尾的文件:A
          (A)find /tmp/prj/ -name "*.o" | xargs -i rm {}
          (B)rm -rf /tmp/prj/*.o
          (C)find /tmp/prj/ -name "*.o" -rm {} \;
          (D)find /tmp/prj/*.o -name "*.o" | xargs -i rm {}


          6、IPC
          下列哪些屬于IPC范疇(多選):A,C,D,E,G,H
          (A)信號
          (B)文件監視
          (C)管道
          (D)消息隊列
          (E)信號燈
          (F)odbc
          (G)共享內存
          (H)UNIX域套接字

          ?

          7、Signal
          下列那個信號不可以被捕獲或阻塞:A
          (A)SIGKILL????? (B)SIGINT????? (C)SIGCHILD????? (D)SIGUSR1

          ?

          8、Thread
          下列那一項描述是錯誤的:B
          (A)進程擁有獨立的內存空間,而線程之間卻共享內存空間。
          (B)進程可以使用libc庫,而線程不可以
          (C)進程和線程在Linux內核中都使用clone()來實現
          (D)信號量也可以作為線程間的通訊手段


          二、C/C++部分:
          1、以下為HP-UX下的64位應用程序,請寫出其運行結果。
          void func(char *ptr)
          {
          ??????? printf("%d\n", sizeof(ptr));
          }

          int main()
          {
          ??????? char buf[1024];
          ??????? char *buf_p = buf;

          ??????? printf("%d\n", sizeof(char));
          ??????? printf("%d\n", sizeof(int *));
          ??????? printf("%d\n", sizeof(buf));
          ??????? func(buf);
          ??????? func(buf_p);
          }

          答案:
          1
          8
          1024
          8
          8

          ?


          2、請分析以下程序,并寫出其運行結果。
          char *get_memory(void)
          {
          ??????? char p[] = "hello world";

          ??????? return p;
          }

          int main()
          {
          ??????? char *str = NULL;

          ??????? str = get_memory();
          ??????? printf(str);
          }

          答案:(這是個典型有內存錯誤的程序,回答出有內存錯誤算對,最好能回答哪里有錯)


          3、請編寫下面的C函數
          /*
          功能:在堆上分配一塊指定大小的內存,并且全部清0,如果出錯則返回一個空指針
          lens:請求分配內存的尺寸
          */
          void *get_mem(int lens)
          {
          ??????? ...
          }


          答案:(考察編程風格和細心程度,不一定要和下面的程序一樣,注意出錯處理和返回值控制)
          void *get_mem(int lens)
          {
          ??????? char *ret;
          ??????? if (lens <= 0)
          ??????????????? return NULL;
          ??????? ret = malloc(lens);
          ??????? if (ret == NULL)
          ??????????????? return NULL;
          ??????? bzero(ret, lens);
          ??????? return ret;
          }

          ?

          4、Makefile
          假設有一個小型web服務器程序名叫"miniweb",它的源代碼包含三個源文件: utils.c, lib.c, main.c
          請為這個程序編寫一個Makefile。

          答案:(考察是否會寫Makefile,可能很多人都不會寫,如果此題沒回答出來,面試的時候需要再次詢問是否使會用make和Makefile)
          一個最基本的例子:
          miniweb: main.o lib.o utils.o
          ??????? cc -o $@ $<

          *.o: *.c
          ??????? cc -c $<

          clean:
          ??????? rm -f *.o rm miniweb

          posted on 2007-03-26 17:30 allic 閱讀(247) 評論(0)  編輯  收藏 所屬分類: linux/UNIX 應用開發
          主站蜘蛛池模板: 竹山县| 襄汾县| 嘉峪关市| 阿鲁科尔沁旗| 蒲江县| 惠水县| 大关县| 宜良县| 新营市| 五常市| 灌南县| 张家川| 岚皋县| 双江| 广东省| 淮安市| 西贡区| 镇坪县| 都江堰市| 通道| 聂荣县| 泰州市| 滦南县| 苏尼特右旗| 马边| 青冈县| 澎湖县| 扎兰屯市| 广水市| 宁波市| 长沙县| 简阳市| 铜川市| 绥中县| 大余县| 柘荣县| 宁夏| 通化市| 新化县| 榆树市| 盘锦市|