java面试常见题

一:集合

1. 常用的集合?

List ,Set ,Map

List :  有序,可重复的集合, ArrayList和LinkedList有什么区别?

Set :   无序,不可重复。HashSet如何保证元素不重复?

Map: 数据结构?TreeMap,LinkedHashMap,HashMap 区别?

HashMap 的 put 过程?扩容过程?扩容后的大小为什么是2的倍数?时间复杂度?1.7和1.8的区别,JDK1.8之后做了哪些优化?

线程安全的Map有哪些?

HsahTable,ConcurrentHashMap 如何实现线程安全?

2. 项目中用过Java8吗?

JAVA8有哪些新特性?

lambda 和  Stream流 ,Stream中常用的操作? java8中的 foreach 循环的效率问题有了解过吗?

3. Object类中有哪些方法?简单描述一下他们的作用?

   1.clone方法  2.getClass方法  3.toString方法  4.finalize方法   5.equals方法 6.hashCode方法 

   7.wait方法 8.notify方法  9.notifyAll方法

   重写过 equals和hashCode 方法吗?为什么要重写?

4. 说几个开发中常见的异常?

 空指针异常,数组越界异常,找不到类,方法异常,运算异常,类型转换异常

5. String,StringBuffer, StringBuilder区别?线程安全?

    String  类是 final 修饰的,final关键字的作用?

二:多线程

1. 创建线程的几种方式?

  实现 Runnable 接口

  实现 Callable 接口

  继承 thread 类

  使用 Executors 工具类创建线程池

2.实现Runnable 接口和Callable 接口有什么区别?

 一个有返回值一个没有

3.工作中有用过线程池吗?好处?

   阿里巴巴开发规范中明确不能使用线程池Executors创建线程,而是使用 ThreadPoolExecutor 类知道为什么吗?

  ThreadPoolExecutor 类中构造器的核心参数?

   corePoolSize:核心池的大小,maximumPoolSize:线程池最大线程数,workQueue:一个阻塞队列,用来存储等待执行的任      务,keepAliveTime:表示线程没有任务执行时最多保持多  久时间会终止,handler:表示当拒绝处理任务时的策略

2.  线程间的通讯方式?

   1. 同步,synchronized 关键字  2. while 轮询   3. wait 和 notify 机制

3. synchronized 关键字的作用?项目中是否用到?底层实现?还用过哪些锁?

    修饰类,方法,代码块,保证线程安全 

4.  volatile作用?

    1. 保证线程可见行   2. 禁止指令重排序

三:框架

1. Spring

spring的Aop和IOC理解?项目应用?

Aop:面向切面编程。实现日志,权限。

底层实现?动态代理的两种方式,JDK和Cglib的区别?除了代理还了解哪些常用的设计模式?

IOC:控制反转, 以前代码控制现在容器控制,控制权发生转移,叫控制反转。

spring常用的注解?作用?@Autowired注解和@Resource的区别?Bean的加载过程?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值