淘宝网 校园招聘 技术人员笔试题

最后更新于:2022-04-01 21:43:22

**通用试题部分:** **选择题** 1、在按层次遍历二叉树的算法中, 需要借助的辅组数据结构是 A、队列 B、栈 C、线性表 D、有序表 2、所谓指令周期是指 A、取指令和取操作数的时间 B、执行指令和存储操作结果的时间 C、取操作数和执行指令的时间 D、取指令和执行指令的时间 3、 调用一成员函数时, 使用动态联编的情况是 A、通过对象调用一虚函数 B、通过指针或引用调用一虚函数 C、通过对象调用静态函数 D、通过指针或应用调用一静态函数 4、配置管理能起到以下哪些作用 A、版本管理 B、变更管理 C、需求管理 D、测试管理 **简答题** 我们在开发中经常强调要面向接口编程(又称契约式编程), 请问采用接口有什么优点呢, 接口和抽象类又有什么区别呢? 分别使用在哪些场景? **编程题**(不区分编程语言) 完成一段代码, 代码有三个线程, 主线程由Main进入, 启动一个生产者线程和一个消费者线程, 生产者线程随机产生整数, 并且把这个整数放入一个List中, 消费者从List中取出数据进行显示 **综合设计题** 现由于业务要求, 需要对每日的积分进出帐与支付宝的现金进出帐进行对账. 帐务数据每天约100万条纪录, 现采用按时段生成帐务文件, 帐务文件通过http协议下载. 在次日凌晨下载帐务文件, 与本地的进出明细帐务做逐条核对. 问题 1: 如何保证每个时段的文件都下载了? 问题 2: 如何保证通过http下载的文件都是完整的? 问题 3: 现将本地帐务也生成文件, 帐务文件格式为: "交易号, 进帐金额, 出帐金额"三个字段用逗号分隔. 支付宝帐务文件格式完全相同, 请设计对账流程, 并实现对账算法的主要思路. **C++开发/搜索引擎开发/数学算法开发** 1、以下程序运行后的输出结果是 ~~~ void main() { int p[7]={11, 13, 14, 15, 16, 17, 18}; int i=0, j=0; while(i<7 && p[i]%2==1) j+=p[i++]; printf("%d\n",j); } ~~~ 输出结果是:24 2、列举出STL中常用的容器,并指出下列场景中分别应该使用哪种容器? 从文件中循环读取一系列不重复的英文单词放入容器中, 并在放入的同时进行排序, 并提供检索特定的单词是否存在于容器中的功能. 从文件中循环读取一系列数目不定的可重复的英文单词放入容器中, 要求读取并放置完后, 能够删除中间单词, 并且能够按以前的顺序再输出到另外的文件中. 从文件中循环读取一系列数目固定的可重复的英文单词放入容器中, 要求提供访问第n个单词的功能. 从文件中循环读取一系列数目不定的大量重复的英文单词放入容器, 要求统计每个单词出现的次数, 并能够检索特定的单词的出现次数. 3、若有以下说明和语句, int c[4][5], (*p)[5]; p=c; 如何使用p而不用c来表示c[2][3]这个元素, 答案中不能出现[]操作符。 答案**:*(*(p+2)+3)** ~~~ int main(void) { int c[4][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; int (*p)[5]; p=c; printf("%d\n",*(*(p+2)+3)); return 0; } ~~~ 4、拷贝构造函数在什么时候被调用, 请写出示例代码 5、有以下定义和语句 int a[3][2]={1,2,3,4,5,6,},*p[3]; p[0]=a[1]; 则*(p[0]+1)所代表的数组元素是 ~~~ void main() { int a[3][2]={1,2,3,4,5,6,},*p[3]; //p先和[]结合,所以是一个数组,数组的元素是int型指针 p[0]=a[1]; //p[0]指向a数组第二行的首地址 printf("%d\n",*(p[0]+1)); //输出a数组第二行第二列的元素:4 } ~~~ 6、有以下程序, 程序运行后的输出结果是 ~~~ void main() { char str[][10]={"China", "Beijing"}, *p=str[0]; printf("%s\n",p+10); } ~~~ 输出为:Beijing **软件测试** 1、 [语句分析, 本懒虫不打了] 2、HTTP1.1协议中规定便是正常响应的状态代码是 A、400             **B、200**                  C、 100                           D、0 3、单链表的每个结点中包括一个指针link, 它指向该结点的后继结点. 现要将指针q指向的新结点插入到指针p指向的单结点之后, 下面的操作序列中哪一个是真确的? A、q:=p^.link; p^.link:=q^.link B、p^.link:=q^.link; q:=p^.link C、 q^.link:=p^.link; p^.link:=q D、p^.link:=q; q^.link:=p^.link 4、[逻辑判断题] 5、给出以下定义, 则正确的叙述为 char x[]="abcdefg"; char y[]={'a','b','c','d','e','f','g'}; A、数组X和数组Y等价 B、数组X和数组Y长度相同 C、数组X的长度大于数组Y的长度 D、数组X的长度小于数组Y的长度 printf("%d\n",sizeof(x));     输出8 printf("%d\n",sizeof(y));    输出7 因为x数组是字符串数组,后面还有结束符:“\0”,所以长度为:8 而y数组就是普通的字符数组,没有“\0”结束符的,所以长度为:7 6、 下列程序的返回值是多少: ~~~ int countx=0; int x=17373; int f() { while(x) { countx++; x=x&(x-1); } return countx; } ~~~ countx的值记录的就是x的二进制中1的个数,把x的二进制写出来,数一下其中有多少个1就可以了。。 **数据库开发** 1、本地管理表空间和字典管理表空间的特点,ASSM有什么特点。 2、日志的作用是什么? 答:日志文件是用来记录你所对数据库的操作信息的 例如对数据库的操作等引起的问题 日记文件都有记载下来 。 如果数据库有问题的时候可以去看那个日记文件来分析出错的原因。 3、如果系统现在需要在一个很大的表上创建一个索引, 你会考虑哪些因素, 如何做以尽量减小对应用的影响。 **专业试题部分 Java开发** 1. 请列出Test执行时的输出结果 A. 编译不通过 B. SSA C. SSS D. SAA Test代码如下: ~~~ class A{ public void printValue(){ System.out.print("A"); } } class S extends A{ public void printValue(){ System.out.print("S"); } } public class Test { public static void main(String[] args){ S s=new S(); s.printValue(); A as=(A)s; as.printValue(); as=new A(); as.printValue(); } } ~~~ 2. String compare: A ~~~ String s1="java"; String s2="java"; (1) s1==s2   (2) s1.equals(s2) Result: (1) (2) ~~~ B ~~~ String s="ja"; String s1=s+"va"; String s2="java"; (1) s1==s2   (2) s1.equals(s2) Result: (1) (2) ~~~ 3. True or False: Readers have methods that can read and return floats and doubles. A. True B. False 4. 在//point x处的哪些声明是句法上合法的(多选) ~~~ class Person{ private int a; public int change(int m){ return m; } } public class Teacher extends Person { public int b; public static void main(String arg[]){ Person p=new Person(); Teacher t=new Teacher(); int i; //point x   } } ~~~ A. i=m; B. i=t.b; C. i=p.a; D. i=p.change(30); 5. Given the following code, what will be the output? ~~~ class Value{ public int i=5; } public class Test_1 { public static void main(String argv[]){ Test_1 t=new Test_1(); t.first(); } public void first(){ int i=5; Value v=new Value(); v.i=25; second(v,i); System.out.print(v.i); } public void second(Value v, int i){ i=0; v.i=20; Value val=new Value(); v=val; System.out.print(v.i+" "+i); } } ~~~ A. 15 0 20 B. 15 0 15 C. 20 0 20 D. 0 15 20 6. 下面哪一个interface的定义是错误的? A. ~~~ interface interface1 extends interface2, interface3{ void undo(int i); void process(); } ~~~ B. ~~~ interface interface1{ public void undo(int i); } ~~~ C. ~~~ interface interface1{ String aa; } ~~~ D. ~~~ interface interface1{ private String var; process(){}; } ~~~ **前端开发** 1. Google Chrome浏览器对CSS的支持度和下面哪个浏览器基本一致: A. IE7   B. Firefox 3.1   C. Opera 9.5   D. Safari 3.1 2. 下面这段javascript代码, var msg='hello'; for (var i=0; i<10; i++){ var msg='hello'+i*2+i; } alert(msg); 最后一句alert的输出结果是: A. hello   B. hello189   C. hello30   D. hello27 3. 下面哪个Hack属性, IE7浏览器不能识别: A. @color:red   B. *color:red;   C. _color:red;   D. +color:red; 4. 请问在javascript程序中, alert(undefined==null)的输出结果是: A. undefined   B. null   C. true   D. false 5. 根据下图, 请您用符合Web语义的(X)HTML代码书写结构[此题目图片懒得搞了, 反正这题也很简单, 省略] 6. 请手写一段javascript程序, 对数组[5, 1000, 6, 3, 8, 123, -12]按从小到大进行排序, 如果你有多种解法, 请阐述各种解法的思路及其优缺点.(仅需用代码实现一种算法, 其他解法用文字阐述思路即可) **网络系统运维** 1、 在Linux系统中, 为找到文件try_grep含有以a字母为行开头的内容, 可以使用命令: A、grep -E #$ try_grep B、grep -E #a try_grep C、grep -E ^$ try_grep D、grep -E ^a try_grep ^M 以M开头的行,^表示开始的意思 M$ 以M结尾的行,$表示结束的意思 2、在Linux系统中, 检查硬盘空间使用情况应该使用什么命令? **A、df**              B、 du             C、fd            D、free 3、 ping命令使用的协议是: **A、ICMP**               B、IMAP             C、POP               D、 SNMP 4、以下设备中哪种最适合做网站负载均衡设备(Load Balance): A、二层交换机              B、 路由器               C、四层交换机             D、 防火墙 5、查看当前主机的网关配置地址是多少, 请将地址写入到./ga.txt中。 6、修改当前目录下的smb.conf, 将当前/etc目录共享出去。
';