应届生求职网小程序
查看: 9637|回复: 0
打印 上一主题 下一主题

群硕笔试题目(全)1

[复制链接]
吃吃      

主题

好友

134万

积分

世界首富

跳转到指定楼层
1
发表于 2008-8-20 16:07 |显示全部楼层 |倒序浏览


发信人: signals (信号与系统), 信区: Job


应哥们要求特意记得,与大家共享!

原文全是英语,我按自己理解写了一些,难免出错,望大家见谅!

一、

1. Debug和Release build的区别,速度有差异吗?why or why not?
一、Debug 和 Release 编译方式的本质区别 
Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
二:
只有DEBUG版的程序才能设置断点、单步执行、使用TRACE/ASSERT等调试输出语句。REALEASE不包含任何调试信息,所以体积小、运行速度快。

在debug的版本里会错的,在release里面不一定会错误,但是代码是肯定有错的.
2. 死锁的四个必要条件;
死锁产生有四个必要的条件:互斥条件,不可剥夺条件,部分分配,循环等待
3. “assignment operator”and “copy constructor”的差异
调用时间不一样,假设A同时拥有两者,b是A的一个实例:  
A   a(b)与A   a=b     调用opy   constructor  
A   a;  
a=b;  
调用的是assignment     operator
4_What's serialization,how does it work in .net or Java

5. what's reflection in java

6_How many data types can be used in swith (Java)?

7.定义 a) 含有十个元素的指针数组;

b) 数组指针;

c) 函数指针;

d) 指向函数的指针数组;

8_Describe scope of public/private/frined/protected/protected frined

(C#)

二、

1_an array,Bubble sort.

2_judge current platform using big endion or little endition(高字节还是低字节存放)
微处理机中的存放顺序有正序(big endian)和逆序(little endian)之分。正序存放就是高字节存放在前低字节在后,而逆序存放就是低字节在前高字节在后。例如,十六进制数为A02B,正序存放就是A02B,逆序存放就是2BA0。摩托罗拉(Motorola)公司的微处理器使用正序存放,而英特尔(Intel)公司的微处理器使用逆序。
void endian()
{
    int x = 0x12345678;
    char *a = (char *)&x;
    cout << (*a == 0x12? "big endian":"little endian");
}

三、

1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现
一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空
间,能否设计一个算法实现?(今天唯一的收获就是做出了这个题)
将1001个元素相加减去1,2,3,……1000数列的和,得到的差即为重复的元素。
  int   Find(int   *   a)  
  {  
  int   i;//变量  
  for   (i   =   0   ;i<=1000;i++)  
  {  
  a[1000]   +=   a;  
  }  
  a[1000]   -=   (i*(i-1))/2       //i的值为1001  
  return   a[1000];  
  }
利用下标与单元中所存储的内容之间的特殊关系,进行遍历访问单元,一旦访问过的单
元赋予一个标记,利用标记作为发现重复数字的关键。代码如下:
void FindRepeat(int array[], int length)
{
    int index=array[length-1]-1;
    while ( true )
    {
       if ( array[index]<0 )
           break;
       array[index]*=-1;
       index=array[index]*(-1)-1;
    }

    cout<<"The repeat number is "<<index+1<<endl;
}
此种方法不非常的不错,而且它具有可扩展性。在坛子上有人提出:
对于一个既定的自然数 N ,有一个 N + M 个元素的数组,其中存放了小于等于 N 的所有
自然数,求重复出现的自然数序列{X} 。

对于这个扩展需要,自己在A_B_C_ABC(黄瓜儿才起蒂蒂)的算法的基础上得到了自己的算法
代码:
按照A_B_C_ABC(黄瓜儿才起蒂蒂)的算法,易经标记过的单元在后面一定不会再访问到,除非它是重复的数字,也就是说只要每次将重复数字中的一个改为靠近N+M的自然数,让遍历能访问到数组后面的单元,就能将整个数组遍历完。
代码:
*/
void FindRepeat(int array[], int length, int num)
{
int index=array[length-1]-1;
cout<<"The repeat number is ";
while ( true )
{
if ( array[index]<0 )
{
   num--;
   array[index]=length-num;
   cout<<index+1<<'t';
}

if ( num==0 )
{
   cout<<endl;
  return;
}
array[index]*=-1;
index=array[index]*(-1)-1;
}
}

群硕笔试归来
题目:
一概念 
 1.过程化编程和面向对象编程的区别
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为
 2.(a-1)xora==0和条件
 3_Garbage Collection
4_java中 equals() 和== 的区别
 5.C++中类的定义  :函数重载出错
 6.数据库理论中的数据完整性
 7_donamic(?) wed programming 中 redirect 和forward
 8.双向链表的插入

二算法
 字符串倒置 
 eg. this is a string =>gnirts a si siht

三logic thinking
 四个女人过桥,夜间有一火把,每次最多过两个,必需带火把,
  过桥速度不一样
   no.1 1min
no.2 2min
no.3 5min
no.4 10min
   两个人过用最慢一个的速度,火把不能扔
如何在17min内四个女人都过桥

+10
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册 QQ登录

本版积分规则

关闭

站长推荐上一条 /1 下一条

应届生微信小程序|应届生求职网YingJieSheng.COM ( 沪ICP备12015550号-13 )

GMT+8, 2024-11-27 07:53

Powered by Discuz!

© 2001-2012 Comsenz Inc.

快速回复 返回顶部 返回列表