某著名公司2015暑期实习招聘试题及相关内容复习

1.)输出下面的结果

<pre name="code" class="cpp">#include <iostream>
using namespace std;int main(int argc, char *argv[])
{int **a[5][4];int *b[5][4];int *c[5];int d[5][4];char *e="helloworld";char g[]="0123456789";char f[20]="helloworld";cout<<sizeof(a)<<endl;cout<<sizeof(b)<<endl;cout<<sizeof(c)<<endl;cout<<sizeof(d)<<endl;cout<<sizeof(e)<<endl;cout<<sizeof(g)<<endl;cout<<sizeof(f)<<endl;return 0;
}

 答案:
80
80
20
80
4
11
20
请按任意键继续. . .

分析:前三个数组都是指针数组,存放的是指针,指针的大小不论什么类型都是4个字节,因此它的大小为4*number(数组)。后面sizeof(g)共11个字符,因为还有一个'\0'.因此大小为11.

另外本类型的题,除了经常考察指针以外,对于类或结构体中的大小也经常考察,因为其中涉及中了内存对齐,可参考博客http://www.cnblogs.com/longlybits/articles/2385343.html

2.)定义 int** p=NULL,如何动态分配二维

数组p[m][n]和释放

分析:

由于本题事先给定了p,所以必须使用数组的方式分配二维数组,否则我强烈建议使用vector来分配二维数组,使用vector的好处很多,如可以随时改变动态分配数组的大小,不需要手动释放内存等,可参考博客:
http://blog.csdn.net/zsuguangh/article/details/6135529

现在回到使用数组的方式类分配二维数组。

方法有两种:参考博客:http://blog.csdn.net/lavorange/article/details/42879605

一、二维数组的动态分配(内存不连续)

//定义p[m][n]int **p=new int *[m];for (int i=0;i<m;i++){p[i]=new int[n];}//初始化for (int i=0;i<m;i++){memset(p[i],0,sizeof(int)*n);}//释放内存for (int i=0;i<m;i++){delete[] p[i];p[i]=0;//注意释放时要将指针赋值为0,以免指针成为迷途指针}delete[] p;p=0;

808020804
二、二维数组的动态分配(内存连续)

//定义p[m][n]int **p=new int *[m];p[0]=new int[m*n];for (int i=1;i<m;i++){p[i]=p[i-1]+n;}
//初始化memset(p[0],0,sizeof(int)*n*m);//释放内存delete[] p[0];p[0]=0;delete[] p;p=0;
3.)叙述堆和栈的区别

参考答案:

1.栈的空间由操作系统自动分配与释放,堆的空间手动分配与释放;

2.栈的空间有限,堆是很大的自由存储区:

3.c中的malloc函数分配的内存空间即在堆上,而C++中对应的是new 操作符;

4.程序在编译期对变量和函数分配内存都在栈上进行,且程序的运行过程中函数调用时参数传递也在栈上进行。

4).叙述全局静态变量和全局变量的区别,局部静态变量和局部变量的区别,静态函数与非静态函数的区别

参考答案:http://www.cnblogs.com/chenglei/archive/2009/09/06/1561367.html

http://blog.sina.com.cn/s/blog_9d38f2eb01010f76.html

C++变量根据定义位置的不同,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名作用域和文件作用域

作用域看:

全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包括全局变量定义的源文件需要用extern关键字再次声明这个全局变量。

静态局部变量具有局部作用域。它只被初始化一次,自从第一次初始化直到程序运行结束都一直存在,他和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。

局部变量也只有局部作用域,他是自动对象,他在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用结束后,变量就被撤销,其所占用的内存也被收回。

静态全局变量也具有全局作用域,他与全局变量的区别在于如果程序包含多个文件的话,他作用于定义它的文件里,不能作用到其他文件里,即被static关键字修饰过的变量具有文件作用域。这样即使两个不同的源文件都定义了相同的静态全局变量,他们也是不同的变量。

从分配内存空间看:

全局变量、静态局部变量、静态全局变量都在静态存储区分配空间,而局部变量在栈分配空间。

全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上没有什么不同。区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其他源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其他源文件中引起错误。

1、静态变量会被放在程序的静态数据存储区里,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是他与堆栈变量和堆变量的区别

2、变量用static告知编译器,自己仅仅在变量的作用域范围内可见。这一点是他与全局变量的区别。

从以上分析可以看出,把局部变量改变为静态变量后是改变了他的存储方式,即改变了他的生存期。把全局变量改变为静态变量后是改变了他的作用域,限制了他的使用范围,因此static这个说明符在不同的地方起的作用是不同的。

TIPS:

1、若全局变量仅在单个文件中访问,则可以讲这个变量修改为静态全局变量。

2、若全局变量仅在单个函数中使用,则可以将这个变量修改为该函数的静态局部变量。

3、全局变量、静态局部变量、静态全局变量都存放在静态数据存储区。

4、函数中必须要使用static变量的情况:当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。

5).类的前向声明有什么作用?

参考博客:
http://blog.csdn.net/yunyun1886358/article/details/5672574

http://blog.csdn.net/fg2006/article/details/6234973
http://qimo601.iteye.com/blog/1406992

主要用于在一个类的声明中需要另一个类的定义时,但是这时并不需要知道类的大小和成员操作等信息,只需要知道这是一个类时,可以用前置声明来告诉编译器这是个类即可,常用于两个类相互包含的情况,比如a类在声明时定义了b类的对象,而b类在声明中定义了a类的引用或指针时,这时需要b类在声明时,由于是a类的引用或指针,大小是固定的,且不需要知道a类的大小和成员的操作等信息,因此只要做a的前置声明(class a)就可以了。

6).谈谈面向对象的编程的理解

面向对象的基本观点 :客观世界由对象组成,任何客观实体都是对象,复杂对象可以由简单对象组成。具有相同数据和操作的对象可以归纳成类,对象是类的实例。类可以派生出子类,子类除了父类的全部特性外还有自身的特性。对象之间的联系通过消息来联系,类的封装性决定了其数据只能通过消息请求调用可见方法来访问。
http://www.cnblogs.com/supers/articles/1229078.html
7).谈谈进程同步与互斥

互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源,如“第一类读写者模型”。

参考博客: http://blog.csdn.net/f81892461/article/details/8648122
http://www.cnblogs.com/CareySon/archive/2012/04/14/Process-SynAndmutex.html
 
8)编程题:
取石子问题,有1堆n个的石子,每次只能取{1,3,4}个石子,先取完石子者胜利,那么先手胜还是后手胜?
这是博弈论的问题,可参考

http://www.cnblogs.com/frog112111/p/3199780.html

http://blog.csdn.net/acm_cxlove/article/details/7854530











808020804

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259323.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

递归函数(九):最小不动点定理

递归函数&#xff08;一&#xff09;&#xff1a;开篇递归函数&#xff08;二&#xff09;&#xff1a;编写递归函数的思路和技巧递归函数&#xff08;三&#xff09;&#xff1a;归纳原理递归函数&#xff08;四&#xff09;&#xff1a;全函数与计算的可终止性递归函数&#…

html中单选框颜色怎么改,如何更改单选按钮的颜色?

侃侃无极一种快速的解决方法是使用来覆盖单选按钮的输入样式:after&#xff0c;但是创建自己的自定义工具箱可能是更好的做法。 input[typeradio]:after { width: 15px; height: 15px; border-radius: 15px; top: -2px; left: -1px; …

PhotoShop

前景色填充&#xff1a;Altdelete 背景色填充&#xff1a;Ctrldelete 切换前景/背景色&#xff1a;X 键 接按d 是默认的黑色和白色转载于:https://www.cnblogs.com/xingfuzzhd/p/3358156.html

python 循环技巧

原文地址&#xff1a;http://docs.pythontab.com/python/python3.4/datastructures.html#tut-tuples 在字典中循环时&#xff0c;关键字和对应的值可以使用 iteritems() 方法同时解读出来。 knights {gallahad: the pure, robin: the brave}for k,v in knights.items():print(…

C++内存管理详解

C内存管理详解 转载&#xff1a;http://blog.csdn.net/yingxunren/article/details/4344933 伟大的Bill Gates 曾经失言&#xff1a;   640K ought to be enough for everybody — Bill Gates 1981   程序员们经常编写内存管理程序&#xff0c;往往提心吊胆。如果不想触…

如何先执行input (checkbox,radio)再执行函数

2019独角兽企业重金招聘Python工程师标准>>> 遇到一个问题&#xff0c;当input type"checkbox"点击时&#xff0c;没有立即执行勾选或去勾&#xff0c;而是先执行函数&#xff0c;如下代码 $(".sidebar_cart .cart_list ul").on("click&qu…

计算机基础及msoffice应用好考吗,全国计算机等级考试考试一级WPS Office和MS Office有什么不同?那个好考?...

以后的计算机office中的word等时2010版本&#xff0c;计算机一级有两个选择&#xff1a;1、一级WPS Office1. 采用无纸化考试&#xff0c;上机操作。考试时间为90 分钟。2. 软件环境:Windows 7 操作系统,WPS Office 2012 办公软件。3. 在指定时间内,完成下列各项操作:(1) 选择题…

Linux服务器上监控网络带宽的18个常用命令

本文介绍了一些可以用来监控网络使用情况的Linux命令行工具。这些工具可以监控通过网络接口传输的数据&#xff0c;并测量目前哪些数据所传输的速度。入站流量和出站流量分开来显示。 作者&#xff1a;布加迪编译来源&#xff1a;51CTO.com|2014-04-11 10:10移动端收藏分享【51…

strcpy和memcpy的区别

转载&#xff1a;http://www.cnblogs.com/stoneJin/archive/2011/09/16/2179248.html strcpy与memcpy都是标准的C库函数&#xff0c;strcpy提供了字符串的复制。即strcpy只用于字符串复制&#xff0c;并且它不仅复制字符串内容之外&#xff0c;还会复制字符串的结束符。 已知…

js正則表達式语法

1. 正則表達式规则 1.1 普通字符 字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号&#xff0c;都是"普通字符"。表达式中的普通字符&#xff0c;在匹配一个字符串的时候&#xff0c;匹配与之同样的一个字符。 举例1&#xff1a;表达式 "c&q…

计算机常见屏幕英语语句,计算机常见屏幕英语

计算机系统常见的屏幕英语对照,。、计算机常见屏幕英语(SCREEN ENGLISH)access 访问 data 数据 hard disk 硬盘 files 文件directory 目录 delete 删除(同&#xff1a;remove) exists 存在 name 名称 read-only 只读 change 修改&#xff0c;改变 save 保存 password 密码 conn…

[转]Windows Phone 7程序设计”完全版电子书可以免费下载了

本文转自&#xff1a;http://www.cnblogs.com/salam/archive/2010/10/29/1864246.html 现在学习Windows Phone 7开发资料十分有限&#xff0c;除了MSDN的官方开发文档外和一些博客外&#xff0c;几无其他的学习渠道。幸运地是美国的资深程序员兼作家Charles Petzold为大家免费放…

土豆春季实习试题之惨烈教训

今天做土豆的春季C实习生招聘试题&#xff0c;很多不应该错的错了&#xff0c;在此挑出一些重要的错误&#xff0c;供自己参考&#xff0c;以免以后再犯。 一、一道编程题&#xff0c;很简单&#xff0c;但是错了。 题目&#xff1a; 输入一个数组&#xff0c;求它的逆序数组…

linux-redhat替换yum网络源为centos网络源

2019独角兽企业重金招聘Python工程师标准>>> 1.为什么要替换 redhat系统使用yum命令安装软件时会出现This system is not registered with RHN. RHN support will be disabled. 原因是redhat的yum安装软件需要注册&#xff0c;是收费的。而centos的yum源是免费的。这…

计算机如何打开无线网络适配器,win7系统下网络适配器打不开怎么解决

通常情况下我们的电脑中都会有一个网络适配器&#xff0c;这是计算机联网的设备&#xff0c;不过最近有深度技术win7旗舰版系统用户却遇到了网络适配器打不开的情况&#xff0c;该怎么办呢&#xff0c;接下来系统城小编就给大家分享一下win7系统下网络适配器打不开的具体解决方…

cf13C Sequence(DP)

题意&#xff1a; N个数。a1...aN。 对于每个数而言&#xff0c;每一步只能加一或减一。 问最少总共需要多少步使得新序列是非递减序列。 N (1 ≤ N ≤ 5000) 思路&#xff1a; *一个还不知道怎么证明的结论&#xff08;待证&#xff09;&#xff1a;最后的新序列b1...bN中…

【华为OD机试真题2023CD卷 JAVAJS】求幸存数之和

华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 求幸存数之和 知识点数组 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 给一个正整数列 nums,一个跳数 jump,及幸存数量 left。运算过程为:从索引为0的位置开始向后跳,中间跳过 J 个数字,命中索引为J+…

JavaScript编码规范

1. 变量命名规范 变量名包括全局变量&#xff0c;局部变量&#xff0c;类变量&#xff0c;函数参数等等&#xff0c;他们都属于这一类。 基本规范 变量命名都以类型前缀有意义的单词组成&#xff0c;单词首字母都需要大写。例如&#xff1a;sUserName&#xff0c;nCount。 前缀…

大数据相加(转载)

转载&#xff1a;http://www.du52.com/text.php?id411 在这个大数据的年代里&#xff0c;我们不可避免会遇到两个超越正常数据类型&#xff08;如int,long,long long&#xff09;的整数相加。显然两个大数据已经不能使用传统的加号直接相加&#xff0c;但是相加的原理仍然是不…

微型计算机中使用的光盘应属于什么媒体,计算机应用基础练习题

计算机应用基础一、判断题1、微型机中硬盘工作时&#xff0c;应特别注意避免强烈震动【是】2、在Windows中&#xff0c;文件夹或文件的换名只有一种方法【否】3、用户在连接网络时&#xff0c;只可以使用域名&#xff0c;不可以使用IP地址【否】4、在WORD2007中&#xff0c;您可…