java笔试题
文章平均质量分 53
樊豆豆123
CS硕士入职国企IT 4年,活在当下
展开
-
java中重载,覆盖和隐藏的区别
重载: 只有在 同一类定义中的同名成员函数才存在重载关系 ,主要特点是 函数的参数类型和数目有所不同 ,但 不能出现函数参数的个数和类型均相同 ,仅仅依靠返回值类型不同来区分的函数,这和普通函数的重载是完全一致的。另外,重载和成员函数是否是虚函数无关覆盖: 在派生类中覆盖基类中的同名函数,要求两个函数的参数个数、参数类型、返回类型都相同,且基类函数必原创 2015-11-12 20:51:32 · 675 阅读 · 0 评论 -
java解析xml的几种方式
第一种:DOM。DOM的全称是Document Object Model,也即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作。通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM接口的机制也被称作随机访问机制。DOM树所转载 2016-09-22 19:33:39 · 330 阅读 · 0 评论 -
java中为什么要实现序列化,什么时候实现序列化?
序列化就是 一种用来处理对象流的机制 ,所谓对象流也就是将对象的内容进行流化,将数据分解成字节流,以便存储在文件中或在网络上传输 。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。 序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是转载 2016-09-22 16:39:10 · 1318 阅读 · 0 评论 -
类型转换
intIntegerInteger in1=new Integer(10);Integer in2=Integer.valueOf(20);int n=in2.intValue();Integer in3=10; 自动装箱int n2=in2; 自动拆箱int型保存在栈内存,参数传递时直接传递值;Integer型保存在堆内存中,参数传递时传递的是对象的引用。BigDec原创 2016-09-06 14:27:28 · 283 阅读 · 0 评论 -
提高mysql千万级大数据SQL查询优化30条经验
转自: http://www.jincon.com/archives/120/1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在转载 2016-09-19 10:03:06 · 320 阅读 · 0 评论 -
Comparable和Comparator
对于Comparable接口来说,仅包含一个compareTo方法,public int compareTo(Object o) {},仅有一个参数。对于Comparator接口来说,仅包含一个compare方法,public int compare(Object o1, Object o2) {},有两个参数。Comparator一般会被单独实现。实现Comparator接口的类被称原创 2016-09-06 16:23:45 · 319 阅读 · 0 评论 -
采用带头节点的单链表保存单词,返回两个链表共同后缀的起始位置
这里数据域设为int类型,其实String也是一样的思路一:1.对于链表str1和str2,分别求出两个链表的长度m和n,2。p指向str1的头节点,q指向str2的头节点,当m大于等于n,p向后移动m-n+1个节点,当n大于m,q向后移n-m+1,总之,要保证p和q所指的节点到链表尾的长度相等。3.反复将指针p和q同步后移,并判断它们是否指向同一个节点,若指向同一点,则返回共同后原创 2016-09-14 11:27:51 · 5644 阅读 · 1 评论 -
查找链表中倒数第k个节点,若查找成功,返回数据域的值
有两种思路:思路一:首先遍历一遍链表,得到链表长度n,然后返回n-k+1个节点的数据域思路二:定义两个指针p和q,都指向头节点的下一个节点,等到p移动到第k个节点,q和p同步移动,等到p移动到链表尾时,q指向的就是倒数第k个节点思路一相当于遍历两遍链表,思路二则遍历了一遍链表,思路二更优//找链表中倒数第k个位置上的节点,若查找成功,返回data域的值 //思路:首先遍历一遍链表原创 2016-09-14 09:46:30 · 1947 阅读 · 0 评论 -
单链表的应用
有一个线性表采用带头节点的单链表存储,采用就地算法将其就地逆置。思路:使用p指针扫描原单链表,现将头节点的next置为空,然后将其他节点采用头插法插入。//就地逆置单链表,“就地”的意思是辅助空间为O(1) public void reverse(LinkList L){ Node p=L.head.next; Node q; L.head.next=null; wh原创 2016-09-13 17:23:27 · 740 阅读 · 0 评论 -
将数组逆置——循环左移数组
数组逆置可以应用到数组循环左移中。比如,将数组循环左移p个元素,可以先将整个数组逆置,再将前n-p个元素逆置,最后将后p个元素逆置package pac1;public class Demo1 { /** * @param args * 将数组循环左移p个位置 * 思路:先将整个数组逆置,再将前n-p个元素逆置,后p个元素也逆置 */ public static原创 2016-09-07 11:23:05 · 1062 阅读 · 0 评论 -
鸽巢排序、桶排序
鸽巢排序:用数组c表示鸽巢,索引位置表示值,索引位置的值表示出现次数,然后遍历数组c,输出数组值次数组索引。package pac1;public class Demo { /** * @param args * 鸽巢排序 */ public static void main(String[] args) { // TODO Auto-generated meth原创 2016-09-20 09:58:25 · 1242 阅读 · 0 评论 -
HashMap、HashTable、ConcurrentHashMap
HashMap源码:public class HashMap extends AbstractMap //注意1 implements Map, Cloneable, Serializable { public V put(K key, V value) { //注意2 if (key == null) //注意3 re原创 2016-10-07 10:36:06 · 378 阅读 · 0 评论 -
JAVA不可变类(immutable)机制与String的不可变性
一、不可变类简介不可变类:所谓的不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值。如JDK内部自带的很多不可变类:Interger、Long和String等。可变类:相对于不可变类,可变类创建实例后可以改变其成员变量值,开发中创建的大部分类都属于可变类。二、不可变类的优点说完可变类和不可变类的区别,我们需要进一步了解为什么要有不可变类?这样的特性对JAVA转载 2016-10-07 09:32:07 · 677 阅读 · 0 评论 -
TCP三次握手
Source Port / Destination Port:这个就是客户端口(源端口)和服务器端口(目的端口). 端口就是用来区别主机中的不同进程,通过结合源IP和目的IP结合,得出唯一的TCP连接。Sequence Number(seqNumber): 一般由 客户端发送,用来表示报文段中第一个数据字节在数据流中的序号,主要用来解决网络包乱序的问题。Acknowledgment转载 2016-03-16 19:21:17 · 455 阅读 · 0 评论 -
判断一个存放整数序列的单链表是否对称——栈的应用
基本思想:扫描链表的所有节点并一一进栈,然后再扫描链表,和栈顶元素作比较,如果都相同,返回true,否则返回falsepackage pac1;class Node{ public Node next; //指针域 public int data; //数据域 public Node(int data) { this.data = data; } public vo原创 2016-09-21 22:01:43 · 3758 阅读 · 0 评论 -
二叉树的先序遍历、中序遍历以及后序遍历(递归以及非递归方式)
二叉树的遍历方式有两种:一种是比较简单的递归方式,另一种是借助栈实现的循环方式1.先序遍历a.先访问根节点b.先序遍历左子树c.先序遍历右子树对应的递归算法:public void preOrder(BNode root){ if(root==null) return; else{ System.out.print(root.data+" ");原创 2016-09-21 11:31:38 · 887 阅读 · 0 评论 -
对顺序表的一些操作
1.将数组中所有小于等于0的元素放在前半部分,大于0的元素放在后半部分2.以第一个元素为分界线,将所有大于它的元素移到后边,小于它的元素移到前边3.快速排序//将数组中所有小于等于0的元素放在前半部分,大于0的元素放在后半部分 public static void move(int [] arr){ int tm; int j=0; for(int i=0;i<arr.l原创 2016-09-08 11:14:48 · 424 阅读 · 0 评论 -
二叉树的层次遍历
层次遍历:a.访问根节点b.从左到右访问第2层的所有节点c.从左到右访问第3层的所有节点,。。。。package pac1;public class Demo22 { /** * @param args * 层次遍历二叉树 */ public static void main(String[] args) { // TODO Auto-ge原创 2016-09-23 17:37:04 · 472 阅读 · 0 评论 -
request、session、application的生命周期
(1). request对象内数据的存活范围就是在request对象的存活范围内,当客户端向服务器端发送一个请求,服务器向客户端返回一个响应后,该请求对象就被销毁了;之后再向服务器端发送新的请求时,服务器会创建新的request对象,该request对象与之前的request对象没有任何关系,因此也无法获得在之前的request对象中所存放的任何数据。 (2) sessio转载 2016-10-09 17:13:25 · 3311 阅读 · 0 评论 -
单链表基本操作的实现
package pac1;class Node{ public Node next; //指针域 public int data; //数据域 public Node(int data) { this.data = data; } public void show(){ System.out.print(data+" "); }}public class LinkLis原创 2016-09-13 16:00:14 · 395 阅读 · 0 评论 -
删除线性表中所有值为x的元素,要求时间复杂度为O(n),空间复杂度为O(1)
思路:统计不等于x的个数,边统计边把当前元素放在第k个位置上,最后修改表的长度public static void del(List list,int p){ int k=0; for(int i=0;i<list.size();i++){ if(list.get(i)!=p){ list.set(k, list.get(i)); k++; } }原创 2016-09-08 12:03:47 · 4232 阅读 · 0 评论 -
外排序
外排序外排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装入内存的部分,分别把每一部分调入内存完成排序。然后,对已经排序的子文件进行多路归并排序。先从一个例子来看外排序中的归并是如何进行的?假设有一个含10原创 2016-03-25 20:10:46 · 542 阅读 · 1 评论 -
插入排序、交换排序、选择排序、归并排序、基数排序
插入排序每一趟将一个待排序的记录,按照其关键字的大小插入到有序队列的合适位置里,知道全部插入完成。 不同插入排序算法的最根本的不同点是根据什么规则寻找新元素的插入点,直接插入排序采用依次寻找,而折半插入采用的是折半寻找。1.直接插入排序原创 2016-03-25 20:04:33 · 2229 阅读 · 0 评论 -
直线分割平面、分割空间
题目大致如:n条直线,最多可以把平面分为多少个区域。 析:可能你以前就见过这题目,这充其量是一道初中的思考题。但一个类型的题目还是从简单的入手,才容易发现规律。当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。这样就会得到n-1个交点。这些交点将第n条直线分为2条射线和n-2条线断。而每条射线和线断将以原创 2016-03-24 20:41:11 · 1703 阅读 · 1 评论 -
java八大基本类型
默认值 取值范围 示例 字节型 : 0 -2^7—-2^7-1 byte b=10; 字符型 : ‘ \u0000′ 0—-2^16原创 2016-03-17 20:17:29 · 382 阅读 · 0 评论 -
方法重载
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。原则如下:一.方法名一定要相同。二.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。1.如果参数个数不同,就不管它的参数类型了!2.如果参数个数相同,那么参数的类型或者参数的顺序必须不同。三.方法的返回类型、修饰符可以相同,也可不同。原创 2016-03-16 19:34:25 · 301 阅读 · 0 评论 -
抽象类和接口
含有abstract修饰符的class即为抽象类,abstract类不能创建类的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法,但可以由普通构造方法。如果子类没有实现抽象父类中的所有抽象方法,原创 2016-03-16 19:42:15 · 243 阅读 · 0 评论 -
反射
import java.lang.reflect.*;public class DumpMethods{ public static void main(String[] args) { try { Class c=Class.forName(args[0]); Method m[]=c.getDeclaredMethods原创 2016-03-16 19:36:28 · 278 阅读 · 0 评论 -
使用二分法猜1到100之间的一个数最多需要几次猜对
答案是7次。刚刚编了个程序,最多却是6次,改天再看! public static void main(String[] args) { // TODO Auto-generated method stub// Scanner scanner = new Scanner(System.in);// System.out.println("输入初始数字:");//原创 2016-02-05 18:47:46 · 15814 阅读 · 2 评论 -
优化Hibernate所鼓励的7大措施:
优化Hibernate所鼓励的7大措施:1.尽量使用many-to-one,避免使用单项one-to-many2.灵活使用单向one-to-many3.不用一对一,使用多对一代替一对一4.配置对象缓存,不使用集合缓存5.一对多使用Bag 多对一使用Set6.继承使用显示多态 HQL:from object polymorphism="exlicit" 避免查处所有对象原创 2016-03-15 15:51:44 · 745 阅读 · 0 评论 -
JSP的九大内置对象
JSP内置对象有:1.request对象 客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。2.response对象 response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。3.session对象原创 2016-03-15 15:58:24 · 572 阅读 · 0 评论 -
简单工厂模式
1. 目的 工厂模式就是专门负责将大量有共同接口的类实例化,而且不必事先知道每次是要实例化哪一个类的模式。它定义一个用于创建对象的接口,由子类决定实例化哪一个类。2 . 简单工厂模式的结构 1.Product 定义工厂方法所创建的对象的接口。 2.ConcreteProduct 实现Product接口。 3.C转载 2016-06-15 16:25:31 · 258 阅读 · 0 评论 -
HashTable 和 HashMap
HashMap和Hashtable两个类都实现了Map接口,二者保存K-V对(key-value对)HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就原创 2016-05-23 17:21:05 · 283 阅读 · 0 评论 -
抽象类和接口的区别
含有abstract修饰符的class即为抽象类,abstract类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子原创 2016-04-17 21:24:59 · 254 阅读 · 0 评论 -
遍历map
方式一:for (Map.Entry entry : map.entrySet()) { System.out.println( entry.getKey() + " " + entry.getValue()); }方式二: for (Integer key : map.keySet()) { System.out.printl原创 2016-04-17 20:40:57 · 295 阅读 · 0 评论 -
打印蛇形数组——两种结构
打印如下格式的数据:解题思路:先将矩阵变一下形状public static void main(String[] args) { // TODO Auto-generated method stub int n=5; int [] []a=new int[n][n]; int [] []b=new int[2*n][n]; int num=0; //原创 2016-04-10 11:26:20 · 6353 阅读 · 0 评论 -
一个有序的数组中,删除重复出现的元素,输出不再重复出现的元素个数
输入:1,1,2,2,2,3,3,4,4,5,5,5,5输出:5public static int removeDuplicates1(int[] nums) { if (nums == null || nums.length < 1) return 0; int curPos = 0, endPos = 1, i; while转载 2016-04-09 16:27:39 · 1072 阅读 · 0 评论 -
一个话务员给n个人打了n次电话,但是话务员记性不好,没记得给谁打过,没接到电话的人占总人数的多少
假设话务员打了一个电话,那么一个人没接到电话的概率是(n-1)/n,话务员打了n次的话,他没接到的概率是,所有人没接到电话的概率是求极限以后,是1/e。原创 2016-04-25 15:12:02 · 528 阅读 · 0 评论 -
final、finally和finalize的区别
final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源的回收,例如关闭文件等。用 final 关键字修饰一个变量时,引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。原创 2016-03-15 16:07:09 · 246 阅读 · 0 评论 -
为什么说B+树比B 树更适合实际应用中操作系统的文件索引和数据库索引?
1) B+树的磁盘读写代价更低 B+树的内部结点并没有指向关键字具体信息的指针。因此其内部结点相对B 树更小。如果把所有同一内部结点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多。一次性读入内存中的需要查找的关键字也就越多。相对来说IO读写次数也就降低了。 举个例子,假设磁盘中的一个盘块容纳16bytes,而一个关键字2bytes,一个关键字具体信息指针转载 2016-10-08 16:38:31 · 1771 阅读 · 1 评论