淘宝网2009校园招聘技术人员笔试题通用试题部分:选择题1.在按层次遍历二叉树的算法中,需要借助的辅组数据结构是A.队列B.栈C.线性表D.有序表2.所谓指令周期是指A.取指令和取操作数的时间B.执行指令和存储操作结果的时间C.取操作数和执行指令的时间D.取指令和执行指令的时间3.调用一成员函数时,使用动态联编的情况是A.通过对象调用一虚函数B.通过指针或引用调用一虚函数C.通过对象调用静态函数D.通过指针或应用调用一静态函数4.配置管理能起到以下哪些作用A.版本管理B.变更管理C.需求管理D.测试管理简答题我们在开发中经常强调要面向接口编程(又称契约式编程),请问采用接口有什么优点呢,接口和抽象类又有什么区别呢?分别使用在哪些场景?面向接口编程:在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务(即不是直接实例化在上层中),而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类。在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。面向接口编程就是指按照这种思想来编程。接口和实现分离了,适于团队的协作开发。“面向接口编程”中的接口是一种思想层面的用于实现多态性、提高软件灵活性和可维护性的架构部件,而具体语言中的“接口”是将这种思想中的部件具体实施到代码里的手段。抽象类和接口的区别在于使用动机。使用抽象类是为了代码的复用,而使用接口的动机是为了实现多态性。抽象类和它的子类之间应该是一般和特殊的关系,而接口仅仅是它的子类应该实现的一组规则面向接口编程和面向对象编程是什么关系面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。编程题(不区分编程语言)完成一段代码,代码有三个线程,主线程由Main进入,启动一个生产者线程和一个消费者线程,生产者线程随机产生整数,并且把这个整数放入一个List中,消费者从List中取出数据进行显示#include
#include#include#include#include#include#include#include#defineFIFO"myfifo"#defineN5intlock_var;time_tend_time;charbuf_r[100];sem_tmutex,full,avail;/*定义3个信号量,full标识缓冲区是否为满,avail标识缓冲区是否为空.*/intfd;voidpthread1(void*arg);voidpthread2(void*arg);voidconsumer(void*arg);voidproductor(void*arg);intmain(intargc,char*argv[]){pthread_tid1,id2;pthread_tmon_th_id;intret;end_time=time(NULL)+30;if((mkfifo(FIFO,O_CREAT|O_EXCL)<0)&&(errno!=EEXIST))printf("cannotcreatefifoserver\n");printf("Preparingforreadingbytes...\n");memset(buf_r,0,sizeof(buf_r));fd=open(FIFO,O_RDWR|O_NONBLOCK,0);if(fd==-1){perror("open");exit(1);}ret=sem_init(&mutex,0,1);ret=sem_init(&avail,0,N);ret=sem_init(&full,0,0);if(ret!=0){perror("sem_init");}ret=pthread_create(&id1,NULL,(void*)productor,NULL);if(ret!=0)perror("pthreadcread1");ret=pthread_create(&id2,NULL,(void*)consumer,NULL);if(ret!=0)perror("pthreadcread2");pthread_join(id1,NULL);pthread_join(id2,NULL);exit(0);}voidproductor(void*arg){inti,nwrite;while(time(NULL)