首页 > 京东Java岗社招面经
头像
牛客895370106号
编辑于 2020-08-14 09:03
+ 关注

京东Java岗社招面经

1、Javaoverload override的区别

1Overload是重载的意思,Override是覆盖的意思,也就是重写。

2)重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中定义的方法,这相当于把父类中的方法给覆盖了,这也是多态性的一种表现。

3)重载overload的特点就是与返回值无关,只看参数列表,所以重载的方法可以改变返回值类型。所以,如果两个方法的参数列表完全一样,是不能通过让它们的返回值类型不同来实现重载的。

4override是覆盖一个方法并且对其重写,以求达到不同的作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外,我们在继承中也可能会在子类覆盖父类中的方法。

5overload对我们来说可能比较熟悉,可以翻译为重载,它是指我们可以定义一些名称相同的方法,通过定义不同类型的输入参数来区分这些方法,然后再调用时,JVM就会根据不同的参数样式,来选择合适的方法执行。

6)方法的重写和重载是Java多态性的不同表现。重写是父类与子类之间多态性的一种表现,而重载是一个类中多态性的一种表现。


2、Javaabstract类和interface的区别

3、单例模式的几个创建方式

饿汉式、懒汉式、懒汉式+同步方法、Double-CheckVolatile+Double-CheckHolder、方式枚举法


4、线程的创建方式

1)继承Thread

①定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。

②创建Thread子类的实例,即创建了线程对象。

③调用线程对象的start()方法来启动该线程。


2)实现Runnable接口

①定义runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。

②创建 Runnable实现类的实例,并依此实例作为Threadtarget来创建Thread对象,该Thread对象才是真正的线程对象。

③调用线程对象的start()方法来启动该线程。


3)实现Callable接口

①创建Callable接口的实现类,并实现call()方法,该call()方法将作为线程执行体,并且有返回值。

②创建Callable实现类的实例,使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值。

③使用FutureTask对象作为Thread对象的target创建并启动新线程。

④调用FutureTask对象的get()方法来获得子线程执行结束后的返回值


5、spring中用到的设计模式

6、MySQL的优化

7、栈区和堆区的区别

8、LinkListArrayList的区别

1ArrayList的底层实现就是数组,且ArrayList实现了RandomAccess,表示它能快速随机访问存储的元素,通过下标 index 访问,只是我们需要用 get() 方法的形式,数组支持随机访问,查询速度快,增删元素慢;

2LinkedList的底层实现是链表,LinkedList没有实现RandomAccess 接口,链表支持顺序访问,查询速度慢,增删元素快;

更多模拟面试

全部评论

(0) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐