恒生电子2015春季校招笔试题
2015-03-23 08:42
465 查看
题目皆为不定项选择题,都选对为4分,选不全为2分,选错一个0分。
B. pa是一个指向某个数组第5个元素的指针,该元素是int型变量
C. pa[5]表示某个数组的第5个元素的值
D. pa是一个具有5个元素的指针数组,每个元素是一个int型指针
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:指针数组与数组指针
指针数组:是一个数组,数组中每个元素是一个指针
数组指针:是一个指针,指向一个具有n个元素的数组
这两个概念很容易混淆。其实只要记住优先级就好了:() > [ ] > *
int *pa[5]:下标符号[ ] 和优先级大于*,所以这是一个数组,即指针数组。
int (*pa)[5]:括号() 的优先级大于下标符号,所以先看括号内的内容,即指针*,所以这是一个指针,即数组指针。
参考答案:D
--------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:广播、单播、组播
IPV4不支持任播(anycast),IPV6支持。
单播(unicast):点到点一对一通信。将数据包发送到某一主机
广播(broadcast):将数据包发送到局域网内所有主机
组播(multicast):又叫多播,传播范围介于单播和广播之间。将数据包发送到加入同一组的主机
参考答案:C
--------------------------------------------------------------------------------------------------------------------------------------------------------------
B. 一个友元函数不可以同时定义为两个类的友元函数
C. 友元函数必须在类的外部进行定义
D. 在类的外部定义友元函数时必须加上friend关键字
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:友元
友元的出现其实是对面向对象编程思想的一种挑战,因为它破坏OO编程中信息封装的特性,使得一个外部函数可以操纵一个类的私有成员。这样做的好处大概是提高了编程的灵活性并精简了代码。不必像Java那样到处充斥getter和setter方法了。
友元函数并不是类的组成部分,但是它却可以在类内部直接定义,但其作用域并不仅限于类内部,而是和该类的作用域相同,即类外部(但不超出类的作用域的地方)也可见。
友元函数需要访问类的非static成员时,在声明时需要以该类的对象作为参数。
友元参数需要访问类的static成员时,在声明时不需要以该类的对象作为参数。
friend只能用在类内部,在类外定义友元函数内容的时候,不能加friend关键字,否则报错。
友元不是类的组成部分,所以可以定义为多个类的友元(多次重载即可)。
友元样例代码:
参考答案:A
--------------------------------------------------------------------------------------------------------------------------------------------------------------
B. 无论记录多少,使用索引都能给查询带来性能提升
C. 每次update/ insert/ delete操作都会导致索引被重新更新
D. 索引可以避免全表扫描
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:索引
数据库的索引并非越多越好,索引的增加会提交查询速度,但是会减慢数据库的修改速度,因为每一次修改都有更新索引,此外还会浪费存储空间(用于维护索引信息)。
此外,我个人认为:记录不多的情况下,使用索引并不能带来性能提升。
参考答案:CD
--------------------------------------------------------------------------------------------------------------------------------------------------------------
B. 事务中包括的所有操作要么都做,要么都不做
C. 一个事务内部的操作及使用的数据对并发的其他事务时隔离的
D. 事务必须使数据库从一个一致性状态变到另一个一致性状态
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:ACID、事务特性
原子性(Atomicity):事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要们都不做。
一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
隔离性(Isolation):对并发执行而言,一个事务的执行不能被其他事务干扰。
持续性(Durability):一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。
参考答案:B
--------------------------------------------------------------------------------------------------------------------------------------------------------------
B. 堆排序
C. 冒泡排序
D. 折半插入排序
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:排序算法
在常见排序算法中,时间复杂度为O(nlog2n) 【这里指的是n乘以log以2为底的n】的有:快速排序、归并排序、堆排序
折半插入排序虽然减少了比较顺序,性能较一般的插入排序得到了提升,但是其时间复杂度不变,仍然是O(n^2)。
参考答案:AB
--------------------------------------------------------------------------------------------------------------------------------------------------------------
B. 自顶向下
C. 逐步求精
D. 面向数据流
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:软件工程
参考答案:B
--------------------------------------------------------------------------------------------------------------------------------------------------------------
$HOME/aaa/bb/a.txt
$HOME/aaa/my.c
请问如果要删除aaa文件夹,要执行的操作是:()
A. rm -rf $HOME/aaa
B. rmdir -f $HOME/aaa
C. rmdir $HOME/aaa
D. rm $HOME/aaa
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:rm、rmdir
很多人可能会误选rmdir。rmdir虽然从字面上理解是删除文件夹,但是它是删除空文件夹。并且rmdir 没有-f这个选项
rm的两个选项:-r 表示递归,即删除文件夹及其子文件和子文件夹。-f 表示force即暴力,无视提示信息。由题干可知,该文件夹并非空文件夹。
参考答案:A
--------------------------------------------------------------------------------------------------------------------------------------------------------------
A. 72
B. 99 C. 328
D. 327
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:溢出
char类型可以看作是一个1个字节(8个位)的低精度整型。以整数角度来看,它能表示的整数范围是:-128~127
当chr += 1之后,此时chr的值变成128,但是这时候发生了溢出。此时要得出其实际的值用 128-256 = -128
所以sum+=char是200-128=72
参考答案:A
--------------------------------------------------------------------------------------------------------------------------------------------------------------
B. 建立一个关联表,从该关联表到员工建立一个一对多的关系,然后再从该关联表到部门表建立一个一对多的关系
C. 建立一个关联表,从员工表到该关联表建立以一对多的关系,然后再从部门表到该关联表建立一个一对多的关系
D. 这种情况下不能建立正常的数据库模型
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:多对多关系建表、关联表
解决多对多关系的建表方案,就是建立关联表。本题中,可以建立一个员工表(不包括部门id字段)、部门表(不包括员工id字段)。而关联表至少包括两个字段:员工id和部门id。如果还要给关联表增加一个字段的话就是单独新增一个关联id用做主键。
这样部门增加了员工,或员工加入了新的部门,只需要更新关联表就可了。
参考答案:C
--------------------------------------------------------------------------------------------------------------------------------------------------------------
B. sprint C. strcmpD. strstrE. memcpy
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:字符串、库函数
B无此函数(可能是sprintf打印错误),C是字符串比较函数,D是求子串的函数
参考答案:AD
--------------------------------------------------------------------------------------------------------------------------------------------------------------
A. for (int i = 0; i < 10; ) 这一行写错了
B. f是float型数据直接做相等判断有风险
C. f[++i] 应该是 f[i++]
D. 没有缺陷
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:浮点型、自增
主要问题:
因为要遍历所有元素,所以不能使用++i
浮点型不能向整型那样直接比较是否相等。
可选方案:
参考答案:BC
--------------------------------------------------------------------------------------------------------------------------------------------------------------
B. 在C语言中,一个函数一般由两个部分组成,它们是函数首部和函数体
C. 函数和实参和形参可以是相同的名字
D. 在main()中定义的变量都可以在其它被调函数中直接使用
E. 外部类型的变量只能定义一次,但可以在不同的地方声明
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:函数、变量
参考答案:BCE
--------------------------------------------------------------------------------------------------------------------------------------------------------------
A. 比较两个字符的大小
B. 计算s所指字符串占用内存字节的个数
C. 计算s所指字符串的长度
D. 将s所指的字符串复制到字符串t中
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:指针与自增
就优先级而言,自增运算符++大于星号*。但是这个++是在变量名后面的,所以是在该复合表达式的值返回之后,再进行自增。
设p = *t++; 则其等价于p = *t; t++。所以while(*t++)的意思是判断当前字符是否为NULL,如果是就终止循环(是不是NULL,t 都会自增)
如果是p = (*t)++; 就不一样了。其等价于p = *t; (*p)++。在指针所指向的值返回之后,该值加1。
参考答案:B
--------------------------------------------------------------------------------------------------------------------------------------------------------------
A. str[] = abdef
B. str[] = abcdef
C. str[] = a
D. str[] = ab
--------------------------------------------------------------------------------------------------------------------------------------------------------------
[b]关键词:字符串、字符指针
参考答案:A
--------------------------------------------------------------------------------------------------------------------------------------------------------------
1、 对于 int *pa[5]; 的描述,正确的是()
A. pa是一个指向数组的指针,所指向的数组是5个int型元素B. pa是一个指向某个数组第5个元素的指针,该元素是int型变量
C. pa[5]表示某个数组的第5个元素的值
D. pa是一个具有5个元素的指针数组,每个元素是一个int型指针
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:指针数组与数组指针
指针数组:是一个数组,数组中每个元素是一个指针
数组指针:是一个指针,指向一个具有n个元素的数组
这两个概念很容易混淆。其实只要记住优先级就好了:() > [ ] > *
int *pa[5]:下标符号[ ] 和优先级大于*,所以这是一个数组,即指针数组。
int (*pa)[5]:括号() 的优先级大于下标符号,所以先看括号内的内容,即指针*,所以这是一个指针,即数组指针。
参考答案:D
--------------------------------------------------------------------------------------------------------------------------------------------------------------
2、 IPV4中,数据报传播方式包括以下的()
A. 广播 B. 单播 C. 任播 D. 组播--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:广播、单播、组播
IPV4不支持任播(anycast),IPV6支持。
单播(unicast):点到点一对一通信。将数据包发送到某一主机
广播(broadcast):将数据包发送到局域网内所有主机
组播(multicast):又叫多播,传播范围介于单播和广播之间。将数据包发送到加入同一组的主机
参考答案:C
--------------------------------------------------------------------------------------------------------------------------------------------------------------
3、 下面关于友元函数的描述中,正确的说法是()
A. 友元函数是独立于当前类的外部函数B. 一个友元函数不可以同时定义为两个类的友元函数
C. 友元函数必须在类的外部进行定义
D. 在类的外部定义友元函数时必须加上friend关键字
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:友元
友元的出现其实是对面向对象编程思想的一种挑战,因为它破坏OO编程中信息封装的特性,使得一个外部函数可以操纵一个类的私有成员。这样做的好处大概是提高了编程的灵活性并精简了代码。不必像Java那样到处充斥getter和setter方法了。
友元函数并不是类的组成部分,但是它却可以在类内部直接定义,但其作用域并不仅限于类内部,而是和该类的作用域相同,即类外部(但不超出类的作用域的地方)也可见。
友元函数需要访问类的非static成员时,在声明时需要以该类的对象作为参数。
友元参数需要访问类的static成员时,在声明时不需要以该类的对象作为参数。
friend只能用在类内部,在类外定义友元函数内容的时候,不能加friend关键字,否则报错。
友元不是类的组成部分,所以可以定义为多个类的友元(多次重载即可)。
友元样例代码:
#include <iostream> using namespace std; class A { public: static int count; friend void test(A a); friend void test(); A(int a=1,int b=2):i(a),j(b){}; private: int i,j; }; int A::count = 0; void test(A a) { cout<<a.i<<" "<<a.j<<endl; } void test(){ cout<<A::count<<endl; }; int main() { A a; test(a); test(); } // 打印结果 1 2 0
参考答案:A
--------------------------------------------------------------------------------------------------------------------------------------------------------------
4、 以下关于数据库中索引的描述正确的是()
A. 只要允许,任何时候都应该添加索引以加快查询速度B. 无论记录多少,使用索引都能给查询带来性能提升
C. 每次update/ insert/ delete操作都会导致索引被重新更新
D. 索引可以避免全表扫描
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:索引
数据库的索引并非越多越好,索引的增加会提交查询速度,但是会减慢数据库的修改速度,因为每一次修改都有更新索引,此外还会浪费存储空间(用于维护索引信息)。
此外,我个人认为:记录不多的情况下,使用索引并不能带来性能提升。
参考答案:CD
--------------------------------------------------------------------------------------------------------------------------------------------------------------
5、 事务的原子性是指()
A. 事务一旦提交,对数据库的改变是永久的B. 事务中包括的所有操作要么都做,要么都不做
C. 一个事务内部的操作及使用的数据对并发的其他事务时隔离的
D. 事务必须使数据库从一个一致性状态变到另一个一致性状态
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:ACID、事务特性
原子性(Atomicity):事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要们都不做。
一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
隔离性(Isolation):对并发执行而言,一个事务的执行不能被其他事务干扰。
持续性(Durability):一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。
参考答案:B
--------------------------------------------------------------------------------------------------------------------------------------------------------------
6、 时间复杂度为O(nlog2n)的排序算法有()
A. 快速排序B. 堆排序
C. 冒泡排序
D. 折半插入排序
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:排序算法
在常见排序算法中,时间复杂度为O(nlog2n) 【这里指的是n乘以log以2为底的n】的有:快速排序、归并排序、堆排序
折半插入排序虽然减少了比较顺序,性能较一般的插入排序得到了提升,但是其时间复杂度不变,仍然是O(n^2)。
参考答案:AB
--------------------------------------------------------------------------------------------------------------------------------------------------------------
7、 软件工程师一种()分阶段实现的软件工程开发的方法
A. 自底向上B. 自顶向下
C. 逐步求精
D. 面向数据流
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:软件工程
参考答案:B
--------------------------------------------------------------------------------------------------------------------------------------------------------------
8、 Linux操作系统中有如下的文件结构:
$HOME/aaa$HOME/aaa/bb/a.txt
$HOME/aaa/my.c
请问如果要删除aaa文件夹,要执行的操作是:()
A. rm -rf $HOME/aaa
B. rmdir -f $HOME/aaa
C. rmdir $HOME/aaa
D. rm $HOME/aaa
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:rm、rmdir
很多人可能会误选rmdir。rmdir虽然从字面上理解是删除文件夹,但是它是删除空文件夹。并且rmdir 没有-f这个选项
rm的两个选项:-r 表示递归,即删除文件夹及其子文件和子文件夹。-f 表示force即暴力,无视提示信息。由题干可知,该文件夹并非空文件夹。
参考答案:A
--------------------------------------------------------------------------------------------------------------------------------------------------------------
9、 执行如下程序代码后,sum的值是()
char chr = 127; int sum = 200; chr += 1; sum += chr;
A. 72
B. 99 C. 328
D. 327
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:溢出
char类型可以看作是一个1个字节(8个位)的低精度整型。以整数角度来看,它能表示的整数范围是:-128~127
当chr += 1之后,此时chr的值变成128,但是这时候发生了溢出。此时要得出其实际的值用 128-256 = -128
所以sum+=char是200-128=72
参考答案:A
--------------------------------------------------------------------------------------------------------------------------------------------------------------
10、 开发一个逻辑模型:公司有10个部门,每个部门有6-7名员工,但每个员工可能会为不止一个部门工作,下面所给的模型正确的是()
A. 部门和员工之间是一种确定的一对多的关系B. 建立一个关联表,从该关联表到员工建立一个一对多的关系,然后再从该关联表到部门表建立一个一对多的关系
C. 建立一个关联表,从员工表到该关联表建立以一对多的关系,然后再从部门表到该关联表建立一个一对多的关系
D. 这种情况下不能建立正常的数据库模型
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:多对多关系建表、关联表
解决多对多关系的建表方案,就是建立关联表。本题中,可以建立一个员工表(不包括部门id字段)、部门表(不包括员工id字段)。而关联表至少包括两个字段:员工id和部门id。如果还要给关联表增加一个字段的话就是单独新增一个关联id用做主键。
这样部门增加了员工,或员工加入了新的部门,只需要更新关联表就可了。
参考答案:C
--------------------------------------------------------------------------------------------------------------------------------------------------------------
11、 下面可用于字符串复制的函数有()
A. strcpyB. sprint C. strcmpD. strstrE. memcpy
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:字符串、库函数
B无此函数(可能是sprintf打印错误),C是字符串比较函数,D是求子串的函数
参考答案:AD
--------------------------------------------------------------------------------------------------------------------------------------------------------------
12、 指出下列代码的缺陷()
float f[10]; // 假设这里有对f进行初始化的代码 ... // for循环需要遍历f中所有的元素 for (int i = 0; i < 10; ) { if (f[++i] == 0) break; }
A. for (int i = 0; i < 10; ) 这一行写错了
B. f是float型数据直接做相等判断有风险
C. f[++i] 应该是 f[i++]
D. 没有缺陷
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:浮点型、自增
主要问题:
因为要遍历所有元素,所以不能使用++i
浮点型不能向整型那样直接比较是否相等。
可选方案:
#include <math.h> ... if (fabs(f[i++]) < 1e-5) ... // 或者 #define ACCU 1e-5 ... if (f[i++] > -ACCU && f[i++] < ACCU) ...精度也可以是1e-6。
参考答案:BC
--------------------------------------------------------------------------------------------------------------------------------------------------------------
13、 以下对C语言的有关描述中,正确的有:()
A. 在C程序中,函数调用不能出现在表达式语句中B. 在C语言中,一个函数一般由两个部分组成,它们是函数首部和函数体
C. 函数和实参和形参可以是相同的名字
D. 在main()中定义的变量都可以在其它被调函数中直接使用
E. 外部类型的变量只能定义一次,但可以在不同的地方声明
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:函数、变量
参考答案:BCE
--------------------------------------------------------------------------------------------------------------------------------------------------------------
14、 有以下函数,该函数的功能是()
int fun(char *s) { char *t = s; while(*t++); return (t - s); }
A. 比较两个字符的大小
B. 计算s所指字符串占用内存字节的个数
C. 计算s所指字符串的长度
D. 将s所指的字符串复制到字符串t中
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:指针与自增
就优先级而言,自增运算符++大于星号*。但是这个++是在变量名后面的,所以是在该复合表达式的值返回之后,再进行自增。
设p = *t++; 则其等价于p = *t; t++。所以while(*t++)的意思是判断当前字符是否为NULL,如果是就终止循环(是不是NULL,t 都会自增)
如果是p = (*t)++; 就不一样了。其等价于p = *t; (*p)++。在指针所指向的值返回之后,该值加1。
参考答案:B
--------------------------------------------------------------------------------------------------------------------------------------------------------------
15、 下述程序的执行结果为()
#include <stdio.h> void abc(char *str) { int a,b; for(a = b = 0;str[a] != '\0'; a++) if(str[a] != 'c') str[b++] = str[a]; str = '\0'; } void main() { char str[] = "abcdef"; abc(str); printf("str[] = %s",str); }
A. str[] = abdef
B. str[] = abcdef
C. str[] = a
D. str[] = ab
--------------------------------------------------------------------------------------------------------------------------------------------------------------
[b]关键词:字符串、字符指针
参考答案:A
--------------------------------------------------------------------------------------------------------------------------------------------------------------
相关文章推荐
- 2015恒生电子校招笔试题
- 去哪儿网2015春季校招笔试--回忆版
- 去哪儿网2015春季校招笔试--回忆版
- 阿里2015春季实习校招笔试题-自己尝试做的答案
- 2015--CVTE--春季校招--软件类--笔试试题
- 2015恒生电子校招笔试详解
- 企鹅2015校招笔试之(一)抽奖算法思路实现
- 下列不属于hash碰撞解决方法的是()。----阿里巴巴2015校招研发在线笔试题
- 2015ucloud校招笔试试题
- 蘑菇街2015校招 Java研发笔试题 详解,2015java
- 百度2015校招笔试题(头巾问题)
- 58同城2015校招笔试、一面、二面经历
- 2015蘑菇街校招笔试详解
- 2015朗新科技校招笔试详解
- 金山软件2015校招笔试题目
- 针对外部存储器(如磁盘)上存放的程序和数据,说法正确的是()。----阿里巴巴2015校招研发在线笔试题
- 2015阿里巴巴校招网上笔试
- [阿里2015校招笔试]求字符串query和text最长连续字母序列的长度
- 蘑菇街2015校招技术类笔试题A卷,回忆版(杭州站)
- 英伟达+联想2015校招笔试回忆(嵌入式方向,上海)