您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 营销创新 > 淘宝网校园招聘 技术人员笔试题
淘宝网校园招聘技术人员笔试题通用试题部分:选择题1.在按层次遍历二叉树的算法中,需要借助的辅组数据结构是A.队列B.栈C.线性表D.有序表2.所谓指令周期是指A.取指令和取操作数的时间B.执行指令和存储操作结果的时间C.取操作数和执行指令的时间D.取指令和执行指令的时间3.调用一成员函数时,使用动态联编的情况是A.通过对象调用一虚函数B.通过指针或引用调用一虚函数C.通过对象调用静态函数D.通过指针或应用调用一静态函数4.配置管理能起到以下哪些作用A.版本管理B.变更管理C.需求管理D.测试管理简答题我们在开发中经常强调要面向接口编程(又称契约式编程),请问采用接口有什么优点呢,接口和抽象类又有什么区别呢?分别使用在哪些场景?面向接口编程:在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务(即不是直接实例化在上层中),而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类。在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。面向接口编程就是指按照这种思想来编程。接口和实现分离了,适于团队的协作开发。“面向接口编程”中的接口是一种思想层面的用于实现多态性、提高软件灵活性和可维护性的架构部件,而具体语言中的“接口”是将这种思想中的部件具体实施到代码里的手段。抽象类和接口的区别在于使用动机。使用抽象类是为了代码的复用,而使用接口的动机是为了实现多态性。抽象类和它的子类之间应该是一般和特殊的关系,而接口仅仅是它的子类应该实现的一组规则面向接口编程和面向对象编程是什么关系面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。编程题(不区分编程语言)完成一段代码,代码有三个线程,主线程由Main进入,启动一个生产者线程和一个消费者线程,生产者线程随机产生整数,并且把这个整数放入一个List中,消费者从List中取出数据进行显示#includestdio.h#includestdlib.h#includeunistd.h#includepthread.h#includeerrno.h#includesys/ipc.h#includesemaphore.h#includefcntl.h#defineFIFOmyfifo#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)end_time){sem_wait(&avail);sem_wait(&mutex);if((nwrite=write(fd,hello,5))==-1){if(errno==EAGAIN)printf(TheFIFOhasnotbeenreadyet.Pleasetrylater\n);}elseprintf(writehellototheFIFO\n);sem_post(&full);sem_post(&mutex);sleep(1);}}voidconsumer(void*arg){intnolock=0;intret,nread;while(time(NULL)end_time){sem_wait(&full);sem_wait(&mutex);memset(buf_r,0,sizeof(buf_r));if((nread=read(fd,buf_r,100))==-1){if(errno==EAGAIN)printf(nodatayet\n);}printf(read%sfromFIFO\n,buf_r);sem_post(&avail);sem_post(&mutex);sleep(1);}}综合设计题现由于业务要求,需要对每日的积分进出帐与支付宝的现金进出帐进行对账.帐务数据每天约100万条纪录,现采用按时段生成帐务文件,帐务文件通过http协议下载.在次日凌晨下载帐务文件,与本地的进出明细帐务做逐条核对.问题1:如何保证每个时段的文件都下载了?问题2:如何保证通过http下载的文件都是完整的?问题3:现将本地帐务也生成文件,帐务文件格式为:交易号,进帐金额,出帐金额三个字段用逗号分隔.支付宝帐务文件格式完全相同,请设计对账流程,并实现对账算法的主要思路.网络系统运维1.在Linux系统中,为找到文件try_grep含有以a字母为行开头的内容,可以使用命令:A.grep-E#$try_grepB.grep-E#atry_grepC.grep-E^$try_grepD.grep-E^atry_grep2.在Linux系统中,检查硬盘空间使用情况应该使用什么命令A.dfB.duC.fdD.free3.ping命令使用的协议是:A.ICMPB.IMAPC.POPD.SNMP4.以下设备中哪种最适合做网站负载均衡设备(LoadBalance):A.二层交换机B.路由器C.四层交换机D.防火墙5.查看当前主机的网关配置地址是多少,请将地址写入到./ga.txt中Cat/etc/resolve.conf./ga.txt6.修改当前目录下的smb.conf,将当前/etc目录共享出去Vimsmb.confC++开发/搜索引擎开发/数学算法开发1.以下程序运行后的输出结果是main(){intp[7]={11,13,14,15,16,17,18};inti=0,j=0;while(i7&&p[i]%2==1)j+=p[i++];printf(%d\n,j);}242.列举出STL中常用的容器,并指出下列场景中分别应该使用哪种容器?从文件中循环读取一系列不重复的英文单词放入容器中,并在放入的同时进行排序,并提供检索特定的单词是否存在于容器中的功能.从文件中循环读取一系列数目不定的可重复的英文单词放入容器中,要求读取并放置完后,能够删除中间单词,并且能够按以前的顺序再输出到另外的文件中.从文件中循环读取一系列数目固定的可重复的英文单词放入容器中,要求提供访问第n个单词的功能.从文件中循环读取一系列数目不定的大量重复的英文单词放入容器,要求统计每个单词出现的次数,并能够检索特定的单词的出现次数.3.若有以下说明和语句,intc[4][5],(*p)[5];p=c;如何使用p而不用c来表示c[2][3]这个元素,答案中不能出现[]操作符(*(p+2)+3)4.拷贝构造函数在什么时候被调用,请写出示例代码拷贝初始化构造函数是一种特殊的成员函数,其形参是本类对象的引用。它的功能是用一个已知的对象来初始化一个被创建的同类的对象。拷贝初始化构造函数实际上也是构造函数,它是在初始化时被调用来将一个已知对象的数据成员的值拷贝给正在创建的另一个同类的对象。其特点如下:1、该函数名同类名,并且该函数也不被指定返回类型。2、该函数只有一个参数,并且是对某个对象的引用。3、每个类都有各自的拷贝初始化构造函数,其格式如下所示:类名::类名(类名&引用名)4、如果类中没有说明拷贝初始化构造函数,则编译系统自动生成一个具有上述形式的缺省拷贝初始化构造函数,作为该类的公有成员。下面三种对象需要调用拷贝构造函数:1)一个对象以值传递的方式传入函数体;2)一个对象以值传递的方式从函数返回;3)一个对象需要通过另外一个对象进行初始化例子:classCExample{public:CExample(){pBuffer=NULL;nSize=0;}~CExample(){deletepBuffer;}CExample(constCExample&);//拷贝构造函数voidInit(intn){pBuffer=newchar[n];nSize=n;}private:char*pBuffer;//类的对象中包含指针,指向动态分配的内存资源intnSize;};CExample::CExample(constCExample&RightSides)//拷贝构造函数的定义{nSize=RightSides.nSize;//复制常规成员pBuffer=newchar[nSize];//复制指针指向的内容memcpy(RightSides.pBuffer,pBuffer,nSize*sizeof(char));}5.有以下定义和语句inta[3][2]={1,2,3,4,5,6,},*p[3];p[0]=a[1];则*(p[0]+1)所代表的数组元素是:46.有以下程序,程序运行后的输出结果是main(){charstr[][10]={China,Beijing},*p=str;printf(%s\n,p+10);}编译出错!!!软件测试1.[语句分析,本懒虫不打了]2.HTTP1.1协议中规定便是正常响应的状态代码是A.400B.200C.100D.03.单链表的每个结点中包括一个指针link,它指向该结点的后继结点.现要将指针q指向的新结点插入到指针p指向的单结点之后,下面的操作序列中哪一个是真确的?A.q:=p^.link;p^.link:=q^.linkB.p^.link:=q^.link;q:=p^.linkC.q^.link:=p^.link;p^.link:=qD.p^.link:=q;q^.link:=p^.link4.[逻辑判断题]5.给出以下定义,则正确的叙述为charx[]=abcdefg;chary[]={'a','b','c','d','e','f','g'};A.数组X和数组Y等价B.数组X和数组Y长度相同C.数组X的长度大于数组Y的长度D.数组X的长度小于数组Y的长度6.[逻辑判断题]数
本文标题:淘宝网校园招聘 技术人员笔试题
链接地址:https://www.777doc.com/doc-6889703 .html