东芝-C++

 

**********软件工程师**********

笔试:题目分选择、填空/改错和编程

选择题后面不只有C/C++还有些数据库通信之类的,不过比较少,所以如果对那些都不了解的最起码要好好做做笔试后面的编程题,编程还是比较简单的就让你填几个语句。

面试:

先自我介绍,然后问些大概情况就会进入到专业知识考查,也就是简单的类的特性,让举例说明,还会出个小题问你。然后就问还会什么方面的知识,基本会在20分钟左右,面完告诉你等通知,我的二面通知当晚就来了。

 

【转】 笔试题目(一)

  1. 将程序改成Unicode编程需要做哪些修改?

  window 2k以后的系统底层都是基于Unicode的,就算你调用ANSI的API(以A结尾比如SetWidowsTextA),系统也会在你的进程默认堆上动态分配一块内存,存放转换后的Unicode字符串,然后把转换后的字符串传递给API,如果调用了返回值为ANSI字符串的API,Windows会在后台进行相反的转换。

  其实VC中进行Unicode编程也不麻烦,大概如下:

  1.为工程添加UNICODE和_UNICODE预处理选项,在VC.net中就是 项目 -> 属性 -> c/c++ -> 预处理器 在"预处理定义"中加入这两个宏定义(vc6中 project -> settings -> c/c++ -> general 中的 Preprocessor definitions).

  2.Include (一般在stdafx.h中)然后把所有使用char*定义变量的地方换为LPTSTR/TCHAR*或LPCTSTR/const TCHAR*(对应于const char*).

  3.把所有的字符串常量用_T()宏包起来,比如 TCHAR* szText = _T("我的Text");

  4.所有的C库字符串操作函数也做相应的替换,比如

  strlen ->_tcslen

  strcat ->_tcscat

  strcmp ->_tcscmp

  ......

  注意,这些函数中的"文本长度"均为字符个数,而非char个数具体参看MSDN.

  5.API调用一般不用做特殊处理,当定义了UNICODE和_UNICODE后,所有的API都会被宏指向W结尾的版本(不定义则指向A结尾的版本).

  其实,上面所说的并非强制你使用UNICODE,如果你还想回去使用ANSI,没有问题,把第一步定义的两个宏拿掉就OK了,继续我们的ANSI编程。

  2. TCHAR同char的区别

  TCHAR 就是当你的字符设置为什么就是什么

  例如:程序编译为 ANSI, TCHAR 就是相当于 CHAR

  当程序编译为 UNICODE, TCHAR 就相当于 WCHAR ,每个字符占两个字节

  3. BOOL同bool的区别

  意义上没什么区别,但却是两种类型.

  bool应该是C语言里定义的,返回值为true和false(事实上就上1和0)

  而BOOL应该是MFC及SDK里定义返回值的.

  它的定义应该是:typedef int BOOL;(WINDEF.H中定义)

  也就是说它是int型的

  返回值是大写的TRUE 和FALSE

  定义如下:

  #define FALSE 0

  #define TRUE 1

  (AFX.H中如此定义)

  一个是布尔型,一个是整型.

事实上整型如果取1和0就可以代替布尔型了.

 

 

  笔试题目(二)

  1. A tape manufacturer reduces the price of his heavy duty tape from Rs.30/- to Rs.28/- a reel and the price of a regular tape from Rs.24/- to Rs.23/- a reel . A computing centre normally spends Rs.1440/- a month for tapes and 3/4 of this is for heavy duty tapes. How much will they save a month under the new prices?

  Ans.Rs.87 132

  2. shl测评题:In a team of 12 persons, 1/3 are women and 2/3 are men. To obtain a team with 20% women how many men should be hired?

  Ans.8

  3. The dimensions of a certain machine are 48″ X 30″ X 52″. If the size of the machine is increased proportionately until the sum of its dimensions equals 156″, what will be the increase in the shortest side?/

  Ans. 6″

  4. shl测评题:In a certain company, 20% of the men and 40% of the women attended the annual company picnic. If 35% of all the employees are man, what percent of all the employees went to the picnic?

  Ans.33% 21%

  5. It cost a college Rs.0.70 a copy to produce a Programme for the homecoming football game. If Rs.15,000/- was received for advertisements in the programme, how many copies at Rs.0.50 a copy must be sold to make a profit of Rs.8000/- ?

  Ans. 35000

 

选择题

  1. OS是什么?
  2. XP支持什么文件系统? FAT FAT32 NTFS
  3. LINUX的shell
  4. 任务管理器
  5. 类的特点?

封装性:

    多态性:

    继承性:

    C++定义类最大的特点是使程序面向对象而不是面向过程,这在c中是没有体现的。 类的标志特性是继承,封装,多态,对象化提供了模型化和信息隐藏的好处,类化提供了可重用性的好处。通过面向对象使得程序设计模块化了,便于编程人员拆分合作。类首先是基类,派生和继承得到新的类即有基类的公共属性,又可以定义新的功能属性,便有了多元化实用价值。封装便于保护代码不被任意篡改和便于维护,可移植性和重用性高。多态说的是程序因而变得更加灵活,多态性允许将父对象设置成为和一个或多个它的子对象相等的技术,比如Parent:=Child; 多态性使得能够利用同一类(基类)类型的指针来引用不同类的对象,以及根据所引用对象的不同,以不同的方式执行相同的操作。

 

叙述题

  1. 用 UML,中的不知什么图,不知做什么事情,没看懂。软件工程没学好。

五种类图定义:

1.用例图:从用户角度描述系统功能,并指各功能的操作者。

2.静态图:包括类图,包图,对象图。

类图:描述系统中类的静态结构

包图:是包和类组成的,表示包与包之间的关系,包图描述系统的分层结构

对象图:是类图的实例

3.行为图:描述系统动态模型和对象组成的交换关系。包括状态图和活动图

活动图:描述了业务实现用例的工作流程

状态图:是描述状态到状态控制流,常用于动态特性建模

4.交互图:描述对象之间的交互关系

顺序图:对象之间的动态合作关系,强调对象发送消息的顺序,同时显示对象之间的交互

合作图:描述对象之间的协助关系

5.实现图

配置图:定义系统中软硬件的物理体系结构

十种模型图定义:

(1)、用例图:展示系统外部的各类执行者与系统提供的各种用例之间的关系

(2)、类图:展示系统中类的静态结构

(3)、对象图:是类图的一种实例化图(对象图是对类图的一种实例化)

(4)、包图:是一种分组机制。在UML1.1版本中,包图不再看作一种独立的模型图)

 

    

2.写出类的 3 个特点,貌似和前面的选择题重了,多态继承啊什么的

3.use case diagram 是不是要我说用例图是干吗的?还是软件工程的题

4.居然问你写过程序没?我说 yes 然后说做过什么项目 用什么开

5 问我用过 winddk 吗?貌似就是问我写过驱动没?直接写 NO

6 说为什么来东芝?

编程题

1.画了一个图 A 类 B 类 C 类,B 类和 C 类是 A 的子类, C 类又包含 A 类,问 A 类和 B 类什么关系?我汗。。。

这也是编程题?编什么啊?

 

  1. 写出 strcpy 函数的实现,我写得乱

 

//C语言标准库函数strcpy的一种典型的工业级的最简实现。

//返回值:目标串的地址。

//对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NUL。

//参数:des为目标字符串,source为原字符串。

char* strcpy(char* des,const char* source)

{

char* r=des;

assert((des != NULL) && (source != NULL));

 while((*des++ = *source++)!='\0');

 return r;

}

//while((*des++=*source++));的解释:赋值表达式返回左操作数,所以在赋值NULL后,循环停止。

 

  1. 给出一个内存测试的程序,让我解释一下,这题还可以,写了下

 

 

  1. 写出两个字符串的比较,一个有通配符?和*的,我只写了大概流程

1//摘自《代码之美》

// 字符含义

// . 匹配任意的单个字符

// ^ 匹配输入字符串的开头

// $ 匹配输入字符串的结尾

// * 匹配前一个字符的零个或者多个出现

 

int matchhere(char *regexp, char *text);

 

int matchstar(int c, char *regexp, char *text) {// matchstar: search for c*regexp at beginning of text

    do {// a * matches zero or more instances

        if (matchhere(regexp, text)) return 1;

    } while (*text != '\0' && (*text++ == c || c == '.'));

    return 0;

}

 

int match(char *regexp, char *text) {// match: search for regexp anywhere in text

    if (regexp[0] == '^') return matchhere(regexp + 1, text);

    do {// must look even if string is empty

        if (matchhere(regexp, text)) return 1;

    } while (*text++ != '\0');

    return 0;

}

void main() {

    printf("%d==match(abc ,abc)\n", match("abc", "abc"));

    printf("%d==match(^a ,abc)\n", match("^a", "abc"));

    printf("%d==match(c$ ,abc)\n", match("c$", "abc"));

    printf("%d==match(a.c ,abc)\n", match("a.c", "abc"));

    printf("%d==match(a.*c,abc)\n", match("a.*c", "abc"));

    printf("-------------------\n");

    printf("%d==match(ABC ,abc)\n", match("ABC", "abc"));

    printf("%d==match(^B ,abc)\n", match("^B", "abc"));

    printf("%d==match(A$ ,abc)\n", match("A$", "abc"));

    printf("%d==match(a..c,abc)\n", match("a..c", "abc"));

    printf("%d==match(a.*d,abc)\n", match("a.*d", "abc"));

}

//1==match(abc ,abc)

//1==match(^a ,abc)

//1==match(c$ ,abc)

//1==match(a.c ,abc)

//1==match(a.*c,abc)

//-------------------

//0==match(ABC ,abc)

//0==match(^B ,abc)

//0==match(A$ ,abc)

//0==match(a..c,abc)

//0==match(a.*d,abc)

 

 

  1. 画出自动售货机的流程图 随便画的。。

     

           还有一些题目,忘了……总之考的比较全面

 

来源:大街网东芝_Toshiba2014校园招聘大礼包_东芝_Toshiba2014校园招聘

posted on 2015-11-25 23:42  SomeWater  阅读(186)  评论(0编辑  收藏  举报

导航