C工程师笔试题

2024-05-02

C工程师笔试题(共10篇)

篇1: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.层次太深的递归调用

9、冒泡排序算法的时间复杂度是什么?答 :O(n^2)

10、什么函数不能声明为虚函数?答:constructor

篇2:C工程师笔试题

答:预编译又称为预处理,是做些代码文本的替换工作。处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等,就是为编译做的预备工作的阶段,主要处理#开始的预编译指令,预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。

c编译系统在对程序进行通常的编译之前,先进行预处理。

c提供的预处理功能主要有以下三种:1)宏定义 2)文件包含 3)条件编译

2、关键字const是什么含意?

答: “const意味着常数”业余者。 “只读”正确的答案。

const int a; a是一个常整型数

int const a; a是一个常整型数

const int *a; a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。

int * const a; a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的) int const * a const; a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)

1). 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)

2). 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。

3). 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现

★ C语言游戏开发笔试题

★ C语言常用笔试题

★ 测试工程师笔试题

★ 软件测试开发笔试题

★ 笔试题

★ 开发工程师年终总结

★ net笔试题

★ 卡夫笔试题

★ 笔试题文档窗口

篇3:C工程师笔试题

1 高校试题库建设现状

某高校在历时数年的评建工作中就建立、完善和规范了一整套考核程序和体系,如图1所示。一套完整、规范的传统考试体系和流程,在一定程度上规范了教学活动。但整个过程较为繁琐,需要花费大量人力物力组织考试[2]。

在高校教学改革建设中,拥有一个功能完善、实用性强的试题使用平台,其优点如下:

能够提高工作效率,改进考核方式;让考试更为准确反映教学质量。作为共享资源平台,供广大教师参考[3]。

2 系统设计

2.1 需求分析

试题使用平台是针对宝鸡文理学院教学现状设计的,所以在平台设计之前对学院的需求做出针对性的分析,以保证系统的有效性和实用性[4]。

学院现有本科专业52个,在校生近2万人。通过调查,目前的情况是:教务处会在期末下发考试计划,任课教师在规定时间出题,提交电子版和纸质版试题两套附参考答案供院系、教务处逐级审核。审核通过,随机抽取一套批量打印供考试用。

通过对试题生成到使用过程的分析,整个试题平台涉及到4个使用角色:学生、教师,院系和教务处。一般的试题库系统,为保密学生是没有进入权限的,但经过笔者调查,失去有效性的往年考卷对学生的学习和复习有一定的指导作用,所以将学生作为第4个有限制的使用角色。

根据不同角色的使用情况、使用范围设定4个等级的权限:教务处拥有最高权限。教务处是全院教学、组织考试的职能部门,也是试题使用平台建成后的主要维护单位,在平台上主要负责管理考试课程及其课程对应的题库,负责审核教师或者院系提交的试题和用户信息并提供相应权限,监控在线平台的运行,维护平台和防止入侵等等。院系拥有次高权限。院系作为教师和学生等个体所在单位,主要负责上传用户资料,管理单位用户极其权限,设置课程及其试题属性,审核教师提交的试题,批量上传试题等等工作。教师拥有普通权限。教师作为平台主要的使用者,可以使用平台所提供的绝大部分功能,在获得相关课程的权限后,可以浏览试题,在线组题、在线编辑、修改,上传试题。注意,一旦上传则无法修改,要修改则通过拥有更高权限的院系来操作。学生拥有最低权限。仅可以通过实名登录平台浏览所学课程的过期试卷,一般设定已使用试卷的有效期为2~3年。

2.2 架构设计

目前的软件系统体系架构有两种:C/S(Client/Server,客户机/服务器)架构和B/S(Browser/Server,浏览器/服务器)架构。

2.2.1 C/S架构

C/S架构又称C/S模式,是20世纪80年代末逐步出现和流行的一种模式,典型的两层架构。C/S架构的核心思想在于功能分布,即将一些功能放在客户机上执行,另一些功能放在服务器上执行[5]。

C/S架构是基于局域网的系统分布模式,如图3所示。与B/S架构相比,C/S架构的应用系统最大的好处是客户端的功能丰富,可以应对数据量较大的使用环境,并且安全系数较高,不易受到来自公共网的攻击。所以类似机场、银行、商场、大型企业内部管理都是C/S架构。并且C/S架构不依赖公共网,只要内部局域网畅通,就可以安全运行,企业可以自主维护。C/S架构服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracel、Sybase或 SQL Server。客户端需要接入局域网,并且安装专用的客户端软件。

C/S 架构也可以看成是“胖客户端”架构。因为客户端需要实现绝大多数的业务逻辑和界面展示。这种架构中,作为客户端的用户一端需要承受很大的压力,因为显示逻辑、事务处理和数据库交互都在客户端。

2.2.2 B/S架构

B/S架构又称B/S模式[6,7]。这种模式下,只有少量的事务逻辑在用户端实现,大部分事务处理都在服务器端进行。Brwse客户端,WebApp服务器端和DB端构成了所谓的3层架构。B/S架构中的客户端无须特别安装,只要有Web浏览器即可,用户工作界面通过Web浏览器实现,如图4所示。即B/S用户可以通过Web浏览器去访问数据库服务器,大量的数据实际存放在数据库服务器中。基本过程设是:用户在Web浏览器上进行操作,操作指令上传至Web服务器,再由Web服务器交给数据库服务器来解释执行,并返回给Web服务器,Web服务器又返回给用户。

B/S架构中,显示逻辑交给了Web浏览器,事务处理逻辑在放在了WebApp上,这样就减少了客户端的压力。因为客户端包含的逻辑较少,因此也被成为“瘦客户端”。

2.2.3 C/S与B/S的比较

经过对比分析,两种架构各有优缺点,如表1所示。

2.2.4 C-B/S混合架构

鉴于C/S 架构和 B/S 架构各自的优缺点,多数企业在实际设计软件架构时都采用C/S和B/S混合架构,即C-B/S架构。二者结合,优势互补。数据量大、功能丰富、要求响应快的业务在安装了客户端程序的客户端进行,这部分与服务器之间采用C/S架构;数据量小,用户分散,安全性较低的简单业务由用户通过Web浏览器访问服务器实现,这部分采用B/S架构。

基于以上考虑,试题平台的架构设计为C-B/S混合架构实现,如图5所示。具体来说,就是教务处和院系信息节点处理的数据量大、功能繁多、操作复杂、要求快速响应,所以选择采用基于C/S模式实现与服务器的连接,即在教务处和院系的计算机上要安装平台对应的客户端程序,工作人员登录客户端程序实现对试题平台的管理和操作以及对数据库的访问。客户端程序一般较为复杂,具有一定操作难度,在使用前要对工作人员进行培训。

而另外两种用户,教师和学生因为用户人数众多、位置分散、数据量较小、功能和操作简单,所以与服务器之间的连接能基于 B/S 模式实现。即教师和学生无需安装操作复杂的客户端程序,只需通过PC机上安装的Web浏览器登录试题平台即可。友好而简单的Web用户交互页面可以使得普通用户易于操作。

2.3 平台设计

本试题综合平台有教务处、院系、教师、学生4个使用角色。根据使用角色的不同,将系统平台划分为四个二级平台,如图6~图10所示。使每种不同的用户登录后处于不同的工作环境下。

3 结束语

讨论了高校试题库系统的设计,包括角色划分、架构设计和平台设计,提出了C-B/S混合架构的试题库系统建设模式。目前,高校传统的教学和考核方式面临着巨大冲击。教育教学改革是每个高校面临的重大课题,这其中考核方式的改革又是重要一环,直接决定了教学方式和其他环节。本课题所研究的试题综合使用平台就是考核方式改革的重要组成部分,有一定的现实意义。

摘要:主要阐述了包括角色划分、架构设计和平台设计,提出了C-B/S混合架构的新的试题库系统建设模式。并针对宝鸡文理学院用户群体的需求分析,在设计环节,从功能模块、平台架构等几个方面对平台进行了设计说明。通过利用该系统实现了教务、学生、图书管理信息化,完善和丰富教学手段,使教学工作更高效。

关键词:CAT,试题库系统,C-B/S

参考文献

[1]陈林琳.试题库系统的设计与实现[J].读与写:教育教学刊,2008(11):97-98.

[2]陈中永.高等学校题库建设的几个基本理论问题[J].内蒙古师大学报:哲学社会科学版,1990(3):102-106,116.

[3]唐自力.网上在线命题、出题及试题库系统[D].成都:电子科技大学,2007.

[4]陈华光,周铁山,张晓清.通用试题库系统的设计与实现[J].湖南工程学院学报:自然科学版,2002(3):32-34.

[5]窦治.基于B/S与C/S的网上考试系统的实现[D].乌鲁木齐:新疆大学,2003.

[6]张丽景.基于B/S高校实用题库考试系统的设计与实现[D].成都:电子科技大学,2008.

篇4:C工程师笔试题

[关键词]纸笔测验 化学实验 考查目标 试题类型

[中图分类号]G633.8 [文献标识码]A [文章编号]1674-6058(2016)08-0072

一、问题的提出

化学是一门以实验为基础的自然科学,化学规律的发现和理论的建立是以严格的化学实验为基础,并接受实验的检验。为了提高学生的化学实验素养与实验能力,促进学校实验室建设,全面落实课程改革目标,很多地区都在探索将化学实验技能的考查列人初中毕业生学业水平考查范围,并将考查结果列入综合素质评价范畴,作为学生初中毕业和高中阶段学校录取的依据之一。然而化学实验技能考查存在费时费力、测试成本高、信度与效度证据不足、评价标准难以统一等问题,因此对学生在化学实验知识的掌握和理解方面的考查仍以“纸笔测验”为主。如此又带来了另一方面的问题:一些学校较少开展化学实验教学活动,常以“黑板实验”“投影实验”或“视频实验”来替代演示实验和学生实验,学生则依靠背诵实验来应付“纸笔测试”型实验考查。化学实验的考查陷入了一种较为尴尬的境地。如何使“纸笔测验”能真实、有效地考查、评价学生的实验能力,并引导中学化学教学重视学生实验,促进学生积极主动地發展,是摆在化学教学工作者面前的一个重要课题。

二、化学实验“纸笔测验”的考查目标

化学实验考查目标具有层次性,体现由易到难、由简单到复杂的顺序。在化学实验过程中,学生既有内隐的心理活动又有外显的行为表现,内隐的心理活动可以通过外显的行为表现出来。初中化学实验考查目标的制定以外显行为作为分类的基点。“纸笔测试”型中考化学实验考查目标一般可分为观察与识记、操作与运用、分析与表达、设计与评价四个层次,它们之间相互联系、相辅相成,构成了一个完整的目标体系。

(一)观察与识记目标

观察是化学实验的前提,观察能力是实验能力的一个重要组成部分。由于“纸笔测验”不能让学生对实验进行观察,因此不易直接考查学生的观察能力。但化学知识的获得和积累过程密切相关,只有观察能力较强的学生,才能形成准确而牢固的记忆。因此,可以通过对记忆的测试,间接考查学生的实验观察能力,这也是目前“纸笔测验”对实验观察能力考查的一个主要特点。此外,由于观察是获取知识的最基本手段,是思维过程的基础之一,所以各类实验考查题目中观察能力的考查总是与对知识及其他能力的考查相结合的。

[例1]下列实验方法无法达到实验目的是( )。

A.用肥皂水鉴别硬水和软水

B.用燃着的木条鉴别氮气与二氧化碳

C.用熟石灰中和废液中的盐酸

D.用紫色石蕊试液鉴别稀硫酸和蒸馏水

(二)操作与运用目标

主要是指掌握化学实验仪器的构造、原理,正确选择、使用化学仪器、药品、技术条件,正确运用实验操作完成实验。主要包括三个方面:①正确选择、使用仪器、药品、技术条件,识别、绘制装置图;②辨识实验操作中的错误并予以改正;③掌握常用仪器装置、药品、实验技术的主要用途,解决一些实际问题。

[例2]下列实验操作正确的是( )。

A.滴加液体 B.测溶液pH C.氧气验满 D.熄灭酒精灯

(三)分析与表述目标

主要是指综合运用化学知识与基本操作,通过分析、推理、判断观察到的实验现象和记录的数据,对实验操作过程进行解释和说明。主要包括以下三个方面:①运用实验原理、物质性质对实验现象及结果进行分析、判断,发现规律并得出正确结论;②正确分析、处理实验数据及误差;③正确分析、表述实验操作过程及注意事项。

[例3]有同学利用如右图装置,通过排水量来测定生成氧气的体积,反应结束后,发现量筒内收集到的水的体积总是比理论值偏大(水的体积测量正确),其主要原因可能是____。

(四)设计与评价目标

化学实验设计能力是指学生根据实验课题所提出的实验目的,运用学过的化学知识和实验技能与技巧,选择恰当的实验方案来解决问题的过程。设计与评价目标主要包括以下三个方面:①设计仪器连接方案;②拟定实验操作方案(安排操作顺序、自行设计方案);③评价实验方案。形式上有仪器装置连接方案设计,操作顺序设计以及新情境下操作方案的设计;内容上包括确定某混合气体组分的实验设计,验证某个化学原理的实验设计,测定某物质纯度的实验设计,还有验证某物质是否存在的实验设计等,有定性设计也有定量设计。对评价的考查则突出考生对实验方案的全面理解和判断,其中大多要求考生对方案的简便性、可行性、安全性及绿色化方面作出评价。

[例4]某化学兴趣小组的同学选定稀硫酸和氢氧化钡溶液做中和反应实验。在烧杯中加入一定量的氢氧化钡溶液后滴入几滴酚酞试液,再向烧杯中加入一定量的稀硫酸。用玻璃棒充分搅拌后过滤,得白色沉淀和无色液体。

[提出问题]无色液体是什么物质?(不考虑指示剂)

[猜想]小明:无色液体是水;小红:无色液体是Ba(OH)2溶液;小丽:无色液体可能是____溶液。

[实验探究](1)如果你是小组成员之一,你认为小明猜想的理由是____。

(2)小红的猜想是否正确?理由是____。

(3)填写小丽的猜想,并针对她的猜想,请你设计实验验证是否正确。

不论是实验设计还是对实验方案的评价,均要求在全面掌握基础知识、基本技能的前提下综合运用。因此,它们在化学实验考查目标中属最高层次,是化学实验能力中应着重培养的。

三、化学实验“纸笔测验”的试题类型

新课程理念下化学实验考查将重点放在评价学生解决实际问题的能力上,“纸笔测验”试题的设计要有助于考查学生理解和应用知识的能力。通过具有真实背景的、综合性和开放性问题的“纸笔测验”题,既了解学生掌握有关知识、技能和方法的程度,又体现了对学生解决实际问题能力的有效评价,是编制基于真实生产、生活和社会背景,具有一定综合(学科内和学科间)性和开放性的试题的基本思想。

(一)考核科学过程和科学方法类试题

使学生掌握科学过程和科学方法,形成科学探究能力,是化学新课程的重要目标。在“纸笔测验”中,设计综合探究试题,加强对科学探究能力的考查,发挥科学探究的功能,可以使学生在解题过程中得到全面的发展。

[例5]学校化学兴趣小组知道二氧化锰能作过氧化氢分解的催化剂后,想再探究其他一些物质如氧化铝是否也可作过氧化氢的催化剂。请你一起参与他们的探究过程,并填写下列空白。

(1)问题:Al2O3能不能作过氧化氢分解的催化剂呢?

(2)猜想:Al2O3能作过氧化氢分解的催化剂。

(3)实验验证:

(4)结论:Al2O3能加快过氧化氢的分解速率,故Al2O3能作过氧化氢分解的催化剂。

(5)讨论:经过讨论,有的同学认为只有上述两个证据,不能证明Al2O3能作过氧化氢分解的催化剂,还要补充一个探究实验。

实验三

实验目的:探究

实验步骤:①准确称量少量Al2O3的质量;②完成实验二;③待反应结束,将实验二试管里的物质进行过滤,洗涤,____,称量;④对比反应前后Al2O3的质量。

讨论:如果Al2O3在反应前后质量不变,说明Al2O3可以作过氧化氢的催化剂。

(6)但小华同学认为,要证明猜想,上述三个实验还不够,还需要再增加一个探究实验,探究____。

探究设计题型编制的目的是考查学生进行实际探究的能力。通常此类题型注重过程而不过分对结果进行探讨,有的涉及探究课题所运用的主要科学研究方法、探究的各个要素及其操作方法,如实验器材、实验步骤和实验数据记录表格等。选择有探究价值的科学问题设置情境、考查学生提出猜想的能力、体验真正意义上的科学探究,是设计此类题型的关键。

(二)与生产、生活实际相联系类试题

化学是一门以实验为基础的自然科学,它源于生活、生产,更服务于生活、生产和社会。因此,要重视试题的实践性。一是让学生解决的问题来自于实践之中,具有实践意义;二是让学生在实践中去解决问题,即“解决实践中的问题和在实践中解决问题”。

[例6]A、B、C、D四种化合物,在日常家庭生活中都得到广泛应用。其中A、B通常情况下为液体,C、D为固体。A是生命之源,人们每天都必须饮用它;B是一种调味品的主要成分,用该调味品可除去水壶中的水垢;C常用作干果的干燥剂;把D加入经发酵后的面团中,可使蒸出的馒头松软可口。回答下列问题:

(1)这种调味品是____,C的俗称是____。

(2)把适量的A滴在一小块C上,产生大量的A蒸气,其原因是____。

(3)写出A与C反应的产物的溶液跟D的溶液反应的化学方程式:____,该反应类型是____。

“从生活走向化学,从化学走向社会”的新课程理念,在目前的实验“纸笔测验”题中得到较好的体现。此类试题常以简答题、信息题等题型出现,以现实生活中的化学事件(事实)为背景提出问题,这些背景来源于生活,是学生比较熟悉的,但在课本中未涉及(或涉及不多),对学生的问题分析能力、语言表达能力有较高的要求。

(三)与其他学科整合类试题

跨学科试题,是命题者以一定的线索把一些相关的知识串联成具有一定问题情境的知识网络题,它是以学科交叉与渗透为主的学科间综合题。

[例7]在一只盛有稀硫酸的烧杯中,漂浮着一塑料小方块,往烧杯中加人少量某种固体物质后,小方块浸没在水中的体积(V)变大(假设在此过程中溶液的体积变化忽略不计),则加入的固体可能是( )。

A.Fe B.Cu C.Ba(OH)2 D.Ba(NO32

这是一道跨学科综合题,物理中“浮力”的知识是解题的关键,同时也涉及物质间的化学变化知识。这就要求学生开放思维,打破学科之间的思维障碍,综合运用多学科知识解决问题。

(1)加入Fe,Fe+H2SO4=Fe2O4+H2↑,溶液质量增加,因溶液体积不变,故溶液密度变大。由G=FgV物可知V变小。

(2)加入Cu,Cu+H2SO4不反应,溶液质量、体积、密度都不变,则V不变。

(3)加人Ba(OH)2,Ba(OH)2+H2SO4=BaSO4↓+2H2O,溶液质量减小,因溶液体积不变,故溶液密度减小。由G=FgV可知V变大。

(4)加入Ba(NO32,Ba(NO32+H2SO4=BaSO4↓+2HN03,溶液质量增加,因溶液体积不变,故溶液密度增大,由G=FgV可知V减小。答案是C。

这类试题从本学科知识及其系统出发,或从本学科与其他学科相关联的知识出发,在它们的交叉处,要求学生从不同的角度进行观察、分析,考查学生综合应用知识的能力。

(四)体现开放性思维类试题

开放性试题解题方法和策略的不确定性,解题思维的发散性,使得不同水平层次的学生都可以从各自角度提出合理的解题方案。良好的开放性试题,应以学生为中心,问题的提出应能够激发学生的想象力和创造力,有利于全面评价和选拔学生,也有利于提高学生灵活运用化学知识解决问题的能力。

[例8]目前社会上有一些不法分子,以铜锌合金(金黄色;俗称黄铜)假冒黄金进行诈骗活动。现请你设计实验证明某黄色金属块是真金还是黄铜,要求写出实验方法、现象和结论。

开放性试题的特点是答案不唯一。所以要学会从多角度、全方位分析问题,解决问题。在平时学习过程中,要学会综合运用知识,善于灵活应变,探寻一因多果或一果多因,一題多解或多题一解,一装置多用或多装置一用。解答此类开放性试题时要明确实验目的,善于围绕题设条件进行思维发散。本题所提供的研究课题是验证某黄色金属块是真金还是黄铜,要求学生根据日常生活知识和课本所学知识设计实验来求证。可以设计多种方案,如:用测密度、试硬度等物理方法,也可以在火焰上灼烧,用稀硫酸、硫酸铜溶液来检验等化学方法,解题时要按照实验一现象一结论的程序完成。

开放性试题在设计时应注意:①命题的内容与研究对象必须是学生较熟悉的,所涉及的知识不能过深,最好是所学知识能解决的;②开放要有度,既不能让学生漫无目标,也不能随便回答都可以;既要有利于学生回答,培养学生的发散思维和创新能力,又要有利于教师赋分与评判。

篇5:C语言开发工程师笔试题

2、综合考察:

银行有个存有n个用户编号的文件,每个数都小于n,其中n=10的7次方。每个编号都不重复。

 输出:n个数升序排列。

 约束条件:内存最多有2兆的空间,运行时间复杂度为O(n)。

c++数据结构算法面试笔试题篇

1请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图?

2请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用? TCP与UDP呢? UDP,TCP 在传输层,IP在网络层, TCP/IP是英文Transmission Control Protocol/Internet Protocol的缩写,意思是”传输控制协议/网际协议“。TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如 T1和X.25、以太网以及RS-232串行接口)之上。确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7 层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路 层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:

应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。

传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。

互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。

网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。

Q3:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的?

一 般意义上说交换机是工作在数据链路层。但随着科技的发展,现在有了三层交换机,三层交换机已经扩展到了网络层。也就是说:它等于“数据链路层 + 部分网络层”。交换机中传的是帧。通过存储转发来实现的。路由器是工作在网络层。路由器中传的是IP数据报。主要是选址和路由。

Q4:请问C++的类和C里面的struct有什么区别?

结构是一种将数据集合成组的方法,类是一种同时将函数和数据都集合成组的方法。结构和类在表面上的唯一区别是:类中的成员在默认情况下是私有的,而结构中的成员在默认情况下是公用的。

class foo

{

private:

int data1;

public:

void func;

};

可以写成:

class foo

{

int data1;

public:

void func;

};

因为在类中默认的是私有的,所以关键字private就可以不写了。

如果想用结构完成这个类所作的相同的事,就可以免去关键字public,并将公有成员放置在私有成员之前:

struct foo

{

void func;

private:

int data1;

};

Q5:请讲一讲析构函数和虚函数的用法和作用?

在 JAVA里没有象C++中的,所谓的析构函数 ,因为当一个对象不在使用的时候,它会自动被垃圾回收器回收,所以也就用不着析构函数了, 那个finalize 也只有在被垃圾回收器回收,才会被执行,而且很多时候,垃圾回收器并不一定执行,所以它不能当做C++中的,所谓的析构函数使用, 虚函数在JAVA里也是没有的,比较象近的应该算是abstract。

Q6:全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?

1)、全局变量的作用用这个程序块,而局部变量作用于当前函数

2)、前者在内存中分配在全局数据区,后者分配在栈区

3)、生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁,局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在

4)、使用方式不同:通过声明后全局变量程序的各个部分都可以用到,局部变量只能在局部使用

Q7:一些寄存器的题目,主要是寻址和内存管理等一些知识。

Q8:8086是多少位的系统?在数据总线上是怎么实现的?

8086微处理器初次发布时,这块16位芯片仅包含29000个晶体管,运行速度为5MHz。而当今基于x86架构的奔腾4处理器,已经包含5500万个晶体管,运行速度提高了600倍以上,高达3.06GHz。

8086是高性能的第三代微处理器,是Intel系列的16位微处理器,它是采用HMOS工艺制造的,内部包含约29,000个晶体管。

8086 有16根数据线和20根地址线,因为可用20位地址,所以可寻址的地址空间达220即1M字节。8086工作时,只要一个5V电源和一相时钟,时钟频率为 5MHz。后来,Intel公司推出的8086-1型微处理器时钟频率高达10MHz,8086-2型微处理器时钟频率达8MHz。

1、局部变量能否和全局变量重名

答:能,局部会屏蔽全局。要用全局变量,需要使用”::“

局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。

2、如何引用一个已经定义过的全局变量

答:extern

可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。

3、全局变量可不可以定义在可被多个.C文件包含的头文件中 为什么

答:可以,在不同的C文件中以static形式来声明同名全局变量。

可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错

c++数据结构算法面试笔试题篇

1、语句for( ;1 ;)有什么问题 它是什么意思

答:和while(1)相同。

2、do……while和while……do有什么区别

答:前一个循环一遍再判断,后一个判断以后再循环

3、请写出下列代码的输出内容 以下是引用片段:

#include

main

{

int a,b,c,d;

a=10;

b=a++;

c=++a;

d=10星符号a++;

printf(”b,c,d:%d,%d,%d“,b,c,d);

return 0;

}

答:10,12,120

4、static全局变量与普通的全局变量有什么区别 static局部变量和普通局部变量有什么区别 static函数与普通函数有什么区别

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

从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。 static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件

static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;

static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;

static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

5、程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中。

c++数据结构算法面试笔试题篇

1、队列和栈有什么区别

队列先进先出,栈后进先出

2、写出下列代码的输出内容 以下是引用片段:

#include

int inc(int a)

{

return(++a);

} int multi(int星符号a,int星符号b,int星符号c)

{

return(星符号c=星符号a星符号星符号b); } typedef int(FUNC1)(int in); typedef int(FUNC2) (int星符号,int星符号,int星符号); { INCp=&inc; int temp =p(arg1); fun(&temp,&arg1, arg2); void show(FUNC2 fun,int arg1, int星符号arg2)

printf(”%d ",星符号arg2);

}

main

{

int a;

show(multi,10,&a);

return 0;

}

篇6:C笔试题

1) 读文件file1.txt的内容(例如):

12

34

56

输出到file2.txt:

56

34

12

(逆序)

2)输出和为一个给定整数的所有组合

例如n=5

5=1+4;5=2+3(相加的数不能重复)

则输出

1,4;2,3,

第一题,注意可增长数组的应用.

#include

#include

int main(void)

{ int MAX = 10;

int *a = (int *)malloc(MAX * sizeof(int));

int *b;

FILE *fp1;

FILE *fp2;

fp1 = fopen(“a.txt”,”r”);

if(fp1 == NULL)

{printf(“error1″);

exit(-1);

}

fp2 = fopen(“b.txt”,”w”);

if(fp2 == NULL)

{printf(“error2″);

exit(-1);

}

int i = 0;

int j = 0;

while(fscanf(fp1,”%d”,&a[i]) != EOF)

{i++;

j++;

if(i >= MAX)

{

MAX = 2 * MAX;

b = (int*)realloc(a,MAX * sizeof(int));

if(b == NULL)

{printf(“error3″);

exit(-1);

}a = b;

}}

for(;–j >= 0;)

fprintf(fp2,”%dn”,a[j]);

fclose(fp1);

fclose(fp2);

return 0;

}

第二题.

#include

int main(void)

{unsigned long int i,j,k;

printf(“please input the numbern”);

scanf(“%d”,&i);

if( i % 2 == 0)

j = i / 2;

else

j = i / 2 + 1;

printf(“The result is n”);

for(k = 0; k < j; k++)

printf(“%d = %d + %dn”,i,k,i – k);

return 0;

}

#include

void main

{unsigned long int a,i=1;

scanf(“%d”,&a);

if(a%2==0)

{ for(i=1;i printf(“%d”,a,a-i);

}

else

for(i=1;i<=a/2;i++)

printf(” %d, %d”,i,a-i);

}

兄弟,这样的.题目若是做不出来实在是有些不应该, 给你一个递规反向输出字符串的例子,可谓是反序的经典例程.

void inverse(char *p)

{ if( *p = = ‘′ )

return;

inverse( p+1 );

printf( “%c”, *p );

}

int main(int argc, char *argv[])

{

inverse(“abc″);

return 0;

}

借签了楼上的“递规反向输出”

#include

void test(FILE *fread, FILE *fwrite)

{ char buf[1024] = {0};

if (!fgets(buf, sizeof(buf), fread))

return;

test( fread, fwrite );

fputs(buf, fwrite);

}

int main(int argc, char *argv[])

{ FILE *fr = NULL;

FILE *fw = NULL;

fr = fopen(“data”, “rb”);

fw = fopen(“dataout”, “wb”);

test(fr, fw);

fclose(fr);

fclose(fw);

return 0;

}

在对齐为4的情况下

struct BBB

{ long num;

char *name;

short int data;

char ha;

short ba[5];

}*p;

p=0×1000000;

p+0×200=____;

(Ulong)p+0×200=____;

(char*)p+0×200=____;

解答:假设在32位CPU上,

sizeof(long) = 4 bytes

sizeof(char *) = 4 bytes

sizeof(short int) = sizeof(short) = 2 bytes

sizeof(char) = 1 bytes

由于是4字节对齐,

sizeof(struct BBB) = sizeof(*p)

= 4 + 4 + 2 + 1 + 1/*补齐*/ + 2*5 + 2/*补齐*/ = 24 bytes (经Dev-C++验证)

p=0×1000000;

p+0×200=____;

= 0×1000000 + 0×200*24

(Ulong)p+0×200=____;

= 0×1000000 + 0×200

(char*)p+0×200=____;

= 0×1000000 + 0×200*4

篇7:C编程笔试题

提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:

if ( n == 0 )

if ( n != 0 )

以此类推。

请写出 BOOL flag 与“零值”比较的 if 语句:

请写出 float x 与“零值”比较的 if 语句:

请写出 char *p 与“零值”比较的 if 语句:

二、以下为Windows NT下的32位C 程序,请计算sizeof的值(10分)

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 );

请计算

篇8:c经典笔试题

#include

#include

int main(int argc,char* argv)

{

FILE* fp;

int i,j,k,num,NUM;

char c[50],t,ch;

if((fp=fopen(“A”,“r”))==NULL)

/*can be replaced by open

* int fd=open(“A”,O_RDONLY|O_CREAT);*/

{

printf(“fileA cannot be openedn”);

exit(0);

}

printf(“nA contents are:n”);

for(i=0;(ch=fgetc(fp))!=EOF;i++)/*一个字符一个字符读*/

{

c[i]=ch;

putchar(c[i]);

}

num=i+1;

fclose(fp);

if((fp=fopen(“B”,“r”))==NULL)

{

printf(“fileB cannot be openedn”);

exit(0);

}

printf(“nB contents are :n”);

for(i=0;(ch=fgetc(fp))!=EOF;i++)

{

c[num+i]=ch;

putchar(c[num+i]);

}

fclose(fp);

NUM=num+i+1;

for(k=0;k

{

for(j=0;j

{

if(c[j]>c[j+1])

{

t=c[j];

c[j]=c[j+1];

c[j+1]=t;

}

}

}

printf(“nC fileis:n”);

fp=fopen(“C”,“w”);

for(i=0;i

{

putc(c[i],fp);/*将字符一个个写入文件中*/

putchar(c[i]);/*一个个输出字符*/

}

fclose(fp);

return 1;

篇9:C二级笔试题

A.gets函数用于从终端读入字符串

B.getchar函数用于从磁盘文件读入字符

C.fputs函数用于把字符串输出到文件

D.fwrite函数用于以二进制形式输出数据到文件

正确答案:B

答案解析:本题考查的是C语言中输入、输出函数的使用,gets和getchar函数用于从标准输入设备键盘读入字符串和字符;fputs用于把字符串输出到文件;fwrite用于以二进制形式输出数据到文件。

2). 拷贝构造函数的参数一般是( )

A.某对象名

B.某对象成员名

C.某对象的引用名

D.指向对象的指针名

正确答案:C

3). C++语言是以哪种语言为基础逐渐发展演变而成的一种程序设计语言( )

A.ASP

B.C

C.VB

D.Java

正确答案:B

4). 软件设计中划分模块的一个准则是( ).

A.低内聚低耦合

B.高内聚低耦合

C.低内聚高耦合

D.高内聚高耦合

正确答案:B

答案解析:一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。

5). 下述关于数据库系统的叙述中,正确的是( )。

A.数据库系统减少了数据冗余

B.数据库系统避免了一切冗余

C.数据库系统中数据的一致性是指数据类型一致

D.数据库系统比文件系统能管理更多的数据

正确答案:A

篇10:C笔试题算法

这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: #include

void BubbleSort(int* pData,int Count)

{

int iTemp;

for(int i=1;i

{

for(int j=Count-1;j>=i;j--)

{

if(pData[j]

{

iTemp = pData[j-1];

pData[j-1] = pData[j];

pData[j] = iTemp;

}

}

}

}

void main

{

int data = {10,9,8,7,6,5,4};

BubbleSort(data,7);

for (int i=0;i<7;i++)

cout<

}

倒序

第一轮:10,9,8,7->10,9,7,8->10,7,9,8->7,10,9,8(交换3次)

第二轮:7,10,9,8->7,10,8,9->7,8,10,9(交换2次)

第一轮:7,8,10,9->7,8,9,10(交换1次)

循环次数:6次

交换次数:6次

其他:

第一轮:8,10,7,9->8,10,7,9->8,7,10,9->7,8,10,9(交换2次)

第二轮:7,8,10,9->7,8,10,9->7,8,10,9(交换0次)

第一轮:7,8,10,9->7,8,9,10(交换1次)

循环次数:6次

交换次数:3次

上面我们给出了程序段,现在我们分析它:这里,影响我们算法性能的主要部分是循环和交换,显然,次数越多,性能就越差。从上面的程序我们可以看出循环的次数是固定的,为1+2+...+n-1。 写成公式就是1/2*(n-1)*n。

现在注意,我们给出O方法的定义:

若存在一常量K和起点n0,使当n>=n0时,有f(n)<=K*g(n),则f(n) = O(g(n))。(呵呵,不要说没学好数学呀,对于编程数学是非常重要的!!!)

现在我们来看1/2*(n-1)*n,当K=1/2,n0=1,g(n)=n*n时,1/2*(n-1)*n<=1/2*n*n=K*g(n)。所以(n)=O(g(n))=O(n*n)。所以我们程序循环的复杂度为O(n*n)。

上一篇:活动策划公司运营方案下一篇:清丰县房地产市场调查