羊城晚报校招笔试题(共12篇)由网友“林定Kang”投稿提供,以下是小编为大家汇总后的羊城晚报校招笔试题,希望对大家有所帮助。
篇1:羊城晚报校招笔试题
1、报社招聘记者。约了些同学面试,好多人从楼下打电话来说保安不让进,希望下去接一下。考官说不,如果这都对付不了的话,还是别做记者了。最后,大部分同学都进来了。进来的最后成了狗仔队;讲理进来的成了评论员;软磨硬泡进来的去跑官会了;撒泼打滚的后来都提拔成了主编;硬打进来的,顶了保安。请问你欣赏哪一种?为什么?如果你是应聘者你会用什么方法进门?
2、新闻采访中的“多源求证”指的是什么?请你虚拟一个新闻事件,并根据“多源求证”做出采访安排。
3、你的专业是否与报考的职位相关?你是否做好了应聘该职位的知识、心理、实务准备?请说说你的心路历程。对你选择这份工作而言,影响最大的书有哪些(至少三本,不包括专业教材)。
4、当下新闻热点很多,请你根据给定的网络热词,任选五个,写一篇时评,不超过1000字。(其中包括中国梦、屌丝、高富帅、豆你玩、姜你军、蒜你狠、舌尖上的中国、中国好声音……约有60多个吧)
篇2:羊城晚报校招笔试题
1、同志现任的职务有哪些?写出5个即可得10分。
2、新媒将服务对象称作“用户”,传播媒体将服务对象称作“受众”。“用户”与“受众”有何异同?这对纸媒经营有何启示?
3、雅安地震12小时后你到达现场,在人生地不熟的四川,你如何安排一周内的报道计划?如何寻找可靠的采访资源?
4、马航 MH370未按时抵达,许多乘客家属在机场等候,若派你去机场,你会注意什么?会采取哪种采访方式?
5、京津冀一体化是最近政经的热点,作为羊城晚报的记者,你是如何理解京津冀一体化的?作为一份立足广州、面向全国的报纸,你准备从哪些角度进行报道?
6、什么是“社交化”?例句不少于5个社交网络或应用,并用100字点评其中3个的商业模式和传播模式。
篇3:雅虎校招笔试题
如下笔试题目是雅虎校招的笔试真题,分享给大家练习!
Question 1. (单选) 在计算机网络中,表征数据传输可靠性的指标是 1. 传输率 2. 误码率 3. 信息容量 4. 频带利用率 Question 2. (单选) 以下关于链式存储结构的叙述中哪一条是不正确的? 1. 结点除自身信息外还包括指针域,因此存储密度小于顺序存储结构 2. 逻辑上相邻的结点物理上不必邻接 3. 可以通过计算直接确定第i个结点的存储地址 4. 插入、删除运算操作方便,不必移动结点 Question 3. (单选) 以下哪一个不是栈的基本运算 1. 删除栈顶元素 2. 删除栈底元素 3. 判断栈是否为空 4. 将栈置为空栈 Question 4. (单选) 以下关于广义表的叙述中,正确的是 1. 广义表是0个或多个单元素或子表组成的有限序列 2. 广义表至少有一个元素是子表 3. 广义表不可以是自身的子表 4. 广义表不能为空表 Question 5. (单选) 如果一棵二叉树结点的前序序列是A、B、C,后序序列是C、B、A,则该二叉树结点的对称序序列 1. 必为A、B、C 2. 必为A、C、B 3. 必为B、C、A 4. 不能确定 Question 6. (单选) 在虚拟页式存储管理方案中,下面哪一部分完成将页面调入内存的工作? 1. 缺页中断处理 2. 页面淘汰过程 3. 工作集模型应用 4. 紧缩技术利用 Question 7. (单选) 在DOS系统中,用于记录和管理磁盘数据区使用情况的数据结构 1. 位图表 2. 空闲块表 3. 文件分配表 4. 文件控制块 Question 8. (单选) 设有关系R(S,D,M),其函数依赖集F={S→D,D→M}。则关系R至多满足 1. 1NF 2. 2NF 3. 3NF 4. BCNF Question 9. (单选) 在数据库逻辑设计中,当将E-R图转换为关系模式时,下面的做法哪一个是不正确的? 1. 一个实体类型转换为一个关系模式 2. 一个联系类型转换为一个关系模式 3. 由实体类型转换成的关系模式的主键是该实体类型的主键 4. 由联系类型转换成的关系模式的属性是与该联系类型相关的诸实体类型的属性的全体 Question 10. (单选) 计算机网络按照所覆盖的地理范围分类,可以分广域网、局域网与 1. TCP/IP网 2. ATM网 3. ISDN 4. 城域网 Question 11. (单选) 计算机网络拓扑结构主要取决于它的 1. 资源子网 2. FDDI网 3. 通信子网 4. 路由器 Question 12. (单选) 网络协议的三个要素是语法、语义与 1. 工作原理 2. 时序 3. 进程 4. 服务原语 Question 13. (单选) TCP/IP参考模型中,电子邮件协议SMTP依赖于传输层的 1. UDP协议 2. IP协议 3. TCP协议 4. 802.2协议 Question 14. (单选) IEEE802.2协议中10BASE-T标准规定在使用5类双绞线时,从网卡到集线器的最大距离为 1. 100m 2. 185m 3. 300m 4. 500m Question 15. (单选) 100Mbps Fast Ethernet与10Mbps Ethernet 工作原理的相同之处主要在 1. 介质访问控制方法 2. 物理层协议 3. 网络层 4. 发送时钟周期 Question 16. (单选) 在Client/Server计算模式中,中间件middleware的作用是隔离应用与 1. 结构化查询语言SQL 2. 应用进程 3. 网络 4. IP地址 Question 17. (单选) 当用户向ISP申请Internet帐户时,用户的E-mail帐户应包括 1. IP地址 2. WWW地址 3. 用户密码(Password) 4. 用户名(User Name)与用户密码(Password)
篇4:360校招笔试题
1、下列哪个命令可以用来定时任务的?
A. crontab
B. setsid
C. date
D. setup
2、把已存在用户加入到指定组的命令是
A. gpasswd
B. groupadd
C. useradd
D. groupmod
3、下列说法正确的是
A. 两个对象的hashCode不同,则这两个对象肯定是不同的对象
B. 两个对象如果equals判断为true,则这两个对象的hashCode肯定也相同
C. 两个对象如果==判断为true,则这两个对象肯定是同一个对象
D. 两个对象的hashCode相同,则这两个对象肯定是同一个对象
4、在xx处能够书写的代码是
[cpp] view plain copypublic class Test{
int w,x,y,z;
public Test(int a, int b)
{
x=a;
y=b;
}
public Test(int a, int b, int c, int d)
{
w=d;
z=c;
}
}
A. x=a,y=b
B. Base(a,b)
C. this(a), this(b)
D.this(a,b);
5、以下关于递归调用的说法正确的是
A. 递归调用可以用队列实现
B. 函数直接调用自己是递归
C. 递归调用可以用栈实现
D. 函数间接调用自己不是递归
6、设有一组初始关键字序列为{30,20,10,25,15,28},则第4趟直接插入排序结束后的结果的是
A. 10,15,20,25,28,30
B. 10,15,20,25,30,28
C. 10,20,30,25,15,28
D. 10,20,25,30,15,28
7、在含有50个结点的二叉排序树上,查找关键字为20的结点,则依次比较的关键字有可能是
A. 15,35,18,14,20
B. 35,25,28,15,20
C. 35,25,18,15,20
D. 15,35,25,20
8、下列算法段中,语句(6)的语句频度为
[cpp] view plain copy(1)for( i=1; i<=n ;i++)
{
(2)for(j=1; j<=n;j++)
{
(3) x=0;
(4) for( k=1; k<=n; k++)
(5) x+=a[i][k]*b[k][j];
(6) c[i][j]=x;
}
}
A. n3
B. n2*(n+1)
C. n2
D. n*(n+1)
9、执行下列脚本,输出变量a的值为
[cpp] view plain copy
$a=“45 fire”;
$inc = 10;
$a = $inc + $a;
echo $a;
?>
A. 45
B. 0
C. 55
D. 1045
10、下面程序的输出是什么?
[cpp] view plain copyd = lambda p: p*2
t = lambda p: p*3
x = 2
x = d(x)
x = t(x)
x = d(x)
print x
A. 36
B. 24
C. 17
D. 12
篇5:360校招笔试题
1、执行下列代码后,main函数的输出结果是
[cpp] view plain copyint func(unsigned int i);
void main
{
printf(“%d\n”, func(0x1f4504a8));
return;
}
int func(unsigned int i)
{
unsigned int temp = i;
temp = (temp & 0x55555555) + ((temp & 0xaaaaaaaa) >>1);
temp = (temp & 0x33333333) + ((temp & 0xcccccccc) >>2);
temp = (temp & 0x0f0f0f0f) + ((temp & 0xf0f0f0f0) >>4);
temp = (temp & 0xff00ff) + ((temp & 0xff00ff00) >>8);
temp = (temp & 0xffff) + ((temp & 0xffff0000) >>16);
return (temp);
}
A. 13
B. 12
C. 14
D. 15
2、下列程序的运行结果是1 4 3 4 5,请为横线处选择合适的程序
[cpp] view plain copyvoid point(int *p)
{
*p=p[2];
}
main
{
int c = {1,2,3,4,5},*p=c;
point(p+1);
for(;p
printf(“%d,”____);
}
A. ++ (*p)
B. ++p
C. *p++
D. p++
3、下列函数的功能是在s所存放的字符串中查找形参c中存放的字符,若找到返回该字符下标,若找不到返回-1;请为横线处选择合适的程序
[cpp] view plain copy#include
int f(char s, char c)
{
int i=0;
char *q=s;
if(*q!='\0')
while(*(q+i)!=c && q[i] != '\0')
i++;
if(____)
return(i);
return(-1);
}
A. *(q+i) == 'c'
B. *(q+i) == 0
C. q[i] == c
D. q[i] == '\0'
4、以下程序运行后的输出结果是
[cpp] view plain copy#include
#include
#include
main
{
char *p;
int i;
p = (char *)malloc(sizeof(char) * 20);
strcpy(p, “welcome”);
for(i=6; i>=0; i--) putchar(*(p + i));
printf(“\n”);
free(p);
}
A. emoclew
B. cowelme
5、有下列程序段
[cpp] view plain copyint a = {0,1,2,3,4,5}, *p[3], i;
for(i=0; i<3;i++)
{
p[i] &a[2*i+1];
printf(“%d”, *p[i]);
}
该程序段的功能是
A. 输出数组中下标为偶数的元素值
B. 将数组中每个元素的值扩大两倍再加1
C. 输出数组中下标为奇数的元素值
D. 输出数组的前三个元素值
6、下列程序编译时会发生错误,请根据行号选择错误位置
[cpp] view plain copy#include
using namespace std;
class B
{
int k;
public:
B(int n=0):k(n) //5
int show const //6
{
return k; //7
}
};
class D:public B //8
{
static int j; //9
public:
D(int i):j(i) //10
int show1 const //1
{
return k; //12
}
static int show2 //13
{
return j; //14
}
};
int D::j=0; //15
int main
{
D d1(2); //16
cout<
cout<
return 0;
}
A. 15
B. 16
C. 10
D. 12
7、下列程序的运行结果是
[cpp] view plain copy#include
main
{
int x=1,y=2,a=3,b=4;
switch(x)
{
case 1:
switch(y)
{
case 1:b++;
case2:a++;
break;
}
case 2:++a;
b++;
break;
case 3:a++;
++b;
}
printf(“a=%d,b=%d\n”,a,b);
}
A. a=5,b=5
B. a=2,b=1
C. a=1,b=2
D. a=3,b=4
8、下列代码的运行结果是
[cpp] view plain copymain
{
int a=4,b=5,c=6,d=0;
if( a == 4 || ++b == 5)
if( b!=5&&c--!=6)
printf(“%d,%d,%d\n”,a,b,c);
else
printf(“%d,%d,%d\n”,a,b,c);
else
printf(“%d,%d,%d\n”,a,b,c);
}
A. 4,6,5
B. 4,6,6
C. 4,5,6
D. 4,5,5
9、下列程序的功能是将s中的字符串按长度由小到大排列,请为横线处选择合适的程序
[cpp] view plain copy#include
#include
void f(char *p, int n)
{
char *t;
int i,j;
for(i=0;i
for(j=i+1;j
if(strlen(*(p+i))>strlen(*(p+j)))
{
t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
}
}
main
{
char *s={“abc”,“abcdef”,“abbd”};
f(s,3);
for(int i=0;i<3;i++)
printf(“%s\n”,____);
}
A. s+i
B. &s[i]
C. s[i]
D. *s[i]
10、有下列函数定义
[cpp] view plain copyvoid f(char *p, char z)
{
*p=*p-32;
z=z+32;
printf(“%c,%c”,*p,z);
}
若执行语句char x='a', y='B',f(&x,y),则该程序段的功能是
A. 将x转换成大写字母,将z转换成小写字母
B. 将x转换成大写字母,将y转换成小写字母
C. 将p转换成大写字母,将z转换成小写字母
D. 将*p转换成大写字母,将z转换成小写字母
11、设员工工资表Salary结构如下(员工编号,姓名,部门,工资),下面那条语句可以查询每个部门的平均工资
A. Select AVG(工资)From Salary Group By员工编号
B. Select部门,AVG(工资)From Salary Group By部门
C. Select AVG(工资)From Salary
D. Select 部门,AVG(工资)From Salary
篇6:360校招笔试题
1、下面程序的输出是什么?
[cpp] view plain copydef f(a,b,c);
x = y = 0
for i in range(c):
x = x+a+y
y = y+b
return x
print f(-5,2,10)
A. 0
B. 30
C. 40
D. 20
2、run.sh脚本已经运行了很长时间,但是发现其仍然需要很长的执行时间,为了使run.sh脚本能够后台继续运行,且退出终端后程序不会被kill,下列哪些命令可以达到目的?
A. setsid
B. nohup
C. disown
D. screen
3、下列有关Socket的说法正确的是
A. Socket用于描述IP地址和端口,是一个通信链的句柄
B. Socket客户端的端口是不固定的
C. Socket服务端的端口是固定的
D. Socket通信必须建立连结
4、下面哪些是Spark的缓存方法?
A. memory
B. persist
C. Cache
D. union
5、决策树中包含如下哪些结点?
A. 外部结点(external node)
B. 叶结点(leaf node)
C. 内部结点(internal node)
D. 根结点(root node)
6、矩阵W是n-by-n的对称方阵,其所有元素均非负,矩阵D是n-by-n对角阵,D的第j个对角元素等于W第j行所有元素之和(对于所有j=1,...,n)。设矩阵G=D-W。问:以下哪个必然是矩阵G的特征值?
A. 0
B. e(约等于2.718)
C. π(约等于3.142)
D. 1
7、人群中每一千人中有4个患肝癌,某项血液测试可以较为准确检测肝癌(阳性:检测结果显示患病;阴性:检测结果显示健康)。如果患肝癌,检测结果有80%概率呈阳性,20%概率呈阴性;如果未患肝癌,有90%概率呈阴性,10%概率呈阳性,如果检测结果呈阳性,那么此人患肝癌的概率大约是多少?(提示:使用贝叶斯公式)
A. 0.003
B. 0.8
C. 0.08
D. 0.03
8、以下关于SVM模型说法正确的是
A. Kernel SVM将特征映射到高维空间
B. SVM是有监督学习算法
C. Kernel SVM将特征映射到低维空间
D. SVM是无监督学习算法
9、当使用趋近于无限多的训练数据,训练出的模型将有
A. 一样的方差
B. 其他几项均不正确
C. 更高的方差
D. 更低的方差
10、下列程序的运行结果是x=2,请为横线处选择合适的程序
[cpp] view plain copy#include
int main
{
int i,j,x=0;
for(i=0; i<=2; i++)
{
for(j=1;j<=3;j++)
{
if(j%2) ____;
++x;
}
}
printf(“x=%d\n”,x);
return 0;
}
A. x++
B. x--
C. break
D. continue
篇7:阿里巴巴校招笔试题
一、论述题
(1)至今为止你认为对你影响最大的一本书是什么?
(2)你认为应聘的该职位能为你带来什么?
(3)你最常登录的三个会员制网站是什么?有什么特色?
二、简答题
(1)请预测淘宝一天交易额有多少,并说明理由。
(2)预测FACEBOOK全球手机用户
(3)阿里巴巴的搜索引擎和谷歌的搜索引擎的异同点。
三 、综合体
给出了淘宝网上10件商品进行排序,并说明理由
8、
C、13个
9、某进程在运行过程中需要等待从磁盘上读入数据,此时该进程的状态将:
A、从就绪变为运行 B、从运行变为就绪
C、从运行变为阻塞 D、从阻塞变为就绪
10、下面算法的时间复杂度为:
[cpp] view plain copyint f(unsigned int n)
{
if(n == 0 || n == 1)
return 1;
else
return n*f(n-1);
}
A、O(1) B、O(n) C、O(N*N) D、O(n!)
11、n从1开始,每个操作可以选择对n加1或者对n加倍。若想获得整数,最少需要多少个操作。
A、24 B、21 C、18 D、不可能
12、对于一个具有n个顶点的无向图,若采用邻接表数据结构表示,则存放表头节点的数组大小为:
A、n B、n+1 C、n-1 D、n+边数
14:如下函数,在32bit系统foo(2^31-3)的值是:
[cpp] view plain copyint foo(int x)
{
return x&-x;
}
A、0 B、1 C、2 D、4
15、对于顺序存储的线性数组,访问节点和增加、删除节点的时间复杂度为:
A、O(n),O(n) B、O(n),O(1) C、O(1),O(n) D、O(1),O(1)
16、在32位系统环境中,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是:
[cpp] view plain copystruct A
{
int a;
short b;
int c;
char d;
};
struct B
{
int a;
short b;
char d;
int c;
};
A、16,16 B、16,12 C、13,12 D、11,16
17、袋中有红球,黄球,白球各一个,每次任意取一个又放回,如此连续抽取3次,则下列事件中概率是8/9的是:
A、颜色不全相同 B、颜色全相同 C、颜色全不同 D、颜色无红色
18、一个洗牌程序的功能是将n张牌的顺序打乱,以下关于洗牌程序的功能定义说法最恰当的是:
A、任何连续位置上的两张牌的内容独立
B、n张牌的任何两个不同排列出现的概率相等
C、每张牌出现在n个位置上的概率相等
D、每张牌出现在n个位置上的概率独立
19、用两种颜色去染排成一个圈的6个棋子,如果通过旋转得到则只算一种,一共有多少种染色模式。
A、10 B、14 C、15 D、16
20、递归式的先序遍历一个n节点,深度为d的二叉树,则需要栈空间的大小为:
A: O(logn) B:O(nlogn) C:O(n) D:(d)
篇8:搜狗校招笔试题
搜狗校招笔试题
试卷分三卷,前两卷包含C/C++类,java类,数据结构类,windows类,web类这几类,第三卷是两道算法题,我应聘的是java开发工程师(搜索引擎),要做java类,数据结构类和第三卷的这些题目。下面就说说这三类题目:
(1)java类(有填空题,选择题,一共10题)
1.怎样的类可以作为HashMap的键
2.class Parent{
private String name;
private Parent{}
}
public class child extends Parent{
private String department;
String getValue(){return name;}
public child(){}
public static void main(String arg[]){
Parent p = new Parent();
}
}
问这一段代码哪一行会出错?
3.考察3维数组:
int[][][] x = new int[3][][];
x[0] = new int[4][];
x[1] = new int[2][];
x[2] = new int[5][];
for(int i=0;i
for(int j=0;j
x[j]=new int[i+j+1];
System.out.println();
System.out.println(“size=”+x[j].length);
}
问这段代码会输出结果共多少行?
4.判断关于事件 的一些说法的正误
5.问TreeSet,TreeMap,HashMap这几个类谁是基于谁的实现
6.Java1.6GC对年轻代(young generation)采取的策略
7.JDBC数据库存储过程要用哪个类
8.java.nio包中的多路IO复用和非阻塞IO的核心类
9.判断下列四种情况那些可以终止当前线程
10.考察String.replace()和String.replaceAll()这两个函数的使用
(2)数据结构类(有填空题,选择题,一共10题)
1.给一种自定义的二叉树,求有个节点的二叉树的最小,最大高度
2.A-Z表示1-26,AA,AB分别表示27,28,问ABCD表示什么?考察进制
3.n个顶点m条边的连通图,问至少去掉多少条边才能变成树?
4.已知二叉树的前序序列,中序序列,求后序序列
5.向双向链表插入一个节点
6.4*5的棋盘,在左下角的格子移动到右上角的格子,求有多少种移动方法
7.浮点数的'范围,精度和阶码,尾数的关系
8.删除以邻接表表示的有向图的特定节点和该节点所有相关的弧的时间复杂度
9.有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒
10.适合频繁插入和查找的数据结构
(3)第三卷
1.找出二叉树中最远的2个node的最大距离
2.有一个数列,前一部分是递增,后一部分是递减,找出巅峰的位置
篇9:校招C++笔试题
校招C++笔试题汇总
①链表反转
单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题,比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。
最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:
struct linka {
int data;
linka* next;
};
void reverse(linka*& head) {
if(head ==NULL)
return;
linka *pre, *cur, *ne;
pre=head;
cur=head->next;
while(cur)
{
ne = cur->next;
cur->next = pre;
pre = cur;
cur = ne;
}
head->next = NULL;
head = pre;
}
还有一种利用递归的方法。这种方法的基本思想是在反转当前节点之前先调用递归函数反转后续节点。源代码如下。不过这个方法有一个缺点,就是在反转后的最后一个结点会形成一个环,所以必须将函数的返回的节点的next域置为NULL。因为要改变head指针,所以我用了引用。算法的源代码如下:
linka* reverse(linka* p,linka*& head)
{
if(p == NULL || p->next == NULL)
{
head=p;
return p;
}
else
{
linka* tmp = reverse(p->next,head);
tmp->next = p;
return p;
}
}
②已知String类定义如下:
class String
{
public:
String(const char *str = NULL); // 通用构造函数
String(const String &another); // 拷贝构造函数
~ String(); // 析构函数
String & operater =(const String &rhs); // 赋值函数
private:
char *m_data; // 用于保存字符串
};
尝试写出类的成员函数实现。
答案:
String::String(const char *str)
{
if ( str == NULL ) //strlen在参数为NULL时会抛异常才会有这步判断
{
m_data = new char[1] ;
m_data[0] = '/0' ;
}
else
{
m_data = new char[strlen(str) + 1];
strcpy(m_data,str);
}
}
String::String(const String &another)
{
m_data = new char[strlen(another.m_data) + 1];
strcpy(m_data,other.m_data);
}
String& String::operator =(const String &rhs)
{
if ( this == &rhs)
return *this ;
delete []m_data; //删除原来的数据,新开一块内存
m_data = new char[strlen(rhs.m_data) + 1];
strcpy(m_data,rhs.m_data);
return *this ;
}
String::~String()
{
delete []m_data ;
}
③网上流传的c++笔试题汇总
1.求下面函数的返回值(微软)
int func(x)
{
int countx = 0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}
假定x = 9999。 答案:8
思路:将x转化为2进制,看含有的1的个数。
2. 什么是“引用”?申明和使用“引用”要注意哪些问题?
答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。
3. 将“引用”作为函数参数有哪些特点?
(1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。
(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。
(3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用“*指针变量名”的形式进行运算,这很容易产生错误且程序的`阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。
4. 在什么时候需要使用“常引用”?
如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。常引用声明方式:const 类型标识符 &引用名=目标变量名;
例1
int a ;
const int &ra=a;
ra=1; //错误
a=1; //正确
例2
string foo( );
void bar(string & s);
那么下面的表达式将是非法的:
bar(foo( ));
bar(“hello world”);
原因在于foo( )和“hello world”串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的,
因此上面的表达式就是试图将一个const类型的对象转换为非const类型,这是非法的。
引用型参数应该在能被定义为const的情况下,尽量定义为const 。
5. 将“引用”作为函数返回值类型的格式、好处和需要遵守的规则?
格式:类型标识符 &函数名(形参列表及类型说明){ //函数体 }
好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error!
注意事项:
(1)不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部变量会在函数返回后被销毁,因此被返回的引用就成为了“无所指”的引用,程序会进入未知状态。
(2)不能返回函数内部new分配的内存的引用。这条可以参照Effective C++[1]的Item 31。虽然不存在局部变量的被动销毁问题,可对于这种情况(返回函数内部new分配内存的引用),又面临其它尴尬局面。例如,被函数返回的引用只是作为一个临时变量出现,而没有被赋予一个实际的变量,那么这个引用所指向的空间(由new分配)就无法释放,造成memory leak。
(3)可以返回类成员的引用,但最好是const。这条原则可以参照Effective C++[1]的Item 30。主要原因是当对象的属性是与某种业务规则(business rule)相关联的时候,其赋值常常与某些其它属性或者对象的状态有关,因此有必要将赋值操作封装在一个业务规则当中。如果其它对象可以获得该属性的非常量引用(或指针),那么对该属性的单纯赋值就会破坏业务规则的完整性。
(4)流操作符重载返回值申明为“引用”的作用:
流操作符<<和>>,这两个操作符常常希望被连续使用,例如:cout << “hello” << endl; 因此这两个操作符的返回值应该是一个仍然支持这两个操作符的流引用。可选的其它方案包括:返回一个流对象和返回一个流对象指针。但是对于返回一个流对象,程序必须重新(拷贝)构造一个新的流对象,也就是说,连续的两个<<操作符实际上是针对不同对象的!这无法让人接受。对于返回一个流指针则不能连续使用<<操作符。因此,返回一个流对象引用是惟一选择。这个唯一选择很关键,它说明了引用的重要性以及无可替代性,也许这就是C++语言中引入引用这个概念的原因吧。赋值操作符=。这个操作符象流操作符一样,是可以连续使用的,例如:x = j = 10;或者(x=10)=100;赋值操作符的返回值必须是一个左值,以便可以被继续赋值。因此引用成了这个操作符的惟一返回值选择。
例3
#i nclude
int &put(int n);
int vals[10];
int error=-1;
void main()
{
put(0)=10; //以put(0)函数值作为左值,等价于vals[0]=10;
put(9)=20; //以put(9)函数值作为左值,等价于vals[9]=20;
cout<
cout<
}
int &put(int n)
{
if (n>=0 && n<=9 ) return vals[n];
else { cout<<“subscript error”; return error; }
}
(5)在另外的一些操作符中,却千万不能返回引用:+-*/ 四则运算符。它们不能返回引用,Effective C++[1]的Item23详细的讨论了这个问题。主要原因是这四个操作符没有side effect,因此,它们必须构造一个对象作为返回值,可选的方案包括:返回一个对象、返回一个局部变量的引用,返回一个new分配的对象的引用、返回一个静态对象引用。根据前面提到的引用作为返回值的三个规则,第2、3两个方案都被否决了。静态对象的引用又因为((a+b) == (c+d))会永远为true而导致错误。所以可选的只剩下返回一个对象了。
6. “引用”与多态的关系?
引用是除指针外另一个可以产生多态效果的手段。这意味着,一个基类的引用可以指向它的派生类实例。
例4
Class A; Class B : Class A{...}; B b; A& ref = b;
7. “引用”与指针的区别是什么?
指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。此外,就是上面提到的对函数传ref和pointer的区别。
8. 什么时候需要“引用”?
流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。
以上 2-8 参考:blog.csdn.net/wfwd/archive//05/30/763551.aspx
9. 结构与联合有和区别?
1. 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。
2. 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。
10. 下面关于“联合”的题目的输出?
a)
#i nclude
union
{
int i;
char x[2];
}a;
void main()
{
a.x[0] = 10;
a.x[1] = 1;
printf(“%d”,a.i);
}
答案:266 (低位低地址,高位高地址,内存占用情况是Ox010A)
b)
main()
{
union{ /*定义一个联合*/
int i;
struct{ /*在联合中定义一个结构*/
篇10:腾讯校招笔试题
腾讯校招笔试题
①、数据结构
若一颗二叉树的前序遍历为a,e,b,d,c,后序遍历为b,c,d,e,a,则根节点的孩子节点( )
A:只有e
B:有e,b
C:有e,c
D:不确定
答案:A
解析:根据前序遍历的定义,根最先被访问,所以a是二叉树的根,正常情况下,a应该有左右两个子树:在前序序列中a的'直接后继是e,说明e位于 左子树;在后序序列中a的直接前驱是e,说明e位于右子树;从而a只能有1个子树,且e就是子树的根节点。
②、数据结构
现有一个包含m个节点的三叉树,即每个节点都有三个指向孩子节点的指针,请问:在这3m个指针中有( )个空指针。
A:2m
B:2m-1
C:2m+1
D:3m
答案:C
解析:方法1:若只有1个根结点,显然该根节点有3个空指针:a(1)=3;
若n-1个结点有a(n-1)个空指针,在一个原空指针的位置增加一个叶结点后,减少了1个空指针,但增加了3个空指针,从而:a(n)=a(n-1) + 2;因此,a(n)是首项为3,公差为2的等差数列,通项为a(n)=2n+1.
方法2:m个结点一共有3m个指针,m个结点的树一共有m-1的边,即m-1个指针是指向结点的,剩下的指针即为空指针:3m-(m-1)=2m+1,
③、数学计算
储蓄盒中2分和5分的硬币的个数相等,2分和5分的钱数也相等,问:可能是多少元( )
A:2.1元
B:2.4元
C:2.8元
D:3.0元
答案:ABCD
解析:假设2分和5分的硬币数目为x,则有2x=5x,解得x=0。即:储蓄盒中没有2分和5分的硬币。但可以有1分的,而1分的硬币理论上可以表示以0.01元为单位的所有值。
篇11:阿里巴巴校招笔试题
阿里巴巴校招笔试题
①、C++
以下程序输出结果是( )
class A
{
public:
virtual void func(int val = 1)
{
std::cout << “A->” << val << std::endl;
}
virtual void test
{
func();
}
};
class B:public A
{
public:
void func(int val = 0)
{
std::cout << “B->” << val << std::endl;
}
};
int main(int argc,char* argv[])
{
B*p = new B;
p->test();
return 0;
}
A:A->0
B:B->1
C:A->1
D:B->0
答案:B
解析:由于p指向了继承类B的对象,所以,在调用A中的test之后,虚函数func()会调用继承类B的函数,而默认形参仍然会使用test所在的类A的形参1,从而输出B->1,
②、数学计算将1,2,3,......,99,100任意排列成一个圈,相邻两数的差的绝对值求和最多为( )
A:100
B:198
C:200
D:500
E:2500
F:5000
答案:F
解析:定义1-50为“小数”,51-100为“大数”,将“相邻元素的差的绝对值之和”简称“绝差之和”。为了将绝差之和取最大,应该避免将“大数”和“大数”放在一起,
因此,可以考虑间隔排布。形成:1,100,2,99,3,98,4,97……,50,51的`序列。而事实上,这个序列即绝差之和最大的序列。可使用如下证明:
1、如下图所示:如果将小数和小数交换,得到的序列绝差之和不变。将小数x和y互换。假定交换之前,x和y的相邻元素分别为a、b和c、d。则交换之前的绝差为:(a-x)+(b-x)+(c-y)+(d-y),交换之后的绝差为:(a-y)+(b-y)+(c-x)+(d-x),二者相等。
2、如下图所示:如果将大数和大数交换,得到的序列绝差之和不变。将大数a和b互换。假定交换之前,a和b的相邻元素分别为x、y和z、w。则交换之前的绝差为:(a-x)+(a-y)+(b-z)+(b-w),交换之后的绝差为:(b-x)+(b-y)+(a-z)+(a-w),二者相等。
3、如下图所示:如果将大数和小数交换,得到的序列绝差之和必然减小。将小数a和大数z互换。假定交换之前,a和z的相邻元素分别为x、y和b、c。则交换之前的绝差为:(a-x)+(a-y)+(b-z)+(c-z),交换之后的绝差为:|x-z|+|y-z|+|b-a|+|c-a|,由于x、y、z更接近,a、b、c更接近,所以交换后绝差变小。
因此,无论如何交换,绝差之和都无法增大。即原序列的绝差之和是最大的。它形成的绝差序列是99,98,97,96……,2,1,50,这100个数的和为5000。
③、计算机基础
如果下列的公式成立:84*148=B6A8。则采用的是( )进制表示的。
A:15
B:11
C:12
D:14
E:16
F:以上都不对
答案:C
解析:1、常规做法:假定数值是x进制的,则写出等式:(8x+4)*(x2+4x+8)=11x3+6x2+10x+8,化简得到(3x2+6x+2)*(x-12)=0,则x的非负整数解为x=12。
2、“启发式”做法:在十进制体系下,左侧个位乘积4*8=32;右侧个位为8,差32-8=24,从而进制必然是24的约数。只有C选项12是24的约数。
篇12:网易校招笔试题
. 单项选择题
1. 下有关JAVA异常类的描述,说法错误的是?
A异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和
IOException等继承Exception
RuntimeException般是外部错误,其必须被 try{}catch语句块所捕获
Error类体系描述了Java运系统中的内部错误以及资源耗尽的情形,Error不需要捕捉
RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须被
try{}catch语句块所捕获BCD
2.
检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。
public class HelloB extends HelloA
{
public HelloB()
{
}
{
System.out.println(
}
static
{
System.out.println(
}
public static void main(String[] args)
{
new HelloB();
}
}
class HelloA
{
public HelloA()
{
}
{
System.out.println(
}
static
{
System.out.println(
}
}
Astatic A I’m A class static B I’m B class
C
Dstatic A static B I’m A class I’m B classI’m A class static A I’m B class static B
3. 检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。
package algorithms.com.guan.javajicu;
public class Inc {
public static void main(String[] args) {
Inc inc = new Inc();
int i = 0;
inc.fermin(i);
i= i ++;
System.out.println(i);
}
void fermin(int i){
i++;
}
}
1
2
3ABCD
4. 检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。
package algorithms.com.guan.javajicu;
public class Example {
String str = new String(
char[] ch = {a,b,c};
public static void main(String[] args) {
Example ex = new Example();
ex.change(ex.str, ex.ch);
System.out.print(ex.str +
System.out.print(ex.ch);
}
public void change(String str, char ch[]){
str=
ch[0]= g;
}
}
test okandabc
test okandgbc
Dgoodandgbc
5. 下列关于Spring特性中IoC描述错误的是:
A
B
C
DIoC就是指程序之间的关系由程序代码直接操控所谓“控制反转”是指控制权由应代码转到外部容器,即控制权的转移IoC将控制创建的职责搬进了框架中,从应代码脱离开来使Spring的IoC容器时只需指出组件需要的对象,在运时Spring的IoC容器会根据XML配置数据提
供给它
. 多选选择题
6. 下有关java类加载器,说法正确的是?
A
B
C
D引导类加载器(bootstrap class loader):它来加载 Java 的核库,是原代码来实现的扩展类加载器(extensions class loader):它来加载 Java 的扩展库。系统类加载器(system class loader):它根据 Java 应的类路径(CLASSPATH)来加载 Java 类tomcat为每个App创建个Loader,保存着此WebApp的ClassLoader。需要加载WebApp下的类
时,就取出ClassLoader来使
7. 在服务器的络编程中,解决会话跟踪的法有?
A
B
C
D使Cookie使URL重写使隐藏的表单域以上法都不能单独使
三. 问答题
8. 任意2n个整数,从其中选出n个整数,使得选出的n个整数和同剩下的n个整数之和的差最。
9. 有两个有序的集合,集合的每个元素都是段范围,求其交集,例如集合{[4,8],[9,13]}和{[6,12]}的交集为{[6,8],[9,12]}
10. 个件中有10000个数,Java实现个多线程程序将这个10000个数输出到5个不件中(不要求输出到每个件中的数量相同)。要求启动10个线程,两两组,分为5组。每组两个线程分别将件中的奇数和偶数输出到该组对应的个件中,需要偶数线程每打印10个偶数以后,就将奇数线程打印10个奇数,如此交替进。同时需要记录输出进度,每完成1000个数就在控制台中打印当前完成数量,并在所有线程结束后,在控制台打印”Done”.
11.
检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。
package algorithms.com.guan.javajicu;
public class Example {
String str = new String(“good”);
char[] ch = {‘a’, ’b’, ’c’};
public static void main(String[] args) { Exampleex = new Example();
ex.change(ex.str, ex.ch);
System.out.print(ex.str + ” and ”);
System.out.print(ex.ch);
}
public void change(Stringstr, char ch[]) {
str = “test ok”;
ch[0] = g;
}
}
★ 腾讯校招笔试题
★ 淘宝招聘笔试真题
★ 校招发言稿
★ HP校招网申试题
【羊城晚报校招笔试题(共12篇)】相关文章:
国开行应届生校招笔试经验2023-03-14
校园招聘校友分享范文2023-08-09
多普达校招面试题2022-05-26
百度校园招聘web前端广州站笔试题2023-02-21
四大会计师事务所自我介绍2023-10-19
校招出纳求职简历2023-04-12
巴克莱银行网申试题及其解题思路2022-11-16
校园安全卫生工作汇报2023-11-23
银行校招面试自我介绍2023-01-18
校招广州非技术类笔试经验2022-09-08