1、 java的基本数据类型,各占多少字节?

byte 8位

short 16位

int 32位

long 64位

float 32位

double 64位

boolean 1位

char 16位

2、 什么是继承、多态?怎么实现多态?

继承:子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。

多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。

在Java中有两种形式可以实现多态:继承和接口。

基于继承的实现机制主要表现在父类和继承该父类的一个或多个子类对某些方法的重写,多个子类对同一方法的重写可以表现出不同的行为。

“一个接口,多个方法”展示了Java的动态多态性

3、 重写和重载

重写发生在父类和子类之间,子类重新定义父类方法,方法名、参数列表和返回类型都相同

重载是在同一个类里,方法名相同,参数不同。

4、 什么是堆、栈、队列?分别有什么特点?如何用两个栈实现队列?

堆是一个运行时数据区,通过new等指令创建,不需要程序代码显式释放

<1>优点:可动态分配内存大小,生存周期不必事先告诉编译器,Java垃圾回收自动回收不需要的数据;

<2>缺点:运行时需动态分配内存,数据存取速度较慢。

栈限制仅在表的一端进行插入和删除运算的线性表,先进后出FILO

<1>优点:存取速度比堆快,仅次于寄存器,栈数据可以共享;

<2>缺点:存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。

队列限制仅在表的一端(尾端)进行插入,另一端(首端)进行删除的线性表,先进先出FIFO

package mianshi;

import java.util.Stack;

public class StacksToQuene {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void add(int x){//进队
stack1.push(x);
}
public int deleteHead(){//出队
if(stack1.size()+stack2.size()==0){
System.out.println("队列为空");
return -1;
}
if(stack2.isEmpty()){//只有栈2为空时才把栈1转移到栈2
stack1ToStack2();
}
return stack2.pop();

}
public void stack1ToStack2(){
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
}
public static void main(String[] args){
StacksToQuene q = new StacksToQuene();
q.add(1);
q.add(2);
System.out.println(q.deleteHead());
q.add(5);
System.out.println(q.deleteHead());
}
}

5、 &和&&、==和equals

& 按位与

&& 逻辑与 当且仅当两个条件都满足时返回true

使用==比较原生类型如:boolean、int、char等等,使用equals()比较对象

对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;如果作用于引用类型的变量,则比较的是所指向的对象的地址

equals用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同,返回值为布尔类型

boolean equals(Object o) { return this==o;}

6、 ArrayList和LinkedList、HashMap和HashTable

1)ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。

2)对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 
3)对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

Vector和ArrayList几乎是完全相同的,唯一的区别在于Vector是同步类(synchronized).因此,开销就比ArrayList要大

HashMap不是线程安全的: HashMap是map接口的子类,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。

HashTable是线程安全的:Hashtable的方法是Synchronize的

7、 排序的几种方法,描述其思想

8、 多线程有几种实现方法?同步有几种实现方法?

实现多线程:继承Thread类;实现Runnable接口;

用synchronized关键字修饰同步方法

 同步的实现方法分别是synchronized,wait与notify

wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

9、  常见的设计模式有什么?有什么作用?

10、TCP和UDP协议的区别?Http基于哪个?GET和POST请求有什么区别?

TCP面向连接的协议,通过三次握手建立可靠的连接

UDP是一个非连接的协议,传输数据之前源端和终端不建立连接

http基于TCP

GET用于信息获取,而且应该是安全的和幂等的。GET方式传输的参数安全性低,因为传输的数据会显示在请求的URL中。

POST表示可能修改变服务器上的资源的请求。POST方式传输的数据安全性较高,因为数据传输不是明显显示的。

11、使用递归实现数字n的阶乘

public class Test {

public static void main(String[] args) {

int n = 6;

System.out.println(jiecheng(n));

}

public static Double jiecheng (int i) {

Double result = 1.0;

for (int j = 1; j <= i; j ++) {

result *= j;

}

return result;

}

}

12、对有序数组进行二分查找,返回x的位置

public
class BinarySearch {

/**

* 二分查找算法

*

* @param srcArray 有序数组

* @param key 查找元素

* @return key的数组下标,没找到返回-1

*/

public static void main(String[] args)
{

int srcArray[] =
{3,5,11,17,21,23,28,30,32,50,64,78,81,95,101};

System.out.println(binSearch(srcArray, 0, srcArray.length - 1,
81));

}

// 二分查找递归实现

public static int binSearch(int
srcArray[], int start, int end, int key) {

int mid = (end - start) / 2 +
start;

if (srcArray[mid] == key) {

return mid;

}

if (start >= end) {

return -1;

} else if (key > srcArray[mid])
{

return binSearch(srcArray, mid
+ 1, end, key);

} else if (key < srcArray[mid])
{

return binSearch(srcArray,
start, mid - 1, key);

}

return -1;

}

// 二分查找普通循环实现

public static int binSearch(int
srcArray[], int key) {

int mid = srcArray.length / 2;

if (key == srcArray[mid]) {

return mid;

}

int start = 0;

int end = srcArray.length - 1;

while (start <= end) {

mid = (end - start) / 2 +
start;

if (key < srcArray[mid])
{

end = mid - 1;

} else if (key > srcArray[mid])
{

start = mid + 1;

} else {

return mid;

}

}

return -1;

}

}

java0618的更多相关文章

随机推荐

  1. centos7上安装zabbix4.0

    zabbix4.0已经推出有一段时间了,针对之前版本做了很多优化配置,易用性得到提高,特别lts(long team support)长技术支持版本,官方说提供5年的稳定技术支持,在商业化运用上,是比 ...

  2. java中比较特殊的三个浮点数Infinity、-Infinity、NaN

    学过javaScript的应该都知道,在js中的数值型number类型中有几个特殊的数,一个正无穷大.一个负无穷大.一个不是一个数NaN. 后来无意中发现java中也有这三个数,不过这三个数是浮点数, ...

  3. Linux 防火墙iptables开放端口

    Iptabels是与Linux内核集成的包过滤防火墙系统,几乎所有的linux发行版本都会包含Iptables的功能.如果 Linux 系统连接到因特网或 LAN.服务器或连接 LAN 和因特网的代理 ...

  4. 压缩软件WinRar 5.5 x64去广告方式【窗口类名下断】

    工具及使用软件逆向逻辑原始软件使用效果:查看软件窗口类名查看WinRAR.exe信息x64dbg逆向破解软件(非附加调试)处理掉广告注册函数处理掉广告创建函数保存修改后的镜像破解效果 工具及使用软件 ...

  5. Oracle lag()/lead() over()分析函数

    with tmp as(select '1' id ,'aa' name ,'22' age from dual union allselect '2' id ,'bb' name ,'20' age ...

  6. 【aardio】是否取消三个按键的对话框

    import win; var id = win.msgbox("三个按钮","标题",0x3/*_MB_YESNOCANCEL*/) 参考标准库函数: nam ...

  7. CSS网页布局

    注:优化样式表:增加css样式表的可读性 减伤样式重复 一.主要内容 1.布局分类;131   121 2.display属性排版 3.float属性排版(横向多列布局) 4.防止父类盒子塌陷 二.标 ...

  8. POJ 3140.Contestants Division 基础树形dp

    Contestants Division Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10704   Accepted:  ...

  9. qt布局管理-缩放、多窗口切换

    关于缩放的布局 所有控件要求与主窗口同时缩放,那么在所有控件设置好布局后,最后点击最外侧的主控件,选择水平布局或者垂直布局即可. 另外每个空间的属性可更改,如SizePolicy用于设置空间是否可缩放 ...

  10. VB编程中的“Abs”是什么意思?

    c = Val(Text1.Text) '将Text1中的值赋给cIf c = Abs(a - b) Then 'Abs(a - b)是a和b间的差(正数),判断c是否等于该差值f = f + 10 ...