淘宝网 校园招聘 技术人员笔试题
最后更新于: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目录共享出去。
';