算法题:
1、一个数组,有奇数和偶数,将奇数放在前面偶数放在后面。
思路:
- A、开辟一个新的数组,对元素组的数据用一个bool型数组记录每个元素的奇偶类型,之后遍历原数组,并用开辟的新数组保存奇数,然后保存偶数。
- B、交换元素,用冒泡法的思想,将偶数沉底,奇数自然就上升了。
2、求两个单链表的交点。
首先判断链表A与链表B末节点是否相同,如果相同则两个链表必然交,然后求两个链表的长度,len_A,len_B,len = |len_A-len_B|,让长的链表从len处,短的链表从头结点开始,同步移动,知道两个两个节点的地址相同,则为两个单链表的交点。
3、Java与c++面向对象的区别。Java和c++都能实现面向对象思想(封装、继承、多态),由于C++向后兼容了C,使得C++变成了带类的C语言,Java则是完全的面向对象语言。
- A、指针的使用,在C++中可以使用指针,在Java里面虽然存在指针,但一般不使用。Java自带垃圾回收机制,自动检测哪些对象不再使用,然后用释放资源,避免了程序员操作指针不当,造成内存溢出。
- B、多重继承,C++里支持多重继承,即一个子类可以继承多个父类。Java不支持多重继承,但是容许一个类可以继承多个接口,实现了C++多重继承的功能。
- C、数据类型及类的定义。Java中要求变量定义和方法定义放在类中,便于封装,而C++容许将函数和变量定义成全局的。
- D、自动的内存管理机制,Java有自动垃圾回收机制,new之后的对象不用程序员释放,而C++必须程序员释放。
- E、操作符重载。C++支持操作符重载,Java不支持操作符重载。
- F、预处理功能,C++有预编译阶段,但是增加了编译的复杂度,Java引入了import语句,和预编译功能类似。