一、给了一棵二叉树的前序遍历和中序遍历,要求写出后序遍历。
看一下数据结构就行了,很easy。提示:前序遍历的第一个节点为根结点,在中序遍历中根结点的左边节点是左子树,右边节点是右子树,如此递归。
二、什么是物理内存和虚拟内存,OS中为什么要使用虚拟内存?
看OS的书。
三、解释一下C#中的“delegate”。
原先不清楚的,然后在技术面试的时候问了一下面试官,原来类似于一个队列,队列中存的是函数指针(托管函数),运行时队列中的函数会在一个线程中被依次执行。
四、与子程序传递参数有哪些方法?
汇编题,我想起来三个:参数压栈、参数存寄存器、参数存数据段。
五、解释一下Java中的String和StringBuffer,什么时候需要使用StringBuffer?
核心是String对象是不变对象,连接、取子串等操作会生成新的对象,旧对象可能会被回收。StringBuufer则是可变对象,上述操作将在原对象上进行。
六、Java中哪些容器的默认布局器(layout)是BorderLayout?
这个不是那得很准,就写了JFrame及其子类,Frame及其子类。
七、一个C 的函数:
int operation(int numberA,int numberB){
return numberA numberB;
}
然后声明了三个变量:
int a = 2;
int result1 = operation(5, a );
int result2 = operation(5 a, a); 字串1
问result1和result2的值。
原先以为考得是传值、传引用的问题,结果仔细一看考得是a 和 a的问题,这就简单了。result1 = 7, result2 = 12
八、假如父类的析构函数没有声明为虚函数的话在父类的指针上调用析构函数会有什么后果?
屏蔽多态,子类申请的资源将不被释放。
九、定义了一个类:
class Something{ 字串5
pulic: 字串2
Something();
void setValue(int val){
value = val;
}
private:
int value;
}
以及一个函数:
void doSomething(int val){
Something sth = new Something(); // Line 1 字串1
sth->setValue(val); // Line 2
}
问Line 2假如是doSomething()的最后一行的话会有什问题?
doSomething执行完后sth没有被销毁,内存泄漏。
十、写一个程序将输入的16进制转为10进制。(基础)
十一、设计一个微波炉的控制程序(OO)。
这道题有点意思,我主要用Observer模式设计了一个定时器,然后把微波炉烹饪的对象抽象为Cookable。
十二、逻辑题,一列火车以15 mph的速度从北京开往上海,另一列火车以20 mph的速度从上海开往北京,一只鸟(比较笨)速度25 mph,在两列火车之间往返飞,相遇即折回。问到两列火车相遇这只笨鸟一共飞了多远?