首页 » 技术分享 » 淘宝网 校园招聘 技术人员笔试题

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

 

通用试题部分:

选择题
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目录共享出去。

转载自原文链接, 如需删除请联系管理员。

原文链接:淘宝网 校园招聘 技术人员笔试题,转载请注明来源!

0