腾讯2016-9-1 软件测试工程师 模拟考 第二部分 程序题目

总的一个小时:

第一部分:15道多选题

第二部分:1道编程题+1道问答题


编程:打印蛇形矩阵(类似于 《剑指offer 》面试题20 顺时针打印矩阵)

问答:stack与heap的区别


第一部分

1 两台服务器距离1500km远,ping通需要耗费多少时间? 

4ms 8ms 16ms 32ms 



2 以下哪些属于平衡二叉树?

红黑树 B+树 完全二叉树 。。。


3 Integer i1=127,i2=127,i3=128,i4=128;

i1==i2;

i1.equal(i2);

i3==i4;

i3.equal(i4);


判断结果该是:true true false true

理由:

JVM会自动维护8种基本类型的常量池,int常量池中初始化-128~127的范围,所以当为i=127赋值时,在自动装箱过程中是取自常量池中的数值,而当i=128时,128不在常量池范围内,所以在自动装箱过程中需要new128,所以地址不一样。


第二部分 我的答案

/*
题目:蛇形矩阵
例子:

输入 3              
对应的矩阵是:
1 2 3
8 9 4
7 6 5

按行输出:1 2 3 8 9 4 7 6 5

*/


#include<iostream>
//#include<vector>
//#include<algorithm>
using namespace std;
int k=1;
int **nn;
void f( int n,int start)
{
	int endX=n-1-start;
	int endY=endX;

	for(int i=start;i<=endX;i++)
	{
		nn[start][i]=k++;
	}
	if(start<endY)
	{
		for(int i=start+1;i<=endY;i++)
	{
		nn[i][endX]=k++;
	}
	}

	if(start<endY&&start<endX)
	{
		for(int i=endX-1;i>=start;i--)
		{
		nn[endY][i]=k++;  //endY指的是 第几行
		}
	}

	if(start<endY-1 && start<endX)
	{
		for(int i=endY-1;i>start;i--)
		{
		nn[i][start]=k++;  //endY指的是 第几行
		}
	}


}

void main()
{ 
	  int n;
	  cin>>n;
	 
	  nn=new int *[n];
	  for(int i=0;i<n;i++)
		  nn[i]=new int [n];

	  if(n<=1)cout<<n<<endl;
	  else
	  {
		  int start=0;
		  while(start*2<n)
		  { 
			  f(n,start);
			  start++;
		  }
	  }
	  for(int k1=0;k1<n;k1++)
		  {for(int kk=0;kk<n;kk++)
			  cout<<nn[k1][kk]<<"\t";
	  cout<<endl;}


	system("pause");
}

1.heap是堆,stack是栈。
2.stack的空间由操作系统自动分配和释放,heap的空间是手动申请和释放的,heap常用new关键字来分配。
3.stack空间有限,heap的空间是很大的自由区。
   在Java中,若只是声明一个对象,则先在栈内存中为其分配地址空间,若再new一下,实例化它,则在堆内存中为其分配地址。
4.举例:
数据类型 变量名;这样定义的东西在栈区。如:Object a =null; 
只在栈内存中分配空间new 数据类型();或者malloc(长度); 这样定义的东西就在堆区。如:Object b =new Object(); 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值