J2SE基础

  1. 九种基本数据类型的大小,以及它们的封装类

    • byte 8 Byte
    • char 16 Character
    • short 16 Short
    • int 32 Integer
    • long 64 Long
    • float 32 Float
    • double 64 Double
    • void Void
  2. Switch能否用string做参数?
    • java7以前不可以,现在可以了
  3. equals与==的区别
    • equals检查内容是否一致
    • ==检查内存存储的地址是否一致
    • equals相等hashcode必相等;hashcode相等equals可能不相等(地址冲突的情况)
  4. Object有哪些公用方法?
    • hashCode(); wait(); notify(); equals(); getClass(); toString(); clone(); finalize();
  5. java的四种引用,强弱软虚,用到场景
  6. Hashcode的作用
    • 用来比较两个对象是否相同,比如Set的相同就是通过hashcode来比较的
  7. ArrayList, LinkedList, Vector的区别
    • 都实现了List接口,vector是线程安全的
    • ArrayList是连续内存,查找方便,LinkdeList是链表结构,增删方便
    • Collections Java集合框架中,用来操作集合对象的工具类,如Contains.sort()方法
    • Collection
      • List(有序允许重复)

        • LinkedList
        • ArrayList
        • Vector
          • Stack
      • Set(无序不允许重复)
        • HashSet
        • TreeSet
    • Map
      • HashMap
      • TreeMap
      • HashTable
  8. String, StringBuffer, 与StringBuilder的区别
    • String是字符串常量,不可改变,其余的是字符串变量,主要用于字符串的修改,buffer线程安全,builder非线程安全
  9. Map, Set, List, Queue, Stack的特点与用法
    • 键值对: hashmap, hashtable, weakhashmap, sortedmap
    • 不重复集合: sortedset, hashset
    • 有序数列: linkedList, arrayList, vector
  10. HashMap和HashTable的区别
    • hashtable线程安全,不接受键值对为null
  11. HashMap和concurrentHashMap的区别
    • HashMap实际上是数组加链表的结构,链表中节点至少有key, value, hash, next等值
    • HashMap的put方法的工作原理?
      • 对key调用hashcode方法,返回的hashcode用于找到bucket位置(即数组对应索引)存储entry对象
      • 在bucket中key对象和值对象都存储
    • HashMap中当两个key的hashcode相同会发生什么?
      • 因为hashcode相同,所以它们的bucket位置相同会发生碰撞,会将这个对象存储到LinkedList的头部
    • HashMap中如果两个key的hashcode相同,如果获取对象?
      • 找到bucket的位置之后,通过调用key的equals方法来找到LinkedList中正确的节点
    • HashMap中超过了装载因子0.75后将会发生什么?
      • 开辟一个两倍大小的bucket数组
      • 将原来的对象放入到新的bucket数组中,再哈希(rehashing)
  12. TreeMap, HashMap, LinkedhashMap的区别
  13. try catch finally, try里有return, finally依然执行
    • try块里有return,finally块里也有return,返回的是finally块中的值
  14. Throwable是万恶之源,有两个儿子error和Exception
    • error是硬伤
    • Exception常用的RuntimeException和非RuntimeException
    • throw是抛出异常,throws是抛出异常的声明
  15. Java面向对象的三个特征与含义
    • 封装: 方法与属性封装
    • 继承: 节省代码,扩展
    • 多态: 父类引用指向不同的实a例,重写,重载
  16. Override和Overload的含义与区别
    • 重写: 子类中有一个父类中名字参数一样的函数,返回值小于等于父类,抛出的异常小于等于父类,访问修饰符大于等于父类
    • 重载: 同类当中方法名相同,参数类型不同,数目不同,顺序不同,方法返回值和访问修饰符可以不同
    • 访问修饰符
      • private 本类中可以访问
      • public 任何地方都能访问
      • protected 同包内的类和包外的子类能访问
      • 默认 同包内能访问
  17. Interface与abstract类的区别
    • 一个是类,一个是接口
    • 接口内部变量必须是public static final
    • abstract可以有抽象的方法,接口全部没实现
    • 访问权限: 接口只有public和protected修饰
  18. 实现多线程的两种方法: 继承Thread类和实现Runable接口
    • 线程的waiting状态和blocked状态有什么区别?

      • waiting状态,该线程已经获得了锁,并执行了wait方法,等待另一个线程的动作,比如notify或notifyAll
      • blocked状态,该线程未获得锁,等待锁的释放
  19. 如何停止一个线程?
    • 使用退出标志,使线程正常退出
    • 使用interrupt方法
      • 线程thread1内部调用this.interrupted()方法或Thread.interrupted()方法,如果为true说明其它线程(主线程)已经设置了thread1的interrupt flag标志为true,中断thread1异常,throw new InterruptedException()
      • 主线程(外部线程)通过调用线程thread1的interrupt方法,使得thread1的中断标志(interrupt flag)为true
      • interrupted方法,测试当前线程是否已经中断,并清除中断状态
      • isinterrupted方法,测试当前是否已经中断,但不清除中断状态
      • 具体表现为: 如果当前线程发生了中断,则第一次调用interrupted方法会输出true,第二次调用会输出false,而isInterrupted方法则不会发生这种情况,当前线程中断后,则会两次输出false
  20. 线程同步的方法:sychronized、lock、reentrantLock等。
    • sychronized:修饰的方法,块一次只有一个线程可以访问,其他的阻塞
    • lock:一个接口,用于try的finally中可以主动的释放锁,trylock方法可以指定等待时间,灵活
    • reentrantLock:lock的实现类
  21. 要注意Set集合中contains方法和List集合中contians方法的本质究竟有什么区别
    • Set集合中的contains方法要满足两个条件hashCode方法返回的哈希码要相等,同时对象的equals方法也要相等
    • List集合中的contains方法只需要满足hashCode返回哈希码相同就行了
  22. comparable接口和comparator接口
    • comparable默认比较规则
    • comparator临时比较规则
    • 要想使用Contains.sort方法,就得实现comparable接口,为什么String可以进行比较,因为它实现了comparable接口
  23. Java中的锁
    • ReentrantLock可重入锁,唯一实现了Lock接口的方法,注意lock()方法的使用,一般在try中lock(),在finally块中unlock()
    • 可中断锁 lockInterruptibly方法,如果线程没有竞争到锁,即处于阻塞队列中,此时可以响应外部的中断
    • 公平锁(synchronized是非公平锁)
    • ReentrantReadWriteLock读写锁, 一般在try中rwl.readLock().lock(); 在finally中rwl.readLock().unlock()
  24. ThreadPool用法与优势
    • newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
    • newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
    • newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
    • newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
  25. wait()和sleep()的区别
    • sleep没有放弃对象锁,wait放弃了
  26. 泛型常用特点,Lis《String》能否转为List《Object》,灵活变换参数类型,可以
  27. 解析XML的几种方式的原理与特点:DOM、SAX、PULL。
    • DOM:获取整个DOM树,便于节点操作,
    • SAX:一边解析,一边处理数据,必须自己维护父子关系
    • JDOM:比较适合比较小的,不需要实时处理的
    • DOM4J:可移植性差

java笔试面试题准备的更多相关文章

  1. Java笔试面试题整理第八波

    转载至:http://blog.csdn.net/shakespeare001/article/details/51388516 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  2. Java笔试面试题整理第六波(修正版)

    转载至:http://blog.csdn.net/shakespeare001/article/details/51330745 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  3. Java笔试面试题整理第五波

    转载至:http://blog.csdn.net/shakespeare001/article/details/51321498 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  4. Java笔试面试题整理第四波

    转载至:http://blog.csdn.net/shakespeare001/article/details/51274685 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  5. Java笔试面试题整理第三波

    转载至:http://blog.csdn.net/shakespeare001/article/details/51247785 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  6. Java笔试面试题整理第二波

    转载至:http://blog.csdn.net/shakespeare001/article/details/51200163 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  7. Java笔试面试题整理第一波

    转载至:http://blog.csdn.net/shakespeare001/article/details/51151650 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  8. Java笔试面试题007

    Java笔试面试题007 1.请用正則表達式匹配出QQ号(如果QQ号码为5-10位). 解答: ^ \d{5,10}$ 2.String, StringBuffer StringBuilder的差别. ...

  9. Java笔试面试题001

    Java笔试面试题之中的一个 1.Struts1中actionform和action属于MVC哪一层,为什么? 解答:actionform和action属于MVC的Model层,Action用来处理业 ...

  10. OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)

    Comparable和Comparator是JDK中定义的2个比较接口,很相似,但又有所不同. 这2个接口的作用和区别也是Java中的常见经典面试题. 下面我们就来详细介绍下这2个接口的定义.作用.区 ...

随机推荐

  1. php设计模式课程---7、装饰器模式如何使用

    php设计模式课程---7.装饰器模式如何使用 一.总结 一句话总结: 装饰器的核心是获取了文章类整个类,而不是获取了文章内容,有了这个文章类,我想给你加多少装饰就给你加多少装饰(将文章这个类封装进去 ...

  2. poj2395

      #include<iostream> #include<cstdio> #include<algorithm> #include<cstdlib> ...

  3. 1045 Favorite Color Stripe (30)(30 分)

    Eva is trying to make her own color stripe out of a given one. She would like to keep only her favor ...

  4. Tomcat配置MySql连接池问题

    配置过程如下: 1.修改Tomcat—>conf目录下的context.xml文件 <Context path="/DBTest" docBase="DBTe ...

  5. oracle rac的特征

    oracle rac的特征 1. spfile 参数文件需要被所有节点访问,需要放在共享存储上. 2. Redo ThreadRAC 环境下有多个实例,每个实例都需要有自己的一套Redo log 文件 ...

  6. [转]由Tencent://Message协议想到的一个解决方案

    源代码下载:http://files.cnblogs.com/phinecos/HelloWorldProtocal.rar 前天在BruceZhang的一篇博文<求助:如何在ASP页面中调用W ...

  7. HDOJ2043(JAVAset容器练习)

    import java.io.PrintWriter; import java.util.HashSet; import java.util.Scanner; public class Main { ...

  8. MongoDB分析工具之二:MongoDB分析器Profile

    MongoDB优化器profile 在MySQL 中,慢查询日志是经常作为我们优化数据库的依据,那在MongoDB 中是否有类似的功能呢?答案是肯定的,那就是MongoDB Database Prof ...

  9. spring--设置注入VS构造注入

    1.在传统的程序设计中,调用亲自创建被调用者的实例,即由程序控制“对象之间的依赖关系”,这种方式的耦合度比较高:控制反转就是将由程序控制的“对象间的依赖关系”转交给Ioc容器来进行控制,被调用者的实例 ...

  10. 自定义滚动条jQuery插件- Perfect Scrollbar

    主要特性: 不需要修改任何的元素的css 滚动条不影响最初的页面布局设计 滚动条支持完整的自定义 滚动条的尺寸和位置会随着容器尺寸或者内容的变化而变化 依赖于jQuery和相关几个类库 不需要定义宽度 ...