东软面试笔试总结

来源:互联网 发布:石家庄瑞诺网络怎么样 编辑:程序博客网 时间:2024/05/17 23:57

数据结构见多,,

大题嘛,一般就是树的遍历了。。

:什么是二叉平衡树,什么是树的后序遍历之类的,问我操作系统的分页机制

int *a[10];

int (*a)[10];

//问有什么区别......

  int   *a[10]  
  先找到声明符a,然后向右看,有[]说明a是个数组,再向左看,是int   *,说明数组中的每个元素是int   *。所以这是一个存放int指针的数组。  
  int(*a)[10]  
  先找到声明符a,被括号括着,先看括号内的(优先级高),然后向右看,没有,向左看,是*,说明s是个指针,什么指针?在看括号外面的,先向右看,有[]是个数组,说明a是个志向数组的指针,再向左看,是int,说明数组的每个元素是int。所以,这是一个指向存放int的数组的指针。

 #include   <stdio.h>  
  #include   <stdlib.h>  
   
  int   main(int   argc,   char   *argv[])  
  {  
      printf("=================================/n");  
      printf("==this   program   compare   pointer   ==/n");  
       
      int   arr[3][4]={  
                                      {1,     2,     3,     4},  
                                      {11,   22,   33,   44},  
                                      {111,222,333,444}  
                                  };  
       
      int   i,j;  
      /*a是一个指针变量,指向包含4个元素的一维数组*/  
      int   (*a)[4];  
      /*b是一个指针数组*/  
      int   *b[3];  
      printf("size   of   (*a)[4]   =%d/n",sizeof   a);  
      printf("size   of   *b[4]       =%d/n",sizeof   b);        
       
      a=arr;  
      for(i=0;i   <   3;   i++)  
      {  
          printf("/n   arr[%i]   =%i",i,arr[i]);  
          printf("/n   a++         =%i",a++);  
      }  
      printf("/n===================/n");  
      printf("output   value   of   arr[][]   and   *(   *(a+i)+j   )   /n/n");  
      system("PAUSE");  
      a=arr;  
      for(i=0;i<3;i++)  
      {  
          for(j=0;j<4;j++)  
          {  
                  printf("/n   arr[%i][%i]         =%i",i,j,arr[i][j]);  
                  printf("/n   *(a+%i)               =%i",i,     *(a+i)   );  
                  printf("/n   *(*(a+%i)+%i)     =%i",i,   j,*(   *(a+i)+j   )   );  
          }  
      }  
      printf("/n===================/n");  
      printf("now   output   value   of   b[]   and   *b[]   /n/n");  
      system("PAUSE");  
       
      int   anotherint_a   =   8888;  
      int   anotherint_b   =   9999;  
      /*b为数组指针,每一项可以指向一个整数*/  
      b[0]=arr[0];  
      b[1]=&anotherint_a;  
      b[2]=&anotherint_b;  
      for(i=0;i<3;i++)  
      {  
          printf("/n   the   value   of   &b[%i]     =   %i",i,&b[i]);  
          printf("/n   the   value   of   b[%i]       =   %i",i,b[i]);  
          printf("/n   the   value   of   *b[%i]     =   %i",i,*b[i]);  
      }  
       
      printf("/n/n");  
      system("PAUSE");  
      return   0;  
  }

 

东软面试题

基础知识:1.C++或Java中的异常处理机制的简单原理和应用。

当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException.另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。

 

2. Java的接口和C++的虚类的相同和不同处。

 

由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口。

 

3. 垃圾回收的优点和原理。并考虑2种回收机制。

 

Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

 

4. 请说出你所知道的线程同步的方法。

 

wait():使一个线程处于等待状态,并且释放所持有的对象的lock.

 

sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。

 

notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。

 

Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

 

5. 请讲一讲析构函数和虚函数的用法和作用。

 

6. Error与Exception有什么区别?

 

Error表示系统级的错误和程序不必处理的异常,

 

Exception表示需要捕捉或者需要程序进行处理的异常。

 

7. 在java中一个类被声明为final类型,表示了什么意思?

 

表示该类不能被继承,是顶级类。

 

8. 描述一下你最常用的编程风格。

 

9. heap和stack有什么区别。

 

栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。

 

堆是栈的一个组成元素

栈(stack),是限定仅在表尾进行插入或删除操作的线性表,栈的修改是按照后进先出(LIFO)原则进行的,因此栈又称为后进先出线性表。在java中栈驻留于常规RAM(随机访问存储器)区域,可通过“栈指针”获得处理的直接支持。栈指针若向下移,会创建新的内存;若向上移,则会释放那些内存。这是一种特别快、特别有效的数据保存方式,仅次于寄存器。创建程序时,Java编译器必须准确地知道栈内保存的所有数据的“长度”以及“存在时间”。这是由于它必须生成相应的代码,以便向上和向下移动指针。这一限制无疑影响了程序的灵活性,所以尽管有些Java数据要保存在堆栈里,如对象的引用(句柄)、局部变量、形式参数等,但java对象并不放在其中。

    堆(heap),是一种常规用途的内存池(也在RAM区域),其中保存了Java对象。和栈不同之处在于,堆的存储空间是在程序执行过程中动态分配的,编译器不必知道要从堆里分配多少存储空间,也不必知道存储的数据要在堆里停留多长的时间。因此,用堆保存数据时会得到更大的灵活性。要求创建一个对象时,只需用new命令编制相关的代码即可。执行这些代码时,会在堆里自动进行数据的保存。当然,为达到这种灵活性,必然会付出一定的代价:在堆里分配存储空间时会花掉更长的时间!

 

10. 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)。

 

public class BigInt()

 

{

 

int[] ArrOne = new ArrOne[1000];

 

String intString="";

 

public int[] Arr(String s)

 

{

 

intString = s;

 

for(int i=0;i {

 

11. 如果要设计一个图形系统,请你设计基本的图形元件(Point,Line,Rectangle,Triangle)的简单实现

 

12,谈谈final, finally, finalize的区别。

 

final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。

 

finally?再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

 

finalize?方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

 

13,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

 

匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。

 

14,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。

 

Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.ASP?id=704&page=1

 

注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象

 

第四,&和&&的区别。

 

&是位运算符。&&是布尔逻辑运算符。

 

15,HashMap和Hashtable的区别。

 

都属于Map接口的类,实现了将惟一键映射到特定的值上。

 

HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。

 

Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。

 

16,Collection 和 Collections的区别。

 

Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。

 

Collection是个java.util下的接口,它是各种集合结构的父接口。

 

17,什么时候用assert.

 

断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true.如果表达式计算为 false,那么系统会报告一个 Assertionerror.它用于调试目的:

 

assert(a > 0); // throws an Assertionerror if a <= 0

 

断言可以有两种形式:

 

assert Expression1 ;

 

assert Expression1 : Expression2 ;

 

Expression1 应该总是产生一个布尔值。

 

Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。

 

断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:

 

javac -source 1.4 Test.java

 

要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。

 

要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。

 

要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。

 

可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。

 

18,GC是什么? 为什么要有GC? (基础)。

 

GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:

 

System.gc()

 

Runtime.getRuntime()。gc()

 

19,String s = new String("xyz");创建了几个String Object?

 

两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s.

 

20,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

 

Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

 

21,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

 

short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) .short s1 = 1; s1 += 1正确。

 

22,sleep() 和 wait() 有什么区别? 搞线程的最爱

 

sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级 (b)正在运行的线程因为其它原因而阻塞。

 

wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

 

23,Java有没有goto?

 

Goto?java中的保留字,现在没有在java中使用。

 

24,数组有没有length()这个方法? String有没有length()这个方法?

 

数组没有length()这个方法,有length的属性。

 

String有有length()这个方法。

 

25,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

 

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

 

26,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?

 

Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。

 

equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

 

 

 

东软笔试题

考试时间90分钟 方向是嵌入式开发

一,选择题(60分,一题2分)

数据结构部分 大概10题

二叉树的遍历

二分法查找

森林的节点

双向链表的优点

队列的特点(先入先出)

............

操作系统部分 大概5题 (因为没学,一个都不会)

进程调度

程序争用

文件系统

...........

软件工程部分 大概5题

开发周期

程序清单生成在哪个阶段

黑盒测试测什么

什么是黑盒测试和白盒测试?
任何工程产品(注意是任何工程产品)都可以使用以下两种方法之一进行测试。
黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。

软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:

1、是否有不正确或遗漏的功能?
2、在接口上,输入是否能正确的接受?能否输出正确的结果?
3、是否有数据结构错误或外部信息(例如数据文件)访问错误?
4、性能上是否能够满足要求?
5、是否有初始化或终止性错误?

软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:

1、对程序模块的所有独立的执行路径至少测试一遍。
2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
3、在循环的边界和运行的界限内执行循环体。
4、测试内部数据结构的有效性,等等。

以上事实说明,软件测试有一个致命的缺陷,即测试的不完全、不彻底性。由于任何程序只能进行少量(相对于穷举的巨大数量而言)的有限的测试,在未发现错误时,不能说明程序中没有错误。

网络部分 1个题

网桥工作在ISO的哪个层

C语言部分 分量最重 大概10题

输入输出

++的用法(先使用,后++什么的)

continue的用法

scanf要加&

char a[]={1,2,3,4};对吗?(对的)

给出一段程序,要求选择输出结果,有3个题都是这样。

如:main()

{char a[10]="159",*p;

p=a;

putchar(*p++);

putchar(*p++);

}

我选的15

............

C++部分 2题

公用是public

C++中的对象泛指。。(窗口,控件,。。)

二,编程题(30分 一个15)

1,填空

1.1完成一个void print(int n)功能是取n的各位,反序赋给一个字符数组s[],输出s.

就填2个小空。

void print(int n)

{char s[10],*p;

p=s+9;

do *p--=_1_+'0';

while(n/=10>0);

printf("%s",_2_);

}

我填的n%10和s

1.2利用指针,实现字符的倒排。如"abcde"到"edcba".

填3个空。

void restr(char *s)

{

char c,*p;

p=_1_;//让p指向最后一个元素。

while(s<p)

{c=*s; //p与s元素值调换

_2_=*p;

_3_=c;

}

}

我填的1:s+strlen(s)-1

2:*s++

3:*p++

2.写程序

Dog和Cat都有Animals的Run()的过程,但都不一样,试用C++来的多态性来模拟。

C++我忘了,就记得java了.下面是我胡乱答的 。 我过几天再查查。大家也可以把答案回给我,共同进步嘛。

#include <stdio.h>

#include<iostream.h>

class Animals

{

public Animals(char n[])

{char name[10];

strcpy(name,n);

}

public void Run(){}

};

class Dog : Animals

{

public void Run(){}

};

class Cat : Animals

{

public void Run(){}

};

void main()

{Cat cat1=new Cat("阿黄");

Dog dog1=new Dog("小强");//晕。。这是什么呀。。

cat1.Run();

dog1.Run();

}

三,英语 大概10分

1.选择题 5个

全是专业术语 括号里是我选的

(browser) is a interface of user and network

(standardation) is for people work samely(samely没这个词,反正是这个意思)

firewall is a network (security ) device

(object ) files is linked for execute application不知道对不

database query confirm to proper (conditions)

2.英译汉 1个 大概100字 也就4级水平吧 我凭记忆写的,不太准确,反正大意是这样的

Ever since first computer is available in 1940s,it is the software that show its power in sloving problems.Machine code is the first computer programe language.Sequences of machine code is the first language between programmer and computer.It is been recognized that it is a critical factor,for the communication between programmer and computer,in preducing powerful product and overall software quality.

四,日语 可以不做。。。我没做。。也不会。。

上面的东西都是凭记忆回想出来的,比较乱,可能有错误。仅供参考。

讲个有意思的事,考试一共2张卷,我就做拿一张。到点了,我把试卷交上去,导员问我第二张卷子呢,我当时就蒙了。还好考官还算比较人性化,又给我一张,叫我10分钟内完成。还好就只是英译汉,依我四级507分,六级357分的水平3分钟就拿下了。呵呵(好像也没什么可炫耀的)。交卷的时候我不断的对考官说"不好意思,不好意思。。。"。不过总算做完了试卷,有惊无险。真得感谢考官。

 

 

今天去东软面试, 给了我一道编程是给你一个字符串String=“adadfdfseffserfefsefseetsdg”;

要你找出里面出现次数最多的字母和出现的次数.

經典JavaScript解答:

<script>

var str ="adadfdfseffserfefsefseeffffftsdg";

var maxLength = 0

var result = ''

while( str != '' )

{

      oldStr = str

      getStr = str.substr(0,1)

      eval("str = str.replace(/"+getStr+"/g,'')")

      if( oldStr.length-str.length > maxLength )

      {

            maxLength =  oldStr.length-str.length

            result = getStr + "=" + maxLength

      }

}

      alert(result)

</script>

东软面试技术基础问题总结——处女面试技术题,总结一下吧

虽然万不得已,不能签,但是对于处女面还是要纪念一下。

 

数据库部分:

1.建表的SQL语句

2.索引是什么,优点、缺点

3.表之间的连接分几种?  解释一下左连接

4.分组的SQL语句

 

C#语言,.Net方面

1.抽象类用什么关键字,C#中有接口没

2.抽象类与接口的区别

3.有多重继承没

4.C#中用什么关键字表示常量(这个居然能打错,真丢人)

5.C#是用命名空间还是包

6.什么是动态绑定(多态性)

7.static成员与非static 成员的区别

8.static方法与非static 方法的区别

9.C#中有几种数据访问权限的关键字

10.&与&&的区别

 

java方面

1.java有抽象类吗,有接口吗?

2.java的常量怎么表示?

3.java的多线程,解释一下,常用的方法,同步关键字

。。。。还有的想不起来了,

 

其他

1.ActiveX和Com的原理,解释一下

2.Xml与html区别,怎么理解的?

 

 

我们学校是东软定制培训班招生的学校之一,我今年有幸参加了招聘并被选中。

笔试:

一、选择题(共30题,每题2分,满分60分)

1、(数据结构)对图中的二叉树,按先根次序遍历得到的结点序列为  

A、ABCDHEIFG

B、ABDHIECFG

C、HDIBEAFCG

D、HIDBEFGAC

2、(数据结构)设线性表(a1,a2,a3,...,a500)中所有元素的值由小到大排列,对一个给定的值K,用二分法查找表中与K相等的元素,在查找不成功的情况下,至多需要比较    次。

A、8       B、9       C、10     D、11

3、(数据结构)二叉树的查找有深度优先和广度优先,深度优先包括  

A、前序遍历、后序遍历、中序遍历        B、前序遍历、后序遍历、层次遍历

C、前序遍历、中序遍历、层次遍历        D、中序遍历、后序遍历、层次遍历

4、(数据结构)关于事务的故障与恢复,下列叙述正确的是  

A、事务日志用来记录事务执行的频度

B、采用增量备份,数据的恢复可以不使用事务日志文件

C、系统故障的恢复,只需要进行重做(redo)的操作

D、对日志文件建立检查点的目的是为了使数据恢复效率提高

5、(数据结构)人们把平均检索长度最短的二叉排序树称作最佳二叉排序树,最佳二叉排序树在结构上的特点是  

A、除最下二层可以不满外,其余都是充满的

B、除最下一层可以不满外,其余都是充满的

C、每个结点的左右子树的高度之差的绝对值不大于1

D、最下层的叶子必须在左边

6、(数据结构)在数据结构中,结点及结点间的相互关系是数据的逻辑结构,数据结构按逻辑关系的不同,通常可分为    两类

A、动态结构和表态结构            B、紧凑结构和非紧凑结构

C、线性结构和非线性结构        D、内部结构和外部结构

7、(数据结构)队列是一种常用的数据结构,其元素的入队与出队遵循    原则。

A、先进先出        B、先进后出         C、随机进、顺序出            D、顺序进、随机出

8、(数据结构)与单向链表相比,双向链表的优点之一是  

A、更节省存储空间            B、便于进行随机访问

C、更容易访问相邻结点     D、可以省略头指针和尾指针

9、(操作系统)在文件存储设备管理中,有三类常用字的空闲块管理方法,即位图向量法,空闲块链表法和  

A、级目录法        B、多级目录法            C、分区法            D、索引法

10、(操作系统)在进程管理中,当    时,进程从阻塞状态变为就绪状态。

A、进程被进程调度程序选中     B、等待某一事件

C、等待事件发生                      D、时间片用完

11、(操作系统)若进程P1正在运行,操作系统强行撤下P1进程所占用的CPU,让具有更高优先级的进程P2运行,这种调度方式称为  

A、中断方式        B、抢占方式         C、非抢占方式            D、查询方式

12、(操作系统)I/O控制方式有多种,    一般用于大型、高效的计算机系统中。

A、查询方式        B、中断方式         C、DMA方式              D、PPU方式

13、(软件工程)软件设计的主要任务是设计软件的结构、模块和过程,其中软件结构设计的主要任务是要确定  

A、模块间的操作细节        B、模块间的相似性

C、模块间的组成关系        D、模块的具体功能

14、(软件工程)对软件系统进行验收测试(确认测试)的任务是验证软件  

A、是否符合用户提出的需求            B、是否采用了先进的实现方法

C、界面是否美观                             C、是否适合计算机硬件环境

15、(软件工程)在软件开发过程中,管理者和技术人员的观念是十分重要的。以下叙述中你认为正确的是  

A、如果我们已经落后于计划,可以增加更多的程序员来走上进度

B、在程序真正运行之前,没有办法评估其质量

C、有了对目标的一般描述就足以开始写程序了,我们以后可以再补充细节

D、项目需求总是在不断变化,但这些变化能够很容易地满足,因为软件是灵活的

16、(软件工程)系统中模块的    不仅意味着作用于系统的小变动将导致行为上的小变化,也意味着规格说明的小变动将影响到一小部分模块

A、可分解性        B、保护性            C、可理解性        D、连续性

17、(软件工程)黑盒测试也称为功能测试。黑盒测试不能发现  

A、终止性错误            B、输入是否正确接收

C、界面是否有错误     D、是否存在冗余代码

18、(软件工程)下列选项中,    不是结构化程序设计的基本结构。

A、顺序        B、选择         C、循环        D、转移

19、(数据库)为了防止合法用户使用数据库时向数据库添加不合语义的数据,应该采取  

A、完整性控制     B、安全性控制     C、并发控制        D、访问控制

20、(C语言)以下能正确定义一维数组的选项是  

A、int a[5]={0,1,2,3,4,5};           B、char a[]={0,1,2,3,4,5};

C、char a={'A','B','C'};               D、int a[5]="0123";

21、(C语言)以下叙述中错误的是  

A、对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

B、数组名代表的是数组所占存储区的首地址,其值不可改变

C、当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息

D、可以通过赋初值的方式确定数组元素的个数

22、(C语言)假设有如下定义方式int(**ptr)();,则以下叙述中正确的是  

A、ptr是指向一维数组的指针变量

B、ptr是指向int型数据的指针变量

C、ptr是指向函数的指针的指针,该函数返回一个int型数据

D、ptr是一个函数名,该函数的返回值是指向int型数据的指针

23、(C语言)在头指针为head且表长大于1的单循环链表中,指针p指向表中英雄模范个结点,若p->next->next=head,则  

A、p指向头结点                       B、p指向尾结点

C、*p的直接后继是头结点        D、*p的直接后继是尾结点

24、(C语言)数字字符0的ASCII值为48,若有以下程序

main()

{

char a='1',b='2';

printf("%c,",b++);

printf("%d/n",b-a);

}

程序运行的输出结果是  

A、3,2        B、50,2              C、2,2        D、2,50

25、(C语言)有以下程序

#define P 3

void F(int x) {return (P*x*x);}

main()

{printf("%d/n",F(3+5);}

程序运行后的输出结果是  

A、192          B、29            C、25            D、编译出错

26、(C语言)有以下程序

main()

{

int a=1,b;

for(b=1;b<=10;b++)

{

if(a>=8)break;

if(a%2==1) {a+=5;continue;}

a-=3;

}

printf("%d/n",b);

}

程序运行的结果是  

A、3              B、4              C、5              D、6

27、(C语言)在C评议中,以下正确的说法是  

A、实参和与其对应的形参各占独立的存储单元

B、实参和与其对应的形参占用同一个存储单元

C、只有当实参和其对应的形参同名时才占用同一个存储单元

D、形参是虚拟的,不占用存储单元

28、(C语言)一个C程序的执行是从  

A、本程序的main函数开始,到main函数结束

B、本程序的第一个函数开始,到本程序文件的最后一个函数结束

C、本程序的main函数开始,到本程序文件的最后一个函数结束

D、本程序文件的第一个函数开始,到本程序main函数结束

29、(C++语言)在面向对象技术中,    不是对象

A、窗口        B、控件         C、菜单项            D、函数

30、(C++语言)友元作用是  

A、提高程序运行效率        B、加强类的封装性

C、实现数据的隐藏性        D、增加成员函数的种类

二、编程题(共2题,每题15分,满分30分)

1、阅读下列函数说明和C代码,将应填入    处的字句写在答题纸的对应栏内。

[函数1.1说明]

函数int factors(int n)的功能是判断整数n(n>=2)是否为完全数。如果n是完全数,则函数返回0,否则返回-1。

所谓“完全数”是指整数n的所有因子(不包括n)之和等于n自身。例如28的因子为1、2、4、7、14,而28=1+2+4+7+14,因此28是“完全数”。

[函数1.1]

int factors(int n)

{

int i,s;

for(i=1,s=0;i<=n/2;i++)

if(n%i==0)    (1)    ;

if(    (2)    )return 0;

return -1;

}

[函数1.2说明]

函数int maxint(int a[], int k)的功能是用递归方法求指定数组中前k个元素的最大值,并作为函数值返回。

[函数1.2]

int maxint(int a[],int k)

{

int t;

if(    (3)    ) return    (4)    ;

t=maxint(a+1,    (5)    );

return (a[0]>t)?a[0]:t;

}

2、动物(Animals)中的猫(Cat)和狗(Dog)都有跑(Run)的动作。请运用多态技术展示猫跑和狗跑的动作。要求用C++代码实现。

三、英语题(满分10分)

1、选择题(共5题,每题1分,满分5分)

l             (1)     is a device that converts images to digital format.

A. Copier        B. Printer        C. Scanner            D. Display

l         In C language, a     (2)     is a series of charactrs enclosed in double quotes.

A. matrix        B. string         C. program            D. stream

l             (3)     are those programs that help find the information you are trying to locate on the WWW.

A. Windows           B. Search Engines         C. Web Sites          D. Web Pages

l         In C language,    (4)     are used to create variables and are grouped at the top of a gram block;

A. declarations              B. dimensions        C. comments         D.descriptions

l         An     (5)     statement can perform a calculation and store the result in a variable so that it can be used later.

A. executable         B.input           C.output         D. assignment

2、英译汉(共1题,满分5分)

The invention of the Web brought an extraordinary expansion of digital services to millions of amateur computer users, including color text and pages, formatted text, pictures, animations, video, and sound. In short, the Web makes nearly all the rich elements of human expression needed to establish a commercial marketplace available to nontechnical computer users worldwide.

四、日语附加题(满分10分)

1、选择题(共5题,每题1分,满分5分)

1. Log

A.ロツダ              B. ロヅツク         C. ログ         D. ロツク

2. Byte

……

2、日译汉(共1题,满分5分)

……

这是一套题 虽然我答的和这个不一样 但是基本没什么差别 学科分数的分布是基本相同的,但是我们没日语。

选择C和数据结构是考察重点 编程的第一道是‘冒泡排序’ 因为我是JAVA方向的 所以编程的第二题是JAVA的题。

我们今年的题和去年的是差不多的 我不知道东软是怎样想的 不过我们确实还真有点措手不及 因为大家都以为考过的不会再考。

面试:

笔试还是比较轻松的,面试就要紧张多了

面试过程

1 首先穿着很重要 你穿西服不要觉得很搞笑 因为那是对公司的尊重 会获得分数

2 进去后老师说请你做下自我介绍吧

我说了一堆 大家需要注意的是 一定要把自己的特质表现出来 你的爱好 你的特长 你对公司的向往 其中如果你的英语和日语能力以及你是否 是学生会干部也是很重要的

3 紧接着老师会根据你的特长和他在乎的地方去提问 因为我说了我爱好网络安全 所以老师问我是否自己做过网站啊 不要自己做个网站很垃圾 其实对于一个我们这样的学生来讲那还是很有分量的 你最好把你在其中遇到困难 以及解决的过程说一些 如果你说到了你是独立查找资料 解决的 会有加分 因为这是你自学能力的体现

4 在谈话过程中你可以自然一点 比如我的成绩不是很好 那么我会主动让老师多问我一些技术上的问题 这也是一个的分点

5 如果你是学生会他们会问你组织过什么活动 以及一些问题的解决方案 如果你是学习类型的 他们会为技术问题

6 东软的人很和蔼 会让你觉得很亲切 所以大家在出来的时候可以问下 你是否被取上了 如果通过了 他们也许会告诉的

说几个他们常问的问题

1 C语言方面 几个常见的语句 数据类型占用的字节数 一些编程的小技巧 C++中类和对象 C和C++的区别

2 软件工程 软件工程的几个步骤 其中各自站的比例 软件工程的作用

3 数据库 二范式 三范式 的区别 SQL语句中你觉得哪是难点并说明

4 你的四级成绩 日语学习情况 不要瞎吹 人家都是懂的 会让你说 如果你6级过了 那是挺牛的一件事

5 JAVA 方向 他们会问一下JAVA的问题 比如继承,封装,多态的概念 或者更深入点的 接口对象 类 等等问题 都不难 如果真学过 都能答对

6 如果你有特殊爱好 比如我说我喜欢网络 他就问我一些什么简单的C/S B/S 结构什么的

东软的题是很能说明问题的 主要是看大家的学习态度 而不是你会多少东西 因为咱们会的那些东西在他们眼中和不会没什么区别大家要注意诚实 不会就说不会 不要想蒙骗老师人家都是7 8年的程序员了 你能蒙过去吗? 公司我最看重的还是潜力和人品 因为人家是想把你培养成人才 换位思考你觉得东软更重视什么?

还有外貌很重要 男生也会占优势 女生则要及其优秀才可以 必定这个行业男生是主导

东软的管理很人性化 培训后会给你很大的选择空间 你可以选择你比较想去的城市 公司会有考虑的 工资会比应届毕业生的平均水平高一定比例 虽然听说会很累但是对我们来说 东软确实是个不错的去处

希望我一年半以后可以顺利进入公司 也希望你有机会成为我的同事