Linux軟件工程師測(cè)試
一、基礎(chǔ)總分:
1.GCC
用哪個(gè)參數(shù)可以產(chǎn)生obj文件:B
(A) -c????? (B)-o????? (C)-share????? (D)-static
2、GDB
在main函數(shù)處設(shè)置斷點(diǎn)的命令是:A
(A)b main????? (B)set main????? (C)set 0????? (D)b 0
3、UNP
下列函數(shù)中可以將主機(jī)字節(jié)序轉(zhuǎn)換成網(wǎng)絡(luò)字節(jié)序的是:D
(A)convert()????? (B)sprintf()????? (C)ntonl()????? (D)htonl()
4、man
查閱"read系統(tǒng)調(diào)用"man手冊(cè)的命令是:B
(A)man 1 read????? (B)man 2 read????? (C)man 3 read????? (D)man read
5、shell
刪除"/tmp/prj/"目錄下(及所有子目錄下)所有名字以".o"結(jié)尾的文件: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)信號(hào)
(B)文件監(jiān)視
(C)管道
(D)消息隊(duì)列
(E)信號(hào)燈
(F)odbc
(G)共享內(nèi)存
(H)UNIX域套接字
?
7、Signal
下列那個(gè)信號(hào)不可以被捕獲或阻塞:A
(A)SIGKILL????? (B)SIGINT????? (C)SIGCHILD????? (D)SIGUSR1
?
8、Thread
下列那一項(xiàng)描述是錯(cuò)誤的:B
(A)進(jìn)程擁有獨(dú)立的內(nèi)存空間,而線程之間卻共享內(nèi)存空間。
(B)進(jìn)程可以使用libc庫(kù),而線程不可以
(C)進(jìn)程和線程在Linux內(nèi)核中都使用clone()來(lái)實(shí)現(xiàn)
(D)信號(hào)量也可以作為線程間的通訊手段
二、C/C++部分:
1、以下為HP-UX下的64位應(yīng)用程序,請(qǐng)寫出其運(yùn)行結(jié)果。
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、請(qǐng)分析以下程序,并寫出其運(yùn)行結(jié)果。
char *get_memory(void)
{
??????? char p[] = "hello world";
??????? return p;
}
int main()
{
??????? char *str = NULL;
??????? str = get_memory();
??????? printf(str);
}
答案:(這是個(gè)典型有內(nèi)存錯(cuò)誤的程序,回答出有內(nèi)存錯(cuò)誤算對(duì),最好能回答哪里有錯(cuò))
3、請(qǐng)編寫下面的C函數(shù)
/*
功能:在堆上分配一塊指定大小的內(nèi)存,并且全部清0,如果出錯(cuò)則返回一個(gè)空指針
lens:請(qǐng)求分配內(nèi)存的尺寸
*/
void *get_mem(int lens)
{
??????? ...
}
答案:(考察編程風(fēng)格和細(xì)心程度,不一定要和下面的程序一樣,注意出錯(cuò)處理和返回值控制)
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
假設(shè)有一個(gè)小型web服務(wù)器程序名叫"miniweb",它的源代碼包含三個(gè)源文件: utils.c, lib.c, main.c
請(qǐng)為這個(gè)程序編寫一個(gè)Makefile。
答案:(考察是否會(huì)寫Makefile,可能很多人都不會(huì)寫,如果此題沒(méi)回答出來(lái),面試的時(shí)候需要再次詢問(wèn)是否使會(huì)用make和Makefile)
一個(gè)最基本的例子:
miniweb: main.o lib.o utils.o
??????? cc -o $@ $<
*.o: *.c
??????? cc -c $<
clean:
??????? rm -f *.o rm miniweb