




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
驾途面试题目大全1.Java序列化版本号的作用答:Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。2.ArrayList和LinkedList的区别,HashMap和Hashtable的区别答:ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 但是缺点就是查找非常麻烦 要丛第一个索引开始Hashtable和HashMap类有三个重要的不同之处。1、是历史原因,Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。 2、最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。这就意味着,在一个多线程应用程序中即可以不用采取任何特殊的行为就可以用一个Hashtable,但你必须同样地为一个HashMap提供外同步。一个方便的方法就是利用Collections类的静态的synchronizedMap()方法,它创建一个线程安全的Map对象,并把它作为一个封装的对象来返回。这个对象的方法可以让你同步访问潜在的HashMap。这么做的结果就是当你不需要同步时,你不能切断Hashtable中的同步(比如在一个单线程的应用程序中),而且同步增加了很多处理费用。 第三点不同是,只有HashMap可以让你将空值作为一个表的条目的key或value。HashMap中只有一条记录可以是一个空的key,但任意数量的条目可以是空的value。这就是说,如果在表中没有发现搜索键,或者如果发现了搜索键,但它是一个空的值,那么get()将返回null。如果有必要,用containKey()方法来区别这两种情况。 一些资料建议,当需要同步时,用Hashtable,反之用HashMap。但是,因为在需要时,HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基于一个陈旧的类的,所以有人认为,在各种情况下,HashMap都优先于Hashtable。 关于Properties 有时侯,你可能想用一个hashtable来映射key的字符串到value的字符串。DOS、Windows和Unix中的环境字符串就有一些例子,如key的字符串PATH被映射到value的字符串C:WINDOWS;C:WINDOWSSYSTEM。Hashtables是表示这些的一个简单的方法,但Java提供了另外一种方法。 Java.util.Properties类是Hashtable的一个子类,设计用于String keys和values。Properties对象的用法同Hashtable的用法相象,但是类增加了两个节省时间的方法,你应该知道。 Store()方法把一个Properties对象的内容以一种可读的形式保存到一个文件中。Load()方法正好相反,用来读取文件,并设定Properties对象来包含keys和values。 注意,因为Properties扩展了Hashtable,你可以用超类的put()方法来添加不是String对象的keys和values。这是不可取的。另外,如果你将store()用于一个不包含String对象的Properties对象,store()将失败。作为put()和object Objectget()的替代,你应该用setProperty()和getProperty(),它们用String参数。3.JVM性能优化参数有哪些答:减少使用全局变量和大对象; 调整新生代的大小到最合适; 设置老年代的大小为最合适; 选择合适的GC收集器;4.Overload和Override的区别答:Override是重写:方法名称、参数个数,类型,顺序,返回值类型都是必须和父类方法一致的。它的关系是父子关系 Overload是重载:方法名称不变,其余的都是可以变更的。它的关系是同一个类,同一个方法名,不同的方法参数或返回值。 备注:它们都是是Java多态性的不同表现 5.接口和抽象类的区别答:抽象类的成员可以具有访问级别,而接口的成员全部public级别抽象类可以包含字段,而接口不可以,抽象类可以继承接口,而接口不能继承抽象类抽象类的成员可以具有具体实现,而接口不行抽象的子类可以选择性实现其基类的抽象方法,而接口的子类必须实现6.final, finally, finalize的区别final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。7.sleep和 wait有什么区别1、这两个方法来自不同的类分别是Thread和Object2、最主要是sleep方法没有释放同步锁,而wait方法释放了同步锁,使得其他线程可以使用同步控制块或者方法。3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围)synchronized(x)x.notify()/或者wait()4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常8.同步和异步有何异同,在什么情况下分别使用?如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。9.说说java锁机制及几种实现方式10.linux常用命令(10个)11.java代码安全有哪些Java通过提供一个”安全沙箱“来保证从网络或者其他不信任的地方下载并运行的程序不会破坏本地数据,为了确保沙箱是可靠的,java安全模型对体系结构的各方面都进行了考虑。组成java沙箱的基本组件如下: 类装载器结构 class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管理器及Java API 12.列举你在项目中常用的设计模式以及对于的应用场景13.排序都有哪几种方法?请列举排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)用Java语言实现的各种排序,包括插入排序、冒泡排序、选择排序、Shell排序、快速排序、归并排序、堆排序、SortUtil等。插入排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/* author treeroot* since 2006-2-2* version 1.0*/public class InsertSort implements SortUtil.Sort /* (non-Javadoc) * see org.rut.util.algorithm.SortUtil.Sort#sort(int) */ public void sort(int data) int temp; for(int i=1;i0)&(datajdataj-1);j) SortUtil.swap(data,j,j-1); 冒泡排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/* author treeroot* since 2006-2-2* version 1.0*/public class BubbleSort implements SortUtil.Sort /* (non-Javadoc) * see org.rut.util.algorithm.SortUtil.Sort#sort(int) */ public void sort(int data) int temp; for(int i=0;ii;j) if(datajdataj-1) SortUtil.swap(data,j,j-1); 选择排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/* author treeroot* since 2006-2-2* version 1.0*/public class SelectionSort implements SortUtil.Sort /* * (non-Javadoc) * * see org.rut.util.algorithm.SortUtil.Sort#sort(int) */ public void sort(int data) int temp; for (int i = 0; i i; j) if (dataj 2;i/=2) for(int j=0;ji;j+) insertSort(data,j,i); insertSort(data,0,1); /* * param data * param j * param i */ private void insertSort(int data, int start, int inc) int temp; for(int i=start+inc;i=inc)&(dataj1) quickSort(data,i,k-1); if(j-k)1) quickSort(data,k+1,j); /* * param data * param i * param j * return */ private int partition(int data, int l, int r,int pivot) do while(data+lpivot); SortUtil.swap(data,l,r); while(l0) int j=stacktop-; int i=stacktop-; pivotIndex=(i+j)/2; pivot=datapivotIndex; SortUtil.swap(data,pivotIndex,j); /partition l=i-1; r=j; do while(data+lpivot); SortUtil.swap(data,l,r); while(lTHRESHOLD) stack+top=i; stack+top=l-1; if(j-l)THRESHOLD) stack+top=l+1; stack+top=j; /new InsertSort().sort(data); insertSort(data); /* * param data */ private void insertSort(int data) int temp; for(int i=1;i0)&(datajdataj-1);j) SortUtil.swap(data,j,j-1); 归并排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/* author treeroot* since 2006-2-2* version 1.0*/public class MergeSort implements SortUtil.Sort /* (non-Javadoc) * see org.rut.util.algorithm.SortUtil.Sort#sort(int) */ public void sort(int data) int temp=new intdata.length; mergeSort(data,temp,0,data.length-1); private void mergeSort(int data,int temp,int l,int r) int mid=(l+r)/2; if(l=r) return ; mergeSort(data,temp,l,mid); mergeSort(data,temp,mid+1,r); for(int i=l;i=r;i+) tempi=datai; int i1=l; int i2=mid+1; for(int cur=l;curr) datacur=tempi1+; else if(tempi1= THRESHOLD) mergeSort(data, temp, l, mid); else insertSort(data, l, mid l + 1); if (r mid) THRESHOLD) mergeSort(data, temp, mid + 1, r); else insertSort(data, mid + 1, r mid); for (i = l; i = mid; i+) tempi = datai; for (j = 1; j = r mid; j+) tempr - j + 1 = dataj + mid; int a = templ; int b = tempr; for (i = l, j = r, k = l; k = r; k+) if (a b) datak = tempi+; a = tempi; else datak = tempj-; b = tempj; /* * param data * param l * param i */ private void insertSort(int data, int start, int len) for(int i=start+1;istart) & datajdataj-1;j) SortUtil.swap(data,j,j-1); 堆排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/* author treeroot* since 2006-2-2* version 1.0*/public class HeapSort implements SortUtil.Sort /* (non-Javadoc) * see org.rut.util.algorithm.SortUtil.Sort#sort(int) */ public void sort(int data) MaxHeap h=new MaxHeap(); h.init(data); for(int i=0;idata.length;i+) h.remove(); System.arraycopy(h.queue,1,data,0,data.length); private static class MaxHeap void init(int data) this.queue=new intdata.length+1; for(int i=0;idata.length;i+) queue+size=datai; fixUp(size); private int size=0; private int queue; public int get() return queue1; public void remove() SortUtil.swap(queue,1,size); fixDown(1); /fixdown private void fixDown(int k) int j; while (j = k 1) = size) if (j size & queuejqueuej) /不用交换 break; SortUtil.swap(queue,j,k); k = j; private void fixUp(int k) while (k 1) int j = k 1; if (queuejqueuek) break; SortUtil.swap(queue,j,k); k = j; SortUtil:package org.rut.util.algorithm;import org.rut.util.algorithm.support.BubbleSort;import org.rut.util.algorithm.support.HeapSort;import org.rut.util.algorithm.support.ImprovedMergeSort;import org.rut.util.algorithm.support.ImprovedQuickSort;import org.rut.util.algorithm.support.InsertSort;import org.rut.util.algorithm.support.MergeSort;import org.rut.util.algorithm.support.QuickSort;import org.rut.util.algorithm.support.SelectionSort;import org.rut.util.algorithm.support.ShellSort;/* author treeroot* since 2006-2-2* version 1.0*/public class SortUtil public final static int INSERT = 1; public final static int BUBBLE = 2; public final static int SELECTION = 3; public final static int SHELL = 4; public final static int QUICK = 5; public final static int IMPROVED_QUICK = 6; public final static int MERGE = 7; public final static int IMPROVED_MERGE = 8; public final static int HEAP = 9; public static void sort(int data) sort(data, IMPROVED_QUICK); private static String name= “insert”, “bubble”, “selection”, “shell”, “quick”, “improved_quick”, “merge”, “improved_merge”, “heap” ; private static Sort impl=new Sort new InsertSort(), new BubbleSort(), new SelectionSort(), new ShellSort(), new QuickSort(), new ImprovedQuickSort(), new MergeSort(), new ImprovedMergeSort(), new HeapSort() ; public static String toString(int algorithm) return namealgorithm-1; public static void sort(int data, int algorithm) implalgorithm-1.sort(data); public static interface Sort public void sort(int data); public static void swap(int data, int i, int j) int temp = datai; datai = dataj; dataj = temp; JAVA 创建对象的几种方式User u1=new User();System.out.println(u1);User u2=(User)Class.forName(com.fh.entity.system.User).newInstance();System.out.println(u2);User u3=(User)u1.clone();/克隆 克隆对象必须实现Cloneable接口System.out.println(u3);System.out.println(1);/1.将 Java 对象中的基本数据类型和图元写入到一个 OutputStream 对象中。可使用 ObjectInputStream 读取这些对象ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(F:/FHADMINM/src/com/fh/entity/system/User.java);oos.writeObject(u1);ObjectInput input=new ObjectInputStream(new FileInputStream(F:/FHADMINM/src/com/fh/entity/system/User.java); System.out.println(input);User u4=(User)input.readObject();System.out.println(1221);System.out.println(u4);14.事物的特性有那几点?15.Spring 事务的隔离性,并说说每个隔离性的区别16.负载均衡技术原理,说说nginx负载及配置方法17.项目大并发如何处理?分布式项目会考虑哪些技术?18.用过的消息队列有哪些以及应用场景?把消息按顺序的加入队列,而由另外的程序程序/模块将其从队列中取出,并加以处理,从而形成一个基本的消息队列,使用消息队列可以很好的将任务异步的方式进行处理、或数据传送或存储等。当你频繁的向数据库插入数据、频繁的向搜索引擎提交数据等就可以采用消息队列来异步完成,还有较慢或较复杂的处理逻辑、有并发数量限制的处理逻辑,通过消息队列放在后台处理使用场景:短信服务,电子邮件服务,图片处理服务,支付服务,秒杀等19.简单说说数据库集群和负载均衡、分布式.20.说说连接池原理,连接池commit后连接是否关闭?21.说说LRU原理,java是怎么实现?22.写一个注解?Target的作用范围?Retention的作用及取值描述23.假如有一张表1000万数据需要进行分布式处理(多台服务同时处理),怎么设计?24.你知道哪些nosql数据库?说说redis和memcache的异同,内存数据结构?mongodb的数据结构?对应的应用场景?25.说说dubbox的工作原理?是否实现了负载?26.说说Collection和Collections的区别?Collection是个java.util下的接口,它是各种集合结构的父接口。Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。-1.java.util.concurrent包下有哪些类,越多越好?2.Linux常用命令有哪些?3.zookeeper的应用场景有哪些?4.JDK中BIO、NIO、AIO的区别?5.ThreadLocal的原理?6.用过哪些Web服务器?7.用过Apache或nginx吗?8.nginx怎么配置路径重定向?9.Linux上排查一般Java问题的流程,用到哪些工具?10.JDK内存溢出,怎么分析?11.用过哪些消息队列?12.Kafka相对于其他消息队列,有什
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广元市中石油2025秋招笔试模拟题含答案行测综合英语
- 小学语文最易误读的32个文史常识
- 国家能源保山市2025秋招笔试言语理解与表达题专练及答案
- 中国联通泸州市2025秋招半结构化面试模拟30问及答案
- 国家能源铜仁市2025秋招面试专业追问及参考财务审计岗位
- 南京市中储粮2025秋招面试专业追问题库信息技术岗
- 四川地区中石化2025秋招笔试模拟题含答案行测综合英语
- 南阳市中石化2025秋招面试半结构化模拟题及答案炼化装置操作岗
- 中国联通青海地区2025秋招笔试模拟题及答案
- 2025年健康农业考试试题及答案
- 第5章破甲弹课件
- 新能源电动汽车的发展历程
- 店铺签收确认书范本
- LS保温复合板施工方案
- 肾盂癌-疾病研究白皮书
- 共有权人同意卖房证明四篇
- 美学第二讲:美的本质
- 量子物理发展简史教学课件
- 第七讲 社会主义现代化建设的教育科技人才战略PPT习概论2023优化版教学课件
- 1.4.1 第2课时 空间中直线、平面的平行 课件(共14张PPT)
- (通桥【2018】8370)《铁路桥梁快速更换型伸缩缝安装图》
评论
0/150
提交评论