搜档网
当前位置:搜档网 › 200多个C#面试题含答案

200多个C#面试题含答案

200多个C#面试题含答案
200多个C#面试题含答案

一.选择,填空题

1.在https://www.sodocs.net/doc/425897106.html,中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,

下面叙述错误的是(C)。

a)insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;

b)ExecuteNonQuery()方法返回执行Sql语句所影响的行数。

c)Select操作的Sql语句只能由ExecuteReader()方法来执行;~

d)ExecuteReader()方法返回一个DataReder对象;

2.面向对象的语言具有__继承性_性、_封装性_性、_多态性性。

3.能用foreach遍历访问的对象需要实现________________接口或声明

________________方法的类型。(@)

答:IEnumerable 、 GetEnumerator()

4.在C#中,表示一个字符串的变量应使用以下哪条语句定义?( B )

A. CString str;

B. string str;

C. Dim str as string

D. char * str;

5.在C#编制的财务程序中,需要创建一个存储流动资金金额的临时变量,则应使用下列哪

条语句?( A )

A. decimal theMoney;

B. int theMoney;

C. string theMoney;

D. Dim theMoney as double

6.C#中,新建一字符串变量str,并将字符串”Tom's Living Room”保存到串中,则应该

使用下列哪条语句?(B)

A. string str = “Tom\'s Living Room”;

B. string str = “Tom's Living Room”;

C. string str(“Tom's Living Room”);

D. string str(“Tom”s Living Room”);

7.应用https://www.sodocs.net/doc/425897106.html, 访问数据时,Connection 对象的连接字符串中Initial Catalog 子串的含义是 ( A )

A. Connection 对象连接到的数据库的名称

B. Connection 对象的身份验证信息

C. Connection 对象的最大连接时间

D. Connection 对象使用的缓存大小

8.使用Visual Studio .NET 的”新建C# 项目”创建一个名为”SimpleForm”的Windows 表单应用程序,则在生成_______文件中可设置该程序集的Copyright、Trademark 等属

性信息.( D )

A. Form1.resx

B. SimpleForm.sln

C. SimpleForm.csproj

D. AssemblyInfo.cs

9.C#程序中,为使变量myForm 引用的窗体对象显示为对话框,必须: ( C )

A. 使用myForm.ShowDailog 方法显示对话框

B. 将myForm 对象的isDialog 属性设为true

C. 将myForm 对象的FormBorderStyle 枚举属性设置为FixedDialog

D. 将变量myForm 改为引用System.Windows.Dialog 类的对象

10.下列哪些语言可以用来开发XML Web Service? ( A,B,C,D )

A. C

B. C++

C. Java

D. C#

11.Web 表单中,按钮的默认事件是( A )

A. Click 事件

B. Load 事件

C. Init 事件

D. Command 事件

12.关于https://www.sodocs.net/doc/425897106.html, 窗体应用程序,下列说法哪些是正确的?( D )

A. Web 窗体是在浏览器中进行解释执行的

B. Web 窗体程序中脚本和代码必须严格分开

C. Web 窗体程序产生的HTML 页面只能运行于IE 浏览器

D. Web 窗体程序的代码可以使用任何一种.NET 兼容的编程语言编写

13.关于结构类型,下列说法哪些是正确的?( A )

A. 结构是值类型

B. 结构中不允许定义带参数的实例构造函数;

C. 结构中不允许定义析构函数

D. 结构中可以定义成员方法,但是方法内不能使用this 指针

E. 不能使用new 关键字创建结构类型的实例

14.关于线程和进程,下列说法哪些是正确的?( A D )

A. 线程是操作系统分配处理器时间的基本单位;

B. 进程是操作系统分配处理器时间的基本单位;

C. 一个线程可以属于多个进程;

D. 一个进程可以有多个线程;

15.为从某个网站访问xml信息,应使用( _)类的对象分析下载返回的xml文档 (C D)

A StreamReader

B TextReader

C XmlReader

D XmlTextReader

16.面向对象编程中的”继承”的概念是指(B)

A 派生类对象可以不受限制地访问所有的基类对象

B 派生自同一个基类的不同类的对象具有一些共同特征

C 对象之间通过消息进行交互

D 对象的内部细节被隐藏

17.以下叙述正确的是( D )。@

A. 一条表达式中可以同时出现浮点数类型和decimal类型

B. 类可以继承,并且可以多重继承

C. int[,] b=new int[4,5] //创建了一个二维数组,第一维长为4,第二维长为5

D. int x=23; object o=x; int y=(int) o; //实现了一次装箱操作

18.以下有关结构类型和枚举类型的叙述错误的是( C )。

A. 结构类型和枚举类型都是复合类型

B. 结构类型只能是简单值类型的组合

C. 枚举类型要求成员只能是整数类型

D. 枚举类型的变量在某一时刻只

19.接口和类最主要的区别在于( D )。

A.类可以重载而接口不可以

B.类不可以重载而接口可以

C.类可以多重重载而接口不可以

D.类不可以多重重载而接口可以

20.关于静态域成员与非静态域成员,以下说法正确的是( C )。

A. 一个类的所有对象共享非静态域成员

B. 一个类的一个对象分别拥有不同的非静态域成员的实例

C. 静态域成员都能在不生成实例的情况下直接被使用

D. 非静态域成员都能

21.关于重载,以下叙述错误的是(C,D)。

A. 重载是指在类的内部存在若干个方法名称一致但是参数列表不同的方法

B. 方法重载是指创建多个名称相同的方法,其中每个方法都在某些方面具有唯一性,以便

编译器能够正确区别它们

C. 重载构造函数主要是为了在创建对象的同时进行赋值

D. 方法的重载允许两个方法的名称和参数列表相同,而返回类型不同

22.下面有关C#中方法的参数描述正确的是(B )。

A. 利用值类型参数调用方法时,对形参的修改会反映到实参上去

B. 输出型参数的实参在传递给形参前,不需要明确赋值

C. 引用型参数不另外开辟新的内存区域,这一点是它与输出型参数的不同之处

D. 数组型参数可以是任何类型的数组

23.下面是一个派生类的定义语句:

public class car: vehicle

{ private string model=”L”;

private int wheelNo=4;}

请指出针对该定义的正确的说法(C )。

A. vehicle类是car类的一个特例,因而它可以被继承

B. car类是父类,vehicle类是子类

C. 在car类中定义的成员model和wheelNo会删除vehicle类中同名的成员

D. car类是vehicle类的一个特例,它可以继承vehicle类中除构造函数和析构函

24.(D )关键字可以用来访问当前对象的基类对象。

A.object B.this

C.as D.base

25.重载是(B )的形式之一。

A.接口 B.多态

C.继承 D.类

26.x的初值为24,则表达式x+=x--+=x%=17运算的结果值为(D )。

A. 28 B.27

C.26 D.错误的表达式

27.下面是几条定义初始化二维数组的语句,指出其中正确的是(D )。

A.int array2[ ][ ]=new int[3,2];

B.int array2[,]=new int[3,2];

C.int[ ][ ] array2=new int[3,2];

D.int[, ] array2=new int[3,2];

28.一个初始化语句:

enum monthes{January,February=3,March=5,April=7,May,June},则此时May的值为(C )。A.4 B.5 C.8 D.9

29.在https://www.sodocs.net/doc/425897106.html,中所有的自定义用户控件都必须继承自________? 答:Control。

30.在.Net中所有可序列化的类都被标记为_____?

答:[serializable]

31.在.Net托管代码中我们不用担心内存漏洞,这是因为有了______?

答:GC。

32.在.Net中,类System.Web.UI.Page 可以被继承么?

答:可以。

33.声明静态变量的关键字是(static),声明常量的关键字是(const)

34.在流程控制中CONTINUE的作用(跳出当前循环继续下一次循环)

35.软件工程的三大文档(需要分析说明书)(概要设计说明书)(详细设计说明书)。

36.B/S通常使用的结构设计模型分为(模型)(视图)(控制器)。(MVC经典的

Web/Business/DataAccess)

37.XML的全称是(Extensible Markup Language”可扩展标记语言”),提供了快速和有

效地读写XML的方式的类分别是(XMLReader)(XMLWriter)

38.C#中所有的类型实质上都是从(Object)类派生而来的。

https://www.sodocs.net/doc/425897106.html,运行库支持被称为(委托)的引用类型,其作用类似于C++中函数指针的用途。

40.B/S通常使用的结构设计模型分为()()()?*

41.类的三大特性是()()()

https://www.sodocs.net/doc/425897106.html,运行库支持被称为()的引用类型,其作用类似于C++中函数指针的用途

43.C#中处理内存管理功能的是(托管代码GC(垃圾回收))

44.在C#中用于显式地将一个值或引用转换为另一种不同的类型称为(拆箱)

45.在ADO。NET中,command对象是用(ExcuteNonQuery)(ExcuteScalar)(ExcuteDataReader)

方法执行命令

二.简答题

1. 简述 private、 protected、 public、 internal 修饰符的访问权限。

答:private : 私有成员, 在类的内部才可以访问。

protected : 保护成员,该类内部和继承类中可以访问。

public : 公共成员,完全公开,没有访问限制。

internal: 在同一命名空间内可以访问。

2. C#中,string str = null 与 string str ="",请尽量用文字说明区别。

答:string str ="" 分配空间而string str = null不分配空间。

3.用sealed修饰的类有什么特点?

答:不可被继承

?*4.请叙述const与readonly的区别。

e)每一个class至多只可以定义一个static构造函数,并且不允许增加访问级别关

键字,参数列必须为空。

为了不违背编码规则,通常把static数据成员声明为private,然后通过statci property提供读写访问。

const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。

const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。

const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。

readonly在运行期评估赋值,使我们得以在确保“只读访问”

的前提下,把object的初始化动作推迟到运行期进行。

readonly 关键字与 const 关键字不同:const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,

根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是

编译时常数,而 readonly 字段可用于运行时常数。

readonly 只能在声明时或者构造函数里面初始化,并且不能在 static 修饰的构造函数里面。

f)

5.简述 private、 protected、 public、 internal 修饰符的访问权限。

private : 私有成员, 在类的内部才可以访问。

protected : 保护成员,该类内部和继承类中可以访问。

public : 公共成员,完全公开,没有访问限制。

internal: 在同一命名空间内可以访问。

?*6.请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。

session(viewstate) 简单,但易丢失 @

application 全局

cookie 简单,但可能不支持,可能被伪造

input ttype="hidden" 简单,可能被伪造

url参数简单,显示于地址栏,长度有限

数据库稳定,安全,但性能相对弱

7.概述反射和序列化

答:反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性

序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

8.什么是SOAP,有哪些应用。

答:SOAP(Simple Object Access Protocol )简单对象访问协议(SOAP)是一种

轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的

信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议

( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支

持从消息系统到远程过程调用(RPC)等大量的应用程序。Web service 就是一个

应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够

用编程的方法通过Web来调用这个应用程序.

9.ASP。NET中共有几种类型的控件?各有什么区别?

答:Html 控件传统的html标记

Web 控件可以回传数据,事件驱动

自定义控件在原有控件的基础上增加功能

复合控件多个子控件复合成一个新的控件

10.什么情况用HTML控件,什么情况用WEB控件,并比较两者差别

答:客户端表现用html控件,如果想和server端交互,那么加上runat=server,它就成了服务器端控件,但它没有web控件的很多方法和属性,如果你需要用到,那么还是用webControls.

11.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?

答:一般为3层

数据访问层,业务层,表示层。

数据访问层对数据库进行增删查改。

业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。表示层为了与用户交互例如用户添加表单。

优点:分工明确,条理清晰,易于调试,而且具有可扩展性。

缺点:增加成本。

12.什么是XML?

答:XML即可扩展标记语言。eXtensible Markup Language.标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,即可以选择国际通用的标记语言,比如HTML,也可以使用象XML这样由相关人士自由决定

的标记语言,这就是语言的可扩展性。XML是从SGML中简化修改出来的。它主要用到的有XML、XSL和XPath等。

13.什么是Web Service?UDDI?@

答:Web Service便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。

UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service 提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service 注册,以使别的企业能够发现的访问协议的实现标准

14.WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回

是什么?为什么要使用自动传回。

在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Pa ge_Load事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到务端

只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件

16.请简述DataReader与DataSet的异与同。

17.PDB是什么东西? 在调试中它应该放在哪里?

答:PDB是用于保存调试和项目状态信息的文件,在debug的时候将产生pdb文件,调试的时候应该放在和对应应用程序集相同目录。

18.简述ajax的原理。

答:ajax简单的讲就是客户端通过javascript脚本获取服务器端的文本,通过解

析返回值,更新部分的网页内容。

19.描述线程与进程的区别?

答:线程(Thread)与进程(Process)二者都定义了某种边界,不同的是进程定义的

是应用程序与应用程序之间的边界,不同的进程之间不能共享代码和数据空间,而

线程定义的是代码执行堆栈和执行上下文的边界。一个进程可以包括若干个线程,同时创建多个线程来完成某项任务,便是多线程。而同一进程中的不同线程共享代

码和数据空间。用一个比喻来说,如果一个家庭代表一个进程,在家庭内部,各个

成员就是线程,家庭中的每个成员都有义务对家庭的财富进行积累,同时也有权利

对家庭财富进行消费,当面对一个任务的时候,家庭也可以派出几个成员来协同完

成,而家庭之外的人则没有办法直接消费不属于自己家庭的财产。

20.什么是Windows服务,它的生命周期与标准的EXE程序有什么不同

答:Windows服务是运行在windows后台指定用户下(默认System)的应用程序,

它没有标准的UI界面,想比标准的EXE程序,Windows服务是在服务开始的时候

创建,而在服务结束的时候销毁,而且可以设置服务是否与操作系统一起启动,一

起关闭。它支持三种方式:1)自动方式 2)手动方式3)禁用。自动方式的

时候,windows服务将在OS启动后自动启动运行,而手动方式则必须手工启动服

务,禁用的情况下服务将不能被启动。另外标准的EXE默认使用的当前登录的用户,而windows服务则默认使用System用户,这在对系统资源访问的时候特别需要注

意。

21.什么是强类型,什么是弱类型?哪种更好些?为什么?

答:强类型是在编译的时候就确定类型的数据,在执行时类型不能更改,而弱类型

在执行的时候才会确定类型。没有好不好,二者各有好处,强类型安全,因为它事

先已经确定好了,而且效率高。一般用于编译型编程语言,如c++,java,c#,pascal

等,弱类型相比而言不安全,在运行的时候容易出现错误,但它灵活,多用于解释

型编程语言,如javascript,vb等 .

22.什么是GAC?它解决了什么问题?

答:Gloal Assembly Cache,全局应用程序集缓存。它解决了几个程序共享某一个

程序集的问题。不必再将那个被共享的程序集拷贝到应用程序目录了,其实这道理

很简单,.net应用程序在加载的时候,会首先查看全局应用程序集缓存,如果有

就可以直接使用,没有再到应用程序目录进行查找。

23.阐述面向接口、面向对象、面向方面编程的区别

答:

24.简述用repeater实现手工分页的思路。

25.web service 数据传输有什么限制? 为什么?DataTable可以作为web service参数传递么?

答:所传输的数据必须是可序列化的。因为需要转换为XML格式以可以穿越防火墙,

做到真正的数据共享。因为DataSet处理DataTable的序列化以便进行封送处理,

所以无法传递单个DataTable

26.常用的调用WebService的方法有哪些?

答:在同一个解决方案中调用WebService方法;

在不同的解决方案中调用WebService方法;

在Internet上调用WebService方法;

利用webservice.htc调用WebService方法。

28.在C#中,string str = null 与 string str = “”请尽量使用文字或图象说明其中的区别。

答:

30.请详述在dotnet中类(class)与结构(struct)的异同:

答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.

31.如何理解委托?

答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法. msdn2005中是这样解释的:

委托具有以下特点:

委托类似于 C++ 函数指针,但它是类型安全的。

委托允许将方法作为参数进行传递。

委托可用于定义回调方法。

委托可以链接在一起;例如,可以对一个事件调用多个方法。

方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。

C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。

33.override与重载的区别

over ride 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要

Override 是进行基类中函数的重写。为了适应需要。

34.abstract class和interface有什么区别?

答:声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为

引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

35.Session有什么重大BUG,微软提出了什么方法加以解决?

答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server 或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。

36.成员变量和成员函数前加static的作用?

答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。

37.简述三层架构的利弊。

38.简述AJAX控件timer的实现原理。

39.简述https://www.sodocs.net/doc/425897106.html,中用户控件和自定义控件的区别.

40.简述framework在.NET中的作用.

41.简述C#中引入泛型的好处。

42.谈谈arraylist和list<>利弊.

43.怎样实现用JS调用服务器端定义的方法。

44.简述https://www.sodocs.net/doc/425897106.html,中几大对象的作用.

45.相对与其它WEB开发平台,微软的.net平台有什么独特的优势和劣势。

46.谈谈Schema和DTD相比,具有那些显著的优势。

47. 什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?

答:(1)应用程序域(通常为 AppDomain)是一个用于隔离应用程序的虚拟进程。

(2)受管制的代码:Managed Code,官方翻译是“托管代码”,即在 .net中,由公共语言运行环境进行管理的代码,它主要负责内存管理。

(3)强类型系统:是对系统的类型进行细化定义,纯粹是概念问题,不做深入研究的话,看书理解一下就行。

(4)装箱和拆箱:值类型转化引用类型为装箱,引用类型转化为值类型为拆箱。

(5)CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。

48.强类型与弱类型的区别?

(1)答:完全的面向对象要求对象是强类型的。强类型是只在对象类型的定义尽量的细化。我们可以定义所有的对象都是object,然后允许后期绑定来对对象进行操作。事实上,有些语言是弱类型的,特别是一些教本语言,比如javascript.弱类型语言对简化了语言本身,因而语言本事是可以轻量的,在一些特殊的场合还是很有用的。

(2)但弱类型与强类型语言相比,它们能完成的功能从本质上来说,是没有区别的。但弱类型的轻量化是以牺牲开发的方便性和效率为基础的。它将一部分机器能完成的事情移到程序员来完成。如果开发同样一个功能,如果用javascript 和强类型的https://www.sodocs.net/doc/425897106.html,来开发,两者对程序员的要求与开发所需要的时间是明显不同的。

49.请详述在c#中类(class)与结构(struct)的异同?

答:

50. GC是什么? 为什么要有GC?

答:GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:

System.gc()

Runtime.getRuntime().gc()

51.String s = new String("xyz");创建了几个String Object?

答:

52.abstract class和interface有什么区别?

答:

53.启动一个线程是用run()还是start()?

答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

54.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

55.构造器Constructor是否可被override?

答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

56.是否可以继承String类?

答:

57. try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

答:

58.两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 答:

59.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

答:

60.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

答:

61.abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

答:

62.List, Set, Map是否继承自Collection接口?

答:

63. Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?

答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。

equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值

64. 数组有没有length()这个方法? String有没有length()这个方法?

答:没有这个方法但是有length这个属性。

65. sleep() 和 wait() 有什么区别?

答:sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级

(b)正在运行的线程因为其它原因而阻塞。

wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

66. short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

答:short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。

67.谈谈final, finally, finalize的区别。

答:

final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final 的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final 的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为 final 的方法也同样只能使用,不能重载

finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

68. 如何处理几十万条并发数据?

答:用存储过程或事务。取得最大标识的时候同时更新..注意主键不是自增量方式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来获取.

69.Session有什么重大BUG,微软提出了什么方法加以解决?

答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server 或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session 的END事件。

70.进程和线程的区别?

答:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。

71.堆和栈的区别?

答:栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。

堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上。

72. 成员变量和成员函数前加static的作用?

答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。

73. 请指出GAC的含义?

答:全局程序集缓存。

74.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?using 指令和语句 new 创建实例 new 隐藏基类中方法。

答:using 引入名称空间或者使用非托管资源

new 新建实例或者隐藏父类方法

75.什么是虚函数?什么是抽象函数?

答:虚函数:没有实现的,可由子类继承并重写的函数。抽象函数:规定其非虚子类必须实现的函数,必须被重写。

76. C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?答:一个是属性,用于存取类的字段,一个是特性,用来标识类,方法等的附加性质

77. c#中的三元运算符是?

答:?:

78.当整数a赋值给一个object对象时,整数a将会被?

答:装箱。

79.类成员有_____种可访问形式?

答:this.类成员;

new Class()类成员

80. public static const int A=1;这段代码有错误么?是什么?

答:const不能用static修饰。

81.float f=-123.567F; int i=(int)f;i的值现在是_____?

答:-123。

82.委托声明的关键字是______?

答:delegate.

83.用sealed修饰的类有什么特点?

答:密封,不能继承。

84.如何在C#中实现继承?

在类名后加上一个冒号,再加上基类的名称。

85.一个进程可以访问的Windows地址空间有多大?等于系统的虚拟内存大小么?这两方面将对系统的设计产生什么样的影响?

答:4G,虚拟内存大小是看你物理内存大小来定的啊,实际进程在windows上默认是可以访问2G内存,通过一个/3g boot参数,可以用到3G

86.下面这个命令是做什么的?gacutil /l | find /i “system”

答:全局缓存工具,gacutil /l列出全局程序集缓存的内容。/i “system”将程序集安装到全局程序集缓存中。

87.列举https://www.sodocs.net/doc/425897106.html,中的五个主要对象

答.Connection,Command,DataAdapter,DataSet,DataTable,DataView等

88.从数据库读取记录,你可能用到的方法有:

答: ExecuteScalar()

Fill()

ExecuteReader()

89. 概述反射和序列化

答:反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性

序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

90.概述o/r mapping 的原理

答:利用反射,配置将类于数据库表映射

91.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?

答:a) 一般为3层

b) 数据访问层,业务层,表示层。

c) 数据访问层对数据库进行增删查改。

d) 业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。

e) 表示层为了与用户交互例如用户添加表单。

f) 优点:分工明确,条理清晰,易于调试,而且具有可扩展性。

g) 缺点:增加成本。

92. Session有什么重大BUG,有什么方法加以解决?

答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server 或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。

93.每次我们请求一个https://www.sodocs.net/doc/425897106.html,页面时,我们都经历着同样的过程,我们称它为https://www.sodocs.net/doc/425897106.html,页面生命周期!每个页面的生命周期为用户的每一次访问,也就是说每一次客户端与服务器之间的一个往返过程.请你说一说这个过程它们都发生了那些事件?

答:(1). Page_Init();

(2). Load ViewState and Postback data;

(3). Page_Load();

(4). Handle control events;

(5). Page_PreRender();

(6). Page_Render();

(7). Unload event;

(8). Dispose method called;

94. 什么是https://www.sodocs.net/doc/425897106.html,中的用户控件?(用户控件和自定义控件有什么区别?)

答:主要是分清这两个区别,

(一).用户控件和自定义控件概述

用户控件(UserControl): 扩展名为*.ascx,跟*.aspx在结构上相似,是指页面中加载的功能块,只是用户控件不能单独作为页面运行,必须嵌入到*.aspx页面或其它用

户控件中使用.

自定义控件,跟HtmlControl或WebControl相似,编译后可以添加引用到工具栏里面,直接用鼠标拖动使用.

https://www.sodocs.net/doc/425897106.html,中读写数据库需要用到那些类?他们的作用?

答:DataSet:数据存储器。

DataCommand:执行语句命令。

DataAdapter:数据的集合,用语填充。

https://www.sodocs.net/doc/425897106.html,的身份验证方式有哪些?分别是什么原理?

答:(1)Windows 身份验证提供程序

提供有关如何将 Windows 身份验证与 Microsoft Internet 信息服务 (IIS) 身份验证结合使用来确保 https://www.sodocs.net/doc/425897106.html, 应用程序安全的信息。

(2)Forms 身份验证提供程序

提供有关如何使用您自己的代码创建应用程序特定的登录窗体并执行身份验证的信息。使用Forms 身份验证的一种简便方法是使用 https://www.sodocs.net/doc/425897106.html, 成员资格和 https://www.sodocs.net/doc/425897106.html, 登录控件,它们一起提供了一种只需少量或无需代码就可以收集、验证和管理用户凭据的方法。

(3)Passport 身份验证提供程序

提供有关由 Microsoft 提供的集中身份验证服务的信息,该服务为成员站点提供单一登录和核心配置

97.在.net中,配件的意思是?

答:程序集。(中间语言,源数据,资源,装配清单)

98. 常用的调用WebService的方法有哪些?

答:1.使用WSDL.exe命令行工具。

2.使用https://www.sodocs.net/doc/425897106.html,中的Add Web Reference菜单选项

99. net Remoting 的工作原理是什么?

答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。

100.简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。

答:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。

101.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路

答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。

102. ASP。NET与ASP相比,主要有哪些进步?

答:asp解释形,aspx编译型,性能提高,有利于保护源码。

103.向服务器发送请求有几种方式?

答:get,post

104. .DataReader与Dataset有什么区别?

答:一个是只能向前的只读游标,一个是内存中的表。

105. 什么叫做SQL注入,如何防止?请举例说明。

答:利用sql关键字对网站进行攻击。过滤关键字'等

106. 什么是反射?

答:动态获取程序集信息

107. Singleton如何写设计模式

答:static属性里面new ,构造函数private

108.什么是Application Pool?

答:Web应用,类似Thread Pool,提高并发性能。

109.什么是XML?

答:XML即可扩展标记语言。eXtensible Markup Language.标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,即可以选择国际通用的标记语言,比如HTML,也可以使用象XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从SGML中简化修改出来的。它主要用到的有XML、XSL和XPath等。

110. XML 与 HTML 的主要区别

答:1. XML是区分大小写字母的,HTML不区分。

2. 在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略

或者之类的结束标记。在XML中,绝对不能省略掉结束标记。

3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。

这样分析器就知道不用查找结束标记了。

4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。

5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。

111 .net的错误处理机制是什么?

答:.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。

112.C#中的表单界面上,有一个DataGrid控件,如何将SQL数据库里的一个表中的数据显示在这个控件上,请描述一下操作方法及步骤:

答:(1) 根据连接字符串,创建数据库连接对象,并根据连接对象创建 Command对象。

(2) 根据SQL语句,查询表信息。

(3) 使用DataApapter对象,将查询结果填充到DataSet中的objDataset数据表里。

(4) 将DataGrid的数据源设置成objDataset数据表,实现数据绑定。

113. 在C#中,有几种连接到数据库的方式,请列举出并分别说明它们可以连接哪些数据库(1)https://www.sodocs.net/doc/425897106.html, Framework 连接sql server7.0或以上更高版本数据库。

(2)https://www.sodocs.net/doc/425897106.html, Framework连接Access和sql server6.5或以下版本数据库。

(3)https://www.sodocs.net/doc/425897106.html, Frameworka(桥连)可以连接sql server数据库和odbc公开数据源。(4)https://www.sodocs.net/doc/425897106.html, Framework连接Oracle数据库。

114.请描述一下在https://www.sodocs.net/doc/425897106.html,中,Application对象、Session对象、Cookies对象的用法及不同之处,及它们与传统的ASP有没有不同之处?

答:Application对象是作用于整个程序运行期的状态对象。

Session对象是会话期状态保持对象,用于跟踪单一用户的会话。

Cookies对象客户端保持会话信息的一种方式。

115. 试简单描述以下扩展名程序或系统档案的角色

答: .ascx , .aspx , .dll , .vb , .xml, css , js, global.asax ,web.config

Ascx后缀表示用户控件

Aspx后缀表示页面

.dll表示类库集

.vb是https://www.sodocs.net/doc/425897106.html,的源文件

.xml表示是用可扩展标记语言编写的文件

Css表示样式表文件

Js表示javascript脚本文件

Global.asax文件在应用程序的根目录中,负责处理Application_Start,Application_End,Session_Start,Session_End事件

Web.Config文件存储应用程序的配置信息

https://www.sodocs.net/doc/425897106.html,中读写XML的类都归属于哪些命名空间?

答:System.Xml

117.相对于.NET 1.1,.NET2.0为了避免过度的boxing/unboxing造成的系统开销提供了哪

些支持?

118.请谈谈面向对象的特性及你对面向对象的理解?

119.简述Javascript中的$符号表示什么?

120.列举https://www.sodocs.net/doc/425897106.html,中的五大主要对象及其作用?

121.简述接口和抽象类的异同?你选择使用接口和抽象类的依据是什么?

122.请列举https://www.sodocs.net/doc/425897106.html,中读取数据的方法及其工作原理?

123. 简述 private、 protected、 public、 internal 修饰符的访问权限。

124 .列举https://www.sodocs.net/doc/425897106.html, 页面之间传递值的几种方式。

125. C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?

126. 讲一讲你理解的web service,在dot net framework中,怎么很好的结合xml?(讲概念就行了)

127. C#, Java 和 c++的特点,有什么相同的地方,不同的地方,C#分别从c++和java中吸取了他们那些优点?

128. C#可否对内存进行直接的操作?

129. 用Visual C++ 6.0编写的代码(unmanaged code),如何在CLR下和其他dot net component结合?

130. 以前作过的一些项目?介绍一下自己的编程经验。(这是蒙混不过去的,基本一问就知道是真是假)

131:维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么

132:https://www.sodocs.net/doc/425897106.html,相对于ADO等主要有什么改进?

133:https://www.sodocs.net/doc/425897106.html,与ASP相比,主要有哪些进步?

134:C#中的委托是什么?事件是不是一种委托?

135:描述一下C#中索引器的实现过程,是否只能根据数字进行索引?

136:配置异常(Debug | Exceptions) 每个异常都可以配置。

137.健壮程序的处理

1) throw 对应的异常,不能够慎用Catch(Exception e) 这种捕获方法.

2) 异常转义抛出,给用户以合理的提示,不要抛出假异常.

3) 给出断言Trace.Assert() 便于调试.

4) 在程序的最后一层,最好要处理一下异常,但是同时要记录日志Log,既要保证

C语言试题及答案

一、单项选择题 1. 软件危机具有下列表现( d )。 I. 对软件开发成本估计不准确II. 软件产品的质量往往靠不住 III. 软件常常不可维护IV. 软件成本逐年上升 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 2. 软件生命周期一般都被划分为若干个独立的阶段,其中占用精力和费用最多的阶段往往是( A )。 A. 运行和维护阶段 B. 设计阶段 C. 代码实现阶段 D. 测试阶段 3. 下列属于软件的特点的是( D )。 A. 软件是一种逻辑实体,具有抽象性 B. 软件在使用过程中没有磨损、老化的问题 C. 软件不同于一般程序,它的一个显着特点是规模庞大,复杂程度高 D. 以上都正确 4. 软件工程的出现是由于( D )。 A. 软件危机的出现 B. 计算机硬件技术的发展 C. 软件社会化的需要 D. 计算机软件技术的发展 5. 软件开发技术不包含( d )。 A. 软件开发方法学 B. 软件工程环境 C. 软件工具 D. 软件质量度度量 6. 软件工程的课程特点( D )。 I. 学科理论及其知识应用的多维性 II. 工程化 III. 浓厚的方法学色彩 IV. 实践性、指导性强 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 7. 下列属于应用软件的是( b )。 I. 计算机辅助教学软件II. 软件测试工具 III. 办公自动化软件IV. 工程与科学计算软件 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 8. 需求分析阶段最重要的技术文档是( b )。

C试题及答案一

C + + 程序设计模拟试卷(一) 一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1. 编写C++程序一般需经过的几个步骤依次是() A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行答案:B 解析:经过编辑、编译、连接和运行四个步骤。编辑是将C++源程序输入计算机的过程,保 存文件名为cpp。编译是使用系统提供的编译器将源程序cpp生成机器语言的过程,目标文件为obj,由于没有得到系统分配的绝对地址,还不能直接运行。连接是将目标文件obj转换为可执行程序的过程,结果为exe。运行是执行exe,在屏幕上显示结果的过程。 2. 决定C++语言中函数的返回值类型的是() A. return 语句中的表达式类型 B. 调用该函数时系统随机产生的类型 C. 调用该函数时的主调用函数类型 D. 在定义该函数时所指定的数据类型 答案:D 解析:函数的返回值类型由定义函数时的指定的数据类型决定的。A项的表达式的值要转换 成函数的定义时的返回类型。 3. 下面叙述不正确的是() A. 派生类一般都用公有派生 B. 对基类成员的访问必须是无二义性的 C. 赋值兼容规则也适用于多重继承的组合 D. 基类的公有成员在派生类中仍然是公有的 答案: D 解析:继承方式有三种:公有、私有和保护。多继承中,多个基类具有同名成员,在它们的子类中访问这些成员,就产生了二义性,但进行访问时,不能存在二义性。赋值兼容规则是指派生类对象可以当作基类对象使用,只要存在继承关系,所以单继承或多继承都适用。基类中的公有成员采用私有继承时,在派生类中变成了私有成员,所以D项错误。 4. 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是() A. 类 B. 对象 C. 函数体 D. 数据块 答案:A 解析:类即数据和操作的组合体,数据是类的静态特征,操作是类具有的动作。 5. 在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的() A. 私有成员 B. 公有成员 C. 保护成员 D. 保护成员或私有成员 答案:A 解析:在派生类中基类的保护或者基类公有都可以直接访问,基类的私有成员只能是基类的成员函数来访问。所以选择A项。 6. 对基类和派生类的关系描述中,错误的是() A. 派生类是基类的具体化 B. 基类继承了派生类的属性 C. 派生类是基类定义的延续 D. 派生类是基类的特殊化 答案:B 解析:派生类的成员一个是来自基类,一个来自本身,所以派生类是基类的扩展,也是基类的具体化和特殊化,派生类是对基类扩展。B项基类不能继承派生类成员,所以错误。 7. 关于this 指针使用说法正确的是() A. 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码 B. 保证基类私有成员在子类中可以被访问。 C. 保证基类保护成员在子类中可以被访问。

嵌入式C语言面试题汇总(超经典)

第一部分:基本概念及其它问答题 1、关键字static的作用是什么? 这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。 2、“引用”与指针的区别是什么? 答、1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。 指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。 流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。 3、.h头文件中的ifndef/define/endif 的作用? 答:防止该头文件被重复引用。 4、#include 与#include “file.h”的区别? 答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。 5、描述实时系统的基本特性 答:在特定时间内完成特定的任务,实时性与可靠性。 6、全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 答:全局变量储存在静态数据区,局部变量在堆栈中。 7、什么是平衡二叉树? 答:左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。 8、堆栈溢出一般是由什么原因导致的? 答:1.没有回收垃圾资源 2.层次太深的递归调用

c 试题及答案

一、单项选择题 1、下列哪个类型的对象是https://www.sodocs.net/doc/425897106.html,在非连接模式下处理数据内容的主要对象? (D ) A. Command B. Connection C. DataAdapter D. DataSet 2、枚举类型是一组命名的常量集合,所有整形都可以作为枚举类型的基本类 型, 如果类型省略,则定义为( A )。 A. int B. sbyte C. uint D. ulong 3、创建数据库连接使用的对象是( A )。 A. Connection B. Command C. DataReader D. DataSet 4、C#中导入某一命名空间的关键字是( A )。 A. using B. use C.import D. include 5、一般情况下,异常类存放在什么命名空间中?( B )。 A. 生成异常类所在的命名空间 B. System.Exception命名空 间 C. System.Diagnostics命名空间 D. System命名空间 6、若将数据库中的数据填充到数据集,应调用SqlDataAdapter的( C )方 法。 A. Open B. Close C. Fill D. Update 7、若将数据集中所作更改更新回数据库,应调用SqlAdapter的(A )方法。 A. Update B. Close C. Fill D. Open 8、在使用FileStream 打开一个文件时,通过使用FileMode 枚举类型的( A ) 成员,来指定操作系统打开一个现有文件并把文件读写指针定位在 文件尾部。 A. Append B. Create C. CreateNew D. Truncate 9、在菜单项File中,为将F设为助记符,应将该菜单项的Text属性设置为 (B )。 A. @File B.&File C. %File D._File 10、指定操作系统读取文件方式中的FileMode .Create的含义是( D)。 A. 打开现有文件 B. 指定操作系统应创建文件,如果文件存在,将出现异常 C. 打开现有文件,若文件不存在,出现异常 D. 指定操作系统应创建文件,如果文件存在,将被改写 11、枚举类型是一组命名的常量集合,所有整形都可以作为枚举类型的基本类 型,如果类型省略,则定义为( D )。 A. uint B. sbyte C. ulong D. int 12、当运行程序时,系统自动执行启动窗体的( C )事件。 A. Click B.DoubleClick C. Load D. Activated

c和c++经典笔试题及答案

C++/C经典笔试题及答案 C++/C试题 本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。 笔试时间90分钟。请考生认真答题,切勿轻视。 一、请填写BOOL , float, 指针变量与“零值”比较的 if 语句。(10分)提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为: if ( n == 0 ) if ( n != 0 ) 请写出BOOL flag 与“零值”比较的if 语句: 请写出float x 与“零值”比较的if 语句: 请写出char *p 与“零值”比较的if 语句: char str[] = “Hello” ; char *p = str ; int n = 10; 请计算 sizeof (str ) = sizeof ( p ) = sizeof ( n ) =void Func ( char str[100]) { 请计算 sizeof( str ) = } void *p = malloc( 100 );请计算 sizeof ( p ) = 1、头文件中的 ifndef/define/endif 干什么用? 2、#include 和#include “filename.h” 有什么区别? 3、const 有什么用途?(请至少说明两种) 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加extern “C”声明? 5 // 第一个 for (i=0; i

c语言经典面试题

C语言面试题大汇总之华为面试题 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个编写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错. 4、请写出下列代码的输出内容 #include int main(void) { int a,b,c,d; a=10;

c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; } 答:10,12,120 5、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答: 1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。 2) 从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。3) static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对

C语言试题及答案

第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。 第2章数据类型运算符和表达式习题 1. 单项选择题 (1) 以下选项中,正确的 C 语言整型常量是 D 。 A. 32L B. 510000 C. -1.00 D. 567 (2) 以下选项中, D 是不正确的 C 语言字符型常量。

C语言面试题(经典全)

1.static有什么用途?(请至少说明两种) 1)限制变量的作用域 2)设置变量的存储域(堆,主动分配内存也是堆) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 全局变量储存在静态数据库,局部变量在栈 6.堆栈溢出一般是由什么原因导致的? 堆栈溢出一般是循环的递归调用导致的,如果使用的大数据结构的局部变量,也可能导致堆栈溢出。没有回收垃圾资源导致的是内存泄露最后内存耗尽。 20.不能做switch()的参数类型是: switch的参数不能为实型。(只能是int char) 9.写出float x 与“零值”比较的if语句。 if(x<0.000001&&x>-0.000001)

3.在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么? 函数名: atol 功能: 把字符串转换成长整型数 函数的原型: long atol(const char *nptr); 程序例: #include #include int main(void) { long l; char *str = "98765432"; l = atol(lstr); printf("string = %s integer = %ld\n", str, l); return(0); } 1.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现? c用宏定义,c++用inline

常见C(C++)语言面试题及答案

1、“引用”与指针的区别是什么? 答、1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。 流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用 2、#include 与#include "file.h"的区别? 答:前者是从Standard Library 的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。 3、全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 答:全局变量储存在静态数据区,局部变量在堆栈中。 4、堆栈溢出一般是由什么原因导致的? 答:1.没有回收垃圾资源 2.层次太深的递归调用 5、不能做switch()的参数类型 答:switch 的参数不能为实型。 6、如何引用一个已经定义过的全局变量? 答、可以用引用头文件的方式,也可以用extern 关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变量,假定你将那个变量写错了,那么在编译期间会报错,如果你用extern 方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 7、语句for( ;1 ;)有什么问题?它是什么意思? 答、和while(1)相同,无限循环。 8、statac 全局变量、局部变量、函数与普通全局变量、局部变量、函数static 全局变量与普通的全局变量有什么区别?static 局部变量和普通局部变量有什么区别?static 函数与普通函数有什么区别? 答、全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量

C语言面试题大汇总,个人觉得还是比较全

4. static有什么用途?(请至少说明两种) 1.限制变量的作用域 2.设置变量的存储域 7. 引用与指针有什么区别? 1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 2) 不存在指向空值的引用,但是存在指向空值的指针。 8. 描述实时系统的基本特性 在特定时间内完成特定的任务,实时性与可靠性 9. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 全局变量储存在静态数据库,局部变量在堆栈 10. 什么是平衡二叉树? 左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1 11. 堆栈溢出一般是由什么原因导致的? 没有回收垃圾资源 12. 什么函数不能声明为虚函数? constructor 13. 冒泡排序算法的时间复杂度是什么? O(n^2) 14. 写出float x 与“零值”比较的if语句。 if(x>0.000001&&x<-0.000001) 16. Internet采用哪种网络协议?该协议的主要层次结构? tcp/ip 应用层/传输层/网络层/数据链路层/物理层 17. Internet物理地址和IP地址转换采用什么协议? ARP (Address Resolution Protocol)(地址解析協議) 18.IP地址的编码分为哪俩部分? IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。 2.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出 C程序。 循环链表,用取余操作做 3.不能做switch()的参数类型是: switch的参数不能为实型。 華為 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内

C试题附答案

C++试题 一、选择题: 1. 关于类和对象不正确的说法是( C ) A) 类是一种类型,它封装了数据和操作 B) 对象是类的实例 C) 一个类的对象只有一个 D) 一个对象必属于某个类 2. 在类定义的外部,可以被访问的成员有( C ) A) 所有类成员 B) private或protected的类成员 C) public的类成员 D) public或private的类成员 3. 关于this指针的说法错误的是( A ) A) this指针必须显示说明 B) 当创建一个对象后,this指针就指向该对象 C) 成员函数拥有this指针 D) 静态成员函数不拥有this指针 4. 声明一个类的对象时,系统自动调用( B )函数,撤消对象时,系统自动调用( C )函数 A) 成员函数 B) 构造函数 C) 析构函 数 D) 普通函数 5. 下面对构造函数的不正确描述是( B )

A) 系统可以提供默认的构造函数 B) 构造函数可以有参数,所以可以有返回值 C) 构造函数可以重载 D) 构造函数可以设置默认参数 6. 下面对析构函数的正确描述是( C ) A) 系统不能提供默认的析构函数 B) 析构函数必须由用户定义 C) 析构函数没有参数 D) 析构函数可以设置默认参数 7. 对静态成员的不正确描述是( C ) A) 静态成员不属于对象,是类的共享成员 B) 静态数据成员要在类外定义和初始化 C) 调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针 D) 非静态成员函数也可以操作静态数据成员 8. 下面选项中,不是类的成员函数为( C ) A) 构造函数B) 析构函数 C)友元函数 D) 缺省参数的构造函数方言 9. 下面对友元的错误描述是( D ) A) 关键字friend用于声明友 元 B) 一个类的成员函数可以是另一个类的友元 C) 友元函数访问对象的成员不受访问特性影响

c语言面试题目100及最佳答案

c语言面试题目及最佳答案 1、描述?下gcc的编译过程? gcc编译过程分为4个阶段:预处理、编译、汇编、链接。 预处理:头?件包含、宏替换、条件编译、删除注释 编译:主要进?词法、语法、语义分析等,检查?误后将预处理好的?件编译成汇编?件。汇编:将汇编?件转换成?进制?标?件 链接:将项?中的各个?进制?件+所需的库+启动代码链接成可执??件 2、内存的最?存储单位以及内存的最?计量单位分别是? 内存的最?存储单位为?进制位,内存的最?计量单位字节 3、#include<> 与#include ""的区别? include<>到系统指定?录寻找头?件,#include ""先到项?所在?录寻找头?件,如果没有找再到系统指定的?录下寻找 4、描述?下变量的命名规则 变量名有字?、数值、下划线组成,但不能以数值开头 5、变量的声明与定义有啥区别?

声明变量不需要建?存储空间,变量的定义需要建?存储空间 6、谈谈c语?中有符号和?符号的区别? 有符号:数据的最?位为符号位,0表示正数,1表示负数 ?符号:数据的最?位不是符号位,?是数据的?部分 7、谈谈计算机中补码的意义 统?了零的编码 将符号位与其他位统?处理将减法运算转换成加法运算 8、谈谈数组的特点 同?个数组所有的成员都是相同的数据类型,同时所有的成员在内存中的地址是连续的9、数组的分类 数组的分类主要是:静态数组、动态数组两类。 静态数组:类似int arr[5];在程序运?就确定了数组的??,运?过程不能更改数组的??。动态数组:主要是在堆区申请的空间,数组的??是在程序运?过程中确定,可以更改数组的??。 10、描述?下?维数组的不初始化、部分初始化、完全初始化的不同点 不初始化:如果是局部数组数组元素的内容随机如果是全局数组,数组的元素内容为0

完整版C试题及答案

C++考试试卷 1. 已知:char *s=S456; 则cout<>s; C) char *s1=abcd,*s2=efghijk;strcpy(s1,s2); D) char *s=abcdefg; cout<<*s; 4. C++中,关于构造函数和析构函数,正确的描述是()。 A) 在定义类时,必须自定义构造函数和析构函数,在创建对象时自动调用构造函数,在释放对象时自动调用析构函数 B) 构造函数和析构函数均可以重载 C) 已知类Student以及Student *p; 在使用p=new Student;时自动调用无参构造函数创建动态对象,在delelte p;时自动调用析构函数释放动态对象 D) 构造函数和析构函数都可以成为虚函数 )。关于拷贝构造函数的描述正确的是(5. A) 通常的拷贝构造函数的参数是对象的指针类型 B) 如果不自定义拷贝构造函数,系统提供默认的拷贝构造函数 C) 如果有自定义的构造函数,系统就不再提供拷贝构造函数 D) 如果需要用已有对象为新创建的对象初始化时,就必须自定义拷贝构造函数 6. 有关静态成员的描述错误的是()。 A) 某个类的静态数据成员由该类的所有对象所共享 B) 类的公有静态数据成员既可以用类的对象访问,也可以直接用作用域运算符“::”通过类名来访问 C) 静态数据成员既可以是私有成员,也可以是公有成员 D) 类中一旦定义了静态数据成员,就必须定义静态成员函数,以便对静态数据成员进行操作

C语言面试题

C语言面试题: 1、问:在嵌入式开发中,为什么能通过C语言直接操作硬件? 答:因为C有指针,它是C语言的灵魂,它可以直接访问内存。 2、问:链表的作用?(这是上一个问题的延申,学员一般会举一堆例子来说明它的作 用,但这都不是重点,没有抓住主要矛盾)答:链表用于内存管理,链表节点中的指针域可以将不连续的内存彼此关联起来,实现内存的动态管理。 3、问:什么变量不能用指针指向? 答:寄存器变量(register 修饰),因为这个变量会优先选择存放到CPU寄存器中,而指针只能指向内存的任务区域,但不能指向寄存器。 4、问:有符号字符型和无符号字符型变量的最大值和最小值分别是多少(十六进制多 少),为什么? 答:有符号(-128 —127,-0X80—0X7F,无符号(0-255,0X00 —0XFF。 5、问:林锐面试题中四个有关内存操作的问题:第一题、运行会出现段错误(崩 溃): 答:因为参数是值传递,所以主调函数中的str指针已然指向空,不能向 里面拷数据,除非加上取地址,采用二维指针接收才能传递动态内存;第二题:乱码:答:实际上可能是乱码,也可能显示出一部分内容,显示乱码是因为刚才那段栈内存空间全部被覆盖,如果未完全覆盖则显示一部分内容;第三题:能够输出hello 答:但由于没有在同一层释放内存,容易导致内存泄露;第四题:对已经释放的内存进行操作答:会破坏其它有用数据,后果难以预料,通常提示出现段错误。 6问:哪些地方可以用到con st? const变量和函数输入参数用const修饰有哪些作用?答:1、定义常量 (1)const修饰变量,constTYPE ValueName=value value 是不可变的。 (2,将const 改为外部链接,作用于扩大至全局,编译时分配内存,并且可以不进行初始化,仅仅作为声明,编译器认为在在程序其他地方进行了定义; Extend constint ValueName= value; 2、指针使用CONST (1 ,指针本身是常量不可变 (char*,constpContent; Const (char*,pContent;(2,指针指向的内容是常量不可变 Constchar*pContent; Char const*pContent; (3,两者都不可变 Constchar*constpConten 3、函数中使用CONST (1)const 修饰函数的参数 a 传递过来的参数在函数内不可以改变;void function(const int var);b 参数指针所指内容为常量不可变;void function(const char *Var); c 参数本身为常量不可变; void function(char *const Var);

C基础试题附答案

一、选择题 1、能作为C#程序的基本单位是( )。 A. 字符 B. 语句 C. 函数 D. 源程序文件 答案:B 2、将变量从字符串类型转换为数值类型可以使用的类型转换方法是( )。 A.Str() https://www.sodocs.net/doc/425897106.html,har C.CStr() D.int.Parse(); 答案:D 3、数据类型转换的类是( )。 A.Mod B.Convert C. Const D. Single 答案:B 4、字符串连接运算符包括&和()。 A. + B. - C. * D. / 答案:A 5、先判断条件的当循环语句是( )。 A. do...while B. while C. while...do D. do ...loop 答案:B 6、下面几个函数,()是重载函数. 1.void f1(int) 2.int f1(int) 3.int f1(int,int) 4.float k(int) A.四个全 B.1 和4 C.2 和3 D.3和4 答案:C 8、以下的C#代码: static void Main(string[] args) { Console.WriteLine("运行结果: {0}",Console.ReadLine()); Console.ReadLine(); } 代码运行结果为()。 A.在控制台窗口显示“运行结果:” B.在控制台窗口显示“运行结果:{0}” C.在控制台窗口显示“运行结果:,Console.ReadLine” D.如果用户在控制台输入“ A”,那么程序将在控制台显示“运行结果:A” 答案:D 9、在C#中定义一个数组,正确的代码为()。 A.int arraya = new int[5]; B.int[] arraya = new int[5]; C.int arraya = new int[]; D.int[5] arraya = new int; 答案:B

c和c经典笔试题及答案

c和c经典笔试题及答 案 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

C++/C经典笔试题及答案

C++/C试题??? 本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C 常用语法,不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。 ???????笔试时间90分钟。请考生认真答题,切勿轻视。 一、请填写BOOL , float, 指针变量与“零值”比较的 if 语句。(10分) 提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为: ????if ( n == 0 ) ????if ( n != 0 ) 1、头文件中的 ifndef/define/endif 干什么用? 2、#include?????和??#include??“filename.h” 有什么区别? 3、const 有什么用途?(请至少说明两种) 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明? 5

已知strcpy函数的原型是 ???????char *strcpy(char *strDest, const char *strSrc); ???????其中strDest是目的字符串,strSrc是源字符串。 (1)不调用C++/C的字符串库函数,请编写函数 strcpy (2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? 六、编写类String的构造函数、析构函数和赋值函数(25分) 已知类String的原型为: ????class String ????{ ??????public: ????????String(const char *str = NULL); // 普通构造函数????????String(const String &other);????????// 拷贝构造函数????????~ String(void);?????????????????????// 析构函数????????String & operate =(const String &other);????// 赋值函数??????private: ????????char????*m_data;????????????????// 用于保存字符串????}; ???????请编写String的上述4个函数。 C++/C试题的答案与评分标准 一、请填写BOOL , float, 指针变量与“零值”比较的 if 语句。(10

c语言试题及答案

一、单选题 1.在C语言中,下列类型属于构造类型的是( D ) A.整型 B.字符型 C.实型 D.数组类型 2.下列字符串不是标识符的是( D ) A. sum B. Average C. Day_night D. M.D.JOHN 3. 在C语言中,回车换行符是( A ) A. n B. t C. v D. b 4. 在C语言中,语句和数据定义是用( C )作为结束标记的A.句号 B.逗号 C.分号 D.括号 5. 设有如下定义: int x=10,y=5,z; 则语句printf(“%dn”,z=(x+=y,x/y)); 的输出结果是( C ) A.0 B.1 C.3 D.4 6. 10.以下程序的输出结果是( B ) main( ) {char c1=’8’,c2=’2’; printf(“%c,%c,%d,%dn”,c1,c2,c1-c2,c1+c2); }

A.因输出格式不合法,输出出错信息 B.8,2,6,106 C.8,2,6,10 D.8,2,5,9 7.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是( A )main( ) {int x; scanf(“%d”,&x); if(x++>5) printf(“%dn”,x); else printf(“%dn”,x--); } A.7和5 B.7和4 C.6和4 8.表达式(int)2.1416的值时( A ) A. 2 B. 2.1 C. 0 D. 3 9.下列运算符优先级最高的是( B ) A. > B. + C. && D. != 10. C语言容许函数值类型缺省定义,此时该函数值隐含的类型时( B ) A. float型 B. Int型 C. Long 型 D. Double型 11、C程序的基本构成单位是( C) A、子程序 B、过程 C、函数 D、文件 12、C语言中要求操作数都为整型数据的算术符是(C )

c语言常见面试题

C/C++程序员面试重点以及应对方法: 非技术方面: 1. 仪表 2. 礼仪 3. 个人素养 技术部分: 基础: 一.C语言基础语法 1.进程中的内存布局 2.指针相关(野指针、数组越界)、数组与指针、二位指针3.数组与二维数组 4.动态内存分配(内存泄漏) 5.预编译与有参宏 6.Static与const 7.结构体、共用体以及结构体空洞 8.位运算 9.Sizeof与strlen 二.C++基础语法 见C/C++求职就业手册 重点: 1.Inline函数

2.指针与引用 3.Const 、static、sizeof 4.Class与struct的区别 5.构造函数与析构函数 6.继承与多态 三.数据结构(计算机专业需要全部掌握) 1.单链表(非计算机专业必须掌握) 2.循环链表 3.双向链表 4.队列 5.栈 6.二叉树 四.各种排序 非计算专业需掌握冒泡与选择排序 计算机专业需要掌握5种常见的排序方法 五.常见Linux命令 六.Linux系统编程 1.不带缓冲的文件操作(堵塞与非堵塞) 2. 带缓冲的文件操作(行缓冲、全缓冲、不缓冲) 3. 进程的概念(fork、进程的五种状态与状态切换) 4. IPC 5. 线程(线程与进程的区别)

6. 线程间同步(互斥锁与信号量) 7.网络编程(TCP/IP四层、三次握手、TCP与UDP) 8.Shell脚本编程 七.数据库编程 数据库的基本概念与SQL语句 SQLite的用法 八.QT编程与GUI的概念 九.智力测验题(一般公司不会考,比较大的公司及校园招聘会往往会考到) 项目经验: 1. 做过的项目 2. 如何与别人交流沟通与协助 3. 思考问题的方法 附:常见C语言笔试题 1.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 2.写一个“标准”宏MIN ,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A)<= (B) ? (A) : (B)) 3.用变量a给出下面的定义 a) 一个整型数(An integer)

C试题及答案

C++程序设计模拟试卷(五) 一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中 只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无 分。 1.静态成员函数没有() A.返回值 B.this指针 C.指针参数 D.返回类型 答案:B 解析:静态成员函数是普通的函数前加入static,它具有函数的所有的特征:返回类型、 形参,所以使用静态成员函数,指针可以作为形参,也具有返回值。静态成员是类具有的 属性,不是对象的特征,而this表示的是隐藏的对象的指针,因此静态成员函数没有this指针 。静态成员函数当在类外定义时,要注意不能使用static关键字作为前缀。由于静态成员函数在 类中只有一个拷贝(副本),因此它访问对象的成员时要受到一些限制:静态成员函数可以直接 访问类中说明的静态成员,但不能直接访问类中说明的非静态成员;若要访问非静态成员时,必 须通过参数传递的方式得到相应的对象,再通过对象来访问。 2.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管 理操作的函数是() A.友元函数 B.虚函数 C.构造函数 D.析构函数 答案:C 解析:定义构造函数作用就是初始化对象,而析构函数释放对象空间。虚函数用于完成多 态性,友元增加访问方便性。 3.所有在函数中定义的变量,都是() A.全局变量 B.局部变量 C.静态变量 D.寄存器变量 答案:B 解析:变量存储类可分为两类:全局变量和局部变量。 (1)全局变量:在函数外部定义的变量称为全局变量,其作用域为:从定义变量的位置开始 到源程序结束。全局变量增加了函数之间数据联系的渠道,全局变量作用域内的函数,均可使用 、修改该全局变量的值,但是使用全局变量降低了程序的可理解性,软件工程学提倡尽量避免使 用全局变量。 (2)局部变量:在函数内部定义的变量称为局部变量,其作用域为:从定义变量的位置开始 到函数结束。局部变量包含自动变量(auto)静态变量(static)以及函数参数。 auto变量意味着变量的存储空间的分配与释放是自动进行的。说明符auto可以省略。函数中 的局部变量存放在栈空间。在函数开始运行时,局部变量被分配内存单元,函数结束时,局部变 量释放内存单元。因此,任两个函数中的局部变量可以同名,因其占有不同的内存单元而不影响 使用。这有利于实现软件开发的模块化。 static变量是定义在函数体内的变量,存放在静态存储区,不用栈空间存储,其值并不随存 储空间的释放而消失。 4.假定AB为一个类,则执行“ABa(2),b[3],*p[4];”语句时调用该类构造函数的次数 为() A.3 B.4 C.5 D.9 答案:B 解析:a(2)调用1次带参数的构造函数,b[3]调用3次无参数的构造函数,指针没有给它 分配空间,没有调用构造函数。所以共调用构造函数的次数为4。 5.如果表达式++a中的“++”是作为成员函数重载的运算符,若采用运算符函数调用格式,则 可表示为() A.a.operator++(1) B.operator++(a) C.operator++(a,1) D.a.operator++() 答案:D

相关主题