京东笔试

一、Java语言中,覆盖和重载相同和不同的地方。

答:Java语言中,方法重载和方法覆盖的相同点如下。

  1. 都要求方法同名。
  2. 都可以用于抽象方法和非抽象方法。

不同点如下。

  1. 方法覆盖要求参数必须一致,而方法重载要求参数必须不一致。
  2. 方法覆盖要求返回类型必须一致,而方法重载对此不作限制。
  3. 方法覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类的所有方法(包括从父类中继承而来的方法)。
  4. 方法覆盖对方法的访问权限和抛出的异常有特殊的要求,而方发重载在这方面没有任何限制。
  5. 父类的一个方法只能被子类覆盖,而一个方法在所在的类中可以被重载多次。

二、请说出equals()和==的区别。

答:equals()方法是Object类中定义的一个方法,用来比较两个对象引用是否相等,这一点和“==”表达式是一样的。

所不同的是equals()方法可以在子类或者特定类中重写,例如String类就重写了该方法,使用String类的equals()方法可以比较两个String实例的内容是否相等。

三、forward()和redirect()方法的区别?

答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

四、 表单中的get和post有什么区别?

答:

  1. Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。
  2. Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。
  3. Get是不安全的,因为在传输过程中,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。
  4. Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。
  5. Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
  6. Get是Form的默认方法。

五、冒泡排序

  1.思路

从0到n-1,两两比较数组中的元素,如果前者大于后者,则交换之(如a[0]>a[1],则交换a[0]和a[1])。作一趟冒泡排序后,最大值就在最后一个位置a[n-1]上了。然后对余下的0到n-2个元素作第二趟冒泡排序,次最大值就去到倒数第二个位置a[n-2]上了,如此类推。

  例如对10,-3,5,34,-34,5,0,9进行排序

  第一趟:-3,5,10,-34,5,0,9,34

  第二趟:-3,5,-34,5,0,9,10,34

  第三趟:-3,-34,5,5,0,9,10,34

  第四趟:-34,-3,5,0,5,9,10,34

  第五趟:-34,-3,0,5,5,9,10,34

这时不再发生交换,排序结束。

  2.算法

  

 1     public static void main(String[] args) {
 2         int a[] = { 4, 5, 2, 1, 6, 7, 8, 0, 0, 0 };
 3         bubbleSort(a);
 4         for (int each : a) {
 5             System.out.print(each + " ");
 6         }
 7 
 8     }
 9 
10     static void bubbleSort(int[] array) {
11         boolean isSwap = false;
12         int length = array.length;
13         for (int i = 1; i < length; i++) {
14             for (int j = 0; j < length - i; j++) {
15                 if (array[j] > array[j + 1]) {
16                     int temp = array[j];
17                     array[j] = array[j + 1];
18                     array[j + 1] = temp;
19                     isSwap = true;
20                 }
21             }
22             if (!isSwap)
23                 break;
24         }
25     }
原文地址:https://www.cnblogs.com/hntyzgn/p/3439597.html