.net工程师笔试题

1、  请为ASP.Net下一个定义。

ASP.NET是由微软.NET Framework中所提供的,开发Web应用程式的类别库,封装在System.Web.dll档案中,显露出System.Web命名空间,并提供ASP.NET网页处理、扩充以及HTTP通道的应用程式与通讯处理等工作,以及Web Service的基础架构。ASP.NETASP技术的后继者,但它的发展性要比ASP技术要强大许多。

2、   请解释B/S,并比较C/S,给出B/S的优点。

B/S结构Browser/Server结构)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。

B/S结构的优点:

1)、具有分布性特点,可以随时随地进行查询、浏览等业务处理。

2)、业务扩展简单方便,通过增加网页即可增加服务器功能。

3)、维护简单方便,只需要改变网页,即可实现所有用户的同步更新。

4)、开发简单,共享性强

B/S 模式的缺点:

1)、个性化特点明显降低,无法实现具有个性化的功能要求。

2)、操作是以鼠标为最基本的操作方式,无法满足快速操作的要求。

3)、页面动态刷新,响应速度明显降低。

4)、功能弱化,难以实现传统模式下的特殊功能要求。

3、   请说明人们提出“面向对象编程”概念的用意是什么?

 

4、   阅读以下C++代码,并回答问题。

         CPerson *aPerson = new CChinese();

         aPerson->Say();

         aPerson = new CAmerican();

         aPerson->Say();

         return 0;

(1)       上述代码的范型是“结构化编程”、“面向对象编程”、“泛型编程”中的哪一种,为什么?

泛型编程

 泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同。泛型编程的代表作品STL是一种高效、泛型、可交互操作的软件组件。所谓泛型(Genericity),是指具有在多种数据类型上皆可操作的含意,与模板有些相似。STL巨大,而且可以扩充,它包含很多计算机基本算法和数据结构,而且将算法与数据结构完全分离,其中算法是泛型的,不与任何特定数据结构或对象类型系在一起。STL以迭代器 (Iterators)和容器(Containers)为基础,是一种泛型算法(Generic Algorithms)库,容器的存在使这些算法有东西可以操作。STL包含各种泛型算法(algorithms)、泛型指针(iterators)、泛型容器(containers)以及函数对象(function objects)STL并非只是一些有用组件的集合,它是描述软件组件抽象需求条件的一个正规而有条理的架构。

泛型的第一个好处是编译时的严格类型检查。这是集合框架最重要的特点。此外,泛型消除了绝大多数的类型转换。如果没有泛型,当你使用集合框架时,你不得不进行类型转换。

关于泛型的理解可以总结下面的一句话,它是把数据类型作为一种参数传递进来。

2 为上述代码构造一个函数签名。

3)说出上述代码存在的问题。

4)请说出“CPerson”、“CChinese”、“CAmerican”三者之间的关系。

5)请说明第二个“aPerson->Say( )”代码调用的是“CChinese”还是“CAmerican”的“Say”函数?这体现了什么特征?

5、  请说出三种程序的基本结构。

6、  请说明什么是“客户程序”。

7、  请指出以下哪几个变量名取得比较好?

1abc          2m_Name        3aCat       4curTime 5currentTime 

6seekCount4Person                  7sc_Person      8found      9fnd         

10iCount           11count  

8、  请说明“关系表达式和逻辑表达式”与“命题逻辑和谓词逻辑”之间的关系。

9、  请说出C++中独立函数的构成元素。

10、请解释“接口”的概念。

11、阅读以下C++代码,并回答问题。

int add( int x = 0, int y = 0 )

{        return x + y;}

float add( float x = .0f, float y = .0f )

{ return x + y;}

double add( double x, double y )

{        return x + y;}

void main(void){

         cout << add( 1, 2 ) << endl;

         cout << add( 3.5, 4.7 ) << endl;

         cout << add( ) << endl;     }

1)上述代码使用到的是“Overload”技术还是“Override”技术?

2)在C++中可以采用什么技术简化上述代码,请实现之。

3)说出上述代码存在的问题。

12、请说出C++中“成员变量的私有”、“定义类的成员”、“某个类是另外一个类的子类”、“Overridevirtual成员函数”四种代码表现分别体现了面向对象的四大基本特征的哪一个?

13、请说出C++中“类的组合”、“成员函数的参数为某个类的对象”、“某个类是另外一个类的子类”、“纯虚成员函数”四种代码表现分别体现了面向对象的四种基本关系的哪一种?

14、请说出为什么在C++中析构函数最好定义为虚函数?

15、请说明C++中,怎样让一个客户程序无法实例化某个类的对象。

16、请说明C++中,怎样让整个程序只能实例化一次某个类的对象。

17、请看以下的UML图,编写“CAnimal”、“CDog”、“CEye”三个类的C++声明代码。

18、阅读以下C++代码,并回答问题。

class CString  {

public:

         int Compare(const char* s);

                                                                           CString(CString& s);        

int Compare(CString& s);

         CString& Add(CString& s);

         int GetLength();

         const char* C_Str();

         CString(char c, unsigned int n = 1);

         CString(const char* s);

         CString();

         virtual ~CString();

protected:

         int CalLength(const char* s);

                            void Clear();

         void Init();

private:

         unsigned int m_length;            

char* m_str;

};

1)请说明该类有几个构造函数?

2)“const char* C_Str()”为什么要加上const关键字?

3)如果“CString s = otherString;”会不会调用构造函数,如果调用将会调用哪个构造函数?

4)请实现“GetLength”成员函数。

5)请实现“CString(char c, unsigned int n = 1);”构造函数。

6)请实现“Compare(const char*s);”成员函数。

7)请实现“Clear();”成员函数。

8)如果增加“InputString”成员函数用于从键盘输入字符串,请问是否合适,为什么?

9)请问代码“Compare(CString& s){ return Compare(s.C_Str());}”是否可行,如果可行,有什么好处?

19、请说明数据库中View是“外模式”、“模式”还是“内模式”?

20、请看下属公式说明的是什么连接运算?

21、阅读以下数据库模式,并回答问题。

Course( CourseID#, Name, CheckType, Property )

Student( StudentID#, Name, ClassID )

Class( ClassID#, Name, SpecialityID, DepartmentName )

Speciality(SpecialityID#, Name, DepartmentID )

Department(DepartmentID#, Name, Address )

ChooseCourse(StudentID#, ClassID#, CourseID#, Term#, Score1, Score2)

注意:上述“#”表示主码。

1)写SQL,求每门课程的修读人数(结果中包含课程名称)。

2)写SQL,求修读人数大于30人的课程(结果中包含课程名称)。

3)写SQL,求修读课程数多于1门的学生(结果中包含学生姓名)。

4)写SQL,求“信管04-1班”每位同学选修的学分总数(结果中包含学生姓名)。

5)写SQL,求每个学院(部门)的学生人数

6)请说出上述数据库模式是否符合第四范式?如果不符合,请将其进行规范化处理。

7)请说出为什么需要规范化处理?

8 请为上述规范化到第四范式的数据库绘制出概念模型(ER图)。

22、请完成下表的填写。

隔离级别

脏读

不可重复读取

幻像

READ UNCOMMITTED

 

 

 

READ COMMITTED(默认)

 

 

REPEATABLE READ

 

 

SERIALIZABLE

 

 

注意:“是”表示某隔离级别会出现某种错误的情况,“否”则反之。

23、请按照下图解释“三层系统架构”。

Presentation

Business

Data

DB

网页

 

 

三层设计模式

三层就是将程序分为表示层,业务逻辑曾,数据访问层来开发,从而达到易于扩展、协作开发的目的。

什么是三层:表示层(USL),业务逻辑层(BLL),数据访问层(DAL)

表示层:数据展示,接收数据

业务逻辑层:数据处理,数据传递

数据访问层:存储数据,读取数据

实体对象层:封装数据,消除数据与类之间的关系。它是三层之间数据传递的载体

三层之间的关系:表示层依赖于业务逻辑层,业务逻辑层依赖于数据访问层。

注:在数据访问层中尽量使用存储过程存储数据,从而达到数据安全的目的。

三层没什么的就是各层之间的引用..

 

24、请完成以下翻译(可以精简成内容提要)。

Passage One:

The .NET Framework provides a first-class foundation for building and consuming Web services based off of the fundamental protocols of XML, SOAP, and WSDL. But despite the interoperable and loosely coupled beauty of these traditional Web services, before long one finds one's self wanting for more. For instance, in the area of security, it seems contradictory to depend on HTTP security mechanisms when SOAP messages were designed to hold metadata-like security information. Similarly, the request/response nature of HTTP, which fits perfectly for many message exchange patterns, seems like an overly restrictive one-size-fits-all solution when other message exchange patterns would fit your business needs better. This is a particularly frustrating restriction because the SOAP specification goes out of its way to avoid such limitations in Web service message exchange.

Web Services Enhancements (WSE) is the Microsoft extension to the Web service support in the .NET Framework that builds on the foundation of XML, SOAP, and WSDL with higher-level protocols that support such things as message-based security, policy-based administration, and the flexibility to move message-exchange out of the HTTP-only world. The result is a Web service platform that can save developers from the tedious, time-consuming, and fragile world of developing higher-level requirements themselves. Instead they can rely on the supported and interoperable solution that is provided by WSE.

Passage Two:

The BaseDataBoundControl is the root of all data-bound control classes. It defines the DataSource and DataSourceID properties and validates their assigned content. DataSource accepts enumerable objects obtained and assigned the ASP.NET 1.x way.

Mycontrol1.DataSource = dataSet;

Mycontrol1.DataBind();

DataSourceID is a string and refers to the ID of a bound data source component. Once a control is bound to a data source, any further interaction between the two (in both reading and writing) is handled out of your control and hidden from view. This is both good and bad news at the same time. It is good (rather, great) news because you can eliminate a large quantity of code. The ASP.NET framework guarantees that correct code executes and is written according to recognized best practices. You're more productive because you author pages faster with the inherent certainty of having no subtle bugs in the middle. If you don't like this situation—look, the same situation that many ASP.NET 1.x developers complained about—you can stick to the old-style programming that passes through the DataSource property and DataBind method. Also in this case, the base class saves you from common practices even though the saving on the code is less remarkable.

 

 

一、单项选择题
1
、单个关闭计算机的语句ExitWindowsEx(EWX_POWEROFF | EWX_FORCE, 0)对以下哪个操作系统是有效的 (  )
A
Windows XP                        BWindows 2000        
C
Windows    98                        DWindows 2003
2
、关闭计算机的语句ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0)中,参数EWX_REBOOT的含义是(  )
A
.关机                B.重启                C.待机                D.注销
3
、以下()函数不能在应用程序中运行其它程序文档:
A
WinExec                            BCreateProcess    
C
ShellExecute                        DExecuteProcess
4
Windows API函数( )能够完成对邮件、网址、文件夹和文件的打开或执行。
A
ShellExecute                        BCreateProcess    
C
WinExec                            DExecuteProcess
*5
、( )想法不能完成计算机开机后,程序自动启动。
A
WIN.INI                        B.注册表    
C
WIN.INI和注册表                DABC均不能实现程序自动启动
6
、以下哪个不是注册表中的默认的根键句柄( )。
A
HKEY_CURRENT_USER            BHKEY_CURRENT_CONFIG
C
HKEY_CURRENT_CONFIGURE        DHKEY_CLASSES_ROOT
7
、通过调用( )函数,能够设置本地计算机的时间。
A
SetSystemtime                BSetLocalTime
C
SetSystemTime                DSetLocaltime
8
、通过编程方式访问操作系统的控制面板时,可以调用()函数来达到目的。
A
WinExec                            BProcessExecute     
C
ExecuteProcess                        DWindowExecute
9
、注册表中有关完整文件类型的信息是存储在根键( )下。
A
KEY_CURRENT_USER            BHKEY_LOCAL_MACHINE
C
HKEY_CLASSES_ROOT            DHKEY_CURRENT_CONFIG
10
、在Windows操作系统下,进程的当前状态信息不能直接从进程本身获取,系统已为所有内存中的进程、线程以及模块等的当前状态的信息制作了一个只读副本,该副本被称为( D)。
A
.内存句柄            B.系统句柄            C.内存快照            D.系统快照
*11
、设备环境类CDC提供了绘制和打印的全部函数。为了能让用户使用一些特殊的设备环境,CDC还派生了一些类。以下正确的是( )。
A
CPaintDCCClientDCCWindowDCCMetaFileDC
B
CClientZoneDCCWindowDCCMetaFileDCCPaintDC
C
CClientDCCWindowsDCCMetaFileDCCPaintDC            
D
CPaintDCCClientDCCWindowDCCDrawDC
12
、在Windows环境下,为了方便绘图,系统定义了几种坐标映射模式,其中y轴正向垂直向下的映射模式是( )。
A
MM_LOMETRIC                       BMM_TEXT            
C
MM_HIENGLISH                   DMM_TWIPS 
13
、用于描述矩形的类是( )。
A
CPoint               BCSize            CCRectangle             DCRect
14
、所有GDI类均从一个GDI基类派生,这个基类是()。
A
CBrush              BCPalette            CCRgn             DCGdiObject
15
、现创建一个黑色的虚线画笔对象pen,语句为:pen. CreatePen(nPenStyle, 1, RGB(0,0,0) ),则参数nPenStyle的取值为( )。
A
PS_SOLID          BPS_NULL            CPS_DASH         DPS_DOT
16
、视图类中支持绘图的成员函数是()。
A
OnDraw              BOnInitUpdate        COnSize         DOnLButtonDown

17
、窗口CWnd类的()函数可以取得窗口客户区尺寸,用于绘图时精确定位。
A
GetClientRect                          BGetWindowRect        
C
GetWindowText                     DInvalidateRect
18
、使用OpenGL工具能够完成复杂的三维图形的绘制,但运行时需要一些支持函数库。以下哪个不是OpenGL函数库()。
A
Opengl32.lib          BOpengl.lib            Cglu32.lib             Dglaux.lib
19
、通过OpenGL的图形变换函数可以完成对三维图形的驱动。把三维图形对象从一个位置变换到另一个位置用到的函数是()。
A
glScalef              BglRotatef            CglTransplant         DglTranslatef
20
OpenGL函数中,改变视点的函数是( )。
A
glScalef              BglRotatef            CgluLookAt         DglTranslatef
21
、以下不能完成对数据库编程的工具是( )。
A
SOCKET          BODBC            CDAO             DADO
22
、访问数据库时,先要和数据库进行连接,完成这一步的类是( )。
A
CDatabase                              BCRecordset        
C
CFieldExchange                        DCRecordView
23
、记录集类CRecordset有一个成员函数:DoFieldExchange。它的作用是( )。
A
.记录集和视图之间进行数据交换            B.记录集和数据源之间进行数据交换
C
.记录集和对话框之间进行数据交换        D    数据源和视图之间进行数据交换
24
、现声明一个记录集对象为set,则过滤条件姓名为张永升的正确写法是()。
A
set.m_strFilter=”WHERE Name= 张永升 ”      
B
set.m_strFilter=”WHERE Name= ’张永升’ ”         
C
set.m_strFilter=” Name = ”张永升” ” 
D
set.m_strFilter=”Name = ’张永升’ ”
*25
、现声明一个记录集对象为set。若要对查询结果按姓名的拼音顺序从小到大排列,则正确的设置方法是()。
A
set.m_strFilter=”ORDER BY Name ”      
B
set.m_strSort = ” ORDER BY Name”         
C
set.m_strSort = ”  Name ” 
D
set.m_strFilter=”  Name ” 
26
、对于CRecordset类的成员函数void Move( long nRows, WORD wFetchType)来说,当wFetchType取值为()时,可任意定位记录。
A
SQL_FETCH_LAST                     BSQL_FETCH_ABSOLUTE            CSQL_FETCH_FIRST                    DSQL_FETCH_PRIOR
27
、现声明一个记录集对象为set。当对某记录内容修改后,欲把修改的结果保存到磁盘,正确的做法是( )。
A
set. Update ()                             Bset. UpdateData ()        
C
set. ReQuery()                            Dset. AddNew()
28
MFC ODBC中的完整事务处理是通过如下方法实现的:( )。
A
BeginTrans   Rollback                BBeginTrans   CommitTrans
C
CommitTrans    Rollback                  DBeginTrans 
29
、在QQ聊天中,当接收或发送信息时,采用的是socket的哪种套接字( 
A
.流式套接字                            B.字串套接字
C
.原始式套接字                              D.数据报式套接字
*30
WinSockDLL的形式提供,在调用任何WinSock API之前,必须调用函数( )进行初始化。
A
bind             BWSACleanUp        CWSAStartup          DIninInstance
31
、套接字编程中,用来接收数据的函数是( )。
A
bind             Baccept            Clisten                      Drecv
32
、在面向连接的套接字编程中,服务器端必须执行的一个独特函数是( )。
A
listen             Bconnect            Crecv                      Dsend
*33
、在面向数据报的套接字编程中,可能执行到的函数是( )。
A
listen             Bconnect            Crecvfrom                 Dsend
34
CAsyncSocket类中,不可能出现的网络事件有( )。
A
FD_READ        BFD_WRITE        CFD_CONNECT        DFD_SIZE

答案:
    CBDAD   CBACD    ABDDC   AABDC    BABDC    DACD

二、简答题
1
、简述OpenGL的图形变换种类并列出对应函数名称。
2
、列出在应用程序中执行其它程序文档的至少三种方式。
4
、分别说出描述点对象、大小对象和矩形对象的类名称。

5
、分别描述类CDatabase和类CRecordset的用途。

6
、记录集成员函数DoFieldExchange(CFieldExchange* pFX)和对话框成员函数

7
、解释SQL语言“SELECT rfx-field-list FROM table-name [WHERE m_strFilter] [ORDER BY m_strSort]”的含义。

8
、列出记录集对象的所有用于记录定位的成员函数。

9
、描述记录增加的过程。

10
、描述记录内容修改的过程。

答案:
1
平移glTanslate{fd}(TYPE X,TYPE Y,TYPE Z) 
缩放glScale{fd}( TYPE X,TYPE Y,TYPE Z)
旋转glRotate{fd}(TYPE angle, TYPE X,TYPE Y,TYPE Z)
2
Win16
兼容执行方式:UINT WinExec(LPCTR lpCmdLine,UINT uCmdShow);
Win32
执行方式:CreateProcess(……);
Shell
外壳方式:ShellExecute(……);
4
CPoint
类,CSize类和CRect类;
5
CDatabase
类用于建立与数据源的连接,CRecordset类功能强大,可以将它看做数据源的一个记录集,其中封装了对记录集的各种操作,如:滚动,修改,增加,删除,查询等;
6
DoFieldExchange(CFieldExchange* pFX)
函数主要处理数据源与记录集之间的数据交换问题,属于后台服务范围;而DoDataExchange(CDataExchan pDX)函数主要解决记录集字段与对话框的编辑控件变量之间的数据交换问题,与视图界面之间的联系更为紧密。
7
从表table-name中选择rfx-field-list中包含的字段,并且按m_strFilter中指定的内容过滤这些字段,最后将过滤好的字段按照m_strSort中指定的排序方式排序得出最终的结果。
8
MoveNext();                MovePrev();                MoveFirst();
MoveLast();                SetAbsolutePosition();        Move();
9
m_pSet->AddNew();
.......
m_pSet->Update();           //
或是调用Move(0)取消添加操作
m_pSet->Requery();
10
m_pSet->Edit();
……
m_pSet->Update();            //
或是调用Move(0)取消添加操作
m.pSet->Requery();

 


 

 

进程和线程的区别

进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:

 

简而言之,一个程序至少有一个进程,一个进程至少有一个线程.

 

线程的划分尺度小于进程,使得多线程程序的并发性高。

 

另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

 

线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

 

从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

 

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.

 

线程是进程的一个实体,CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

 

一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.

 

进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。如果有兴趣深入的话,我建议你们看看《现代操作系统》或者《操作系统的设计与实现》。对就个问题说得比较清楚。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值