一江春水向东流

做一个有思想的人,期待与每一位热爱思考的人交流,您的关注是对我最大的支持。

  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 阅读(238) 评论(0)  编辑  收藏 所属分类: linux/UNIX 应用开发

只有注册用户登录后才能发表评论。


网站导航: