2017-java面试总结1.2

1、创建线程的集中不同的方式?你喜欢哪一种?

答:有三种方式来创建线程:继承Thread类  、实现Runnable接口、应用程序可以使用Excete()框架来创建线程池。

实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类,即单继承,多实现的原因导致。

2、线程的状态有几种?

答:Runnable:线程准备运行,不一定立马就能开始执行。

      Running :正在执行的线程。

     Waiting:线程处于阻塞状态,等待外部处理结束。

    Sleeping:线程被强制睡眠。

   Blocked:等待I/O操作完成。

   Blocked on Synchronization:等待获取锁。

Dead:线程完成了执行。

3、接口和抽象类的区别?

答:1)、接口中所有的方法隐含的都是抽象的。       抽象类 则可以包含抽象和非抽象方法。

2)、接口支持多实现。抽象类支持单继承。

3)、实现接口后必须要实现接口声明的所有的方法(如:Dao(DaoImple)\Service(ServoceImple)),继承类后可以不实现抽象类声明的所有方法,(当前类必须是抽象的)。

4)、java接口中的声明的变量默认都是final的,抽象类可以包含非final。

5)、接口中所有的方法都有事public ,抽象类中所有的函数方法可以是任何修饰符的方法。

6)、接口是比抽象类更抽象的类,绝对抽象,不可以被实例化,抽象类也不可以被实例化,但是main方法可以调用。

4、在监视器(Monitor)内部,是如何做到线程同步的?

答:监视器和锁在java虚拟机中是一块使用的。监视器监视一块同步代码块。确保了一次只有一个线程执行同步代码块,每一个监视器都和一个对象引用相关联,线程在获取锁之前不允许执行同步d代码。

5、线程死锁是什么?

答:当两个线程循环依赖一对同步对象时,会发生这种情况,假如:一个线程A进入对象a的监视器,如果Class B中的线程试图调用对象A的任何同步方法,--------出现线程堵塞。但是,如果对象A中的线程也试图调用对象A中的任何同步方法,那么会永远的等待下去。

死锁特点:

(1)、死锁通常很少发生,只有当两个线程恰好一这种方式获取cpu时钟周期时才会发生死锁。

(2)、死锁可能涉及更多的线程以及更多的同步对象。

总结:获取当前类的监视器(类锁:只允许一个线程操作的权限)。

线程依赖:前面线程在堵塞。后面线程进不去。-----死锁。

6、java集合类的接口?

答:java集合类提供了一套设计良好的支持对一组对象进行操作接口的类。

基本接口:Colletion、Set(不可重复)、List(有序可重复)、Map(key\value)、

(问:Cllection和Collections的区别?)

7、(1)HashMap和Hashtable有什么区别?

答:都实现了Map接口,都具有Map的特点。

       HashMap允许键和值都是null,Hashtable不允许为null,

      Hashtable是同步的,hashMap不是,hashtable是线程安全的,hashMap不是线程安全的。

     HashMap提供了应用于迭代的键的集合。

      (2)Array和ArrayList的区别?

       Array可以包含基本数据类型和对象类型,ArrayList只能包含对象类型。

      Array大小是固定的,ArrayList的大小是动态变化的。

     ArrayList提供了更多的方法和特性,比如:addAll().remove();

    对于基本数据类型,集合使用自动拆装箱来减少编码的工作量。处理基本数据是效率比较慢。

     (3)ArrayList和LinkList的区别?

答:两者都实现了List接口,ArrayList是基于索引的数据接口,底层是数组。

LinkedList是以元素列表的形式存储它的数据,每一个元素都和它的前一个和后一个元素链接在一起的。

相对于ArrayList,LinkedList的插入、添加、删除操作速度更快,因为当元素被添加到集合任意位置的时候,不需要象数组那样重新计算大小或者是更新索引。

LinkedList比ArrayList更占内存,因为LinkedList为每一个节点储存了两个引用,一个指向前一个元素,一个指向下一个元素。

8、Comparable和Comparator接口的区别?

答:java提供了只包含一个compareTo()方法的Comparable接口。compareTo();可以对两个对象排序,java提供了包含compare()和equals()两个方法的Comparator接口。compare()方法用来给两个输入参数排序,返回负数,0,正数表明第一个参数是小于,等于,大于第二个参数。equals()方法需要一个对象作为参数,它用来决定输入参数是否和comparator相等。只有当输入参数也是一个comparator并且输入参数和当前comparator的排序结果是相同的时候,这个方法才返回true。

9、HashSet和TreeSet的区别?

HashSet是由一个hash表来实现的,元素是无序的,add()\remove()\contain()。TreeSet是由树形结构来实现的,内部元素是有序的,add()\remove()\contain().

10、String s=new String("xyz");创建了几个字符串对象?

答:两个对象,一个是静态区的xyz,一个是用new创建在堆中的对象。

11、final、finally、finalize的区别?

答:final:修饰符(关键字)声明类:意味着不能再派生新的子类,不可被继承。声明变量:可以保证在使用中不可被改变,一旦赋值不可修改,声明方法:子类中不可被重写。                                      finally:总是最后执行的代码块,finally{//释放外部资源的代码块}。                                                                finalize:Object类中定义的方法,java中允许使用finalize()方法在垃圾收集器将对象从内存中清除的工作,这个方法是由垃圾收集器在销毁对象时调用的,通过重写finalize()方法可以整理系统资源或者执行其他清理工作。

12、Collection和Collections的区别?

答:Collection是一个接口,它是Set、List等容器的父接口;Collections是个一个工具类,提供了一系列的静态方法来辅助容器操作,这些方法包括对容器的搜索、排序、线程安全化等等。

13、启动一个线程是调用start()还是调用run()?

答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机制处于可以允许状态,这并不意味着线程就会立即运行。run()方法是线程启动后进行回调的方法。

14、简述synchronized和java.util.concurrent.locks.Lock的异同?

答:Lock是Java 5以后引入的新的API,和关键字synchronized相比主要相同点:Lock 能完成synchronized所实现的所有功能;主要不同点:Lock有比synchronized更精确的线程语义和更好的性能,而且不强制性的要求一定要获得锁。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且最好在finally 块中释放(这是释放外部资源的最好的地方)。

15、java如何实现序列化?

答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决对象流读写操作时可能引发的问题(如果不进行序列化可能会存在数据乱序的问题)。

要实现序列化,需要让一个类实现Serializable接口,该接口是一个标识性接口,标注该类对象是可被序列化的,然后使用一个输出流来构造一个对象输出流并通过writeObject(Object)方法就可以将实现对象写出(即保存其状态);如果需要反序列化则可以用一个输入流建立对象输入流,然后通过readObject方法从流中读取对象。序列化除了能够实现对象的持久化之外,还能够用于对象的深度克隆。

16、java中有几种流?

答:字节流和字符流。字节流继承于InputStream、OutputStream,字符流继承于Reader、Writer。在java.io 包中还有许多其他的流,主要是为了提高性能和使用方便。关于Java的I/O需要注意的有两点:一是两种对称性(输入和输出的对称性,字节和字符的对称性);二是两种设计模式(适配器模式和装潢模式)。

17、statement和PreparedStatement的区别?那个性能更好?

答:与Statement相比,①PreparedStatement接口代表预编译的语句,它主要的优势在于可以减少SQL的编译错误并增加SQL的安全性(减少SQL注射攻击的可能性);②PreparedStatement中的SQL语句是可以带参数的,避免了用字符串连接拼接SQL语句的麻烦和不安全;③当批量处理SQL或频繁执行相同的查询时,PreparedStatement有明显的性能上的优势,由于数据库可以将编译优化后的SQL语句缓存起来,下次执行相同结构的语句时就会很快(不用再次编译和生成执行计划)。

18、事务的ACID是指什么?

答:原子性(Atomic):事务中各项操作,要么全做要么全不做,任何一项操作的失败都会导致整个事务的失败;一致性(Consistent):事务结束后系统状态是一致的;隔离性(Isolated):并发执行的事务彼此无法看到对方的中间状态;持久性(Durable):事务完成后所做的改动都会被持久化,即使发生灾难性的失败。通过日志和同步备份可以在故障发生后重建数据。

19、如何通过反射创建对象?

答:方法1:通过类对象调用newInstance()方法,例如:String.class.newInstance();方法2:通过类对象的getConstructor()或getDeclaredConstructor()方法获得构造器(Constructor)对象并调用其newInstance()方法创建对象,例如:String.class.getConstructor(String.class).newInstance(“Hello”);

20、下次:讲述面试中遇到的框架问题:Spring、SpringMVC、Hibernate、Mybatis\ibatis、Struts、SpringBoot、SpringCloud等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,531评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,050评论 0 62
  • 转自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帅199207阅读 8,486评论 3 93
  • 那年,风雪很嚣张 铺天盖地染白了山梁 天地沉入一片混沌 一条老街却从睡梦中苏醒 托起身后的雪山 重叠成一座洁白的冰...
    卓女阅读 185评论 5 8
  • 原本设想人生应该是文艺清新范,却不想变成了隐忍汉子风。
    七月喝雪碧阅读 139评论 0 0