易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 : c++

C/C++ 程序设计员应聘常见面试试题深入剖析之一


1.引言 
  本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。
  许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到strcpy函数从2分到10分解答的例子,看看自己属于什么样的层次。此外,还有一些面试题考查面试者敏捷的思维能力。 
  分析这些面试题,本身包含很强的趣味性;而作为一名研发人员,通过对这些面试题的深入剖析则可进一步增强自身的内功。
  2.找错题
  试题1:
void test1()
{
 char string[10];
 char* str1 = "0123456789";
 strcpy( string, str1 );
}
  试题2:
void test2()
{
 char string[10], str1[10];
 int i;
 for(i=0; i<10; i++)
 {
  str1 = 'a';
 }
 strcpy( string, str1 );
}
  试题3:
void test3(char* str1)
{
 char string[10];
 if( st ......

C/C++ 程序设计员应聘常见面试试题深入剖析之一


1.引言 
  本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。
  许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到strcpy函数从2分到10分解答的例子,看看自己属于什么样的层次。此外,还有一些面试题考查面试者敏捷的思维能力。 
  分析这些面试题,本身包含很强的趣味性;而作为一名研发人员,通过对这些面试题的深入剖析则可进一步增强自身的内功。
  2.找错题
  试题1:
void test1()
{
 char string[10];
 char* str1 = "0123456789";
 strcpy( string, str1 );
}
  试题2:
void test2()
{
 char string[10], str1[10];
 int i;
 for(i=0; i<10; i++)
 {
  str1 = 'a';
 }
 strcpy( string, str1 );
}
  试题3:
void test3(char* str1)
{
 char string[10];
 if( st ......

C/C++ 程序设计员应聘常见面试试题深入剖析之二

   3.内功题 
  试题1:分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var) 
  解答: 
   BOOL型变量:if(!var) 
   int型变量: if(var==0) 
   float型变量: 
   const float EPSINON = 0.00001; 
   if ((x >= - EPSINON) && (x <= EPSINON) 
   指针变量:  if(var==NULL) 
  剖析: 
  考查对0值判断的“内功”,BOOL型变量的0判断完全可以写成if(var==0),而int型变量也可以写成if(!var),指针变量的判断也可以写成if(!var),上述写法虽然程序都能正确运行,但是未能清晰地表达程序的意思。 
 一般的,如果想让if判断一个变量的“真”、“假”,应直接使用if(var)、if(!var),表明其为“逻辑”判断;如果用if判断一个数值型变量(short、int、long等),应该用if(var==0),表明是与0进行“数值”上的比较;而判断指针则适宜用if(var==NULL),这是一种很好的编程习惯。 
  浮点型变量并不精确,所以不可将float变量用“==”或& ......

C/C++ 程序设计员应聘常见面试试题深入剖析之二

   3.内功题 
  试题1:分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var) 
  解答: 
   BOOL型变量:if(!var) 
   int型变量: if(var==0) 
   float型变量: 
   const float EPSINON = 0.00001; 
   if ((x >= - EPSINON) && (x <= EPSINON) 
   指针变量:  if(var==NULL) 
  剖析: 
  考查对0值判断的“内功”,BOOL型变量的0判断完全可以写成if(var==0),而int型变量也可以写成if(!var),指针变量的判断也可以写成if(!var),上述写法虽然程序都能正确运行,但是未能清晰地表达程序的意思。 
 一般的,如果想让if判断一个变量的“真”、“假”,应直接使用if(var)、if(!var),表明其为“逻辑”判断;如果用if判断一个数值型变量(short、int、long等),应该用if(var==0),表明是与0进行“数值”上的比较;而判断指针则适宜用if(var==NULL),这是一种很好的编程习惯。 
  浮点型变量并不精确,所以不可将float变量用“==”或& ......

C/C++ 程序设计员应聘常见面试试题深入剖析之三


试题5:编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh” 
  函数头是这样的:
//pStr是指向以'\0'结尾的字符串的指针
//steps是要求移动的n
void LoopMove ( char * pStr, int steps )
{
 //请填充...
}
  解答:
  正确解答1:
void LoopMove ( char *pStr, int steps )
{
 int n = strlen( pStr ) - steps;
 char tmp[MAX_LEN]; 
 strcpy ( tmp, pStr + n ); 
 strcpy ( tmp + steps, pStr); 
 *( tmp + strlen ( pStr ) ) = '\0';
 strcpy( pStr, tmp );
}
  正确解答2:
void LoopMove ( char *pStr, int steps )
{
 int n = strlen( pStr ) - steps;
 char tmp[MAX_LEN]; 
 memcpy( tmp, pStr + n, steps ); 
 memcpy(pStr + steps, pStr, n ); 
 memcpy(pStr, tmp, steps ); 
}
  剖析:
  这个试题主要考查面试者对标准库函数的熟练程度,在需要的时候引用库函数可以很大程度上简化程序编写的工作量。
  最频繁被使用的库函数包括:
  (1) strcpy
  (2) memc ......

C/C++ 程序设计员应聘常见面试试题深入剖析之三


试题5:编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh” 
  函数头是这样的:
//pStr是指向以'\0'结尾的字符串的指针
//steps是要求移动的n
void LoopMove ( char * pStr, int steps )
{
 //请填充...
}
  解答:
  正确解答1:
void LoopMove ( char *pStr, int steps )
{
 int n = strlen( pStr ) - steps;
 char tmp[MAX_LEN]; 
 strcpy ( tmp, pStr + n ); 
 strcpy ( tmp + steps, pStr); 
 *( tmp + strlen ( pStr ) ) = '\0';
 strcpy( pStr, tmp );
}
  正确解答2:
void LoopMove ( char *pStr, int steps )
{
 int n = strlen( pStr ) - steps;
 char tmp[MAX_LEN]; 
 memcpy( tmp, pStr + n, steps ); 
 memcpy(pStr + steps, pStr, n ); 
 memcpy(pStr, tmp, steps ); 
}
  剖析:
  这个试题主要考查面试者对标准库函数的熟练程度,在需要的时候引用库函数可以很大程度上简化程序编写的工作量。
  最频繁被使用的库函数包括:
  (1) strcpy
  (2) memc ......

C/C++单元测试理论精要(四)

题外篇:单元测试难于长期坚持的原因与解决探讨
    上一篇《单元测试效益》,有网友评论说:“单元测试的好处基本人人知道,就是难坚持!”。这一评论严重提醒了我,不错,“难坚持”也是一个普遍现状。如果不能坚持,那一切都是白搭。因此,这里插入一个题外篇,探讨单元测试难于长期坚持的原因与解决,抛砖引玉,希望大家踊跃讨论,共同找出使单元测试易以坚持的途径。
    我以前主要关注如何做得了、做得快、做得好,几乎没有单独考虑长期坚持的问题,原因大概是:对我自己来说,这不是问题,我已经做了十年的单元测试,这十年,我写代码时基本上都是一边写一边测试。那么,是什么原因让我长期进行单元测试呢?
    这十年分为两个阶段,后六年专门研究单元测试技术与工具,前四年做一些外包项目。如果说因为单元测试已经成为我的专业,所以自己当然要做,那么,这也不能解释前四年之所以能坚持的原因。正是因为前四年的单元测试经历,才使我后来专注于单元测试领域。
    回首十年的单元测试历程,我发现从来就没有刻意去坚持。我不是一个理性而有毅力的人,比较喜欢率性而为,能 ......

C/C++单元测试理论精要(四)

题外篇:单元测试难于长期坚持的原因与解决探讨
    上一篇《单元测试效益》,有网友评论说:“单元测试的好处基本人人知道,就是难坚持!”。这一评论严重提醒了我,不错,“难坚持”也是一个普遍现状。如果不能坚持,那一切都是白搭。因此,这里插入一个题外篇,探讨单元测试难于长期坚持的原因与解决,抛砖引玉,希望大家踊跃讨论,共同找出使单元测试易以坚持的途径。
    我以前主要关注如何做得了、做得快、做得好,几乎没有单独考虑长期坚持的问题,原因大概是:对我自己来说,这不是问题,我已经做了十年的单元测试,这十年,我写代码时基本上都是一边写一边测试。那么,是什么原因让我长期进行单元测试呢?
    这十年分为两个阶段,后六年专门研究单元测试技术与工具,前四年做一些外包项目。如果说因为单元测试已经成为我的专业,所以自己当然要做,那么,这也不能解释前四年之所以能坚持的原因。正是因为前四年的单元测试经历,才使我后来专注于单元测试领域。
    回首十年的单元测试历程,我发现从来就没有刻意去坚持。我不是一个理性而有毅力的人,比较喜欢率性而为,能 ......

C/C++ 核心技术 总结1

第二章 数据类型
 
一、数据类型分类
 
1 联合类型
2 函数类型
3 数量类型
3.1算术类型
     ① 基本数据类型
            整型(包括char)
            浮点型
     ② 枚举类型
3.2指针类型
4 聚集类型
4.1数组类型
4.2结构类型
 
二、整数数据类型
char类型的值总是占用1个字节,sizeof(char) = 1
short类型至少占用2个字节
long类型至少占用4个字节
long long类型至少占用8个字节
 
int类型是最适合计算机系统处理的整数类型,它具有和CPU寄存器相对应的空间大小。
 
编译器的limit.h头文件约定整数类型的值的范围,该头文件里面有一些宏,可以获取char和int的最大最小值。
 
32位系统中:
INT_MAX:int的最大值               2147483647
INT_MIN:int的最小值               -2147483648
UIN ......

C/C++ 核心技术 总结1

第二章 数据类型
 
一、数据类型分类
 
1 联合类型
2 函数类型
3 数量类型
3.1算术类型
     ① 基本数据类型
            整型(包括char)
            浮点型
     ② 枚举类型
3.2指针类型
4 聚集类型
4.1数组类型
4.2结构类型
 
二、整数数据类型
char类型的值总是占用1个字节,sizeof(char) = 1
short类型至少占用2个字节
long类型至少占用4个字节
long long类型至少占用8个字节
 
int类型是最适合计算机系统处理的整数类型,它具有和CPU寄存器相对应的空间大小。
 
编译器的limit.h头文件约定整数类型的值的范围,该头文件里面有一些宏,可以获取char和int的最大最小值。
 
32位系统中:
INT_MAX:int的最大值               2147483647
INT_MIN:int的最小值               -2147483648
UIN ......

C/C++中动态链接库的创建和调用

转自:http://dev.yesky.com/12/3067012.shtml
动态连接库的创建步骤:
  一、创建Non-MFC DLL动态链接库
  1、打开File —> New —> Project选项,选择Win32 Dynamic-Link Library —>sample project
  —>工程名:DllDemo
  2、新建一个.h文件DllDemo.h
以下是引用片段:
  #ifdef DllDemo_EXPORTS
  #define DllAPI __declspec(dllexport)
  #else
  #define DllAPI __declspec(dllimport)
  extern "C" //原样编译
  {
  DllAPI int __stdcall Max(int a,int b); //__stdcall使非C/C++语言内能够调用API
  }
  #endif
  3、在DllDemo.cpp文件中导入DllDemo.h文件,并实现Max(int,int)函数
以下是引用片段:
  #include "DllDemo.h"
  DllAPI int __stdcall Max(int a,int b)
  {
  if(a==b)
  return NULL;
  else if(a>b)
  return a;
  else
  return b;
  }
  4、编译程序生成动态连接库
  二、用.def文 ......

C/C++中动态链接库的创建和调用

转自:http://dev.yesky.com/12/3067012.shtml
动态连接库的创建步骤:
  一、创建Non-MFC DLL动态链接库
  1、打开File —> New —> Project选项,选择Win32 Dynamic-Link Library —>sample project
  —>工程名:DllDemo
  2、新建一个.h文件DllDemo.h
以下是引用片段:
  #ifdef DllDemo_EXPORTS
  #define DllAPI __declspec(dllexport)
  #else
  #define DllAPI __declspec(dllimport)
  extern "C" //原样编译
  {
  DllAPI int __stdcall Max(int a,int b); //__stdcall使非C/C++语言内能够调用API
  }
  #endif
  3、在DllDemo.cpp文件中导入DllDemo.h文件,并实现Max(int,int)函数
以下是引用片段:
  #include "DllDemo.h"
  DllAPI int __stdcall Max(int a,int b)
  {
  if(a==b)
  return NULL;
  else if(a>b)
  return a;
  else
  return b;
  }
  4、编译程序生成动态连接库
  二、用.def文 ......
总记录数:969; 总页数:162; 每页6 条; 首页 上一页 [32] [33] [34] [35] 36 [37] [38] [39] [40] [41]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号