发信人: 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内四个女人都过桥 |