2023年JAVA面试题资料.doc
《2023年JAVA面试题资料.doc》由会员分享,可在线阅读,更多相关《2023年JAVA面试题资料.doc(16页珍藏版)》请在咨信网上搜索。
从网上找到一份人人网JAVA的笔试题,做了一下,受益匪浅,贴出来,个人水平有限,欢迎各位留言讨论。 JAVA 笔试题 【填空题】 java面向对象的三大特性是:_______,_______,_______. 答:封装,继承,多态。 sleep()和wait()的区别是___________________________. 答:(1)sleep()不释放对象锁,wait()释放对象锁。 (2)sleep()可以在时间未届时被打断,抛出异常,所以需要捕获异常,wait不需要捕获异常。 (3)sleep()是Thread类的方法,wait()是Object类的方法。 一个类被JVM回收的标志是_______________________. 答:类未被其他的活动类引用。 重写JAVA equals方法,需要同时重写:_____________. 答:hashCode方法。这是JAVA的常规约定,假如不重写hashCode,使用HashMap,HashSet等类时会出现错误。调用equals()方法比较两个对象的时候,编译器会自动调用hashCode()来比较两个对象是否产生相同的整数结果.equals()返回true,则hashCode()必返回true.equals()返回false,则hashCode()必返回false.那么重写equals()方法,肯定必须重写hashCode方法来保证两者的同步. String, StringBuilder, StringBuffer的区别:____________. 答:String保存字符串常量,字符串的每次变化都会产生一个新的字符串对象。StringBuilder和StringBuffer都是可以变化而不产生新的对象的。其中,StringBuffer是线程安全的,StringBuilder是线程不安全的。 增长数据表一列的SQL语法:_____________________. 答:alter [table] add [列]. JSP的内置对象及方法request,_______,______,_______.(常用三个即可) 答:response,session,out,page,application,exception,pageContext,config. List,Set,Map是否继承自Collection接口:_____________. 答:List和Set 是的,Map不是。 数据库事务特性________,________,________,________. 答:ACID,原子性,一致性,隔离性,持久性。 针对10,100,32,45,58,126,3,29,200,400,0运用除商留余法构造长度为13的数据的HASH:________________________________. 答:所有除以25再取余数,再连到一起?结果是:0.也也许最后再MOD一个00,题意没有读懂。 【选择题】 已知: Integer i=new Integer(42); Long l=new Long(42); Double d=new Double(42.0); 下面哪些选项返回结果为true: A.(i==l) B.(i==d) C.(d==l) D.(i.equals(d)) E.(d.equals(l)) F.(i.equals(l)) G.(l.equals(42L)) 答:ABC显然是错的,==比较的是两个对象的地址。Long 和 Double之间,Integer 和 Double之间都是不能自动转化的。但是Long和Integer之间可以自动转化,所以,F和G是对的的。 关于用abstract定义的类,下列说法对的的是() 可以被实例化 B.不可以派生子类 C.不能被继承 D.只能被继承 E.可以被抽象类继承 答:概念题,DE是对的的。 当线程A使用某个对象,而此对象又需要线程B修改后才干符合A线程的需要,这时线程A就要等待线程B完毕修改工作,这种现象称为() 线程的同步 B.线程的互斥 C.线程的调度 D.线程的就绪 答:概念题,C。 在JAVA程序中定义一个类,类中有一个没有访问权限修饰的方法,则此方法() A. 类外的任何方法都能访问它 B. 类外的任何方法都不能访问它 C. 类的子类和同包类能访问它 D. 只有类和同包类才干访问它 答:概念题,D。 有如下程序代码,在执行完后x和y的值是多少() Int x=8,y=2,z; x=++x*y; z=x/y++; x=16,y=2. X=16,y=4. X=18,y=2. X=18,y=3. 答:D,不解释。 【问答题】 int i=0;i=i++;以上操作中i=i++;是线程安全的吗?假如不安全请说明上面操作在JVM中执行过程,为什么不安全?并且说出JDK中哪个类能达成以上程序的效果,并且是线程安全并且高效,并简述其原理。 答:不是线程安全的。JVM中,赋值语句的执行过程是,先把赋值号右边的值存入一个栈中,再从栈中弹出到赋值号左边的变量中。所以,在执行i=i++后i的值为0。但是假如在多线程的环境下执行i=i++,线程A中执行到把i压入栈,而在此之前线程B中执行到把i++,那么栈中i的值就已经改变了,最后线程A执行弹栈的操作,那么i的值就不是0了,所以是线程不安全的。AtomicInteger中提供了线程安全且高效的原子操作。其底层的原理是运用解决器的CAS(比较并互换)操作来检测栈中的值是否被其他线程改变,假如被改变则CAS操作失败。这种实现方法比用sycronized来实现同步,底层显然有着更高的执行效率。 2.数组int[n] a={1,2,2,……}数组a满足以下条件,均为正整数,a[i+1]>=a[i]快速找出满足a[i]=i的数。 答:这道题大家都没有想出O(logn)的算法,只好从常数上优化。可以看出的一个性质是数组下标每次都是固定地增长1,所以若a[i]>i,则接下来的a[i]-i-1个数一定不也许满足a[i]=i;假如a[i]<i,则之前的i-a[i]-1个数一定不也许满足a[i]=i,枚举的时候可以从两头往中间枚举,增量为|a[i]-i|。时间复杂度仍然是O(n),但是比直接枚举要快。代码如下: package com.test; import java.util.Scanner; public class Main1 { private static Integer[] a = new Integer[500]; private static String[] str; public static int find(int l, int r) { if (l > r) return -1; if (a[l] == l) return l; if (a[r] == r) return r; int left_increment = Math.abs(a[l] - l); int right_increment = Math.abs(a[r] - r); return find(l + left_increment, r - right_increment); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String string = scanner.nextLine(); str = string.split(" "); for (int i = 0; i < str.length; i++) a[i] = Integer.parseInt(str[i]); int pos = find(0, str.length - 1); if (pos == -1) System.out.println("不存在满足a[i]==i的数"); else System.out.println("找到满足条件的数:a[" + pos + "]==" + pos); } } 3.数组 int[n] a={1,2,3,3,4,3,2……}数组a中的数均为正整数,求满足a[i]+a[t]=a[x],其中i,t,x均为正数,且小于等于n,求最大a[x]. 答:本人水平有限,目前只想到O(n^2*logn)时间复杂度的算法。先将数组排序,然后从后往前枚举a[x],对于每一个a[x],从0到a[x-1],枚举a[i]的值,再二分查找a[t]是否存在,代码如下: package com.test; import java.util.Scanner; public class Main1 { private static Integer[] a = new Integer[500]; private static String[] str; public static void quicksort(int l, int r) { if (l >= r) return; int i = l - 1, j = r + 1; int mid = a[(l + r) >> 1]; while (i < j) { i++; j--; while (a[i] < mid) i++; while (a[j] > mid) j--; if (i < j) { int t = a[i]; a[i] = a[j]; a[j] = t; } } quicksort(l, j); quicksort(j + 1, r); } public static boolean fen_2(int t) { int l = 0, r = str.length - 1, mid; while (l < r) { mid = (l + r) >> 1; if (a[mid] == t) return true; if (a[mid] < t) l = mid + 1; if (a[mid] > t) r = mid; } return false; } public static int find() { for (int i = str.length - 1; i >= 0; i--) { for (int j = 0; j < i; j++) if (fen_2(a[i] - a[j])) return i; } return -1; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String string = scanner.nextLine(); str = string.split(" "); for (int i = 0; i < str.length; i++) a[i] = Integer.parseInt(str[i]); quicksort(0, str.length - 1); int ff = find(); if (ff != -1) System.out.println("最大的a[x]为:" + a[ff]); else System.out.println("没有在数组中找到满足条件的数"); } } 我的朋友廖宇翔大神说了一个O(n^2)的算法,之前我也想到了,但是我误认为这是一个错误的算法,会出现某些状态没有枚举到的情况,但是在大神的开导下我豁然开朗。仍然是先快速排序,从后向前枚举a[x],然后设定两个指针p,q分别指向a[0]和a[x-1],从两边往中间扫,假如两个指针指向的数相加大于a[x],则q指针向左移(若存在a[i]和a[t]满足条件,那么此时i和t必然在数组下标为0到x-2的区间内);假如个指针指向的数相加小于a[x],则p指针向右移(同理)。 代码如下: package com.test; import java.util.Scanner; public class Main1 { private static Integer[] a = new Integer[500]; private static String[] str; public static void quicksort(int l, int r) { if (l >= r) return; int i = l - 1, j = r + 1; int mid = a[(l + r) >> 1]; while (i < j) { i++; j--; while (a[i] < mid) i++; while (a[j] > mid) j--; if (i < j) { int t = a[i]; a[i] = a[j]; a[j] = t; } } quicksort(l, j); quicksort(j + 1, r); } public static int find() { for (int i = str.length - 1; i >= 0; i--) { int p = 0, q = i - 1; while (p <= q) { if (a[p] + a[q] > a[i]) { q--; continue; } if (a[p] + a[q] < a[i]) { p++; continue; } return i; } } return -1; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String string = scanner.nextLine(); str = string.split(" "); for (int i = 0; i < str.length; i++) a[i] = Integer.parseInt(str[i]); quicksort(0, str.length - 1); int ff = find(); if (ff != -1) System.out.println("最大的a[x]为:" + a[ff]); else System.out.println("没有在数组中找到满足条件的数"); } } 4.用JAVA扫描指定文献夹下面所有以.txt,.log结尾的文献,并将其绝对途径输出。 答:重要考察递归遍历文献夹以及获取文献后缀名两部分。 简要介绍一下你所熟悉的设计模式,并给自己假设一种应用场景,并用程序将其实现,并指出如此设计的优缺陷(单实例模式除外) 答:proxy模式,意图为其他对象提供一种代理以控制对这个对象的访问。优点: 向客户端隐藏了访问某个对象的细节及复杂性;可以动态地调用一个对象中的方法,且无需实现固定的接口。在AOP编程中,可以运用proxy模式来实现核心代码和日记代码的分离。程序实现如下: InterfaceCore接口: package com.test.interceptor; public interface InterfaceTarget { public void docore(); } core类: package com.test.interceptor; public class Target implements InterfaceTarget { public void docore() { System.out.println("核心代码:我现在非常无聊!"); } } MyLogger类: package com.test.interceptor; public class MyLogger { public void before(){ System.out.println("无聊之前记一下"); } public void after(){ System.out.println("无聊之后又记一下"); } } MyProxy类: package com.test.interceptor; import java.lang.reflect.Proxy; public class MyProxy { public Object getProxy(Object object){ MyHandler myhandler=new MyHandler(object); return Proxy.newProxyInstance(object.getClass().getClassLoader(), object.getClass().getInterfaces(), myhandler); } } MyHandler类: package com.test.interceptor; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; public class MyHandler implements InvocationHandler{ private Object object; private MyLogger logger = new MyLogger(); public MyHandler(Object object){ this.object=object; } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object result = null; logger.before(); result = method.invoke(object, args); logger.after(); return result; } } Client类: package com.test.interceptor; public class Client { public static void main(String args[]){ InterfaceCore core=new Core(); MyProxy myproxy=new MyProxy(); InterfaceCore proxy = (InterfaceCore)myproxy.getProxy(core); proxy.docore(); } } output: 无聊之前记一下 核心代码:我现在非常无聊! 无聊之后又记一下- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 JAVA 试题 资料
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文