java基础

  1. JDK,JRE区别:JRE:java运行环境;JDK:java开发工具;JRE是JDK子集,有JRE可以运行Java程序,JDK拥有JRE的一切,还可以创建、编译程序。

  2. 八大原生数据类型(boolean都能忘记我也是醉了)
    (1)byte 1;short 2;int 4;long 8;float 4;double 8;boolean 1位;char 2;
    (2)float和double的区别:double是双精度浮点数,精度更高,占8字节,float精度较低,占4字节;float用32位二进制描述,double用64位二进制描述;
    int和Integer的区别:int是基本数据类型,Integer是int的包装类;Integer的变量必须实例化后才可以使用;Integer实际上是对象的引用,指向new出来的Integer对象。
    自动装拆箱:基本类型-对象/对象-基本类型;JDK 1.5之后

  3. java 的访问限定符
    public(对任何类和成员都完全公开) private(完全私有,只有在类自己里面可以调用,子类也不能继承聚类的private属性和方法), protected(protected只有自己及自己的子类可以调用);

  4. 接口抽象类区别
    (1)Java是单继承,一个类只能继承1个抽象类,但可以实现多个接口(这也是接口比抽象类更加常用的原因)
    (2)接口的好处是避免了多继承的复杂,同时也提供了多继承的好处;接口和抽象类都可以提现多态性;但抽象类更多是对事物进行抽象,为了继承、拓展或者实现代码的重用;接口则更多的是一种行为约束和一种规则
    (3)接口的特点:接口的关键字是interface,接口中除了static,final不能有别的变量;接口的实现类必须重写所有的方法;
    (4)抽象类的特点:关键字为abstract,由于抽象类不是具体的类,因此不可以被实例化

  5. equals和的区别
    (1) 判断两个对象是否是同一个
    对于原生数据类型,比较的是值;引用数据类型比较的是地址
    (2)equals判断两个对象是否相等,会有两种情况
    类没有覆盖equals方法,则等价与
    类覆盖了equals方法,等价于比较两个对象内容是否相等

  6. java的编码方式:class文件编码方式是unicode;编译java程序时源程序编码格式取决于OS

  7. 说说你知道的集合:
    想了想,这种这么大的问题应该先说,集合中重要的接口包括,Set Map List是否有序,是否允许重复,用在什么场合;接下来应该说常见的List的接口的实现类有ArrayList,LinkedList,Vector;然后再说,ArrayList和Vector底层是数组,随机访问快,插入删除慢;同时,ArrayList线程不安全,Vector线程安全。LinkedList底层是链表,随机访问慢,线程不安全。然后再说一下ArrayList的扩容机制。Map重点说HashMap扩容和底层实现,Set可以说说如何检查重复

  8. 你一般如何抛出异常,在什么情况下使用什么抛出异常(我回复一般用try catch,没注意过这个啊啊啊啊)

  9. 说说你知道的异常的种类(空指针异常,IOExecption ,RunTimeException 等等)

  10. 除了异常你还知道啥(没听明白,但感觉他想问的是Error),然后就说了StackOverflowError

  11. 还有呢?我没明白这个问题,除了异常和错误还有啥?

  12. 重写重载override之间的区别?
    (1)重载:在一个类中定义多个同名的方法,每个方法具有不同的参数(类型),主要是为了提高程序的适应性
    (2)重写:重写需要有继承的关系,方法名一样,传入参数也一样,如果需要有别于父类的响应,需要覆盖父类方法;重写抛出的异常必须小于父类,访问限定符必须大于父类;声明为final和static的方法不能被重写(static可以被再次声明),
    (3)重写和重载都是实现多态的方式,重载实现的是编译时多态,重写实现的是运行时多态

  13. JDK1.8的新特性 (答曰stream和lamda表达式,问:还有吗;答曰没了)
    先不详细了解了,主要有lamda表达式,使用后可以不再编写匿名类;函数式接口:让现有的函数更友好的使用lamda表达式;

数据库

  1. MySQL的存储过程:
    最简单的理解方法:事先写好命令,需要的时候拿出来用就行了
    (1)存储过程就是一个可编程的函数,可以在数据库中保存然后重复去调用,它和函数的区别在于函数需要有返回值,但是存储过程没有
    (2)由于存储过程是预编译的,所以首次查询优化器对它进行优化之后,每一次查询都会快
    (3)存储过程的创建:
delimiter $
create procedure 存储过程名称()
begin
SQL语句;
end$

(3)使用“call” 和 “存储过程名称”来调用

  1. MySQL的的存储机制
    在我的理解里面,存储机制就是数据类型之所以能根据字段限制数据存储的长度的原因。具体的限制方式有两种:一种是严格限定空间,划分了多少空间就存储多少自己的数据;第二种是使用额外的字节的bit位来标记某个地址空间是否存储了数据,存储了就进行标记(相当于在尺子的某个刻度进行划线?)

  2. 说说你理解的Mysql(非关系型数据库和关系型数据库的区别、各自优势)

  3. 数据库连接池(这倒是扯了三分钟)
    (1)在Java中叫JDBC连接池
    (2) 主流的数据库连接池 C3P0、DBCP、Tomcat Jdbc Pool、BoneCP、Druid