Java常见面试题总结(二)

一.数组的定义

  用来存储固定大小的同类型元素

二.构造器

  用于创建对象并初始化对象属性的方法,叫“构造方法”,也叫“构造器”;构造器在类中定义

三.冒泡算法

  冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。如上例:第一趟比较之后,排在最后的一个数一定是最大的一个数,第二趟排序的时候,只需要比较除了最后一个数以外的其他的数,同样也能找出一个最大的数排在参与第二趟比较的数后面,第三趟比较的时候,只需要比较除了最后两个数以外的其他的数,以此类推……也就是说,没进行一趟比较,每一趟少比较一次,一定程度上减少了算法的量。

  

 

四.队列和栈的区别

  (1)操作的名称不同。队列的插入称为入队,队列的删除称为出队。栈的插入称为进栈,栈的删除称为出栈。

  (2)可操作的方式不同。队列是在队尾入队,队头出队,即两边都可操作。而栈的进栈和出栈都是在栈顶进行的,无法对栈底直接进行操作。

  (3)操作的方法不同。队列是先进先出(FIFO),即队列的修改是依先进先出的原则进行的。新来的成员总是加入队尾(不能从中间插入),每次离开的成员总是队列头上(不允许中途离队)。而栈为后进先出(LIFO),即每次删除(出栈)的总是当前栈中最新的元素,即最后插入(进栈)的元素,而最先插入的被放在栈的底部,要到最后才能删除。

五.final,finally,finalize的区别

final是关键字,用于修饰;finally是异常处理的一种补充机制;finalize是object中定义的方法,用于垃圾回收,一般有GC调用

六.sleep跟wait的区别

sleep是让线程休眠,到时间后会继续执行,wait是等待,需要唤醒再继续执行;

sleep可以在任何地方使用,而wait只能在同步方法或者同步块中使用

sleep需要捕获或者抛出异常,而wait不需要

七.Java中类的修饰符具体有哪些?简要描述他们之间的区别

  public,abstract,final

  public:完全访问

  abstract:抽象类修饰符

  final:不开继承类

八.描述一下Java泛型中类型擦除的概念

  正确理解泛型概念的首要前提是理解类型擦除(type erasure)。 Java中的泛型基本上都是在编译器这个层次来实现的。在生成的Java字节代码中是不包含泛型中的类型信息的。使用泛型的时候加上的类型参数,会被编译器在编译的时候去掉。这个过程就称为类型擦除。如在代码中定义的List<Object>和List<String>等类型,在编译之后都会变成List。JVM看到的只是List,而由泛型附加的类型信息对JVM来说是不可见的。Java编译器会在编译时尽可能的发现可能出错的地方,但是仍然无法避免在运行时刻出现类型转换异常的情况。类型擦除也是Java的泛型实现方式与C++模板机制实现方式之间的重要区别。

九.Redis中常用的数据结构

  String——字符串
  Hash——字典
  List——列表
  Set——集合
  Sorted Set——有序集合

十.MySQL中连表查询内连接和外连接的区别

外连接分为左右两种

  1.内连接,显示两个表中有联系的所有数据;

  2.左链接,以左表为参照,显示所有数据;

  3.右链接,以右表为参照显示数据;

  

posted @ 2019-03-14 10:58  鸿运当头汪  阅读(124)  评论(0编辑  收藏  举报