计算机视觉面试c++

前天测试了两场
上午c++视觉
下午游戏公司
细节:

一、写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值。
int a = 4;
(A)a += (a++); (B) a += (++a) ;© (a++) += a;(D) (++a) += (a++);
a = ?
答:
(A)9 (B)10 ©错误 (D)错误

二、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
if ( n == 0 )
if ( n != 0 )
以此类推。

请写出 BOOL flag 与“零值”比较的 if 语句:
if ( flag == FALSE )
if ( flag == TRUE )
请写出 float x 与“零值”比较的 if 语句:
if ( n == 0.00000)
if ( n != 0.00000 )
请写出 char *p 与“零值”比较的 if 语句:
if ( p == NULL )
if ( p= NULL )

三、以下为Windows NT下的32位C++程序,请计算sizeof的值。

char  str[] = “Hello” ;
char   *p = str ;

int n = 10;
请计算
sizeof (str ) = 6

sizeof ( p ) = 4

sizeof ( n ) = 4 void Func ( char str[100])
{
请计算
sizeof( str ) = 4
}

void *p = malloc( 100 );

请计算
sizeof ( p ) = 4

四、简答题

1、头文件中的 ifndef/define/endif 干什么用?
防止该头文件被重复引用。

2、#include <filename.h> 和 #include “filename.h” 有什么区别?
#include <filename.h> :引用filename类,从标准库路径开始搜索
#include “filename.h” :调用filename.文件,从用户的工作路径开始搜索
3、const 有什么用途?(请至少说明两种)

(1)在函数中传达对象参数
(2)定义静态常量

4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?

因为调用的函数或者变量存储在其他的地方,声明外部,可以引用
解决名字匹配问题。

5、C++中什么数据分配在栈或堆中,new分配数据是在栈还是堆中?
函数,局部变量分配在栈中
new分配数据在堆中

6、请简述以下两个for循环的优缺点

// 第一个
for (i=0; i<N; i++)
{
if (condition)
DoSomething();
else
DoOtherthing();
} // 第二个
if (condition)
{
for (i=0; i<N; i++)
DoSomething();
}
else
{
for (i=0; i<N; i++)
DoOtherthing();
}
优点: 遍历N个循环,整体把握
在循环体类判断,总体效率高
缺点:不能考虑局部的运行情况

优点:先判断在运行,部分能够快速出结果 

缺点:效率低,循环次数多,判断多,代码量大

五、有关内存的思考题

void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, “hello world”);
printf(str);
}

请问运行Test函数会有什么样的结果?
答:
输出
hello world

char *GetMemory(void)

{
char p[] = “hello world”;
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}

请问运行Test函数会有什么样的结果?
答:
输出
h

Void GetMemory2(char **p, int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, “hello”);
printf(str);
}
请问运行Test函数会有什么样的结果?
答:
hello

void Test(void)

{
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL)
{
strcpy(str, “world”);
printf(str);
}
}
请问运行Test函数会有什么样的结果?
答:
没有结果输出

六、编写strcpy函数
已知strcpy函数的原型是
char *strcpy(char *strDest, const char *strSrc);
其中strDest是目的字符串,strSrc是源字符串。

(1)不调用C++/C的字符串库函数,请编写函数 strcpy

char *strcpy(char *strDest, const char *strSrc)
{
char *p=strSrc,*q;
int i,j,n=0;
while§
{
n++;
p++;
}
*p= strSrc;
*q= strDest;

for(i=0;i<n;p++,q++)
{
*q=*p;
}
return strDset;
}

(2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
用于将复制的结果传出,便于赋值操作

七、编写类String的构造函数、析构函数和赋值函数
已知类String的原型为:
class String
{
public:
String(const char *str = NULL); // 普通构造函数
String(const String &other); // 拷贝构造函数
~ String(void); // 析构函数
String & operate =(const String &other); // 赋值函数
private:
char *m_data; // 用于保存字符串
};
请编写String的上述4个函数。
//构造函数
String::String(const char *str)
{
if(str==NULL)
{
m_data = new char[1];
*m_data = ‘\0’;
}
else
{
int length = strlen(str);
m_data = new char[length+1];
strcpy(m_data, str);
}
}
//析构函数
String::~String(void)
{
delete [] m_data;
}
// 赋值函数
String & String::operate =(const String &other)
{
if(this == &other)
return *this;
delete [] m_data;
int length = strlen(other.m_data);
m_data = new char[length+1];
strcpy(m_data, other.m_data);
return *this;
}

视觉题目:
**第一部分
试题1
1)创建一个对话框,在对话框上能够输入并显示字符串,比如“Nothing Is Impossible”。
2)编写一个函数,实现字符串的按词倒序功能(注意不是完全倒序)。如果函数输入为字符串“Nothing Is Impossible”,则输出为字符串“Impossible Is Nothing”。
3)在对话框中添加一个按钮,点击按钮,显示按词倒序以后的字符串,比如“Impossible Is Nothing”。

试题2
做一个对话框,上面有两个支持多选的列表控件和两个按钮。运行后,程序在列表1中自动添加Item1~Item5共5个列表项。按下按钮1时,程序自动删除列表1中全部被选中的列表项,将这些列表项添加到列表2的末尾。按下按钮2时,程序自动删除列表2中全部被选中的列表项,将这些列表项添加到列表1的末尾。

试题3
创建一个对话框,在对话框上显示一个Slider控件和一个Edit控件,初始化程序时设置Slider控件的范围为0-256,步长为1。当鼠标拖动Slider控件时,Edit控件显示Slider控件当前的值。

第二部分
试题 4
在Demo1的基础上,程序实现对图像顺时针旋转15度。

试题 5
对于如下图所示图像(OCR.bmp,灰度图像),编写一个完整程序,完成其中的字符分割,即将每一个字符独立划分出来,生成一个结果图像OCR-C.bmp,将每个字符用灰度为255的方框框住(如图(b))。

(a) (b)
要求:a) 写出分析思路和主要算法流程
b) 在Demo1的基础上,完成该程序,正确运行,显示并保存结果图像
**

非答案,标准答案在接下来探讨

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
阿里巴巴2010校园招聘笔试试卷 阿里巴巴公司启动2010年校园招聘行动。阿里巴巴集团日前启动了公司历史上最大规模校园招聘行动,计划今年招收应届毕业生1800名,其中技术类岗位占招聘职位的半数以上。 公司所在地杭州是阿里巴巴此次2010年校园招聘计划的第一站。9、10两个月,阿里巴巴集团2010年校园招聘会还将陆续在上海、北京、南京、广州、西安等地召开。 据悉,此次阿里巴巴校园招聘的岗位主要包括开发工程师、网站运营师、市场分析师、客户服务、销售等,主要针对计算机、金融、市场营销等专业的毕业生。 在全球性金融危机面前,阿里巴巴集团经营状况良好,今年以来旗下几家子公司业绩增长都十分迅猛。为此,2009年阿里巴巴集团已经逆市扩招了5000名员工。 本文来自大学生就业网|大学生就业资讯网-专注中国大学生就业问题, 招聘职位:   技术类   研发工程师_Java方向   研发工程师_C/C++方向   需求分析工程师   软件测试工程师   测试开发工程师   软件过程改进工程师   软件配置管理工程师   监控工程师   应用运维工程师   算法研发工程师_搜索与广告方向   市场机制研究员   数据仓库研发工程师_数据库方向   数据仓库研究员   网站类   产品经理助理   数据分析助理   网站运营专员   产品规划师   交互设计师   视觉设计师   前端开发工程师   数据分析师   市场分析师   客户关系专员(国际网站)   客户关系专员-Marketing   招聘流程:   在线投递简历→简历筛选→校园宣讲→笔试→面试→offer→录用
<h3>回答1:</h3><br/>Linux C++面试是指针对Linux操作系统下使用C++编程语言进行面试的过程。在面试中,面试官可能会考察面试者对Linux操作系统的了解程度,以及对C++语言的掌握程度和应用能力。面试题目可能涉及Linux系统调用、进程管理、文件系统、网络编程等方面,同时也会考察面试者的算法和数据结构能力。在准备Linux C++面试时,需要对Linux操作系统和C++编程语言有深入的了解,并且需要多做练习和实践,提高自己的编程能力和解决问题的能力。 <h3>回答2:</h3><br/>Linux C 作为编程语言,已经成为计算机科学领域必备的技能之一。而要在 Linux C 面试中取得成功,需要拥有以下几个方面的能力: 1. 深入理解 C 语言:Linux C 面试中,需要运用 C 语言编写各种类型的代码,如控制结构、循环、数组处理、指针等。自然而然要有深入理解 C 语言的能力,包括它的基本语法、数据类型、函数等。 2. 熟悉 Linux 操作系统:Linux C 是在 Linux 操作系统上运行的,所以在 Linux C 面试中必须对 Linux 操作系统有深入的了解。这个了解可以包括:Linux 文件系统、进程管理、权限管理、网络协议、Shell 编程基础等。这些知识不仅能显示出你的基本理解,也是帮助你在 Linux C 编写过程中调试常见错误和优化代码的关键。 3. 熟悉常见算法、数据结构:对于需要处理大量数据的 Linux C 项目来说,熟悉常见的算法和数据结构是非常重要的。有足够的实践经验能帮助你对这些知识点进行应用和优化。 4. 熟悉编程工具和开发环境:熟练掌握编程工具和开发环境可以大大提高编写代码的速度和效率。常见的 Linux C 编写工具包括:GCC、Make、GDB、Valgrind、Vim 等,熟练使用这些工具及其选项,可以快速定位问题、修改代码并最大限度地提高代码的质量。 总体来说,Linux C 面试需要你对 C 语言和 Linux 操作系统有深入的理解和熟悉,在业务领域涉足简单的算法和数据结构,以及熟练掌握常用的开发工具等等。 <h3>回答3:</h3><br/>Linux是一种广泛用于服务器和嵌入式设备的开源操作系统。C语言是Linux操作系统中应用程序开发的首选语言之一。因此,在Linux相关岗位的面试中,Linux C的基础知识和应用能力都会成为考察的重点。下面分别从知识储备和实际技能两个方面进行回答。 一、知识储备 1. C语言基础知识:面向对象特性,变量声明、定义、初始化、作用域和存储类别等基础知识。 2. Linux操作系统基础知识:文件系统、进程、文件描述符等常见概念,以及Linux命令行基础使用等。 3. Linux环境编程:理解Linux下的编程模型、系统调用、进程通信、线程和多线程编程、信号处理、文件I/O等。 4. 熟悉Linux下的常用开发工具和调试方法:例如gcc编译器、Makefile的使用、GDB调试器等。 5. 熟悉Linux下常用的网络编程开发:例如socket编程、TCP/IP协议、Http协议等。 二、实际技能 1. 实现基础程序:能够使用编程语言实现一些常见程序,例如hello world等。 2. 编写Linux应用程序:能够掌握Linux环境下的编程模型、系统调用、进程通信、文件I/O等技能,编写Linux环境下的应用程序。 3. 常见命令的使用:能够熟练使用常见命令行工具,例如grep、awk、sed、awk。能够灵活应用shell脚本,快速处理文本文件和操作文件系统。 4. 熟练掌握Linux下的常用开发工具和调试手段:例如gcc编译器、Makefile的使用、GDB调试器等。 5. 熟练掌握Linux下的常用网络编程开发:例如socket编程、TCP/IP协议、Http协议等。掌握HTTP协议和套接字编程等相关技术,能够实现网络应用程序的开发调试和部署等。 总之,在Linux C面试中,除了掌握相关的知识储备外,还需要能够证明自己的实际技能。因此,在准备Linux C面试的过程中,需要注重实践,在不断的实践中加深自己的理解和掌握能力,提高自己的实际能力和水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ApotatoOfcoolcity

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值