当前位置:文档之家› 软件工程师面试试题

软件工程师面试试题

软件工程师面试试题
姓名:
1、全局变量和局部变量的概念和不同
作用域为整个程序运行空间的变量为全局变量。

作用域为某个函数或复合语句内部的变量为局部变量。

两者作用域不同,所在物理空间申请和分配方式不同。

使用原则:能用局部变量的最好不要用全局变量,以减少模块间的耦合度。

2、static类型变量的概念
静态变量是在编译时就分配物理空间的变量。

主要用于全局物理空间申请以及函数内部用于独立函数本身存在的应用场合。

3、简述获取双精度浮点数(double)每个字节数据的操作方法
使用字节指针强制转换连两存放的地址。

Double dblTemp = 0.0;
Byte * pByte = (byte *)(&dblTemp);
4、在C++中,new和delete分配的内存块为何需要成对使用
两者实际调用的是malloc和free,如果不成对使用,则造成内存泄漏。

5、举例说明数据的二进制表示方式和字符型表示方式
以数据文件为例:
Fprintf(f, “%d”, data);//字符形
Fwrite(&data, sizeof(int),1,f);//二进制形
6、头文件中使用#ifndef/define/endif的优点?
防止嵌套重复定义
7、如何向一个窗口发消息,写出windows API。

首先获取一个窗口句柄,可以使用枚举所有窗口的方式(EnumWindows);
使用API函数发送消息;
例如向一个按钮发送点击消息:
SendMessage(hwnd, WM_LBUTTONDOWN, MK_LBUTTON, 0x00100019)
8、#include < filename.h >和#include “filename.h”有什么区别?
搜索范围不同。

前者只在编译环境制定的INCLUDE路径范围内搜索;
后者增加对当前目录的搜索。

9、软件编程中,为了便于阅读、记忆和使用,对变量名、数组名、结构体名、
联合体名、函数名等的命名规则简述
变量名:类型加名词或修饰词,例如:double dblTemp;定义一个双精度的临时变量。

数组名:类型加名词复数形式,例如char * strNames[100],定义一个字符串数据结构体:一般定义为类型,结构名为下划线开头,类型名大写。

例如:Typedef struct _MyStruct{
Int iAge;

}MYOBJECT; * LPMYOBJECT;
联合体名:类似结构体
函数名:多以动词开头表示一个操作,例如:
Int GetName(char * sName)
{

}
10、在Windows操作系统中,静态链接库和动态链接库概念上和使用上的不

顾名思义,静态库是链接过程中,把库静态链接到程序内部。

动态链接库动态链接在程序外部。

使用中多把常用的工具函数(变化不大)做成静态链接库;而把有可能产生变化的一些业务操作做到动态库中。

11、在Windows操作系统中,不同线程之间并行同时工作的概念
在单核处理器系统中,线程的同时进行只能表现在宏观上,在微观上是把系统按时间片在不同的线程间切换。

在多核处理器上实现了真正的同时工作。

12、在Windows操作系统中,不同线程之间使用的同一变量需要加以保护才
可使用的原因
确保不同线程之间访问在时间上的准确先后顺序。

13、在Windows操作系统中,不同线程之间通信的常用方法
1、全局变量
2、同步工具
3、共享内存
4、内核对象
14、在计算机通信编程中,使用双缓冲方式的主要特点
1、读写操作可同时进行。

2、可控调节读写速度匹配。

3、有效避免溢出、
15、在计算机通信编程中,超时的重要性
1、避免致命性错误,提高健壮性。

2、避免严重影响其他操作的运行。

3、避免操作请求的无限期等待。

相关主题