欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    JAVA面试题.doc

    • 资源ID:29931061       资源大小:111.50KB        全文页数:20页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    JAVA面试题.doc

    从网上找到一份人人网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再取余数,再连到一起?结果是:1007208134000.也可能最后再MOD一个10000000000000,题意没有读懂。 【选择题】已知: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.数组intn a=1,2,2,数组a满足以下条件,均为正整数,ai+1>=ai快速找出满足ai=i的数。答:这道题大家都没有想出O(logn)的算法,只好从常数上优化。可以看出的一个性质是数组下标每次都是固定地增加1,所以若ai>i,则接下来的ai-i-1个数一定不可能满足ai=i;如果ai<i,则之前的i-ai-1个数一定不可能满足ai=i,枚举的时候可以从两头往中间枚举,增量为|ai-i|。时间复杂度依然是O(n),但是比直接枚举要快。代码如下:package com.test; import java.util.Scanner; public class Main1     private static Integer a = new Integer500;    private static String str;     public static int find(int l, int r)        if (l > r)           return -1;       if (al = l)           return l;       if (ar = r)           return r;       int left_increment = Math.abs(al - l);       int right_increment = Math.abs(ar - 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+)           ai = Integer.parseInt(stri);       int pos = find(0, str.length - 1);       if (pos = -1)           System.out.println("不存在满足ai=i的数");       else           System.out.println("找到满足条件的数:a" + pos + "=" + pos);       3.数组 intn a=1,2,3,3,4,3,2数组a中的数均为正整数,求满足ai+at=ax,其中i,t,x均为正数,且小于等于n,求最大ax.答:本人水平有限,目前只想到O(n2*logn)时间复杂度的算法。先将数组排序,然后从后往前枚举ax,对于每一个ax,从0到ax-1,枚举ai的值,再二分查找at是否存在,代码如下:package com.test; import java.util.Scanner; public class Main1     private static Integer a = new Integer500;    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 (ai < mid)              i+;           while (aj > mid)              j-;           if (i < j)               int t = ai;              ai = aj;              aj = 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 (amid = t)              return true;           if (amid < t)              l = mid + 1;           if (amid > 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(ai - aj)                  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+)           ai = Integer.parseInt(stri);        quicksort(0, str.length - 1);        int ff = find();       if (ff != -1)           System.out.println("最大的ax为:" + aff);       else           System.out.println("没有在数组中找到满足条件的数");     我的朋友廖宇翔大神说了一个O(n2)的算法,之前我也想到了,但是我误认为这是一个错误的算法,会出现某些状态没有枚举到的情况,不过在大神的开导下我豁然开朗。仍然是先快速排序,从后向前枚举ax,然后设定两个指针p,q分别指向a0和ax-1,从两边往中间扫,如果两个指针指向的数相加大于ax,则q指针向左移(若存在ai和at满足条件,那么此时i和t必然在数组下标为0到x-2的区间内);如果个指针指向的数相加小于ax,则p指针向右移(同理)。代码如下: package com.test; import java.util.Scanner; public class Main1     private static Integer a = new Integer500;    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 (ai < mid)              i+;           while (aj > mid)              j-;           if (i < j)               int t = ai;              ai = aj;              aj = 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 (ap + aq > ai)                   q-;                  continue;                            if (ap + aq < ai)                   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+)           ai = Integer.parseInt(stri);        quicksort(0, str.length - 1);        int ff = find();       if (ff != -1)           System.out.println("最大的ax为:" + aff);       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 InvocationHandlerprivate 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:无聊之前记一下核心代码:我现在非常无聊!无聊之后又记一下20人一网又聊聊 在:一一试 ( 题试                     论言位欢平个出浅受一做 . 向 三 =征 : _ )_ _ _ _( ,_ 多 态 ( ; 类 _区) 和 ) ) , 常常要不,异需所出断被间以) 锁锁) 对放 是 ( = 法方 的 回 志 ) _ , _ _ , _ _ _ _ ; = 未_ 其 用类的= _:同,方 。 是 常 , . . ; . . ; . 类 ; 步同证来方 写定方( 重 必) 则 回( 必( 返 果数相否是个比( 动会,的个比方 调错会类 , , 写不) ) , ,) . 的 区 ) _ _=_ _ _ ) 保 符 . .一的安程 全程 中象对生化是 对符新生化次串字 类   ":一之"_ _ . _  _) _ _  _下前_聊 . ) ; . :类 ;!聊现码核" . ( 置  及 _ _ 可即常._. 类  ) ; 口 下现序。代和心现模 用以程 。接定无,中象用态;复节象问藏户向优。象这控理供他为, 外式实点的此出,将程并应一自并计的所一分两缀文获夹遍察出出绝其,尾 ,.以夹定扫 )"条满中数( .     ) : 的( .     =  )(  ) . ,   ) ( =   +; ;= (  ) (  ) . ) ( =    -                    +      +                -      + (     =     -    - ; = )  )         =    =       -       +     (   -   +          >   ) . 下)同移指则小相指指如间的到标数必 此,满存移指则 大数指指果扫中两-0别,个设, 枚向序快然。豁导的大况情有没些会算错是为是到也前的 一大宇 )的满组在" .   )+:的( .    !(  )(  ) . ( ) (   +; . < =  )"  ) =  ) (    )           ) (    + ; =    -0>   (         > (    =     < (        = (   > (   <   = ,=   ), ) ,                        -      (   +       -   +     >)+   + -    = , 0 . 下码在否查再的枚 0, 每对 枚往然,数。度杂 (想前平人 最 于,为,其= 求正数中, 组 ) +=" +"的件到" .     )数= 存" .    -=   ) . , ) . =   + . < =  ) .  )   ) (   ) - , (   ) . ) (       =       =       (   , 0 = . 下码快举比但 是杂时 |量枚间从候举枚足能一个- 前则果 满定数 - 接 以加定次每是性一以。常只算的 出没家数 满快 整,下满数 数率效执着然底实 用比种败操 改果变线否的测来换较 的处是的其作子且安供 的不以了0值那,的执后了变值 栈+ 中 此在压把执程+ 执的线如。为 +行,。中边值弹从中栈存右号,程执句赋 的线理其并高且安并效程到类哪 说全么为程 在作明安果的程是+中上以=0 题释不 .= .=,. ,+/ (多值 完执代 题念问能类同问能同子问能不任类问能方的类(此的饰问个有类义序 题念就就. 程  互 步)为现这作完线等 线需线符才修要象而对某的确 ,继继够. 只  能  够能 实)正列类义 的正 以,动以 和 化转不之 间 的个是比的然 ) .) )( ) = = 为返些). ) ) 知题懂读意00000一再能.0 0 ?到再余 除_ 据 度造余用, , , ,0性性离性一性 _,_,_征特是不,是 _口 否 ,

    注意事项

    本文(JAVA面试题.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开