java实习面试题(阿里一面)

1.抽象类和接口的不同点:

抽象类可以有构造函数,接口中不能有构造函数;

抽象类中可以有普通成员变量,但是接口中不能有普通成员变量;

抽象类中可以包含非抽象的普通方法,但是接口中必须是抽象方法;(jdk1.8接口中可以有非抽象方法,但是必须使用default修饰)

接口中所有修饰符必须是public,但是抽象类中没有这个要求;

抽象类和接口中都可以有静态成员变量,但是接口中是public

一个类可以实现多个接口,但是只能实现一个类

2.接口中可以声明变量吗

可以,public static final

3.静态方法能调用非静态方法吗?为什么

不能。静态是随着类加载而而加载的,而非静态是属于对象的,对象存在才能存在。而静态是优先于对象存在的,所以静态去调用非静态,此时非静态还不存在。

4.Synchronizd修饰静态方法和非静态方法上有什么区别(锁)

synchronizd修饰静态方法,锁是类.Class对象,而修饰非静态方法,锁是本类对象this

5.错误处理机制。error和exception区别。非检查异常和检查异常的区别

error是系统级的错误,不用程序员自己处理。exception表示需要捕获或者处理的异常,是程序设计的瑕疵或者是外在输入导致的问题,是程序必须要处理的。

运行时异常表示让程序无法恢复的异常,可能是执行了错误的操作,建议终止程序,编译器不检查这些异常;

受检查异常表示程序可以处理的异常,也就是程序可以修复。

6.try-catch-finally。可不可以没有catch,finally语句会不会执行。

可以没有catch,因为可以捕获异常但是不做处理。finally语句是会执行的,还会覆盖前面的return。

7.内存管理机制。垃圾回收机制回收哪部分内存

堆和方法区

8.新生代中对象被老年代中对象引用,怎么解决。

这题没有听明白。

9.HashMap,hsah算法。为什么。

 

10.hashmap底层数据结构。红黑树引进解决什么问题。什么情况下转换成红黑树。会不会再退化成链表。

 

11.hashmap线程安全吗。举例子说哪种情况会出现什么问题。

 

 fail-fast

扩容时。https://www.cnblogs.com/qiumingcheng/p/5259892.html

 

12.map实现数据怎么存进去怎么取出来

 

13.volatile。

volatile修饰时,赋值时,还是会在工作内存中保存副本,只是会立即刷新,并通知其他线程,其他线程如果工作内存中有该变量的副本,那么会放弃该副本,重新从主存中获取。

14.乐观锁和悲观锁,分布式锁。线程池。TreadLocal

15.类加载器的模型。

16.999模8

999&7

17.多数据中找出最大的k个(top k)。

首先读入k个数,构建k个元素的最小堆,然后将剩下的元素跟堆顶元素(最小元素)作比较,如果比最小的数小,则继续读取后续元素,如果比堆顶元素大,则将该元素替换堆顶元素,并重新调整为最小堆。这样一直到最后,堆中就是最大的k个元素。

18.Spring配置bean的方式

xml配置:使用无参构造器创建,使用静态工厂创建,使用实例工厂创建。http://www.cnblogs.com/xiaolovewei/p/7927698.html

注解配置

19.怎么样在注解中配置一个bean。

@component

@Service

@Controller

@Repository

20.引用bean,该bean有多个实例。

@Autowired

@Resource

@Scope()

21.Spring的设计模式。

22.动态代理有几种,区别。

23.cglib能不能代理String类。

posted on 2018-03-19 09:19  夜的第八章  阅读(429)  评论(0编辑  收藏  举报

导航