C软件工程师入职笔试题及答案

合集下载

C软件工程师笔试题

C软件工程师笔试题

一、请填写BOOL , float, 指针变量与“零值”比较的if 语句。

(10分)提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。

例如int 变量n 与“零值”比较的if 语句为:if ( n == 0 ) if ( n != 0 )以此类推。

请写出BOOL flag 与“零值”比较的if 语句:标准答案: if ( flag )if ( !flag )如下写法均属不良风格,不得分。

if (flag == TRUE) if (flag == 1 ) if (flag == FALSE) if (flag == 0)请写出float x 与“零值”比较的if 语句:标准答案示例:const float EPSINON = 0.00001;if ((x >= - EPSINON) && (x <= EPSINON)不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。

如下是错误的写法,不得分。

if (x == 0.0) if (x != 0.0)请写出char *p 与“零值”比较的if 语句:标准答案:if (p == NULL)if (p != NULL)如下写法均属不良风格,不得分。

if (p == 0) if (p != 0) if (p) if (!)二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)char str[] = “Hello” ; char *p = str ; int n = 10;sizeof (str ) = 6 sizeof ( p ) = 4 sizeof ( n ) = 4void Func ( char str[100]){请计算sizeof( str ) = 4}void *p = malloc( 100 );请计算sizeof ( p ) = 4三、简答题(25分)1、头文件中的ifndef/define/endif 干什么用?防止该头文件被重复引用2、#include <filename.h> 和#include “filename.h”有什么区别?答:对于#i nclude <filename.h> ,编译器从标准库路径开始搜索filename.h对于#i nclude “filename.h” ,编译器从用户的工作路径开始搜索filename.h3、const 有什么用途?(请至少说明两种)答:(1)可以定义const 常量(2)const可以修饰函数的参数、返回值,甚至函数的定义体。

软件工程师笔试题

软件工程师笔试题

软件工程师笔试题1.什么是软件测试,其目的是什么?答案:软件测试是对软件产品进行验证和确认的过程,目的在于发现软件中的缺陷、提高软件的质量和稳定性。

2.请解释一下什么是面向对象编程?答案:面向对象编程是一种编程范式,它使用对象来设计软件。

对象是具有属性和行为的实体,并且可以与其他对象交互。

面向对象编程具有封装、继承和多态等核心特性。

3.请简述一下什么是异常处理?答案:异常处理是程序中处理异常情况的机制。

当程序出现错误或异常时,异常处理机制能够捕获这些异常,并进行适当的处理,例如记录日志、通知用户或者执行其他修复操作。

4.请简述一下什么是SQL注入攻击?如何防范?答案:SQL注入攻击是一种常见的网络攻击手段,攻击者通过在输入字段中注入恶意的SQL代码,来执行未经授权的数据库操作。

防范SQL注入攻击的方法包括使用参数化查询、对用户输入进行验证和清理、使用存储过程以及设置数据库权限等。

5.请简述一下什么是设计模式?其作用是什么?答案:设计模式是一种可重用的设计方案,用于解决常见的设计问题。

设计模式提供了一种抽象层次上的思考方式,能够帮助开发人员更快地构建可靠的软件产品。

设计模式的作用包括提高软件的可维护性、可扩展性和可复用性等。

6.请简述一下什么是数据结构?常见的有哪些类型?答案:数据结构是一种组织数据的方式,它定义了数据元素之间的逻辑关系。

常见的数据结构类型包括数组、链表、栈、队列、树、图等。

7.请简述一下什么是多线程编程?其优点和挑战是什么?答案:多线程编程是一种允许多个线程同时执行的编程范式。

优点包括提高程序的执行效率、充分利用多核处理器资源以及更好地利用系统资源等。

挑战包括线程同步问题、死锁和竞态条件等。

8.请简述一下什么是Web应用程序?它的主要组成部分是什么?答案:Web应用程序是一种基于Web技术的应用程序,它使用HTTP协议进行通信,并通过Web浏览器进行展示。

主要组成部分包括Web服务器、Web浏览器和应用程序逻辑等。

东软软件测试(偏重C语言)工程师笔试题及参考答案

东软软件测试(偏重C语言)工程师笔试题及参考答案

东软软件测试(偏重C语言)工程师笔试题及参考答案问题:东软软件测试(偏重C语言)工程师笔试题及参考答案回答:试卷一:C系语言面试题及答案1、局部变量能否和全局变量重名?答:能,局部会屏蔽全局。

要用全局变量,需要使用::局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。

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

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

3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?答:可以,在不同的C文件中以static形式来声明同名全局变量。

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

4、语句for( ;1 ;)有什么问题?它是什么意思?答:无限循环,和while(1)相同。

5、do……while和while……do有什么区别?答:前一个循环一遍再判断,后一个判断以后再循环。

6、请写出下列代码的输出内容#includemain(){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,1207、测试计划工作的目的是什么?测试计划文档的内容应该包括什么?其中哪些是最重要的?答案:软件测试计划是指导测试过程的纲领性文件。

包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。

C语言软件工程师笔试题大全

C语言软件工程师笔试题大全

C语言软件工程师笔试题大全1. 基础知识题1.1 变量和数据类型1.请描述int和float这两种数据类型分别在内存中所占的字节数以及其取值范围。

2.什么是变量,变量的命名规则有哪些限制?3.请简要介绍C语言中的整型常量、浮点型常量和字符常量。

1.2 运算符和表达式1.C语言中的逻辑运算符有哪些?它们的运算规则是什么?2.请解释C语言中的前缀递增和后缀递增运算符的区别。

3.下面的表达式的结果是多少?int x = 5; int y = x++;1.3 控制结构1.请解释C语言中的if-else语句的用法和语法。

2.请解释C语言中的for循环语句的用法和语法。

3.请解释C语言中的switch语句的用法和语法。

2. 中级知识题2.1 数组和字符串1.请解释C语言中的一维数组和多维数组的定义和使用方法。

2.请编写一个程序,实现对一个整型数组的冒泡排序。

3.请编写一个程序,实现两个字符串的拼接。

2.2 指针和内存管理1.请解释C语言中的指针的概念和作用,并说明指针的运算规则。

2.请编写一个程序,交换两个变量的值,使用指针作为函数的参数。

3.请解释C语言中的动态内存分配和释放的方法,并编写一个例子。

2.3 结构体和联合体1.请解释C语言中的结构体的概念和用法,并编写一个例子。

2.请解释C语言中的联合体的概念和用法,并编写一个例子。

3.请解释C语言中的位字段的概念和用法,并编写一个例子。

3. 高级知识题3.1 函数和库1.请解释C语言中的函数指针的概念和用法,并编写一个例子。

2.请解释C语言中的标准库和自定义库的区别,并说明如何使用自定义库。

3.请解释C语言中的递归函数的概念和用法,并编写一个例子。

3.2 文件操作1.请解释C语言中的文件指针的概念和用法,并说明如何打开、读取和关闭文件。

2.请编写一个程序,实现对一个文本文件的读取和统计某个字符出现的次数。

3.请编写一个程序,实现对一个文本文件的写入操作,将一个字符串写入文件。

最新面试考试题目(含答案)-C#软件工程师笔试题

最新面试考试题目(含答案)-C#软件工程师笔试题

C#软件工程师笔试题
C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。

它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。

下面就由为大家介绍一下C#软件工程师笔试题的文章,欢迎阅读。

C#软件工程师笔试题篇1
1 使用白盒测试方法时,确定测试数据应根据( )和指定的覆盖标准
A 程序的内部逻辑
B 程序的复杂结构
C 使用说明书
D 程序的功能
2在XML中,DTD文件如下配置其中的*号,表示的意思是( )
A EMAIL出现一次?
B EMAIL不出现
C EMAIL不出现或出现多次
D EMAIL不出现或出现一次
3在一个DTD声明中定义了一个元素为
那么如下的XML文档片段中合法的是( )
A 联系人。

软件工程师考试题目

软件工程师考试题目

1、在软件开发过程中,需求分析的主要目的是?A. 确定软件开发所需的技术栈B. 明确软件的功能和性能要求C. 设计软件的架构和模块划分D. 测试软件的可用性和用户体验(答案)B2、下列哪项不属于软件设计的基本原则?A. 高内聚低耦合B. 模块化设计C. 尽可能使用最新技术D. 遵循设计模式(答案)C3、在敏捷开发方法中,迭代计划会议的主要任务是?A. 详细规划整个项目的开发流程B. 确定下一个迭代周期要完成的用户故事C. 评估项目风险并制定应对措施D. 对已完成的工作进行回顾和总结(答案)B4、关于软件测试,下列说法错误的是?A. 单元测试是对单个模块进行测试B. 集成测试是在单元测试之后进行,关注模块间的交互C. 系统测试是验证软件是否满足用户需求D. 验收测试是由开发人员自行完成的最终测试(答案)D5、在数据库设计中,ER图(实体-关系图)主要用于表示?A. 数据表的字段和数据类型B. 实体、属性和实体间的关系C. 数据的存储结构和访问方法D. 数据的流程和处理逻辑(答案)B6、下列哪项不是版本控制工具(如Git)的主要功能?A. 跟踪代码变化历史B. 协助多人协作开发C. 自动编译和部署代码D. 管理代码分支和合并(答案)C7、关于软件架构,下列说法正确的是?A. 软件架构只在软件设计初期考虑,后续开发无需关注B. 软件架构是软件开发过程中的固定不变的部分C. 软件架构影响软件的可维护性、可扩展性和性能D. 所有软件的架构都是相同的,不存在差异(答案)C8、在面向对象编程中,继承的主要作用是?A. 实现代码的复用和扩展B. 提高代码的执行效率C. 减少代码的内存占用D. 简化代码的编写过程(答案)A9、关于软件测试中的回归测试,下列说法错误的是?A. 回归测试是在修改代码后进行的测试B. 回归测试的目的是确保修改没有引入新的错误C. 回归测试只需测试修改过的部分D. 回归测试通常包括全部或部分已经执行过的测试用例(答案)C10、在软件开发过程中,代码审查的主要目的是?A. 检查代码是否符合编码规范B. 发现并修复代码中的错误和潜在问题C. 评估代码的性能和优化空间D. 确定代码是否满足用户需求(答案)B。

C工程师笔试题

C工程师笔试题

C工程师笔试题C工程师笔试题一、选择题(每题2分,共40分)1. 下列哪个是C语言的关键字?A. functionB. structC. classD. object2. 下列哪个语句用于释放动态分配的内存?A. deleteB. freeC. mallocD. new3. 下列哪种循环语句不会执行循环体?A. forB. whileC. do-whileD. if4. 下列语句中,哪个是合法的数组定义方式?A. int array[10];B. array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};C. array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};D. int array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};5. 下列哪个函数声明是合法的?A. int add(int a, b);B. int add(int a, int b)C. add(int a, int b) int;D. int add(a, b);二、填空题(每题4分,共40分)1. 以下程序的输出结果是________。

```c#include <stdio.h>void foo(int *x) {*x += 5;}int main() {int a = 10;foo(&a);printf("%d", a);return 0;}```2. 以下程序的输出结果是_________。

```c#include <stdio.h>int main() {int array[5] = {1, 2, 3, 4, 5};for (int i = 0; i < 5; i++) {printf("%d", array[i]);}return 0;}```3. 填写下面函数的返回值。

2024年C语言软件工程师笔试题大全

2024年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、什么函数不能申明为虚函数?答:constructor11、队列和栈有什么区分?答:队列先进先出,栈后进先出12、不能做switch()的参数类型答:switch的参数不能为实型。

c招聘试题及答案

c招聘试题及答案

c招聘试题及答案C招聘试题及答案1. 选择题- 1.1 以下哪个选项是C语言中的关键字?A. intB. stringC. varD. void答案:A- 1.2 C语言中,用于定义函数的关键字是什么?A. functionB. defineC. defD. int答案:D2. 填空题- 2.1 在C语言中,定义一个整型变量的正确语法是____。

答案:int variable_name;- 2.2 如果要声明一个指向整型变量的指针,正确的语法是____。

答案:int *pointer_name;3. 简答题- 3.1 请解释C语言中的数组和指针的区别。

答案:数组是一种数据结构,用于存储相同类型的多个元素,而指针是一个变量,它存储了另一个变量的内存地址。

数组名本身代表数组首元素的地址,而指针变量可以被赋值指向不同的地址。

- 3.2 描述C语言中如何实现函数的递归调用。

答案:递归调用是指函数在其定义中调用自身。

在C语言中,实现递归调用需要定义一个函数,该函数在其内部调用自身,并且有一个递归结束的条件,以避免无限递归。

4. 编程题- 4.1 编写一个C语言函数,计算并返回两个整数的和。

答案:```cint add(int a, int b) {return a + b;}```- 4.2 编写一个C语言程序,实现字符串的反转。

答案:```c#include <string.h>#include <stdio.h>void reverseString(char* str) {int length = strlen(str);for(int i = 0; i < length / 2; i++) {char temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}}int main() {char str[] = "Hello, World!";reverseString(str);printf("Reversed string: %s\n", str);return 0;}```5. 论述题- 5.1 讨论C语言中结构体和联合体的区别。

软件工程师笔试题及答案

软件工程师笔试题及答案

吉运集团北京信息科技开发公司软件工程师笔记题_____________________________________________________ 姓名:________________ 联系电话:_____________ 期望工资________________第一部分:选择题(每题5分)一、以下程序中VB和C#书写都正确的是:( ) 多选A:Public strName As String 和string strName = new string()B:Public strName As String()和 string strName = new string()C:Public strName(10)As String和string[] strName = new string[100];D:以上答案都正确;二、以下C#程序中,写法不.正确的是( )多选A:C://Windows//System32B:C:\\Windows\\System32C:@C:\Windows\System32 D:@C:/Windows/System32三、下列选项中,是引用类型的是 ( )A. enum类型B. struct类型C. string类型D. int类型四、软件开发过程一般有以下几个阶段,正确的说法是( )A:需求分析,概要设计,详细设计,软件编码,软件测试B:概要设计,需求分析,详细设计,软件编码,软件测试C:需求分析,详细设计,软件开发,系统上线D:系统调研,需求讨论,整体设计,系统上线,系统售后五、以下关于CLR语言描述,不正确的是( )A:CLR是.NET翻译语言,用户可以用C#写类,在中调用;B:有了CRL 在.NET,保证了一种语言具有的功能其它语言也有;C:CLR是在.NET中间语言,是CPU能看懂的语言;D:以上说法都正确;六、以下C#程序,正确描述的是( )Class Student{public string ID;public string Name;public string Sex;}A:定义了一个名字为“Student”的类,类体中包括学生的学号(ID),姓名(Name),与性别(Sex);B:定义了一个名称为“Student”的方法,ID,Name,Sex为方法中的成员;C:定义了一个名称为“Student”的类型,ID,Name,Sex为类中的成员;D:以上说法都不正确;七、下列VB语句哪一个不.正确()A.Dim strName As StringB.If Year(Now) = 2009 Then Exit SubC.String userName = new String();D.DoEvents八、假定有一个用户表,表中包含字段:userid (int)、username (varchar)、password(varchar)、等,该表需要设置主键,以下说法正确的是( )多选A:如果不能有同时重复的username和password,那么username和password可以组合在一起作为主键。

软件工程师笔试题及答案

软件工程师笔试题及答案

软件工程师笔试题及答案一、选择题(每题5分,共50分)1. 下列哪个选项是面向对象编程的三大特性?A. 封装、继承、多态B. 封装、继承、抽象C. 封装、继承、封装D. 继承、多态、抽象答案:A2. 在Java中,下列哪个关键字用于定义一个接口?A. classB. interfaceC. abstractD. extends答案:B3. 在关系型数据库中,用于创建表的SQL语句是?A. CREATE TABLEB. SELECT TABLEC. INSERT TABLED. DEFINE TABLE答案:A4. 下列哪个不是HTTP状态码?A. 200B. 404C. 500D. 600答案:D5. 在HTML中,用于定义文档标题的标签是?A. <title>B. <h1>C. <header>D. <div>答案:A6. 在JavaScript中,下列哪个方法用于将字符串转换为小写?A. toLowerCase()B. toUpperCase()C. toCamelCase()D. toTitleCase()答案:A7. 在C语言中,下列哪个关键字用于定义一个函数?A. defineB. functionC. defD. void答案:D8. 在Python中,下列哪个方法用于获取列表的长度?A. len()B. length()C. size()D. count()答案:A9. 在Unix/Linux系统中,下列哪个命令用于查看当前目录下的文件和文件夹?A. lsB. dirC. listD. show答案:A10. 下列哪个不是敏捷软件开发的价值观?A. 个体和互动B. 可工作的软件C. 详尽的文档D. 客户合作答案:C二、简答题(每题10分,共50分)1. 请简述什么是软件工程?答案:软件工程是一门研究如何高效、系统地开发、运行和维护软件的学科。

C开发招聘试题

C开发招聘试题

C开发招聘试题【C开发招聘试题分析与解答】一、题目描述假设你是一家软件开发公司的技术经理,现需要招聘一名C开发工程师。

请你根据公司需求,设计并编写一套C开发试题,以便筛选出合适的候选人。

二、试题设计为了能够有效地筛选出具备C开发技能的候选人,此次招聘试题将分为基础知识测试、编码实践和问题解决三个部分。

具体设计如下:1. 基础知识测试1.1 C语言的数据类型有哪些?请简要说明各个数据类型的特点和使用场景。

1.2 C语言的运算符有哪些?请简要说明各个运算符的作用和优先级。

1.3 C语言中的条件语句有哪些?请简要说明各个条件语句的语法和使用方法。

2. 编码实践2.1 编写一个C程序,实现将两个整数相加并输出结果的功能。

2.2 编写一个C程序,实现求解一个整数数组中的最大值和最小值。

2.3 编写一个C程序,实现对一个整数数组进行升序排序。

3. 问题解决3.1 请解释C语言中指针的概念,并简要说明指针与引用的区别。

3.2 如果你需要在C程序中调用一个外部函数,该如何实现?3.3 请简要说明C语言中的内存管理和动态内存分配的方法。

三、试题解答根据以上设计的试题内容,以下是每个部分的详细解答,供应聘人员参考:1. 基础知识测试1.1 C语言的数据类型包括基本数据类型(例如整型、浮点型、字符型)和派生数据类型(例如数组、结构体、联合体、枚举)。

整型可用来存储整数,浮点型可用来存储小数,字符型可用来存储单个字符。

各个数据类型的特点和使用场景根据实际需求来选择合适的数据类型即可。

1.2 C语言的运算符包括算术运算符(例如加减乘除、取余)、关系运算符(例如大于、小于)、逻辑运算符(例如与、或)、赋值运算符等。

各个运算符有不同的作用和优先级,具体使用时需要根据需要来正确选择和组合。

1.3 C语言中的条件语句包括if语句、switch语句和三元运算符。

if语句用于判断某个条件是否成立,根据结果执行相应的代码块;switch语句用于多个条件的选择判断,根据不同条件执行不同的代码块;三元运算符用于简化if-else语句的判断逻辑。

软件工程师面试题嵌入式CC++笔试题(含答案)

软件工程师面试题嵌入式CC++笔试题(含答案)

软件工程师+嵌入式C/C++笔试题一、你对MVC的理解,MVC有什么优缺点?结合Struts,说明在一个Web应用如何去使用?答:MVC设计模式(应用观察者模式的框架模式)M: Model(Business process layer),模型,操作数据的业务处理层,并独立于表现层(Independent of presentation)。

V: View(Presentation layer),视图,通过客户端数据类型显示数据,并回显模型层的执行结果。

C: Controller(Control layer),控制器,也就是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图MVC框架的一种实现模型模型二(Servlet-centric):JSP+Servlet+JavaBean,以控制为核心,JSP只负责显示和收集数据,Sevlet,连接视图和模型,将视图层数据,发送给模型层,JavaBean,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这种MVC 的实现模式。

StrutsMVC框架(Web application frameworks)Struts是使用MVC的实现模式二来实现的,也就是以控制器为核心。

Struts提供了一些组件使用MVC开发应用程序:Model:Struts没有提供model类。

这个商业逻辑必须由Web应用程序的开发者以JavaBean 或EJB的形式提供View:Struts提供了action form创建form bean, 用于在controller和view间传输数据。

此外,Struts提供了自定义JSP标签库,辅助开发者用JSP创建交互式的以表单为基础的应用程序,应用程序资源文件保留了一些文本常量和错误消息,可转变为其它语言,可用于JSP中。

Controller:Struts提供了一个核心的控制器ActionServlet,通过这个核心的控制器来调用其他用户注册了的自定义的控制器Action,自定义Action需要符合Struts的自定义Action规范,还需要在struts-config.xml的特定配置文件中进行配置,接收JSP输入字段形成Action form,然后调用一个Action控制器。

c c 笔试题及答案详解

c c 笔试题及答案详解

c c 笔试题及答案详解C C笔试题及答案详解C C是一种通用的编程语言,广泛用于系统软件和应用程序开发。

在程序员面试和招聘过程中,C C笔试题是常见的一部分。

本文将详细解析几道经典的C C笔试题及其答案,帮助读者对C C语言的使用和理解有更深入的认识。

题目一:请编写一个C C程序,将一个整数数组中的元素按照从小到大的顺序进行排序。

答案详解:```c#include <stdio.h>int main() {int arr[] = {50, 20, 40, 10, 30};int n = sizeof(arr)/sizeof(arr[0]);int i, j, temp;for (i = 0; i < n-1; i++) {for (j = 0; j < n-i-1; j++) {if (arr[j] > arr[j+1]) {temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}printf("排序后的数组:");for(i = 0; i < n; i++) {printf("%d ", arr[i]);}return 0;}```题目二:请编写一个C C程序,计算并输出斐波那契数列的前20个数字。

答案详解:```c#include <stdio.h>int main() {int n = 20;int fib[n];int i;fib[0] = 0;fib[1] = 1;for(i = 2; i < n; i++) {fib[i] = fib[i-1] + fib[i-2];}printf("斐波那契数列的前20个数字:");for(i = 0; i < n; i++) {printf("%d ", fib[i]);}return 0;}```题目三:请编写一个C C程序,将一个字符串中的所有小写字母转换为大写字母。

东软c语言笔试题及答案大全

东软c语言笔试题及答案大全

东软c语言笔试题及答案大全东软C语言笔试题及答案大全1. 以下哪个关键字用于定义C语言中的函数?A. classB. functionC. voidD. int答案:D2. 在C语言中,以下哪个选项不是合法的变量名?A. _myVarB. my_varC. 2variableD. myVar2答案:C3. 下列关于C语言中数组的描述,错误的是:A. 数组可以存储相同类型的多个元素B. 数组的索引从0开始C. 数组的大小在声明时必须指定D. 数组的大小可以在运行时确定答案:D4. C语言中,以下哪个运算符用于比较两个值是否相等?A. ==B. =C. !=D. !=答案:A5. 在C语言中,以下哪个语句用于循环执行一段代码?A. ifB. forC. whileD. switch答案:B6. 下列哪个函数用于将字符串转换为浮点数?A. atoiB. atofC. itoaD. sprintf答案:B7. 在C语言中,以下哪个选项是正确的注释方式?A. // This is a single line commentB. /* This is a single line comment */C. // This is a multi-line commentD. /* This is a multi-line comment */答案:A8. 下列哪个函数用于计算两个数的和?A. printfB. scanfC. sumD. strcat答案:C(注意:C语言标准库中没有sum函数,此题意在考察自定义函数的概念)9. 在C语言中,以下哪个关键字用于定义结构体?A. structB. unionC. enumD. typedef答案:A10. 下列哪个选项是C语言中的预处理器指令?A. #includeB. #defineC. #importD. #export答案:A11. 在C语言中,以下哪个关键字用于声明一个指针?A. intB. charC. floatD. *答案:D12. 下列哪个选项是合法的C语言常量?A. 0x1AB. 1.23e5C. 123D. All of the above答案:D13. C语言中,以下哪个函数用于输出字符串?A. printfB. scanfC. sprintfD. strcat答案:A14. 下列哪个选项是C语言中正确的二维数组声明?A. int arr[3][4];B. int arr[][];C. int arr[3][];D. int arr[4][3][2];答案:A15. 在C语言中,以下哪个选项用于定义一个枚举类型?A. structB. unionC. enumD. typedef答案:C16. 下列哪个函数用于计算字符串的长度?A. strlenB. strcpyC. strcatD. strcmp答案:A17. C语言中,以下哪个关键字用于定义一个联合体?A. structB. unionC. enumD. typedef答案:B18. 下列哪个选项是C语言中正确的条件语句?A. ifB. unlessC. switchD. case答案:A19. 在C语言中,以下哪个函数用于将浮点数转换为字符串?A. sprintfB. printfC. scanfD. strcat答案:A20. 下列哪个选项是C语言中正确的无限循环?A. while(1)B. for(;;)C. do-whileD. All of the above答案:D。

软件工程师笔试题及答案

软件工程师笔试题及答案

软件工程师笔试题及答案一、选择题1. 在面向对象编程中,封装的目的是:A. 隐藏数据B. 隐藏方法C. 隐藏数据和方法D. 隐藏类答案:C2. 下列哪个不是Java的基本数据类型?A. intB. floatC. StringD. double答案:C3. 在软件开发中,哪个阶段是进行需求分析?A. 计划阶段B. 需求分析阶段C. 设计阶段D. 编码阶段答案:B二、简答题1. 请简述软件开发生命周期(SDLC)的主要阶段。

答案:软件开发生命周期(SDLC)的主要阶段包括:- 需求收集与分析- 系统设计- 编码与实现- 测试- 部署- 维护2. 什么是递归算法?请举例说明。

答案:递归算法是一种在问题解决过程中调用自身的算法。

它通常用于解决可以分解为相似子问题的问题。

例如,计算阶乘的算法就是一个递归算法:```int factorial(int n) {if (n == 0) return 1;return n * factorial(n - 1);}```三、编程题1. 编写一个函数,实现字符串的反转。

示例代码:```pythondef reverse_string(s):return s[::-1]```2. 给定一个整数数组,请找出其中最大的连续子数组和。

示例代码:```pythondef max_subarray_sum(arr):max_sum = current_sum = arr[0]for num in arr[1:]:current_sum = max(num, current_sum + num)max_sum = max(max_sum, current_sum)return max_sum```四、案例分析题1. 描述一个你参与过的软件项目,并解释你在项目中的角色和贡献。

答案:(此处应根据个人经验填写具体内容,包括项目名称、使用的技术和工具、个人职责、解决的问题以及取得的成果等。

c软件工程师入职笔试题及答案

c软件工程师入职笔试题及答案

一、简答题(共50分)1.你经常使用的主机、OS、编译工具和调试工具是什么。

如何查看系统进程信息,你经常使用的进程治理命令有哪些?(问题尽可能基于你经常使用的Unix 环境作答)。

(10分)答:我经常使用的是Sun主机,操作系统一样是Solaris8或Solaris10。

编译工具包括:g++,gcc,cc等。

调试工具包括:gdb。

(该项了解应聘者对编程环境的偏好,无标准答案。

)经常使用的进程治理命令是:查看:prstat -a 或 top治理:pldd pid 显示链接到每一个进程的动态链接库pstack pid 显示十六进制与符号堆跟踪信息fuser filespwdx pid 查看进程运行目录ptree pid 查看进程树信息2.C中的malloc和C++中的new有什么区别。

(10分)答:malloc和new有以下不同:(1)new、delete 是操作符,能够重载,只能在C++中利用。

(2)malloc、free是函数,能够覆盖,C、C++中都能够利用。

(3)new 能够挪用对象的构造函数,对应的delete挪用相应的析构函数。

(4)malloc仅仅分派内存,free仅仅回收内存,并非执行构造和析构函数。

(5)new、delete返回的是某种数据类型指针,malloc、free返回的是void 指针。

注意:malloc申请的内存空间要用free释放,而new申请的内存空间要用delete 释放,不要混用。

因为二者实现的机理不同。

3、简述结构化的程序设计、面向对象的程序设计的大体思想。

(10分)答:结构化的程序设计将数据和对数据的操作分离,程序是由一个个的函数组成的,面向对象的程序设计将数据和操作封装在一路,程序是由一个个对象组成的,对象之间通过接口进行通信,它能够较好地支持程序代码的复用。

4、一个oracle实例是由SGA和哪几个后台进程组成的?SGA有哪些组成部份及简述它们的作用?PGA是什么??(10分)答:后台进程:系统监控和进程监控进程(SMON和PMON)、数据库写进程(DBWR)、日记写进程(LGWR)、归档进程(ARCH)、检查点(CKPT);其它可选进程:调度进程(Dnnn)、恢复进程(RECO)、快照进程(SNPn)、锁进程(LCKn)、并行查询进程(Pnnn)。

C#软件工程师面试笔试题(.net)(含答案)

C#软件工程师面试笔试题(.net)(含答案)

软件工程师笔试题(.net)笔试时间:40分钟答题人:__________ 开始时间:__________ 注:请将答案答于答题纸上,题目做擅长的即可,不必全部答完1.值类型和引用类型分别有什么区别?System.ValueType是一个什么类型?答:值类型包括简单类型、结构体类型和枚举类型,引用类型包括自定义类、数组、接口、委托等。

●赋值方式:将一个值类型变量赋给另一个值类型变量时,将复制包含的值。

这与引用类型变量的赋值不同,引用类型变量的赋值只复制对象的引用(即内存地址,类似C++中的指针),而不复制对象本身。

●继承:值类型不可能派生出新的类型,所有的值类型均隐式派生自System.ValueType。

但与引用类型相同的是,结构也可以实现接口。

●null:与引用类型不同,值类型不可能包含 null 值。

然而,可空类型功能允许将 null 赋给值类型。

●每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值,值类型初始会默认为0,引用类型默认为null。

●值类型存储在栈中,引用类型存储在托管堆中。

System.ValueType是所有值类型的基类,ValueType是类类型,但是他的子类却是值类型,这是因为CLR对他的子类经过了特殊的处理.CLR若判断某类继承自ValueType,那么会在内存分配方面使它具有值类型的特征(例如直接分配在栈上)2.System.String类型是引用还是值类型?其最大特点是?在字符串连加处理中,最好采用什么方式,理由是什么?答:string是一个引用类型,因为string太常用,为了提高性能及开发方便,对string做了特殊处理,给予了一些专用特性。

有两个重要的特性:恒定性与驻留性。

●恒定性:字符串是不可变的,字符串一经创建,就不会改变,任何改变都会产生新的字符串。

驻留性:相同的字符串在内存(堆)中只分配一次,第二次申请字符串时,发现已经有该字符串时,直接返回已有字符串的地址;少量字符串连接,使用String.Concat,大量字符串使用StringBuilder,因为StringBuilder减少了内存的分配,性能更好,如果string的话会创建大量字符串对象3.请描述一下委托?答:委托类似于 C或 C++中的函数指针,允许将方法作为参数进行传递。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、简答题(共50分)1.你常用的主机、OS、编译工具和调试工具是什么。

如何查看系统进程信息,(10分)你常用的进程管理命令有哪些?(问题尽量基于你常用的Unix环境作答)。

答:我常用的是Sun主机,操作系统一般是Solaris8或Solaris10。

编译工具包括:g++,gcc,cc等。

调试工具包括:gdb。

(该项了解应聘者对编程环境的偏好,无标准答案。

)常用的进程管理命令是:查看:prstat -a 或top管理:pldd pid 显示链接到每个进程的动态链接库pstack pid 显示十六进制与符号堆跟踪信息fuser filespwdx pid 查看进程运行目录ptree pid 查看进程树信息2.C中的malloc和C++中的new有什么区别。

(10分)答:malloc和new有以下不同:(1)new、delete 是操作符,可以重载,只能在C++中使用。

(2)malloc、free是函数,可以覆盖,C、C++中都可以使用。

(3)new 可以调用对象的构造函数,对应的delete调用相应的析构函数。

(4)malloc仅仅分配内存,free仅仅回收内存,并不执行构造和析构函数。

(5)new、delete返回的是某种数据类型指针,malloc、free返回的是void指针。

注意:malloc申请的内存空间要用free释放,而new申请的内存空间要用delete 释放,不要混用。

因为两者实现的机理不同。

3、简述结构化的程序设计、面向对象的程序设计的基本思想。

(10分)答:结构化的程序设计将数据和对数据的操作分离,程序是由一个个的函数组成的,面向对象的程序设计将数据和操作封装在一起,程序是由一个个对象组成的,对象之间通过接口进行通信,它能够较好地支持程序代码的复用。

4、一个oracle实例是由SGA和哪几个后台进程组成的?SGA有哪些组成部分及简述它们的作用?PGA是什么??(10分)答:后台进程:系统监控和进程监控进程(SMON和PMON)、数据库写进程(DBWR)、日志写进程(LGWR)、归档进程(ARCH)、检查点(CKPT);其它可选进程:调度进程(Dnnn)、恢复进程(RECO)、快照进程(SNPn)、锁进程(LCKn)、并行查询进程(Pnnn)。

数据写进程(dbwr):负责将更改的数据从数据库缓冲区高速缓存写入数据文件;日志写进程(lgwr):将重做日志缓冲区中的更改写入在线重做日志文件;系统监控(smon) :检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复;进程监控(pmon):负责在一个Oracle 进程失败时清理资源;检查点进程(chpt):负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息;归档进程(arcn) :在每次日志切换时把已满的日志组进行备份或归档;作业调度器(cjq):负责将调度与执行系统中已定义好的job,完成一些预定义的工作;恢复进程(reco):保证分布式事务的一致性,在分布式事务中,要么同时commit,要么同时rollback;SGA包含:db_cache、shared_pool、large_pool、java_pooldb_cache:数据库缓存(Block Buffer)占据Oracle数据库SGA(系统共享内存区)的主要部分,Oracle数据库通过使用LRU算法,将最近访问的数据块存放到缓存中,从而优化对磁盘数据的访问;shared_pool:共享池中保存数据字典高速缓冲和完全解析或编译的的PL/SQL 块和SQL 语句及控制结构;large_pool:使用MTS配置时,因为要在SGA中分配UGA来保持用户的会话,就是用Large_pool来保持这个会话内存;使用RMAN做备份的时候,要使用Large_pool这个内存结构来做磁盘I/O缓存器;java_pool:为java procedure预备的内存区域,如果没有使用java proc,java_pool不是必须的。

PGA:程序全局区,是保存有特定服务进程的数据和控制信息的内存结构,这个内存结构是非共享的,只有服务进程本身才能够访问它自己的PGA 区。

每个服务进程都有它自己的PGA区,各个服务进程PGA区的总和即库实例的PGA区的大小。

一般情况下,PGA区都由私有SQL工作区和会话内存区组成。

5、你在项目中用到了xml技术的哪些方面?如何实现的? (10分)答:用到了数据存贮,信息配置两方面。

在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。

在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中。

二、按要求补充函数源代码(20分)1、完成顺序查找函数f_seq( )。

其过程是:从表头开始,根据给定的模式,逐项与表中元素比较。

如果找到所需元素,则查找成功,并打印出它在表中的顺序号。

如果查找整个表仍未找到所需对象,则查找失败。

(10分)#include <stdio.h>void f_seq(char *list[],char *object,int len)//list 指针数组,指向字符串//object 模式串//len 表的长度{char **p;int strcmp(char *s,char *t);p=list;while (_____①______) //p<list+lenif (strcmp(*p,object)==0)break;else ______②_______; //p++if (p<list+len)printf( “Success! **% d/n”,p-list);else printf(“Unsuccess!/n”);}int strcmp(char *s,char *t){for (;*s==*t; s++,t++)if (*s==’/0′)return(0);return(_____③______); //s-t或*s-*t或1}2、完成使链表逆置函数reverse。

(10分)若有链表:链表结点的结构如下:struct node{int num;struct node *next;}struct node* reverse(struct node *head)//head 链表头结点{struct node *p,*temp1,*temp2;if(head==NULL____①____) return head; //||head->next==NULL p=head->next;head->next=NULL;while(____②____) { //p!=NULL或ptemp1=head;____③____; //head=p;temp2=p;p=p->next;____④____; //temp2->next=temp1;或head->next=temp1;} //Match while statenmentreturn head; //返回逆置后的链表的头结点}三、写sql。

(共10分)SQL> desc emp;Name Null? Type------------------------------ -------- -------------------------------EMPNO NOT NULL NUMBER(4)ENAME VARCHAR2(10)JOB VARCHAR2(9)MGR NUMBER(4)HIREDATE DATESAL NUMBER(7,2)COMM NUMBER(7,2)DEPTNO NUMBER(2)1)查出各部门薪水最高的三个员工的部门、姓名和薪水。

(5分)答:break on deptno;select deptno,ename,salfrom (select deptno,ename,sal,row_number() over (partition by deptno order by sal) as rankfrom emp)where rank <= 3 ;2)查看各部门的薪水合计,要求有总计信息。

(5分)答:break on deptno skip 1;select decode(grouping(deptno),1,'总计',to_char(deptno)) deptno,sum(sal) sum_salfrom empgroup by rollup(deptno);四、编码实现冒泡排序(20分)答:冒泡排序编程实现如下:#include <stdio.h>#define LEN 10 //数组长度void main( void ) {int ARRAY[10] = { 0, 6, 3, 2, 7, 5, 4, 9, 1, 8 }; // 待排序数组printf( "\n" );for( int a = 0; a < LEN; a++ ) { // 打印数组内容printf( "%d ", ARRAY[a] );}int i = 0;int j = 0;bool isChange; // 设定交换标志for( i = 1; i < LEN; i++ ) { // 最多做LEN-1趟排序isChange = 0; // 本趟排序开始前,交换标志应为假for( j = LEN-1; j >= i; j- ) { // 对当前无序区ARRAY[i..LEN]自下向上扫描if( ARRAY[j+1] < ARRAY[j] ) { // 交换记录ARRAY[0] = ARRAY[j+1]; // ARRAY[0]仅做暂存单元ARRAY[j+1] = ARRAY[j];ARRAY[j] = ARRAY[0];isChange = 1; // 发生了交换,故将交换标志置为真}}printf( "\n" );for( a = 0; a < LEN; a++) { // 打印本次排序后数组内容printf( "%d ", ARRAY[a] );}if( !isChange ) break; // 本趟排序未发生交换,提前终止算法}printf( "\n" );return; }。

相关文档
最新文档